【问题标题】:Implementing delay in VHDL state machine在 VHDL 状态机中实现延迟
【发布时间】:2012-10-26 00:19:29
【问题描述】:

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

我考虑过我可以创建一个额外的状态,它只会将下一个状态标记为我实际完成读取的状态,因此增加了另一个周期延迟(意味着我将“读取请求”保持 74 ns),但是这听起来不太好。

另一个选项可能是使用计数器,但我想知道是否还有另一个选项我还没有访问过?

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

谢谢!

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

【问题讨论】:

    标签: vhdl fifo xilinx


    【解决方案1】:

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

    【讨论】:

    • 这令人放心,我一直在设置额外的等待状态并认为这似乎有点荒谬,但我想如果它只是你需要的一个滴答声是有道理的。计数器可能是一个更好的主意,但即使是计数器的复杂性也可能因应用程序而异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多