Verilog 數(shù)值表示

2022-05-16 13:52 更新

數(shù)值種類

Verilog HDL 有下列四種基本的值來(lái)表示硬件電路中的電平邏輯:

  • 0:邏輯 0 或 "假"
  • 1:邏輯 1 或 "真"
  • x 或 X:未知
  • z 或 Z:高阻

?x? 意味著信號(hào)數(shù)值的不確定,即在實(shí)際電路里,信號(hào)可能為 1,也可能為 0。

?z? 意味著信號(hào)處于高阻狀態(tài),常見(jiàn)于信號(hào)(input, reg)沒(méi)有驅(qū)動(dòng)時(shí)的邏輯結(jié)果。例如一個(gè) pad 的 input 呈現(xiàn)高阻狀態(tài)時(shí),其邏輯值和上下拉的狀態(tài)有關(guān)系。上拉則邏輯值為 1,下拉則為 0 。

整數(shù)數(shù)值表示方法

數(shù)字聲明時(shí),合法的基數(shù)格式有 4 中,包括:十進(jìn)制('d 或 'D),十六進(jìn)制('h 或 'H),二進(jìn)制('b 或 'B),八進(jìn)制('o 或 'O)。數(shù)值可指明位寬,也可不指明位寬。

指明位寬:

4'b1011         // 4bit 數(shù)值
32'h3022_c0de   // 32bit 的數(shù)值

其中,下劃線 ?_? 是為了增強(qiáng)代碼的可讀性。

不指明位寬:

一般直接寫(xiě)數(shù)字時(shí),默認(rèn)為十進(jìn)制表示,例如下面的 3 種寫(xiě)法是等效的:

counter = 'd100 ; //一般會(huì)根據(jù)編譯器自動(dòng)分頻位寬,常見(jiàn)的為32bit
counter = 100 ;
counter = 32'h64 ;

負(fù)數(shù)表示

通常在表示位寬的數(shù)字前面加一個(gè)減號(hào)來(lái)表示負(fù)數(shù)。例如:

-6'd15  
-15

-15 在 5 位二進(jìn)制中的形式為 5'b10001, 在 6 位二進(jìn)制中的形式為 6'b11_0001。

需要注意的是,減號(hào)放在基數(shù)和數(shù)字之間是非法的,例如下面的表示方法是錯(cuò)誤的:

4'd-2 //非法說(shuō)明

實(shí)數(shù)表示方法

實(shí)數(shù)表示方法主要有兩種方式:

十進(jìn)制:

30.123
6.0
3.0
0.001

科學(xué)計(jì)數(shù)法:

1.2e4         //大小為12000
1_0001e4      //大小為100010000
1E-3          //大小為0.001

字符串表示方法

字符串是由雙引號(hào)包起來(lái)的字符隊(duì)列。字符串不能多行書(shū)寫(xiě),即字符串中不能包含回車符。Verilog 將字符串當(dāng)做一系列的單字節(jié) ASCII 字符隊(duì)列。例如,為存儲(chǔ)字符串 "w3cschool.cn", 需要 12*8bit 的存儲(chǔ)單元。例如:

reg [0: 12*8-1]       str ;
initial begin
    str = "w3cschool.cn";
end


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)