例如你的clk周期是10ns
那么
process(clk)
begin
if(clk'event and clk='1')then
sig_delay<=sig;
end if;
end process;
sig_delay 就比 sig 延时了一拍,就是10ns。
再比如sig_delay如果定义为 std_logic_vector(7 downto 0)
如果:
process(clk)
begin
if(clk'event and clk='1')then
sig_delay(7 downto 0)<=sig_delay(6 downto 0)&sig;
end if;
end process;
那么sig_delay(7)就比sig延时了80ns。这实际上就是移位寄存器。
其实你可以用一个计数器
process(clk)
begin
if(clk'event and clk='1')then
if(counter<100)then
counter<=counter+1;
end if;
end if;
end process;
ndsp_rst<=npower_rst and nreset when counter>=20;
nflasf_rst<=npower_rst and nreset when counter>=40;
n16c550_rst<=npower_rst and nreset when counter>=60;
以上计数时间具体由自己来决定