Verilog中的$display和$write任務

$display(p1,p2, …,pn);html

       $write(p1,p2, …,pn);網絡

這兩個函數和系統任務的做用都是用來輸出信息,即將參數p2到pn按參數p1給定的格式輸出。參數p1一般稱爲:「格式控制」,參數p2至pn一般稱爲「輸出列表」。函數

$display自動地在輸出後進行換行,$write則不是這樣。若是想在一行裏輸出多個信息,可使用$write。如:$display(「%d」,10) 和 $display(「%d\n」,10) 效果相同spa

在$display和$write中,其輸出格式控制是用雙引號括起來的字符串,它包括如下兩種信息:orm

一、格式說明,由」%」和格式字符組成。它的做用是將輸出的數據轉換成指定的格式輸出。格式說明老是由」%」字符開始的。下面是幾種經常使用的輸出格式。htm

       (1)、 %h或%H        以十六進制的形式輸出ci

       (2)、 %d或%D        以十進制的形式輸出字符串

       (3)、 %o或%O        以八進制的形式輸出get

       (4)、 %b或%B        以二進制的形式輸出it

(5)、 %c或%C        以ASCII碼字符的形式輸出

(6)、 %v或%V       輸出網絡型數據信號強度

(7)、 %m或%M       輸出等級層次的名字

(8)、 %s或%S        以字符串的形式輸出

(9)、 %t或%T        以當前的時間格式的形式輸出

(10)、 %e或%E        以指數的形式輸出實型數

(11)、%f或%F        以十進制的形式輸出實型數

(12)、%g或%G        以指數或者十進制的形式輸出實型數,不管何種格式都以較短的結果輸出。

(13)、%x   十六進制

(14)、%i    讀入十進制,八進制,十六進制,在編譯時經過數據前置來區分

如:%i0x31 表示爲十六進制  %i031 表示爲八進制 %i31 表示爲十進制

(15)、%u   無符號十進制數

二、普通字符,即須要原樣輸出的字符。其中包括一些轉義字符,下面的字符形式用於格式字符串參數中,用來顯示特殊的字符。

       (1)、 \n    換行

       (2)、 \t  至關於按一個Tab鍵

       (3)、 \\  反斜槓字符\

(4)、 \」   雙引號字符」

       (5)、 \0  八進制數表明的字符

       (6)、 \0x  十六進制數表明的字符

       (7)、 %%  百分符號%

Verilog 中, 轉義符 必定是使用在雙引號括起來的字符串中!

 

2%v %m %t

 

一、%v用於打印一個線網類型變量的信號強度,它不能打印矢量變量的信號強度,而只能打印標量變量,或者矢量變量的指定位的信號強度。信號強度用3個符號輸出表示,前兩個符號表示信號強度,而第三個符號表示信號的邏輯值。信號強度和邏輯值的意義分別以下面兩個表所示:

 

  信號邏輯值表示:

 

邏輯值 表示意義
0 表示邏輯0值
1 表示邏輯1值
X 表示邏輯不定態
Z 表示邏輯高阻態
L 表示邏輯0值,或者邏輯高阻態
H 表示邏輯1值,或者邏輯高阻態

 

  信號強度表示:

 

標記符 強度名 強度值表示
Su 電源級驅動(Supply drive) 7
St 強驅動(Strong drive) 6
Pu 上拉級驅動(Pull drive) 5
La 大容性(Large caPACitor) 4
We 弱驅動(Weak drive) 3
Me 中級容性(Medium capacitor) 2
Sm 小容性(Small capacitor) 1
Hi 高容性(High capacitor) 0

 

用%v打印一個信號的強度時,前兩個符號除了用上表中的信號強度「標誌符」表示信號強度外,也能夠用兩個數字表示信號強度。關於信號強度和邏輯值的建模在後續章節進行詳細介紹。

 

二、使用%m,能夠打印當前打印語句所在的模塊層次。 三、%t 一般用於打印當前的仿真時間,固然也能夠用於打印其餘數據。該轉義符表示把對應的變量使用當前使用的時間表示格式進行打印。Verilog提供 系統函數 $time得到當前的仿真時間信息,該系統函數輸出值爲64比特表示的整數。Verilog還提供系統函數$timeformat用於設定當前的時間格式。關於$time和$timeformat的使用也放在後續章節說明。

 

能夠顯示全層次路徑名,包括模塊實例、任務、函數、命名塊。

 

如:能夠具體到某個模塊的某個函數

 

 

 

如:$display(「%t」,$time) 輸出當前的仿真時間

 

四、若是輸出列表中的表達式的值包含不肯定的值或高阻值,其結果遵循如下原則:

 

(1)、在輸出格式爲十進制的狀況下:

 

若是表達式的全部位均爲不定值,則輸出結果爲小寫的x

 

若是表達式的全部位均爲高阻值,則輸出結果爲小寫的z

 

若是表達式的部分位爲不定值,則輸出結果爲大寫的X

 

若是表達式的部分位爲高阻值,則輸出結果爲大寫的Z

 

如:$display(「%d」,xxx)   輸出爲x

 

       $display(「%d」,1x1)   輸出爲X

 

高阻值相似

 

(2)、在輸出格式爲十六進制和八進制的狀況下:

 

每4位二進制數爲一組表明一位十六進制數,每3位二進制數爲一組表明一位八進制數,

 

規則和(1)相似,舉例說明

 

$display(「%d」,1’bx);     輸出結果爲 : x

 

$display(「%h」,14’bx0_1010);  輸出結果爲:xxXa

 

$display(「%h %o」,12’b001x_xx10_1x01,12’b001_xxx_101_x01);

 

輸出結果爲: XXX 1x5X

相關文章
相關標籤/搜索