VHDL进程风格
我一直在阅读这里的各种问题,因为我正在学习VHDL,并一直在寻求改进。然而,这一评论让我感到好奇: 在我大学的VHDL课程中,我被告知分离进程是分离同步方面的最佳形式 很明显,这是个人偏好,但我希望一些更有经验的用户能够根据自己的偏好阐明利弊?一个比另一个更常见吗VHDL进程风格,vhdl,Vhdl,我一直在阅读这里的各种问题,因为我正在学习VHDL,并一直在寻求改进。然而,这一评论让我感到好奇: 在我大学的VHDL课程中,我被告知分离进程是分离同步方面的最佳形式 很明显,这是个人偏好,但我希望一些更有经验的用户能够根据自己的偏好阐明利弊?一个比另一个更常见吗 谢谢 好吧,因为是我说了你链接到的内容。。。我最好评论一下:) 坏事情(IMHO)如果您将事情放在单独的流程中: 你必须让你的敏感度列表保持最新 您必须为每个输出提供默认值,除非您需要异步锁存(通常不需要) 逻辑是分开的,因此如果
谢谢 好吧,因为是我说了你链接到的内容。。。我最好评论一下:) 坏事情(IMHO)如果您将事情放在单独的流程中:
- 你必须让你的敏感度列表保持最新
- 您必须为每个输出提供默认值,除非您需要异步锁存(通常不需要)
- 逻辑是分开的,因此如果向状态机添加状态,则必须在两个进程中都添加新状态
- 如果您希望一个信号同时被注册和未注册使用,那么您最终会复制它。通过一个过程,您可以使用变量来实现这一点
- 有些人认为它更难阅读
- 您可以取消注册状态的“输出”。这有助于减少延迟,但在几乎所有情况下,您都希望在每个块的输出上使用寄存器,以简化会议计时
- 有些人认为它更容易阅读
- 保持可读性
- 如果它符合要求(例如电源、定时和功能正常),那么就完成了李>
- 如果不是,那么,只有这样才能玩不可读的把戏
很像编写软件:)我在“保持独立”阵营。在我的代码中,我有一个单一的同步进程,它执行重置和计时行为。其他一切都是异步的。注册过程如下所示:
Wait for Clock;
If Reset then
Value <= '0';
else
Value <= nextValue;
endif
等待时钟;
如果重置,则
谢谢你的详细回答!我本来希望有更多的人可以这样争论,但我猜你掩盖了一切!我们通常生成未注册生成的状态输出,因此这可能被视为一个优势。再次感谢。谢谢你的意见。有趣的是,一个优势是能够使用许多较小的流程。你倾向于注册输出吗?这是我从来没有真正烦恼过的事情,但可能是因为我从来没有尝试过提高设备速度。@Mark,我想你的意思是注册整个实体的输出。一般来说是的,但这取决于我正在进行的设计的时间限制。。因为没有进一步的答复。。而且确实没有正确的答案,我会选择第一个答案。。谢谢你们两位的意见!