VHDL进程并行

时间:2017-04-26 22:42:52

标签: vhdl

假设我的代码中有两个进程:

prc 1 :  process( CLK , RESETN ) {with some code}
Q <= outd
prc2 : process(outd,RESETN)

请注意,我们在prc1中更改了out ..

流程与其他流程并行执行,对吧?如果我们不改变灵敏度列表,怎么能并行执行呢?在我的代码中..如何与进程1并行执行prc2如果我没有更改它的敏感性列表?

另一个问题是......行Q <= outd展示位置有重要性吗?如果我把它放在最后一行,它会改变什么吗?

2 个答案:

答案 0 :(得分:2)

说明摘自http://www.vhdl.renerta.com

  

灵敏度列表是一种指定信号集的紧凑方式,可以恢复进程的事件。在关键字处理

之后立即指定敏感度列表   敏感列表等同于等待语句,这是流程语句部分的最后一条语句

因此,您的prc2进程将等待更改outdRESETN,然后将开始工作多次,因为敏感列表中的信号会发生变化。

并行意味着所有进程并行执行。一个过程不等待另一个过程的结束,但与其并行工作。在您的情况下:流程prc1将适用于每个CLKRESETN更改,并且流程prc2将在outdRESETN更改时生效。

要查看图片的工作原理,您可以编写(或采用任何示例)一些模块和测试平台,并查看波形如何工作。

答案 1 :(得分:2)

除了罗曼的回答之外,我想我会回答你的第二个问题:

  

Q <= outd行的展示位置是否重要?如果我把它放在最后一行,它会改变什么吗?

不,不。

只要行Q <= outd不在流程内部,它就是纯粹的组合。因此,将它放在代码中的位置并不重要 - 它将被合成到相同的硬件中。