您能帮助我理解VHDL中的parrallelisme吗?

时间:2019-11-03 18:33:04

标签: concurrency vhdl fpga hdl

我知道在一个过程中指令是按顺序执行的,信号值直到过程结束才更新,但是我不能理解并行性的原理吗?例如,在下面的代码中,我知道两条指令都将同时执行(但同时执行),但是我不知道Q是否具有Sig2的新值或先验概率,当我们计算Sig2时也使用新值是Sig1还是先例?

Sig1<=a and b; Sig2<=Sig1 and a; Q<=Sig2;

1 个答案:

答案 0 :(得分:0)

由于VHDL使用事件驱动的语义,因此实际上没有任何并行执行。它只是具有并行性的外观。只要RHS操作数发生更改,您显示的并发分配就会执行-没有隐含的顺序。如果a从1变为0,则不能依赖于前两个语句的执行顺序。可能先执行2 nd 分配,然后执行第二个1 st 分配,然后执行3 rd 分配第三(因为{{ 1}}已更改),然后第二个执行 nd 分配,因为Sig2已更改。

大多数工具将尝试对语句进行排序,以最大程度减少重新执行分配的次数,甚至可能像您编写的那样对其进行优化:

Sig1

并从模拟中消除Q <= a and b; Sig1