-
連續賦值
鎖定
連續賦值語句用於組合邏輯的建模。等式左邊是wire類型的變量。等式右邊可以是常量、由運算符如邏輯運算符、算術運算符參與的表達。在initial或always外的assign賦值語句稱為連續賦值語句,一般在描述純組合電路時使用。
- 中文名
- 連續賦值
- 外文名
- continuous assignment
- 使用情況
- 數據流建模、組合邏輯建模
- 語 法
- assign net_type =表達式
- 數據類型
- 左側必須是線網型數據(wire)
- 應用學科
-
機械工程
儀器科學
計算機科學
連續賦值簡介
在initial或always外的assign賦值語句稱為連續賦值語句,一般在描述純組合電路時使用。
數據流的描述是採用連續賦值語句(assign )語句來實現的。語法如下:
assign net_type =表達式;
連續賦值數據流建模
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”來標識;
- 左側被賦值的數據類型必須是線網型數據(wire);
- 連續賦值語句不能出現在過程塊中(initial/always);
- 連續賦值語句主要用來對組合邏輯進行建模以及線網數據間進行描述;
- 連續賦值語句產生作用後,賦值表達式中信號的任何變化都將立即被反映到賦值線網型數據的取值上;
連續賦值與過程賦值區別
過程賦值 | 連續賦值 | |
assign | 無assign(過程性連續賦值除外) | 有assign |
符號 | 使用“=”或“《=” | 只使用“=” |
位置 | 在always語句或initial語句中均可出現 | 不可出現於always語句和initial語句 |
執行條件 | 與周圍其他語句有關 | 等號右端操作數的值發生變化時 |
用途 | 驅動寄存器 | 驅動線網 |
●連續賦值等號右邊操作數發生變化就需要執行(上電便一直執行),而過程性賦值語句只是執行一次,注意我這裏的一次是指:在initial塊中,過程性賦值只順序執行一次,而在always塊中,每一次滿足always的條件時,都要順序執行一次該 always塊中的語句。連續賦值適用於線網,過程賦值適用於寄存器。