【问题标题】:Should I use FSM for a FIFO buffer ? ( VHDL )我应该将 FSM 用于 FIFO 缓冲区吗? (VHDL)
【发布时间】:2019-12-14 16:12:19
【问题描述】:

我正在尝试实现具有 4 个位置的 FIFO 缓冲区。我尝试了使用 FSM 概念的实现。该图由 5 个状态组成:

Empty、Write、Read、Full、Wait(以避免一些竞争条件)。

结果比我预想的要难。是否建议将 FSM 用于这样的电路或坚持传统的顺序逻辑? 什么时候值得用 FSM 进行设计? 我知道这更像是一个理论问题而不是代码问题,但是我找不到明确的答案。

【问题讨论】:

  • 你的问题有点含糊。 FIFO 通常是可以同时读写的 ram,通常不会使用 FSM。只需读写指针。
  • 你为什么认为你需要等待?我的 FIFO 都没有。 (嗯,他们也没有 FSM,所以......)
  • "有限状态机是在给定时间存储某物状态的任何设备。状态将根据输入进行更改,为已实现的更改提供结果输出。 "硬件中的 FIFO 总是涉及多个 FSM。你的辩论是关于数量和它们的相对复杂性,正如 Oldfart 的评论展示了描述它们时使用的命名法。如果不提出具体问题,你的“一个 FSM 将他们全部联系起来”不能在这里接受意见(无论多么专家)。提供minimal reproducible example。

标签: vhdl fifo fsm


【解决方案1】:

FSM 会记住时钟周期之间的状态。在 FIFO 中你不需要那个。

您要么在一个时钟周期内读取,要么在一个时钟周期内写入(或者如果您有双端口内存,您可以同时执行这两项操作。)

无论你做什么,操作在一个时钟周期后就完成了。没有要记住的“状态”*。

*FIFO内存中的数据可能已经改变,但你也不能将内存称为FSM。

【讨论】:

  • 是的,@Harry 我看到了反对票,我认为是操作人员认为 full/empty 必须是状态,而实际上它们是从读/写指针派生的。等到投票失败的人尝试在一个状态机中创建一个异步(双时钟)FIFO....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 2013-01-05
  • 1970-01-01
  • 2021-04-03
相关资源
最近更新 更多