これは完全なコードです
library ieee;
use ieee.std_logic_1164.all;
entity move_key_detector is
PORT(
clk : IN STD_LOGIC;
done : IN STD_LOGIC;
hex : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
up, down : out std_logic
);
END move_key_detector;
architecture arch of move_key_detector is
type statetype is (IDLE, RECEIVED_BREAK);
signal next_state, current_state : statetype :=IDLE;
begin
process (Clk) begin
if(rising_edge(Clk)) then
current_state <= next_state;
end if;
end process;
process(done) begin
next_state <= current_state;
case current_state is
when IDLE=>
if(done = '1') then
if (hex = "00011101") then up <= '1';
elsif(hex = "00011011") then down <= '1';
--check to see if a break code is sent
elsif (hex = "11110000") then next_state <= RECEIVED_BREAK;
end if;
end if;
when RECEIVED_BREAK=>
if(done ='1') then
if (hex = "00011101") then up <= '0';
elsif(hex="00011011") then down <= '0';
end if;
next_state <= IDLE;
end if;
end case;
end process;
エラーは次のとおりです。
エラー (10821): move_key_detector.vhd(31) での HDL エラー: サポートされているレジスタ モデルと動作が一致しないため、"down" のレジスタを推測できません
情報 (10041): move_key_detector.vhd(29) での「ダウン」の推定ラッチ
エラー (10821): move_key_detector.vhd(31) での HDL エラー: サポートされているレジスタ モデルと動作が一致しないため、"up" のレジスタを推測できません
情報 (10041): move_key_detector.vhd(29) での "up" の推測ラッチ
エラー (10818): move_key_detector.vhd(41) で "next_state" のレジスタを推測できません。これは、クロック エッジの外で値を保持していないためです。
エラー (10818): move_key_detector.vhd(33) で "next_state" のレジスタを推測できません。これは、クロック エッジの外で値を保持していないためです。
この種のエラーが発生しています。HDLマニュアルを読んでこの推奨事項に従いましたが、これを修正する方法はまだわかりません。
誰でも私を助けることができますか?どうもありがとうございました!