邏輯0:表示低電平,一般對應(yīng)電路GND
邏輯1:表示高電平,一般對應(yīng)電路VCC
邏輯X:表示未知,可能是高電平,也可能是低電平
邏輯Z:表示高阻態(tài),外部沒有激勵信號,是個懸空狀態(tài)
Verilog 數(shù)字進制格式包括二進制(b)、八進制(o)、十進制(d)和十六進制(h)
一般常用的為二進制、十進制、以及十六進制
二進制表示為: 4'b0101 表示 4 位二進制數(shù)字 0101
十進制表示為: 4'd2 表示4位十進制數(shù)字2(二進制0010)
十六進制表示為: 4'ha 表示4位十六進制數(shù)字a(二進制1010)
16'b1001_1010_1010_1001 = 16'h9AA9
標識符 :用于定義 模塊名、端口名、信號名 等。
1、標識符可是任意一組 字母、數(shù)字、$符號和_(下劃線)符號 的組合;
2、標識符的第一個字符必須是字母或者下劃線;
3、標識符區(qū)分大小寫,不建議大小寫混合使用;
在 verilog 中,主要有三大類數(shù)據(jù)類型
reg [31:0] delay_cnt; //延時計數(shù) 32位位寬 reg key_reg; //沒有指定位寬,默認位寬為1
reg類型數(shù)據(jù),只能在always語句和 initial語句中被賦值。
(類似三目運算符)
左移時,位寬增加;右移時,位寬不變。
例如:c = {a,b[3:0]};
initial 語句在模塊中只執(zhí)行一次。
常用于測試文件編寫,用于產(chǎn)生仿真測試信號(激勵信號),或者用于對存儲器變量賦初值。
always 語句在持續(xù)活動。
只有與時序結(jié)合才能正常運行。
沿觸發(fā)的always
分支表達式的值互補相同
表達式的位寬必須相等,不能用 'bx,代替 n'bx ('bx,默認表示32位數(shù)據(jù))
"casez" 比較時,不考慮表達式中的高阻值 z
"casex" 比較時,不考慮表達式中的高阻值 z 和 不定值 x
if ...
if ... else ...
if ... else if ... else ...
條件語句必須在過程塊中使用(過程塊語句是指有 initial 和 always 語句引導(dǎo)的塊語句)
if語句對表達式真值判斷:若為1,為真;若非1(為0,x,z),則為假;
if 和 else 內(nèi)的操作語句,可以使用 begin 、 end,包含多個語句
允許 if 語句嵌套
阻塞賦值 (b = a;)
非阻塞賦值 (b <= a;)
參數(shù)是常量,在Verilog中,使用 parameter 定義常量。
參數(shù)定義的右邊必須是常數(shù)表達式。
線網(wǎng)數(shù)據(jù)類型表示結(jié)構(gòu)實體(例如門)之間的 物理連線。
線網(wǎng)類型的變量 不能存儲值 ,它的值有驅(qū)動它的元件所決定。
線網(wǎng)類型關(guān)鍵字為wire型與tri型
驅(qū)動線網(wǎng)類型變量的元件有門、連續(xù)賦值語句、assign等。
若沒有驅(qū)動元件連接到線網(wǎng)類型變量上,則該變量就是高阻的,即其值為z
若過程語句描述 時序邏輯,即always語句帶有時序信號,則該寄存器變量對應(yīng)為觸發(fā)器。
若過程語句描述 組合邏輯,即always語句不帶有時序信號,則該寄存器變量對應(yīng)為硬件連線。
表示一個抽象的數(shù)據(jù)存儲單元。
通過賦值語句改變寄存器存儲的值。
寄存器數(shù)據(jù)類型關(guān)鍵字為reg,默認初始值為不定值x
寄存器數(shù)據(jù)類型
線網(wǎng)數(shù)據(jù)類型
參數(shù)數(shù)據(jù)類型 (編譯器識別)