數(shù)據(jù)類型及常量、變量
數(shù)據(jù)類型
數(shù)據(jù)類型是用來表示數(shù)字電路中的數(shù)據(jù)存儲(chǔ)和傳送單元
4種基本的數(shù)據(jù)類型
integer(整形)
parameter類型
reg
wire(線網(wǎng))
常量
在程序運(yùn)行的過程中,其值不允許被改變
包括:
數(shù)字(包括整形,x和z值,負(fù)數(shù))
parameter常量(或稱符號(hào)常量)
1. 整數(shù)型常量
二進(jìn)制 (b/B)
十進(jìn)制 (d/D)
十六進(jìn)制 (h/H)
八進(jìn)制 (o/O)
整常數(shù)的3種表達(dá)方式
<位寬>'<進(jìn)制><數(shù)字> | 完整的表達(dá)方式 | 8'11000101或 8'hc5 |
<進(jìn)制><數(shù)字> | 缺省位寬,有機(jī)器系統(tǒng)決定,至少32位 | hc5 |
<數(shù)字> | 缺省進(jìn)制為十進(jìn)制,位寬默認(rèn)為32位 | 197 |
表達(dá)方式 | 說明 | 舉例 |
---|
注:位寬表示二進(jìn)制時(shí)的寬度
2.x和z值
x表示不定值(8'b1001xxxx或8’h9x);
z表示高阻值(8'b1001zzzz或8’h9z);
每個(gè)字符代表的二進(jìn)制的寬度取決于所用的進(jìn)制;
當(dāng)用二進(jìn)制表示時(shí),以表明位寬的數(shù)若用x或者z表示某些位,則只有在最左邊的x或z具有擴(kuò)展性例如:8'bzx = 8'bzzzz_zzzx 8'b1x = 8'b0000_001x
?是z的另一種表示符號(hào),建議在case語句中使用?表示高阻態(tài)z。
casez (select) 4'h???1: out=a; 4'h??1?: out=b; 4'h?1??: out=c; 4'h1???: out=d; endcase
3.負(fù)數(shù)
在位寬前邊加一個(gè)負(fù)號(hào),表示負(fù)數(shù);
如:-8’d5 //5的補(bǔ)數(shù) =8'11111011
負(fù)號(hào)不能放在位寬和進(jìn)制之間,也不能放在進(jìn)制和數(shù)字之間
4.parameter常量(符號(hào)常量)
用parameter來定義一個(gè)標(biāo)示符,代表一個(gè)常量,稱為符號(hào)常量
格式:
parameter 參數(shù)名1 = 表達(dá)式, 參數(shù)名2 = 表達(dá)式;
parameter 參數(shù)型數(shù)據(jù)的確認(rèn)符,后邊的為賦值語句表
每個(gè)賦值語句的右邊必須為常數(shù)表達(dá)式,且只能包含數(shù)字或先前定義過的符號(hào)常量:
parameter addrwidth =16; //合法
parameter addrwidth = addrwidth * 2 //非法
常用參數(shù)來定義延時(shí)時(shí)間和變量寬度
可用字符串表示的任何地方,都可用定義的參數(shù)來代替;
參數(shù)是本地的,其定義只在本模塊有效;
在模塊或?qū)嵗瘯r(shí),可通過參數(shù)傳遞改變?cè)诒灰媚K或?qū)嵗幸讯x的參數(shù)
localparam 符號(hào)常量:
格式:
localparam 參數(shù)名1 = 表達(dá)式, 參數(shù)名2 = 表達(dá)式;
localparam 參數(shù)型數(shù)據(jù)的確認(rèn)符,后邊的為賦值語句表
parameter可作為在頂層模塊中例化底層模塊時(shí)傳遞參數(shù)的接口;
localparam的作用域僅僅限于當(dāng)前module,不能作為參數(shù)傳遞的接口;
實(shí)例:
module mod (out, ina, inb); ... parameter cycle = 8, real_cinstant = 2.039; ... endmodule module test; ... mod #(6,3.19) mk(out,ain,bin); //對(duì)mod模塊的實(shí)例引用及參數(shù)的傳遞 ... endmodule
變量
在程序運(yùn)行過程中,其值可以改變的量,稱為變量;
常用的有3種:
網(wǎng)絡(luò)型(nets)
寄存器型(register)
數(shù)組(memory)
1.net型變量
輸出始終隨輸入的變化二變化的變量(表示結(jié)構(gòu)實(shí)體之間的物理連接)
常用的net變量為wire。
wire型變量
最常用的nets型變量,常用來表示以assign語句賦值的組合邏輯信號(hào)
模塊中的輸入/輸出信號(hào)類型缺省為wire型
可用做任何方程式的輸入,或“assign”語句和實(shí)例元件的輸出。
2.register 型變量
對(duì)應(yīng)具有狀態(tài)保持作用的電路元件(如觸發(fā)器,寄存器)
常用來表示過程塊語句(initial always,task,function)內(nèi)的指定信號(hào)
常用register型變量:
reg:常代表觸發(fā)器
integer:32位帶符號(hào)整數(shù)型變量
real:64位帶符號(hào)實(shí)數(shù)型變量
time:無符號(hào)時(shí)間變量
register變量與net變量的根本區(qū)別:register變量要被明確的賦值,并且在被重新賦值前一直保持原值
register變量必須通過過程語句塊賦值,不能使用assign語句塊賦值
在過程語句塊內(nèi)賦值的每個(gè)信號(hào)必須定義成register型。
reg型變量
在過程塊中被賦值的信號(hào),往往代表觸發(fā)器,但不一定就是觸發(fā)器(也可以是組合邏輯信號(hào))
· reg與wire的區(qū)別:
//reg型變量既可以生成觸發(fā)器,也可以生成組合邏輯 //wire型變量只能生成組合邏輯 //用reg變量生成組合邏輯 module rw1(a,b,out1,out2); input a,b; output out1, out2; reg out1; wireout2; assign out2 = a; //連續(xù)賦值語句 always @(b) //電平觸發(fā) out1 <=~b; //過程賦值語句 endmodule? //用reg變量生成觸發(fā)器 module rw2(clk,d,out1,out2); input clk,d; output out1, out2; reg out1; wire????out2; assign out2 = d & ~out1; //連續(xù)賦值語句 always @(posedge clk) //邊沿觸發(fā) begin out1 <= d; //過程賦值語句 end endmodule
· 邊沿觸發(fā)和電平觸發(fā)的區(qū)別:
邊沿觸發(fā):posedge定義為上升沿觸發(fā),只有在后面信號(hào)由低變高的時(shí)候才觸發(fā),negedge正好相反,為下降沿觸發(fā)。
電平觸發(fā):當(dāng)敏感信號(hào)發(fā)生變化是觸發(fā)
3.memory型變量——數(shù)組
有若干個(gè)相同寬度的reg向量構(gòu)成的數(shù)組
Verilog 通過reg型變量簡(jiǎn)歷數(shù)組來對(duì)存儲(chǔ)器建模
memory型變量可描述RAM,ROM和reg文件
memory型變量通過擴(kuò)展reg型變量的地址范圍來生成
reg [n-1:0] 存儲(chǔ)器名[m-1:0]; 每個(gè)存儲(chǔ)單元位寬為n,共有m個(gè)存儲(chǔ)單元
例:
reg [n-1:0] rega; //一個(gè)n位的寄存器;
reg mema [n-1:0] ; //n個(gè)一位寄存器組成的存儲(chǔ)器
賦值方式不同:
一個(gè)n位的寄存器可用一條賦值語句賦值,一個(gè)完整的存儲(chǔ)器則不行,若要對(duì)某存儲(chǔ)器中的存儲(chǔ)單元進(jìn)行讀寫操作,必須指明該單元在存儲(chǔ)器中的地址!
例:
rega=0; //合法賦值語句
mema=0; // 非合法賦值語句
mema[8]=1;//合法賦值語句
mema[1023:0]=0; //合法賦值語句
審核編輯:劉清
-
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120366 -
ROM
+關(guān)注
關(guān)注
4文章
572瀏覽量
85769 -
RAM
+關(guān)注
關(guān)注
8文章
1368瀏覽量
114697 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2000瀏覽量
61155 -
Verilog語言
+關(guān)注
關(guān)注
0文章
113瀏覽量
8233
原文標(biāo)題:IC學(xué)霸筆記 | Verilog基本語法之?dāng)?shù)據(jù)類型
文章出處:【微信號(hào):IC修真院,微信公眾號(hào):IC修真院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論