Для класса мы делаем простую машину, которая должна включать светодиод при вводе правильного кода.Независимо от того, каким образом я его кодирую, я получаю одну и ту же странную ошибку, когда все мои последовательные сигналы перезаписываются во все (a0 - a4) во все ON, когда мой код вводится правильно.Он компилируется без ошибок, но что-то не так в принципе.
Кто-нибудь знает, почему это так, я не понимаю фундаментальный принцип в VHDL?
Я включу другие решения, которые я пробовалвнизу.
Спасибо за ваше время
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity lab4 is
Port (
clk_in: in std_logic;
switch: in std_logic;
ledr0, ledr9, ledr8, ledr7, ledr6, ledr5: out std_logic
);
end lab4;
architecture behavioural of lab4 is
signal a0, a1, a2, a3, a4: std_logic;
signal clk: std_logic;
component DFF_V
port
( clk : in std_logic;
d : in std_logic;
q : out std_logic
);
end component;
component AND_GATE
port ( a, b, c, d, e : in STD_LOGIC;
z : out STD_LOGIC);
end component;
begin
D1: DFF_V port map (clk, switch, a0);
D2: DFF_V port map (clk, a0, a1);
D3: DFF_V port map (clk, a1, a2);
D4: DFF_V port map (clk, a2, a3);
D5: DFF_V port map (clk, a3, a4);
AND1: AND_GATE port map(a0, a1, a2, a3, a4, ledr0);
clk<= NOT clk_in;
ledr9 <= a4;
ledr8 <= a3;
ledr7 <= a2;
ledr6 <= a1;
ledr5 <= a0;
end behavioural;
library IEEE; --I modified this code from https://en.wikibooks.org/wiki/VHDL_for_FPGA_Design/D_Flip_Flop
use IEEE.STD_LOGIC_1164.ALL;
entity DFF_V is
port
( clk : in std_logic;
d : in std_logic;
q : out std_logic
);
end entity DFF_V;
architecture behavioral of DFF_V is
begin
process (clk) is
begin
if rising_edge(clk) then
if (d ='1') then
q <= '1';
elsif (d ='0') then
q<= '0';
end if;
end if;
end process;
end architecture behavioral;
Схема
Требования к проекту
Я использовал автобус для a0-a4.Я попытался реализовать это с помощью операторов if. Я пытался использовать оператор case для шины и для отдельных проводов. Я тестировал каждый фрагмент кода отдельно, и он все еще не работает