我一直在阅读这里的各种问题,因为我正在学习 VHDL 并且一直在寻求改进。然而,这条评论让我很好奇:

Simple State Machine Problem

在我在大学的简短 VHDL 类(class)中,有人告诉我,分离进程是最好的形式,以分离同步方面。

显然这是个人喜好,但我希望一些更有经验的用户可以根据自己的喜好阐明优缺点?一种比另一种更常见吗?

谢谢!

最佳答案

好吧,因为是我说了你所链接的内容......我最好发表评论:)

坏事(恕我直言)如果你把东西放在不同的进程中:

  • 你必须虔诚地更新你的敏感列表
  • 你必须为每个输出提供默认值,除非你想要异步锁存器(你通常不需要)
  • 逻辑是拆分的,所以如果给状态机添加一个状态,就得把新的状态放到两个进程中
  • 如果您希望一个信号同时使用注册和未注册,您最终会复制它。通过单个流程,您可以使用变量来实现这一点。
  • 有些人认为它更难阅读。

  • 好东西:
  • 您可以取消注册状态的“输出”。这对于减少延迟很有好处,但对于几乎所有目的,您都希望每个块的输出上都有寄存器,以便更轻松地满足时间安排。
  • 有些人认为阅读
  • 更容易

    我的观点是,像你听到的法令(“保持分开”)源于合成器不太擅长区分逻辑与触发器的时代,因此将触发器放在时钟过程中是有道理的。

    此外,这种方法与那个时代的人们在拥有 HDL 之前绘制原理图的方式相匹配。

    如今,合成器可以处理时钟过程中任意复杂的逻辑。而且我可以按照有意义的方式编写它,而不必明确说明每一点逻辑所在的位置。只有当时间真的很紧时,我才必须认真考虑将失败和逻辑放在正确的地方。

    我的“规则”是:
  • 保持可读性
  • 如果它满足要求(例如功率、时序和功能正常),您就完成了。
  • 如果没有,那么并且只有这样才能玩出不可读的技巧

  • 很喜欢写软件:)

    关于VHDL 过程风格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4409532/

    10-12 22:56