Quartus II でプロジェクトを作成したいと考えています。その機能は、コードに応じて 3 つの異なる LED を有効にすることです。コードを入力すると、最初の LED がオンになります。入力したコードに応じて、2 番目または 3 番目がオンになります。私の問題は、コードが正しい場合、2 番目の LED を 3 秒間オンにし、正しくない場合は 3 番目の LED を 2 秒間オンにすることです。助けていただければ幸いです。
ありがとうございました!
注: LED は Logic Vector として宣言され、コードの番号は 0 から 7 までの割り込みとして宣言されます。
コード:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
ENTITY programa IS
PORT
(
interrup : in Std_Logic_Vector (7 downto 0);
clk, rst: in Std_Logic;
led : out Std_Logic_Vector (2 downto 0)
);
END programa;
ARCHITECTURE arch_programa OF programa IS
type state is (zero, one, two, three, four, five, six);
signal pr_state, nx_state : state;
signal A : Std_Logic_Vector (3 downto 0);
BEGIN
process(interrup, pr_state)
begin
case pr_state is
when zero =>
led <= "100";
A(0) <= interrup(7);
nx_state <= one;
when one =>
led <= "100";
A(1) <= interrup(6);
nx_state <= two;
when two =>
led <= "100";
A(2) <= interrup(5);
nx_state <= three;
when three =>
led <= "100";
A(3) <= interrup(3);
nx_state <= four;
when four =>
led <= "100";
if(A = "1111") then nx_state <= five;
else nx_state <= six;
end if;
when five =>
led <= "010";
nx_state <=zero;
when six =>
led <= "001";
nx_state <=zero;
end case;
end process;
process(rst,clk)
begin
if(rst='1') then
pr_state <= zero;
elsif (clk'event and clk = '1') then
pr_state <= nx_state;
end if;
end process;
end arch_programa;