2
我有一個簡單的寄存器,其中存儲值爲std_logic_vector
。在仿真行爲中,輸出延遲1個週期。這背後的原因是什麼?這是由於clock'event的行爲嗎?如何解決這個問題?VHDL寄存器中的延遲
下面是代碼:
entity fault_reg is
port (
clk : in std_logic;
rst : in std_logic;
reg_in : in std_logic_vector(NUM_PORTS - 1 downto 0);
reg_out : out std_logic_vector(NUM_PORTS - 1 downto 0));
end fault_reg;
architecture Behavioral of fault_reg is
begin
reg_impl : process(clk, rst)
begin
if rst = '1' then
reg_out <= (others => '0');
elsif clk'event and clk='1' then
reg_out <= reg_in;
end if;
end process reg_impl;
end Behavioral;
這裏是波形:
這與在此之前僅發佈一點的問題完全相同。 http://stackoverflow.com/questions/20496660/strange-delay-of-one-cycle-in-modules-in-verilog。您也可能會看到更多有用的信息。 – Russell
所以這是由於VHDL中的某種Delta延遲,在將輸入值分配給輸出之間會有一些延遲,並且由於此過程是同步的,所以它正在下一個時鐘週期寫入值,對嗎? – Digeek
是的,延遲是由時鐘引起的。它被稱爲傳播延遲。 – Russell