VHDL进程风格

VHDL进程风格,vhdl,Vhdl,我一直在阅读这里的各种问题,因为我正在学习VHDL,并一直在寻求改进。然而,这一评论让我感到好奇: 在我大学的VHDL课程中,我被告知分离进程是分离同步方面的最佳形式 很明显,这是个人偏好,但我希望一些更有经验的用户能够根据自己的偏好阐明利弊?一个比另一个更常见吗 谢谢 好吧,因为是我说了你链接到的内容。。。我最好评论一下:) 坏事情(IMHO)如果您将事情放在单独的流程中: 你必须让你的敏感度列表保持最新 您必须为每个输出提供默认值,除非您需要异步锁存(通常不需要) 逻辑是分开的,因此如果

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

在我大学的VHDL课程中,我被告知分离进程是分离同步方面的最佳形式

很明显,这是个人偏好,但我希望一些更有经验的用户能够根据自己的偏好阐明利弊?一个比另一个更常见吗


谢谢

好吧,因为是我说了你链接到的内容。。。我最好评论一下:)

坏事情(IMHO)如果您将事情放在单独的流程中:

  • 你必须让你的敏感度列表保持最新
  • 您必须为每个输出提供默认值,除非您需要异步锁存(通常不需要)
  • 逻辑是分开的,因此如果向状态机添加状态,则必须在两个进程中都添加新状态
  • 如果您希望一个信号同时被注册和未注册使用,那么您最终会复制它。通过一个过程,您可以使用变量来实现这一点
  • 有些人认为它更难阅读
好东西:

  • 您可以取消注册状态的“输出”。这有助于减少延迟,但在几乎所有情况下,您都希望在每个块的输出上使用寄存器,以简化会议计时
  • 有些人认为它更容易阅读
我的观点是,你听到的法令(“保持独立”)起源于合成器不善于区分逻辑和触发器的时代,因此将触发器放入时钟进程是有意义的

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

如今,合成器可以处理时钟进程中任意复杂的逻辑。我可以用一种有意义的方式来写,而不必明确每一点逻辑。只有在时间紧迫的情况下,我才必须认真考虑将失败和逻辑放在正确的位置

我的“规则”是:

  • 保持可读性
  • 如果它符合要求(例如电源、定时和功能正常),那么就完成了
  • 如果不是,那么,只有这样才能玩不可读的把戏

很像编写软件:)

我在“保持独立”阵营。在我的代码中,我有一个单一的同步进程,它执行重置和计时行为。其他一切都是异步的。注册过程如下所示:

Wait for Clock;
If Reset then
    Value <= '0';
else
    Value <= nextValue;
endif
等待时钟;
如果重置,则

谢谢你的详细回答!我本来希望有更多的人可以这样争论,但我猜你掩盖了一切!我们通常生成未注册生成的状态输出,因此这可能被视为一个优势。再次感谢。谢谢你的意见。有趣的是,一个优势是能够使用许多较小的流程。你倾向于注册输出吗?这是我从来没有真正烦恼过的事情,但可能是因为我从来没有尝试过提高设备速度。@Mark,我想你的意思是注册整个实体的输出。一般来说是的,但这取决于我正在进行的设计的时间限制。。因为没有进一步的答复。。而且确实没有正确的答案,我会选择第一个答案。。谢谢你们两位的意见!