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只能單獨使用,不能嵌套在任何行為塊語句中。