第五讲行为建模 西安邮电学院通信工程系 过程赋值(procedural assignment). 冬 在过程块中的赋值称为过程赋值。 在过程赋值语句中表达式左边的信号必须是寄存器类型(如reg类型) 在过程赋值语句等式右边可以是任何有效的表达式,数据类型也没有限制。 如果一个信号没有声明则缺省为wire类型。使用过程赋值语句给wire赋值会产生错 误。 module adder (out,a,b,cin), input a,b,cin; 时序控制 output [1:0]out wire a,b,cin; reg half sum; reg [1:0]out; always @a or b or cin) 顺序块语句 begin half sum a^b^cin ;/OK half carry a b I a !b cin I !a b cin /7 ERRORI out (half_carry,hahlfsumiry end 没有说明 endmodule
第五讲 行为建模 西安邮电学院通信工程系 过程赋值(procedural assignment) ❖ 在过程块中的赋值称为过程赋值。 ❖ 在过程赋值语句中表达式左边的信号必须是寄存器类型(如reg类型) ❖ 在过程赋值语句等式右边可以是任何有效的表达式,数据类型也没有限制。 ❖ 如果一个信号没有声明则缺省为wire类型。使用过程赋值语句给wire赋值会产生错 误。 module adder (out, a, b, cin); input a, b, cin; output [1:0] out; wire a, b, cin; reg half_sum; reg [1: 0] out; always @( a or b or cin) begin half_sum = a ^ b ^ cin ; // OK half_carry = a & b | a & !b & cin | !a & b & cin ; // ERROR! out = {half_carry, half_ sum} ; end endmodule half_carry 没有说明 时序控制 顺序块语句
第五讲行为建模 西安邮电学院通信工程系 过程中的块语句 冬块语句用来将多个语句组织在一起,使得他们在语法上如同一个语句。块 语句分为两类。 顺序块:语句置于关键字begin和end之间,块中的语句以顺序方式执行。 并行块:关键字fork和join之间的是并行块语句,块中的语句并行执行。 必 Fork和join语句常用于testbench描述。这是因为可以一起给出矢量及其 绝对时间,而不必描述所有先前事件的时间。 always always initial initial begin fork begin fork end join end join
第五讲 行为建模 西安邮电学院通信工程系 过程中的块语句 ❖ 块语句用来将多个语句组织在一起,使得他们在语法上如同一个语句。块 语句分为两类。 ❖ 顺序块:语句置于关键字begin和end之间,块中的语句以顺序方式执行。 ❖ 并行块:关键字fork和join之间的是并行块语句,块中的语句并行执行。 ❖ Fork和join语句常用于testbench描述。这是因为可以一起给出矢量及其 绝对时间,而不必描述所有先前事件的时间
第五讲行为建模 西安邮电学院通信工程系 有名块 有名块的块名作用: ?便于实现对块语句的有效控制 格式: 口用disable语句终止或提前结束有名块的执行过 begin:块名 程 ?允许在块内引入局部变量 ▣只在块内起作用的变量 end 口变量名可以和块外的其他变量名相同 或 口一定是寄存器类 ▣例:begin: SEQ BLK fork:块名 reg[3:0] sat sat mask data; Join ff =sat; end
第五讲 行为建模 西安邮电学院通信工程系 有名块 格式: begin: 块名 . end 或 fork:块名 . join 有名块的块名作用: ❖ 便于实现对块语句的有效控制 ❑ 用disable语句终止或提前结束有名块的执行过 程 ❖ 允许在块内引入局部变量 ❑ 只在块内起作用的变量 ❑ 变量名可以和块外的其他变量名相同 ❑ 一定是寄存器类 ❑ 例: begin: SEQ_BLK reg[3:0] sat sat = mask & data; ff = ^sat; end
第五讲行为建模 西安邮电学院通信工程系 过程的时序控制 在过程块中可以说明过程时序。过程时序控制有三类: 延时执行:#delay, 延迟指定时间步后执行语句 边沿敏感事件的时序控制:@(<signal>) 口在信号发生翻转后执行语句。 口可以说明信号有效沿是上升沿(posedge)还是下降沿 (negedge). 口可以用关键字or指定多个参数。 电平敏感事件的时序控制:wait(<expr>) 口直至expr值为真时(非零)才执行语句。 口若expr已经为真则立即执行语句
第五讲 行为建模 西安邮电学院通信工程系 过程的时序控制 在过程块中可以说明过程时序。过程时序控制有三类: ❖ 延时执行:#delay, 延迟指定时间步后执行语句 ❖ 边沿敏感事件的时序控制:@(<signal>) ❑ 在信号发生翻转后执行语句。 ❑ 可以说明信号有效沿是上升沿(posedge)还是下降沿 (negedge)。 ❑ 可以用关键字or指定多个参数。 ❖ 电平敏感事件的时序控制:wait(<expr>) ❑ 直至expr值为真时(非零)才执行语句。 ❑ 若expr已经为真则立即执行语句
第五讲行为建模 西安邮电学院通信工程系 延时执行 语法:<定时控制>〈寄存器变量>=<表达式>; 执行过程:定时控制->求表达式->赋值 举例: #l0rega=regb;/延时10个单位后,执行赋值。 #2q=a&b; //延时2个单位后,求表达式,赋 /值。 冬与assign语句延时相似,为惯性延时
第五讲 行为建模 西安邮电学院通信工程系 延时执行 ❖ 语法:<定时控制> <寄存器变量>=<表达式>; ❖ 执行过程:定时控制 -> 求表达式 ->赋值 ❖ 举例: #10 reg_a=reg_b; //延时10个单位后,执行赋值。 # 2 q= a & b; //延时2个单位后,求表达式,赋 //值。 ❖ 与assign语句延时相似,为惯性延时