Почему мои сигналы перезаписываются, и мой вывод никогда не включается? - PullRequest
0 голосов
/ 17 февраля 2019

Для класса мы делаем простую машину, которая должна включать светодиод при вводе правильного кода.Независимо от того, каким образом я его кодирую, я получаю одну и ту же странную ошибку, когда все мои последовательные сигналы перезаписываются во все (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;

Drawn circuit

Схема

Требования к проекту

Project Requirements

Я использовал автобус для a0-a4.Я попытался реализовать это с помощью операторов if. Я пытался использовать оператор case для шины и для отдельных проводов. Я тестировал каждый фрагмент кода отдельно, и он все еще не работает

...