2

これはかなり一般的な質問であることを理解しています。いずれにせよ、フォーラムを調べても、特定の VHDL コードに対して次の CT エラーが発生する理由について満足のいく答えが見つかりませんでした。助けてください。

VHDL コード

library IEEE;
use IEEE.std_logic_1164.all;
entity design is
port(clk:IN std_logic;
reset:IN std_logic;
A:IN std_logic;
B:IN std_logic;
Q:OUT std_logic);
end design;

architecture behave of design is
--signal R0,R1,R2,R3,R4:std_logic;
begin
process(clk,reset)
variable R0,R1,R2,R3,R4:std_logic;
begin
if (reset='1') then
R0:='0';
R1:='0';
R2:='0';
R3:='0';
R4:='0';
elsif falling_edge(clk) then
R0:=R4;
R1:=R0 xor A;
R2:=R1 xor B;
R3:=R2;
R4:=R2 xor R3;
end if;
end process;
Q<=R4;       -- ERROR POINTED HERE
end behave;

エラー:-

Error (10482): VHDL error at design.vhd(31): object "R4" is used but not declared

ポートに変数を割り当てる適切な方法はありますか?

4

2 に答える 2

3

R4プロセスの宣言領域で変数として宣言されます。プロセスの外では表示されないため、ツールで指定したエラーが発生します。Q<=R4;プロセス内の行を の後に移動するend if;と、変数はこの時点でまだ表示されているため、エラーは解消されます。

そうは言っても、あなたのコードがあなたが思っていることをするとは思いません。signalforなどを使い始めたようですね。シグナルと変数の違いをよく理解するまでは、a のR1使用は避けたほうがよいでしょう。variableこれに対処する他の既存の質問があります。

于 2017-10-17T13:43:30.680 に答える