一、常量
常量按類型分為數字常量、字符常量和其他。
1.數字常量
數字常量分為整數和實數。
整數的表示形式:<+/-><數字位寬>'<數字類型><數字>
負號表示為負數,負數通常表示為二進制的補碼形式:-6‘d3表示6位的用二進制補碼形式存儲的十進制3,表示負數;
數字類型:十進制(D或d)、十六進制(H或h)、二進制(B或b)、八進制(O或o);
數字:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
實數表現形式:
十進制,如:4.0、3.567;
科學計數法:3.6e2、5e-4;
2.字符串
由雙引號括起來的字符隊列,字符串不可多行書寫,即不能含回車符。如“hello verilog” //為一字符串
3.其他
x和z值以及下划線“_”和“?”。
x表示不確定值,z表示高阻值:x或z在二進制中為1位的x或z,在八進制中位3位,在十六進制中為4位。8'b1100zzzz //相當於8'bcz
"_"可出現在數字常量的任何位置,只是提高可讀性,編譯時會被忽略。
"?"是z的另一種表示,使用問號是增加casex和casez語句的可讀性,"?"(高阻抗)表示“不必關心”的情況,如4'b10?? //相當於4'b10zz
二、數據類型
Verilog有兩大數據類型:線網類型、寄存器類型
1.線網類型
線網結構相當於硬件電路的各種物理連接,特點是輸出值跟隨輸入值變化而變化
定義格式:
wire[位寬]<數據名>:位寬缺省默認為1;
多位wire類型變量:wire[n-1:0]<數據名>或wire[n:1]<數據名> 表示數據寬度為n位
為避免使用關鍵字,建議數據名用大寫字母
2.寄存器類型
具有保持狀態的電路元件,如觸發器。寄存器類型只能在initial和always語中,通過過程賦值。
在initial和always過程塊中,被賦值的信號必須定義成寄存器類型,即使某些實際設計信號實際上不是寄存器類型。
verilog中共有4種寄存器變量:reg型、integer型(32位帶符號整形)、real型(64位帶符號實型)、time型(無符號時間變量)。
定義格式:
與wire類型相似。
reg[位寬]<數據名>:位寬缺省默認為1;
多位reg類型變量:reg[n-1:0]<數據名>或reg[n:1]<數據名> 表示數據寬度為n位
3.參數型(parameter)
用parameter定義的參數代表常量,不能進行賦值操作。
定義格式:
parameter <參數名>=表達式:parameter WIDTH=256; //定義寬度為常數256
