我使用以下代码在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仿真中包含了波形,其中感兴趣的事件发生在黄色标记处。有人可以向我解释这种行为吗?感谢。