UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

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
ステータス アクティブ
種類 一般
このページをブックマークに追加