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

Get constant output during clock cycles

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

我可以用第二个时钟来做,但我不想用这种方式。我怎样才能得到如下所示的结果?

我正在使用 Quartus II 9.0 网络版。

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

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

因此 3 位计数器用作延迟,直到 4 个时钟发生后才用输入更新输出。

有了这个,您有望详细说明您自己的 Verilog 描述。

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

备注:

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