連續賦值語句用於組合邏輯的建模。等式左邊是wire類型的變數。等式右邊可以是常量、由運算符如邏輯運算符、算術運算符參與的表達。在initial或always外的assign賦值語句稱為連續賦值語句,一般在描述純組合電路時使用。
基本介紹
- 中文名:連續賦值
- 外文名:continuous assignment
- 使用情況:數據流建模、組合邏輯建模
- 語法:assign net_type = 表達式
- 數據類型:左側必須是線網型數據(wire)
- 套用學科:機械工程、儀器科學、計算機科學
簡介,數據流建模,實例,特點,與過程賦值區別,
簡介
在initial或always外的assign賦值語句稱為連續賦值語句,一般在描述純組合電路時使用。
數據流的描述是採用連續賦值語句(assign )語句來實現的。語法如下:
assign net_type =表達式;
連續賦值語句用於組合邏輯的建模。等式左邊是wire類型的變數。等式右邊可以是常量、由運算符如邏輯運算符、算術運算符參與的表達。
數據流建模
Verilog模型可以是實際電路不同級別的抽象,因此有多種不同的建模方法。其中最常用的建模方法有以下三種:
1)門級結構建模
2)行為描述建模
3)數據流建模
數據流的建模方式就是通過對數據流在設計中的具體行為的描述的來建模。最基本的機制就是用連續賦值語句。在連續賦值語句中,某個值被賦給某個線網變數(信號),語法如下:
assign [delay] net_name = expression;
如:assign #2 A = B;
實例
wire [3:0] Z, Preset, Clear; //線網說明
assign Z = Preset & Clear; //連續賦值語句
wire Cout, C i n ;
wire [3:0] Sum, A, B;
. . .
assign {Cout, Sum} = A + B + Cin;
assign Mux = (S = = 3)? D : 'bz;
特點
- 連續賦值語句的執行是:只要右邊表達式任一個變數有變化,表達式立即被計算,計算的結果立即賦給左邊信號。
- 連續賦值語句之間是並行語句,因此與位置順序無關。
- 語法上,有關鍵字“assign”來標識;
- 左側被賦值的數據類型必須是線網型數據(wire);
- 連續賦值語句不能出現在過程塊中(initial/always);
- 連續賦值語句主要用來對組合邏輯進行建模以及線網數據間進行描述;
- 連續賦值語句產生作用後,賦值表達式中信號的任何變化都將立即被反映到賦值線網型數據的取值上;
與過程賦值區別
過程賦值 | 連續賦值 | |
assign | 無assign(過程性連續賦值除外) | 有assign |
符號 | 使用“=”或“《=” | 只使用“=” |
位置 | 在always語句或initial語句中均可出現 | 不可出現於always語句和initial語句 |
執行條件 | 與周圍其他語句有關 | 等號右端運算元的值發生變化時 |
用途 | 驅動暫存器 | 驅動線網 |