AR# 18137

|

XST - 「ERROR:HDLParsers:1401 - top_level.vhd Line 27. Object q of mode OUT cannot be read」というエラー メッセージが表示される

説明

キーワード : VHDL, in, out, type, buffer, inout, 入力, 出力, タイプ, バッファ, 入出力

重要度 : 標準

概要 :
出力信号をデザインに戻すと、構文チェック (解析) 中に次のようなエラー メッセージが表示されます。

entity top is
port
:
d ; in std_logic;
q1, q2 : out std_logic);
end entity;
:
:
q2 <= q1 and d;

エラー メッセージ

"ERROR:HDLParsers:1401 - top_level.vhd Line 27. Object q of mode OUT cannot be read."

Verilog でのやり方はわかるのですが、VHDL ではどのようにすればこれが実行できますか。

ソリューション

VHDL では、ある信号を出力ポートとして宣言した場合、その信号を使用し、ほかの信号を駆動することはできません。 VHDL では、ポートに対して 4 つのモードがあります。

in
out
inout
buffer

Verilog では、次の 3 つのモードがあります。

input
output
inout

VHDL の buffer は、Verilog の output に対応します。 VHDL は、定義に対して厳密さを必要とする言語であるため、buffer を使用すると、このバッファ ポートに接続されたすべてのポートがバッファ ポートである必要があります。このため、buffer モードの使用は推奨しません。 デザインにフィードバックし、出力ポートを駆動する中間信号を作成することをお奨めします。

entity top is
port
:
d ; in std_logic;
q1, q2 : out std_logic);
end entity;
:
architecture top_arch of top is
signal q1_temp;
begin
:
:

q1 <= q1_temp;
q2 <= q1_temp and d;
AR# 18137
日付 12/15/2012
ステータス アクティブ
種類 一般
People Also Viewed