第4節(jié) 信號類型
Verilog HDL 的信號類型有很多種,主要包括兩種數(shù)據(jù)類型:線網(wǎng)類型(net type) 和寄存器類型( reg type)。在進(jìn)行工程設(shè)計的過程中也只會使用到這兩個類型的信號。
4.1 信號位寬
定義信號類型的同時,必須定義好信號的位寬。默認(rèn)信號的位寬是 1 位,當(dāng)信號的位寬為 1 時可不表述,如定義位寬為 1 的 wire 型信號 a 可直接用“ wire a;”來表示。 但信號的位寬大于 1 位時就一定要表示出來,如用“ wire [7:0]”來表示該 wire 型信號的位寬為 8 位(位寬數(shù)從0開始計)。
信號的位寬取決于要該信號要表示的最大值。該信號能表示的無符號數(shù)最大值是: 2n-1,其中n表示該信號的位寬。例如,信號 a 的最大值為 1000,那么信號 a 的位寬必須大于或等于 10 位。
下面分享一個位寬計算技巧:打開電腦的“計算器” 后選用程序員模式,在在 10 進(jìn)制下輸入信號值,如 1000,隨后可以查看信號位寬。
4.2 線網(wǎng)類型 wire
線網(wǎng)類型用于對結(jié)構(gòu)化器件之間的物理連線的建模, 如器件的管腳,芯片內(nèi)部器件如與門的輸出等。由于線網(wǎng)類型代表的是物理連接線,因此其不存儲邏輯值,必須由器件驅(qū)動。通常用 assign 進(jìn)行賦值, 如 assign A = B ^ C。
wire 類型定義語法如下:
wire [msb: lsb] wire1, wire2, . . .,wireN;
msb 和 lsb 定義了范圍,表示了位寬。例如[7:0]是 8 位位寬,也就是可以表示成 8’b0 至 8’b1111_1111;
msb 和 lsb 必須為常數(shù)值;
如果沒有定義范圍,缺省值為 1 位;
沒有定義信號數(shù)據(jù)類型時,缺省為 wire 類型。
注意數(shù)組類型按照降序方式,如[7: 0] , 不要寫成[0:7]。
下面對上述情況進(jìn)行舉例說明:
wire [3:0] Sat; // Sat 為 4 位線型信號
wire Cnt; //1 位線型信號
wire [31:0] Kisp, Pisp, Lisp ;// Kisp, Pisp, Lisp 都是 32 位的線型信號。
4.3 寄存器類型 reg
reg 是最常用的寄存器類型,寄存器類型通常用于對存儲單元的描述,如 D 型觸發(fā)器、 ROM等。寄存器類型信號的特點是在某種觸發(fā)機(jī)制下分配了一個值,在下一觸發(fā)機(jī)制到來之前保留原值。但必須注意的是: reg 類型的變量不一定是存儲單元,如在 always 語句中進(jìn)行描述的必須是用 reg類型的變量。
reg 類型定義語法如下:
reg [msb: lsb] reg1, reg2, . . . reg N;
msb 和 lsb 定義了范圍,表示了位寬。例如[7:0]是 8 位位寬,也就是可以表示成 8’b0 至 8’b1111_1111;
msb 和 lsb 必須為常數(shù)值;
如果沒有定義范圍,缺省值為 1 位;
沒有定義信號數(shù)據(jù)類型時,缺省為 wire 類型,不是 reg 型。
對數(shù)組類型按照降序方式,如[7: 0] ;不要寫成[0:7]。
例如:
reg [3:0] Sat; // Sat 為 4 位寄存器型信號。
reg Cnt; //1 位寄存器。
reg [31:0] Kisp, Pisp, Lisp ; // Kisp, Pisp, Lisp 都是 32 位的寄存器型信號。
4.4 wire 和 reg 的區(qū)別
reg 型信號并不一定生成寄存器。 針對什么時候使用 wire 類型,什么時候用 reg 類型這一問題,本書總結(jié)出一套解決方法:在 本模塊中使用 always 設(shè)計的信號都定義為 reg 型, 其他信號都定義為 wire 型 。
上述代碼中, cnt1 是用 always 設(shè)計的,所以定義為 reg 型。 add_cnt1 和 end_cnt 不是由 always 產(chǎn)生的,所以定義為 wire 型。
上述代碼中,信號 x 是用 always 設(shè)計的,所以要定義為 reg 型。注意: 實際的電路中信號 x 不是寄存器類型,但仍然定義為 reg 型。
以上是例化的代碼,其中 df 是例化模塊的輸出。由于 df 不是由 always 產(chǎn)生的,而是例化產(chǎn)生的, 因此要定義成 wire 型。
————————————————
版權(quán)聲明:本文為CSDN博主「原來如此呀」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Royalic/article/details/121151985
-
寄存器
+關(guān)注
關(guān)注
31文章
5433瀏覽量
124413 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7255瀏覽量
91814 -
Verilog
+關(guān)注
關(guān)注
29文章
1367瀏覽量
112251
發(fā)布評論請先 登錄
FPGA入門:FPGA設(shè)計者入門必備!

求FPGA入門資料
Xilinx FPGA無痛入門,海量教程免費下載
Xilinx FPGA入門連載50:FPGA片內(nèi)RAM實例之chipscope在線調(diào)試
Xilinx FPGA入門連載52:FPGA片內(nèi)FIFO實例之FIFO配置
Xilinx FPGA入門連載52:FPGA片內(nèi)FIFO實例之FIFO配置
Xilinx FPGA入門連載54:FPGA 片內(nèi)FIFO實例之chipscope在線調(diào)試
Xilinx FPGA入門連載58:FPGA 片內(nèi)異步FIFO實例之chipscope在線調(diào)試
Xilinx FPGA入門之PLL實例的基本配置
FPGA入門之ModelSim的安裝步驟
FPGA入門之什么是FPGA

評論