Vhdl 敏感度列表与流程声明关联的必要性是什么?您可以声明一个没有敏感度列表的时钟进程吗?

Vhdl 敏感度列表与流程声明关联的必要性是什么?您可以声明一个没有敏感度列表的时钟进程吗?,vhdl,Vhdl,敏感度列表与流程声明关联的必要性是什么?你能申报吗 没有敏感度列表的时钟进程?带有敏感度列表的进程是一种方便的特例 首先,只有没有wait语句的进程才能有敏感度列表。其次,这样一个进程相当于一个没有敏感度列表的进程,最后一个语句是一个额外的wait语句。wait语句指定了等效的灵敏度 因此,理论上,具有灵敏度列表的过程是可选的。然而,在实践中,它所涵盖的建模案例非常常见。为清晰起见,尽可能使用敏感度列表是更好的建模选项。敏感度列表需要与流程声明关联什么? 有一些信息描述并发语句和进程之间的关系;

敏感度列表与流程声明关联的必要性是什么?你能申报吗
没有敏感度列表的时钟进程?

带有敏感度列表的进程是一种方便的特例

首先,只有没有wait语句的进程才能有敏感度列表。其次,这样一个进程相当于一个没有敏感度列表的进程,最后一个语句是一个额外的wait语句。wait语句指定了等效的灵敏度

因此,理论上,具有灵敏度列表的过程是可选的。然而,在实践中,它所涵盖的建模案例非常常见。为清晰起见,尽可能使用敏感度列表是更好的建模选项。

敏感度列表需要与流程声明关联什么?

有一些信息描述并发语句和进程之间的关系;进程、敏感度列表和等待语句

来自IEEE标准1076-2008IEEE标准VHDL语言参考手册

11。并发语句11.1概述

并发语句用于定义相互关联的块和过程,这些块和过程共同描述设计的总体行为或结构

11.3过程声明

如果在保留字process之后出现一个进程敏感度列表,则假定该进程语句包含一个隐式等待语句作为进程语句部分的最后一个语句;此隐式等待语句的形式为
等待敏感度\u列表

如果流程语句中的保留字流程后出现流程敏感度列表,则流程语句不应包含显式等待语句

10.2等待语句

等待语句::=
[标签:等待[敏感性条款][条件条款][超时条款]
敏感度条款::=在敏感度列表中
灵敏度列表::=信号名称{,信号名称}
条件条款::=直到条件
条件::=表达式
timeout\u子句::=用于time\u表达式

wait语句导致进程语句或过程暂停

条件条款规定了流程继续执行所需满足的条件。如果没有出现条件子句,则假定条件子句直到为真

timeout子句指定进程在此等待语句中保持挂起的最长时间。如果没有出现超时子句,则假定(STD.STANDARD.TIME'HIGH–STD.STANDARD.NOW)的超时子句

由于wait语句灵敏度集中的任何信号发生事件,挂起的进程也会恢复。如果发生此类事件,将对condition子句中的条件进行评估。如果条件的值为FALSE,则进程将再次挂起。这种重复暂停不涉及超时间隔的重新计算

11.1

主并发语句是block语句,它将其他并发语句组合在一起,而process语句则表示单个独立的顺序进程。附加的并发语句提供了方便的语法,用于表示简单、常见的进程形式,以及表示结构分解和规则描述

进程包含一个敏感度列表,该列表提供一个隐式等待语句作为最后一个语句或显式等待语句。进程挂起并继续执行等待语句。没有等待语句的过程将不允许继续执行设计模型-每个过程在模拟初始化期间至少执行一次(14.7.5.2

您可以声明一个没有敏感度列表的时钟进程吗?

对。出于所有实际目的,此类进程必须包含wait语句。IEEE Std 1076.6-2004《VHDL寄存器IEEE标准》 传输级(RTL)合成
(现已撤销)部分6。建模硬件元素6.1边缘敏感顺序逻辑及其子条款描述了时钟分配的形式。即使在今天,随着标准的取消,所有VHDL合成工具仍然支持这些形式,同时通常在文档中描述“首选”形式

基本要求是等待语句(隐含或显式),信号用作其灵敏度列表中的时钟,并评估时钟上的边缘转换(与闩锁的启用级别相反)

由于执行赋值的并发语句表示具有等效语句序列的进程,因此可以使用并发条件信号赋值语句来描述顺序逻辑(6.1.3.5使用并发信号赋值语句的边缘敏感存储)

时钟边缘条件评估有两种常见形式,确定用作时钟的信号上是否存在事件,并检测其当前值(例如,
clk'event和clk='1'
),或使用函数检测从一个二进制状态到另一个二进制状态的转换,使用信号的last(
上升沿(clk)
下降沿)(时钟)

在一系列语句中支持的不同边缘条件评估的数量可能存在合成限制,这些语句反映了将此类语句映射到支持的基本元素的能力,尤其是在FPGA中

您可以声明一个没有敏感度列表的时钟进程吗

Y
process
begin
   wait until rising_edge(clk);
   q <= d;
end process;
q <= d when rising_edge(clk);