私はavalonメモリマップされたインターフェイスを介してcount_x 32ビットのデータをHPSに取得する必要があります。 1番目と2番目のケースは正常に機能しました。そして私はHPSにデータを持っています。しかし、3番目のケースではWHEN '2' => avs_s0_readdata < = count_x(31 downto 0);として「2」が宣言されていませんそれはどういう意味ですか? VhdlはAltera quartus 16.1で完了し、HPSシステムはQsysで実行されました。HPS FPGA Avalonメモリマップされたインターフェイスで3番目のケースに書き込むときのエラー
architecture behavior of encorder is
signal count : STD_LOGIC_VECTOR(31 DOWNTO 0);
signal countx : STD_LOGIC_VECTOR(31 DOWNTO 0);
signal count_y : STD_LOGIC_VECTOR(31 DOWNTO 0):= x"00000000";
begin
PROCESS(avs_s0_read)
BEGIN
IF avs_s0_read = '1' THEN
CASE(avs_s0_address) IS
WHEN '2' => avs_s0_readdata <= count_x(31 downto 0);
WHEN others => avs_s0_readdata <= x"00000000";
END CASE;
ELSE
avs_s0_readdata <= x"00000000";
END IF;
END PROCESS;`
ようこそ。時間を割いてお手伝いする人を助けることができます。あなたのコードは不完全です。 'avs_s0_address'はどんな型であるのか分かりません(' '2''は' character''型です.'vs_s0_address'はその型ではありません)。 [MCVE](http://stackoverflow.com/help/mcve)を投稿してください。 –
avs_s0_addressの宣言を見ることなく、 '2'はその型の列挙値ではないように見えます。 [最小限の、完全で検証可能な例](https://stackoverflow.com/help/mcve)を入力してください。あなたの問題は重複することはできません(または、誰かが構文の問題を示さないスニペットの周りの例を考案する可能性があることを強く指摘してください)。型がstd_logic(基本型std_ulogic)の場合、列挙値は文字リテラル 'U'、 'X'、 '0'、 '1'、 'Z'、 'W'、 'L'、 'H' 、および ' - ' if条件がエラーを生成しなかったことに注意してください。 – user1155120
もう1つのツールで、よりわかりやすいエラーメッセージが表示されることがあります。 - 'encorder.vhdl:34:6:error:文字リテラル '2'とタイプstd_ulogic'を一致させることができません。 std_logicは、std_ulogic - ( 'U'、 'X'、 '0'、 '1'、 'Z'、 'W'、 'L'、 'H'、 ' - ')の解決されたサブタイプです。 '2'は、std_logicの値を表さないcase文の有効な選択肢ではありません。 – user1155120