首页 百科知识 信号赋值语句解析

信号赋值语句解析

时间:2023-10-10 百科知识 版权反馈
【摘要】:通过对上述两个例子的分析可见:每一并行信号赋值语句都相当于一条缩写的进程语句,而这条语句的所有输入(或读入)信号都被隐性地列入此过程的敏感信号表中。在结构体中的条件信号赋值语句的功能与在进程中的IF语句相同。在执行条件信号赋值语句时,每一赋值条件是按书写的先后关系逐项测定的。选择信号赋值语句本身不能在进程中应用,但其功能却与进程中的CASE语句的功能相似。

4.2.1 并行信号赋值语句

信号赋值语句有两种:

(1)在结构体中的进程内使用,此时它作为一种顺序语句出现;

(2)在结构体的进程之外使用,此时它是一种并行语句,因此称之为并行信号赋值语句。

一条并行信号赋值语句与一个信号赋值的进程语句是等价的,我们可以把一条并行信号赋值语句改写成一个信号赋值的进程语句。

【例4.22】

img149

本例是一个二输入与门的VHDL描述,在结构体中使用了并行信号赋值语句。

【例4.23】

img150

通过对上述两个例子的分析可见:每一并行信号赋值语句都相当于一条缩写的进程语句,而这条语句的所有输入(或读入)信号都被隐性地列入此过程的敏感信号表中。因此,任何信号的变化都将启动相关并行语句的赋值操作,而这种启动完全是独立于其他语句的,它们都可以直接出现在结构体中。

并行信号赋值语句有三种形式:

(1)简单信号赋值语句。

(2)条件信号赋值语句。

(3)选择信号赋值语句。

这三种信号赋值语句的共同点是:赋值目标必须都是信号,所有赋值语句与其他并行语句一样,在结构体内的执行是同时发生的。

1)简单信号赋值语句

并行简单信号赋值语句是VHDL并行语句结构的最基本的单元,它的语句格式如下:

信号赋值目标<=表达式

式中信号赋值目标的数据类型必须与赋值符号右边表达式的数据类型一致。

【例4.24】

img151

本例的结构体中有4条并行信号赋值语句,他们的执行顺序与书写顺序是无关的。

2)条件信号赋值语句

条件信号赋值语句也是一种并发描述语句,它是一种根据不同条件将不同的表达式代入目的信号的语句。

条件信号赋值语句的表达方式如下:

img152

在结构体中的条件信号赋值语句的功能与在进程中的IF语句相同。在执行条件信号赋值语句时,每一赋值条件是按书写的先后关系逐项测定的。条件信号赋值语句将第一个满足关键词WHEN后的赋值条件所对应的表达式中的值,赋给赋值目标信号;最后一个表达式没有条件,也就是说在前面的条件都不满足时,就将该表达式的值赋给赋值目标信号。由此可知,条件信号语句允许有重叠现象,这与CASE语句有很大的不同。

【例4.25】

img153

img154

本例表述的电路,由于条件测试的顺序性,第一子句具有最高赋值优先权,第二句其次,第三句最后。这就是说,如果当p1和p2同时为1时,z获得的赋值是a。

3)选择信号赋值语句

选择信号赋值语句格式如下:

img155

选择信号赋值语句本身不能在进程中应用,但其功能却与进程中的CASE语句的功能相似。CASE语句的执行依赖于进程中敏感信号的改变而启动进程,而且要求CASE语句中各子句的条件不能有重叠,必须包容所有的条件。

选择信号语句中也有敏感量,即关键词WITH旁的选择表达式。每当选择表达式的值发生变化时,就将启动此语句对于各子句的选择值进行测试对比,当发现有满足条件的子句的选择值时,就将此子句表达式中的值赋给赋值目标信号。与CASE语句相类似,选择赋值语句对于子句条件选择值的测试具有同期性,不像以上的条件信号赋值语句那样是按照子句的书写顺序从上至下逐条测试的。因此,选择赋值语句不允许有条件重叠的现象,也不允许存在条件涵盖不全情况。

下面的例子是一个采用选择信号代入语句描述的选通8位总线的四选一多路选择器。

【例4.26】

img156

img157

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈