在时钟周期内获得恒定输出

时间:2015-03-19 20:35:45

标签: verilog wait clock

我希望在输入更改后更改输出,但在此更改后,我的输出将在4个时钟周期内保持不变。经过4个时钟周期后,如果输入改变,输出将改变输出。总之,我希望在输出发生变化后的4个时钟周期内等待。

我可以用第二个时钟做,但我不想用这种方式。如何获得下面显示的重新开始?

我使用的是Quartus II 9.0网络版。

enter image description here

2 个答案:

答案 0 :(得分:0)

您的输出信号需要3-bit counter1-bit register。 在每个clk tick处,如果3位计数器大于011,则取输入并存储在1位寄存器中。将计数器重置为000

此外,如果您的3位计数器不大于011,请将其递增。

因此,3位计数器用作延迟,在输入4个时钟之前不用输入更新输出。

有了这个,你可以希望详细说明你自己的Verilog描述。

答案 1 :(得分:0)

您需要一个2位mod 4计数器来为1位数据寄存器生成使能选通。计数器从00到11正常计数并溢出。如果计数器等于00,则启用数据寄存器以存储接下来4个周期的输入值。

备注:

  • 您的时序图不显示所描述的行为。 输出的第二个高周期是在触发时钟上升沿之前生成的。
  • 如果输入与时钟异步,则需要先将其同步以避免亚稳态。
  • 我们的(mcleod_ideafix和我的)解决方案在输入和输出之间产生1个周期的延迟。如果这是不能容忍的,请从Moore切换到Mealy模型。