VHDL 进程并行性

VHDL process parallelism

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

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

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

一个进程与其他进程并行执行,对吧?如果我们不更改它的敏感列表,它如何并行执行?在我的代码中..如果我没有更改它的敏感度列表,prc2 如何与进程 1 并行执行?

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

描述取自http://www.vhdl.renerta.com

The sensitivity list is a compact way of specifying the set of signals, events on which may resume a process. A sensitivity list is specified right after the keyword process

The sensitivity list is equivalent to the wait on statement, which is the last statement of the process statement section

因此您的 prc2 进程将等待 outdRESETN 的变化,然后将开始工作,直到敏感列表中的信号发生变化。

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

要查看图片是如何工作的,您可以为其编写(或举任何例子)一些模块和测试平台,并查看波形是如何工作的。

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

Is the placement of the line Q <= outd important? Does it change anything if I put it in the last line?

没有也没有

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