为了账号安全,请及时绑定邮箱和手机立即绑定

VHDL中的过程是可重入的吗?

VHDL中的过程是可重入的吗?

VHDL中的过程是可重入的吗?中的进程是否可能连续运行两次或更多次。VHDL?如果在进程的顺序执行未完成时发生另一个事件(在敏感信号列表上),会发生什么情况?是可能的还是我的VHDL模型中的过程是完全错误的吗?
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

在开始使用VHDL(或其他任何HDL)时,非常重要的是要抛弃顺序代码的所有概念,而要专注于通过硬件的数据流。在硬件中,所有东西本质上都是并行的(一切同时发生),但是使用不断变化的数据(输入信号)来计算不断变化的结果(输出信号)!

如果不深入到诸如变量、等待命令等更高级的主题,进程中的所有内容都会同时发生。如果在同一进程中发生冲突的事情(对同一信号多次写入),则流程中的最后一条语句将获胜,这通常是VHDL中关于“顺序”代码的混淆的地方。

这是由于将值分配给信号的方式而产生的。当给信号赋值时,信号的值不会立即改变!相反,赋值将被记住,并将在以后作为实际信号值提交(为下一个δ周期做准备,这实际上是下一个时间量程)。

由于下一个增量周期将在上一个增量周期的所有进程完成后才开始,因此信号值只有在没有进程运行时才会更改。一旦所有信号都改变了,下一个增量循环就开始了,任何对一个变化信号敏感的进程都将被执行。

如果一个进程对它所写的信号很敏感,你就有一个所谓的组合回路,例如,输出输入的一个门。这几乎总是你的电路中的一个错误,并且通常会导致模拟器进入无限的三角循环。

这就是我现在要写的全部内容,因为BrianDrummond的回答只是在我写这篇文章的时候弹出来的,但是请尽管留下评论,我会添加一些更多的细节。


查看完整回答
反对 回复 2019-07-15
  • 1 回答
  • 0 关注
  • 553 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信