在Vhdl中创建实时延迟
我想写一个设计,在这个设计中,一个进程在1分钟后被激活 我又创建了一个进程,使用计数器递增来创建延迟,切换信号,并在必须延迟的进程的灵敏度列表中给出该信号在Vhdl中创建实时延迟,vhdl,Vhdl,我想写一个设计,在这个设计中,一个进程在1分钟后被激活 我又创建了一个进程,使用计数器递增来创建延迟,切换信号,并在必须延迟的进程的灵敏度列表中给出该信号 signal delay_over : std_logic; process ( delay_over ) begin if clk'event and clk '1' then --design end if; end process; delay:process ( clk ) variable
signal delay_over : std_logic;
process ( delay_over )
begin
if clk'event and clk '1' then
--design
end if;
end process;
delay:process ( clk )
variable counter : integer := 0;
begin
--design to create delay
end process;
我应该使用什么值或类型的计数器来创建精确1分钟的延迟。在同步设计(任何带有时钟的设计)中,将实时延迟等同于,与计数时钟一样简单,或者计数通过计数时钟生成的时基 例如,假设您需要处理的最小实时单位是1秒(也就是说,您永远不需要处理十分之一、毫秒等)。你的时基可以是秒因此,您需要了解如何将单个时钟的周期(持续时间)转换为秒。 假设你有一个25MHz的时钟。这意味着每秒有25e6个时钟。这意味着您需要数到25e6(或(25e6)-1,具体取决于您的设置方式),将计数器重置回零,然后再次开始计数。每当计数器达到0(或25e6,或计数中的任何其他单个值)时,您可以为一个时钟周期脉冲启用这是您的“秒”时间基准。 所有其他逻辑都可以引用“秒”时基启用。要创建10秒的实时延迟,只需计算10秒的时基启用脉冲数 下面是一个示例片段,让您了解:
timebase : process (I_CLK) is
begin
if (rising_edge(I_CLK)) then
counter_1sec_en <= '0';
if (counter < COUNTS_IN_1_SEC-1) then
counter <= counter + 1;
else
counter_1sec_en <= '1';
counter <= (others => '0');
end if;
end if;
end process timebase;
delay : process (I_CLK) is
begin
if (rising_edge(I_CLK)) then
seconds_delay_done <= '0';
if (counter_1sec_en = '1') then
if (seconds_delay < NUM_SECONDS_TO_DELAY-1) then
seconds_delay <= seconds_delay + 1;
else
seconds_delay_done <= '1';
seconds_delay <= (others => '0');
end if;
end if;
end if;
end process delay;
时基:进程(I_CLK)是
开始
如果(上升沿(I_CLK)),则
柜台