-
连续赋值语句-机器人动力学与控制-word版下载
资源介绍
7.1 连续赋值语句
连续赋值语句将值赋给线网 (连续赋值不能为寄存器赋值 ),它的格式如下 (简单形式 ):
a s s i g n LHS_target = RHS_expression;
例如,
w i r e [3:0] Z, Preset, Clear; //线网说明
a s s i g n Z = Preset & Clear; //连续赋值语句
连续赋值的目标为 Z,表达式右端为“ Preset & Clear”。注意连续赋值语句中的关键词
a s s i g n。
连续赋值语句在什么时候执行呢 ? 只要在右端表达式的操作数上有事件 (事件为值的变化 )
发生时,表达式即被计算;如果结果值有变化,新结果就赋给左边的线网。
在上面的例子中,如果 P re s e t或C l e a r变化,就计算右边的整个表达式。如果结果变化,
那么结果即赋值到线网 Z。
连续赋值的目标类型如下 :
1) 标量线网
2). 向量线网
3) 向量的常数型位选择
4) 向量的常数型部分选择
5) 上述类型的任意的拼接运算结果
下面是连续赋值语句的另一些例子:
a s s i g n BusErr = Parity| (One & OP) ;
a s s i g n Z = ~ (A | B) & (C | D) & (E | F) ;
只要A、B、C、D、E或F的值变化,最后一个连续赋值语句就执行。在这种情况下,计
算右边整个表达式,并将结果赋给目标 Z。
在下一个例子中,目标是一个向量线网和一个标量线网的拼接结果。
wire C o u t, C i n ;
w i r e [3:0] Sum, A, B;
. . .
a s s i g n {Cout, Sum} = A + B + Cin;
因为A和B是4位宽,加操作的结果最大能够产生 5位结果。左端表达式的长度指定为 5位
(Cout 1位,Sum 4位)。赋值语句因此促使右端表达式最右边的 4位的结果赋给 S u m,第5位(进
位位)赋给C o u t。
下例说明如何在一个连续赋值语句中编写多个赋值方式。