赋值语句
(1)过程赋值语句
语法格式:<被赋值变量><赋值操作符><赋值表达式>
赋值操作符:可以是“=”或“<=”分别代表阻塞型和非阻塞型复制类型
(2)外部时间控制方式
#10 a =b;
相当于:
initial
begin
#10
a = b
end
(3)内部时间控制方式
a = #10 b;
相当于
initial
begin
temp =b;
#10;
a = temp;
end
(4)阻塞性过程赋值语句 =
a.顺序块中的各条阻塞型赋值语句将以他们在顺序块中的排列先后次序依次得到执行;
b.并行块中得各条阻塞型赋值语句同时执行执行;
(5)非阻塞性过程赋值语句 <=
在begin-end中,一条非阻塞性过程赋值语句的执行不会阻塞下一条语句的执行。
(6)连续赋值语句
a.显式连续赋值语句
线网型数据类型(赋值驱动强度)[线网型数据位宽] 线网型数据名;
assign #(延时量) 线网型数据名 = 赋值表达式
例如:
wire z,x,y;
assign #(3,2,4) z = x&y;
b.隐式连续赋值语句
线网型数据类型(赋值)驱动强度[线网型数据位宽] #(延时量) 线网型数据名 = 赋值表达式
wire #(3,2,4) z = x&y;
c.延时量的基本格式:
#(delay1,delay2,delay3)
delay1指的是线网型数据转移到“1”状态的延时值-----上升延时
delay2指的是线网型数据转移到“0”状态的延时值-----下降延时
delay3指的是线网型数据转移到“Z(高阻)”状态的延时值-----关断延时
(7)过程赋值语句
1> assign和deassign:前者式用来实现对寄存器类型变量的连续赋值操作,而不能对线网型数据进行连续赋值操作;后者撤销连续赋值的语句
注意:
deassign语句撤销对寄存器变量的连续赋值后,该寄存器变量仍将保持该语句执行之前的取值。
例如:
reg[3:0] out;
initial
begin
out = 0; //s1
assign out = 1; //s2
assign out = 2; //s3
deassign out; //s4 撤销连续赋值的语句
end
//执行撤销连续赋值的语句后,取值仍保持为2
2> force和release
force语句的优先级高于assign语句,我们称为强制语句。
release语句force语句的连续操作,–释放语句