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

Verilog 在时钟周期内获得恒定输出,verilog,wait,clock,Verilog,Wait,Clock,当我的输入改变时,我想改变我的输出,但在这改变之后,我的输出将在4个时钟周期内保持不变。4个时钟周期后,如果输入发生变化,则输出将随输入发生变化。总之,在输出发生变化后,我希望在4个时钟周期内等待 我可以用第二个时钟来做,但我不想用这种方式。我如何获得下面显示的结果 我使用的是Quartus II 9.0 Web版 您需要一个3位计数器和一个1位寄存器连接到输出信号。 在每次时钟滴答声时,如果3位计数器大于011,则获取输入并存储在1位寄存器中。将计数器重置为000 此外,如果您的3位计数器不大

当我的输入改变时,我想改变我的输出,但在这改变之后,我的输出将在4个时钟周期内保持不变。4个时钟周期后,如果输入发生变化,则输出将随输入发生变化。总之,在输出发生变化后,我希望在4个时钟周期内等待

我可以用第二个时钟来做,但我不想用这种方式。我如何获得下面显示的结果

我使用的是Quartus II 9.0 Web版


您需要一个
3位计数器和一个
1位寄存器
连接到输出信号。 在每次时钟滴答声时,如果3位计数器大于
011
,则获取输入并存储在1位寄存器中。将计数器重置为
000

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

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


有了它,您就有希望详细描述您自己的Verilog描述。

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

注意事项:

  • 您的时序图显示的不是所描述的行为。 在触发时钟上升沿之前产生第二个高周期on输出
  • 若输入和时钟是异步的,那个么首先需要同步它以避免亚稳态
  • 我们(mcleod_ideafix’s and mine)的解决方案在输入和输出之间产生1个周期的延迟。如果这是不能容忍的,从摩尔模式切换到米利模式