VHDL - 为什么没有时钟边沿和复位时寄存器输出会改变?

时间:2018-01-03 22:10:00

标签: vhdl fpga vivado register-transfer-level

我使用以下代码在VHDL中实现了一个寄存器:

    library ieee;
    use ieee.std_logic_1164.all;

    entity reg is

      generic (
        width : integer := 8
      );

      port (
        reset, clk, en : in  std_logic;
        d : in  std_logic_vector(width - 1 downto 0);
        q : out std_logic_vector(width - 1 downto 0)
      );

    end reg;

    architecture Behavioral of reg is

    begin

      regProc : process (clk, reset, en, d)
      begin

        if reset = '1' then

          q <= (others => '0');

        elsif rising_edge(clk) and en = '1' then

          q <= d;

        end if;

      end process;

    end Behavioral;

我注意到在模拟它的时候有时候在没有时钟上升沿和复位的情况下改变输出。我已经在下面的Vivado仿真中包含了波形,其中感兴趣的事件发生在黄色标记处。有人可以向我解释这种行为吗?感谢。

Register simulation

0 个答案:

没有答案