assign,连续赋值语句,有些书称为数据流描述方式。
assign,顾名思义,分配、布置。
它是将一个表达式的值、数值(寄存器的值、固定电平)的输出电平,连接至信号线或输出引脚上。
举个例子:
假如信号定义:
wire y; // 或者output y;
input a;
reg b;
则以下描述都可以:
assign y=a&b; //位运算
assign y=1'b0; //连接到固定电平
assign y=a+b+c; //算术运算
assign y=(a==0) ? b:c; // 条件运算
需要注意的是:
assign,我一般视其为“连线”语句。y只能是wire或output等导线型信号,不能是reg类型。因为寄存器的赋值是需要触发信号的,赋值时需要触发信号,而assign并不能提供触发信号,assign只能做导线连接操作。
由于assign描述了硬件连线,所以多个assign之间不存在先后顺序,也没有执行顺序。
assign只能单独使用,不能嵌套在任何行为块语句中。