数据流描述 assign:
即信号从输入流向输出,并不会在其中存储。 没有reg,只有assign。数据流描述中最基本的语句是assign连续赋值语句。 eg: 4位全加器
// 4位全加器
module Full_Add_4b_1(A, B, Cin, Sum, Cout);
input[3:0] A;
input[3:0] B;
input Cin;
output[3:0] Sum;
output Cout;
assign {Cout, Sum} = A + B + Cin;
endmodule
行为描述 always:
类似数据流的建模方式,但一般是把用 initial块 语句或 always 块 语句描述的归为行为建模方式。 只有寄存器 reg型 的信号才可以在 always 和 initial 语句中进行赋值。从0 时刻开始always 语句是一直重复执行,由敏感表(always 语句括号内的变量)中的变量触发。
eg: 4位全加器
module Full_Add_4b_2(A, B, Cin, Sum, Cout);
input[3:0] A;
input[3:0] B;
input Cin;
output[3:0] Sum;
output Cout;
reg[3:0] Sum; // reg型变量才可以用always
reg Cout;
always @(A or B or Cin)
begin
{Cout, Sum} 行为级描述->RTL描述->门级网标->物理版图
|