VHDL - process() 何时第一次运行?

发布于 2024-08-13 03:58:56 字数 184 浏览 1 评论 0原文

考虑:过程(a) 根据我的文字:

此时第一次进入一个进程 的模拟,此时 执行直到它因到期而自行暂停 等待语句或敏感性 列表。

我是否正确地推断,即使敏感列表上没有任何事件,进程也必须运行一次?另外,如果一个架构中有多个进程,它们都执行一次怎么办?

Consider : process(a)
According to the text i have :

A process is first entered at the time
of simulation, at which time it is
executed until it suspends itself due
to a wait statement or a sensitivity
list.

Am i right in inferring that a process WILL have to run once even without any events on the sensitivity list? Also, what if there are multiple processes inside an architecture, are they all executed once?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可遇━不可求 2024-08-20 03:58:56

AFAIK,敏感度列表(例如 process (x,y) )只是 wait on x,y; 的简写,就在 end process 之前程序的代码>(第 152 页,“VHDL 设计指南”第 3 版)。所以所有的程序都会至少运行一次。

AFAIK, the sensitivity list (eg, process (x,y) )is just a shorthand for wait on x,y; just before the end process of a procedure (pg 152, "A Designer's Guide to VHDL" 3rd edition). So all procedures will run at least once.

琉璃繁缕 2024-08-20 03:58:56

运行 VHDL 仿真涉及 3 个阶段。这些是细化、初始化和模拟。

在初始化阶段开始时,当前时间设置为 0。然后模拟内核将所有模拟进程放入活动进程队列中。然后从该队列中取出每个模拟进程并执行,直到它挂起。初始化期间模拟过程的执行顺序并不重要。每个模拟过程的初始执行可确保所有初始事务均已调度,以便模拟可以继续进行。

模拟过程隐式或显式地暂停。具有敏感度列表的进程在其顺序语句执行到进程结束后将被隐式挂起。具有一个或多个等待语句的进程在执行第一个等待语句时将显式挂起。

当活动进程队列为空时,初始化阶段完成。

因此,为了回答您的问题,所有进程都将在初始化阶段运行一次。

There are 3 stages involved in running a VHDL simulation. These are elaboration, initialisation and simulation.

At the beginning of the initialisation phase, the current time is set to 0. The simulation kernel then places all of the simulation processes in the active processes queue. Each simulation process is then taken from this queue and executed until it suspends. The order of execution of simuation processes during initialisation is not important. The initial execution of each simulation process ensures that all initial transactions are scheduled so that the simulation can continue.

A simulation process is suspended either implicity or explicity. A process with a sensitivity list is suspended implicity after its sequential statements have been executed to the end of the process. A process with one or more wait statements is suspended explicitly when its first wait statement is executed.

When the active processes queue is empty, the initialisation phase is complete.

So to answer your question, all processes will run once during the initialisation phase.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文