在VHDL状态机中实现延迟

时间:2012-10-25 09:01:54

标签: vhdl fifo xilinx

我正在编写一个状态机,通过设置和读取读/写使能来控制芯片的数据流。我的时钟以27 MHz运行,周期为37 ns。然而,我正在与之通信的芯片规格要求我保持“读取请求”信号至少50 ns。当然,由于我的周期为37 ns,因此无法在一个周期内完成。

我认为我可以创建一个额外的状态,除了将下一个状态标记为我实际完成读取的状态之外什么都不做,因此增加了另一个周期延迟(意味着我持有'读取请求'为74 ns),但是这听起来不太好。

另一种选择可能就是使用计数器,但我想知道是否还有其他选择我还没有去过?

当状态持续时间超过一个时钟周期时,如何在状态机中实现延迟?

谢谢!

T1 must be greater than 50 ns (T1必须大于50 ns) 请see here获取完整的数据表。

1 个答案:

答案 0 :(得分:1)

延迟只能通过时钟可靠地实现 - 通过额外状态或在现有状态下使用计数器添加额外的“滴答”是我完全可以接受的。如果您使用较慢的外部芯片重新使用相同的状态机(或者如果您使用不同的时钟频率为FPGA供电),计数器可以更灵活 - 您只需更改最大计数,而不是添加多个“等待”状态到状态机。