2017-04-26 108 views
1

比方说,我在我的代码两个过程:VHDL处理并行

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

请注意,我们改变OUTD在PRC1 ..

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

而另一个问题是行Q <= outd安置具有重要性?如果我把它放在最后一行?

回答

2

的描述采取了从http://www.vhdl.renerta.com

灵敏度列表是指定一组信号,事件的一个紧凑的方式在其上可以恢复的过程。敏感性列表关键字过程之后指定权

敏感列表相当于等待上语句,过程语句部分的最后一条语句

所以你prc2进程将等待用于更改outdRESETN,然后将开始工作多次,因为灵敏度列表中的信号将发生变化。

并行性意味着所有进程并行执行。一个过程不会等待另一个过程的结束,而是与其并行工作。在你的情况下:过程prc1将工作,每个CLKRESETN更改和过程prc2将工作时outdRESETN更改。

要查看图片的工作原理,您可以编写一些模块和测试平台并查看过程如何工作的波形。

2

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

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

否和否。

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

+0

是的,谢谢。我忘了第二个问题。 – Roman