国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

Verilog信息打印

發布時間:2010-10-13 12:05    發布者:techshare
關鍵詞: verilog , 打印
Verilog本質上也是一門高級語言,因而也提供了豐富打印信息、輸出信息的系統函數。

Verilog提供的打印系統函數分為三類:

顯示/寫系統函數(Display and Write tasks)
脈沖選擇監視系統函數(strobed monitoring tasks)
連續監視系統函數(continuous monitoring tasks)

顯示/寫系統函數

這類函數包括$display、$displayb、$displayo、$displayh、$write、$writeb、$ writeo、$writeh等八個函數。其使用語法如下:

系統函數名(變量列表);

變量列表就是需要輸出的信息,該變量列表可以是變量名、表達式、雙引號括起來的字符串、以及這三種形式的組合。變量列表也可以為空。這時,$display會輸出一個回車符(就是開始新的一行),而$write則相當于不進行任何操作。

$display 系列和$write系列除了一點差別外完全一致,其差異在于$display會在變量列表后面自動增加一個回車符,而$write則沒有該功能,完全按照變量列表指示的內容輸出。當變量列表為空時,$display輸出一個回車符,而$write則相當于不進行任何操作。

Verilog的這些打印系統函數的使用同其他高級語言比如C中的打印函數很類似。這些函數支持“格式化輸出”,也是在雙引號括起來的變量中加入轉義符號實現的。對于變量列表中的變量或者常量,當指定了輸出格式時,這八個函數沒有差別,都將以指定格式輸出其值;當沒有指定輸出格式時,各函數以默認的形式輸出該變量或者常量的值。

下表給出各個函數默認的輸出格式:

系統函數 默認制式 例子(a[7:0]=31)
$display、$write 十進制 $write(12,” and ”, a[7:0]);
$displayb、$writeb 二進制 $writeb(12, ” and ”, a[7:0]);
$displayo、$writeo 八進制 $writeo(12, ” and ”, a[7:0]);
$displayh、$writeh 十六進制 $writeh(12, ” and ”, a[7:0]);

“格式化輸出”功能需要使用轉義符。除了增加部分跟硬件設計相關的轉義符外,Verilog的這些系統函數中的轉義符同其他高級語言中的定義和使用基本相同。 Verilog的轉義符分為兩大類:以”\\”引導的和以”%”引導的。通常,以”%”引導的轉義符用于指定變量列表中的變量、常量、表達式的格式化輸出;以”\\”引導的表示其他的一些格式化輸出功能,通常是比較“特殊”的功能,比如輸出一個“TAB”,或者輸出”\\”本身,以及輸出”%”本身等。

下表給出了Verilog中基本的轉義符定義和意義說明:

轉義符 意義說明
%d 以及 %D 以十進制格式輸出
%b 以及 %B 以二進制格式輸出
%o 以及 %O 以八進制格式輸出
%h 以及 %H 以十六進制格式輸出
%s 以及 %S 以字符串格式輸出
%c 以及 %C 以ASCII碼格式輸出
%v 以及 %V 輸出線網類型變量的強度
%m 以及 %M 輸出層次名
%t 以及 %T 以當前時間格式輸出
%e 以及 %E 以指數表示方式輸出實數(real型)
%f 以及 %F 以十進制數表示方式輸出實數(real型)
%g 以及 %G 以十進制數或者以指數表示方式輸出實數。兩種輸出格式中,哪種占用更少的寬度,就使用哪一種。

\\n 開始新行(“回車”功能)
\\t 輸出一個 TAB
\\” 輸出 ” 本身
\\\\ 輸出 \\ 本身
%% 輸出 % 本身
\\xyz xyz表示一個八進制數。\\xyz表示輸出八進制數xyz的值對應的ASCII碼符號。比如,”\\123”,應該輸出的為符號“S”。

例子2-1給出了這些轉義符的基本使用:

// Filename: exe_2_1.v
// This module is writen by YiTurn Zhao
// Module Purpose : $display 和 $write的基本用法
module exe_2_1();
//
reg [7:0] a;
initial begin
a = 31;
abcd = 50;
$display(" Using $display, a = ",a, " And 12 = ",12);
$displayb(" Using $displayb, a = ",a, " And 12 = ",12);
$displayo(" Using $displayo, a = ",a, " And 12 = ",12);
$displayh(" Using $displayh, a = ",a, " And 12 = ",12);
$writeo(" \\nUsing Formatted $writeh, a = %d And 12 = %H",a,12);
$writeh(" Using Formatted $writeh, a = %d",a, " And 12 = %H",12,"\\n");
$display("Print \\"%%\\",\\t\\"%%%%\\" should be used.");
$display("Use %%C or %%c: a's value %d %C",a,a);
$display("Use %%S or %%s: a's value %d %s",a,a);
$display("Use %%E or %%e: 10000.8 can be writen as %e ",10000.8);
$display("Use %%F or %%f: 1.023E+8 can be writen as %f ",1.023E+8);
$display("Use %%G or %%g: 1.023E+8 can be writen as %g ",1.023E+8);
$display("Use \\\\xyz : Character \\101's ASCII value is 3'O101");
$display("Use \\\\xyz : Character \\053's ASCII value is 3'O53");
#200 $finish;
end

endmodule

注意:

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

2,”\\” 和”%”后跟的不是前述指定的符號時,行為跟仿真器的設計有關。比如,“\\N”實現的不是換行功能,但不同仿真器對其解釋不同。同樣,對于” \\%”、”%\\”等1364-2001標準未規定的格式,不同仿真器也可能進行不同的處理。嚴格的說,沒有規定的轉義表達式應該不能使用,比如“ \\%”這一形式。一旦使用,應該通不過編譯,并報告錯誤信息。但是通過幾個仿真器的仿真發現,通常,”\\%”是允許的,推廣之,發現”\\”后跟的如果不是表格中規定的轉義符,”\\”將被忽略,而直接輸出之后的信息。比如”\\%”就輸出”%”符號,”\\N”就輸出”N”符號。但是”%\\”是不允許的,推廣之,發現”%”后跟的如果不是表格中規定的轉義符,將報告錯誤。

3,除”%%”外,”%”引導的轉義符的使用必須和對應的變量、或者表達式匹配使用。對應于某一個轉義符的變量為空時,可以用兩個”,”將的空格來表示。參見例2-2。

4,”%C”、”%S”、”\\xyz” 等形式的轉義符都跟ASCII碼有關。”\\xyz”輸出值為八進制數”xyz”的ASCII碼,它不需要對應的變量(或者常量)列表。”%C”、”%s”也是輸出一個ASCII符號,其值為變量列表中對應的變量、常量或者表達式的值,因此需要在變量列表中提供相應的變量、常量或者表達式。

同其他高級語言相比,Verilog提供了幾種跟硬件設計相關的特殊輸出格式轉義符:%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的使用也放在后續章節說明。

例2-3為這幾個轉義符簡單使用的一個例子。

// Filename: exe_2_3.v
// This module is writen by YiTurn Zhao
// Module Purpose : $display 和 $write的部分特殊功能

module exe_2_3();

reg [7:0] a;
integer i;
wire x;
pulldown(x);
initial begin
#2;
$display("%m");
$display("Simulation Time now is : %t",$time);
$display("%%t Usage 2:%t",200);
$display("x's strength is : %v",x);
end

exe_2_3_sub exe_2_3_sub();

endmodule

module exe_2_3_sub;
wire [1:0] x;
initial begin
# 4;
$display("%m");
$display("Simulation Time now is : %t",$time);
$display("x's strngth is :%v",x);
end
endmodule
[em07][em07][em07][em07][em07]
本文地址:http://www.qingdxww.cn/thread-32090-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • Cortex-M4外設 —— TC&TCC結合事件系統&DMA優化任務培訓教程
  • 你仿真過嗎?使用免費的MPLAB Mindi模擬仿真器降低設計風險
  • 想要避免發生災難,就用MPLAB SiC電源仿真器!
  • 更佳設計的解決方案——Microchip模擬開發生態系統
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产三级国产精品 | 午夜视频污 | 国产成人精品福利色多多 | 精品视频久久久 | 黄色45分钟| 99r在线播放 | 久青草国产在线视频亚瑟影视 | 久久99热精品免费观看无卡顿 | 好吊色青青青国产综合在线观看 | 日韩精品毛片 | 久草日韩| 91精品欧美 | 手机在线观看亚洲国产精品 | 中文字幕一区二区视频 | 色综合天天综久久久噜噜噜久久〔 | 韩国精品欧美一区二区三区 | 国产成人免费不卡在线观看 | 国产免费观看a大片的网站 国产免费高清在线精品一区 | 欧美日韩国产高清一区二区三区 | 福利社在线免费观看 | 欧美国产成人在线 | 99久久精品费精品国产一区二 | 第四色网页 | 久热这里只有精品12 | 最新国产三级在线不卡视频 | 成人欧美视频免费看黄黄 | 99热成人精品热久久66 | 亚洲日本在线免费观看 | 精品卡通动漫在线观看视频一区 | 成人精品视频一区二区三区 | 天天艹逼| 欧美成人在线免费观看 | 国产二区在线播放 | 欧美一区二区三区日韩免费播 | 贵州美女一级纯黄大片 | 免费看片aⅴ免费大片 | 久久久久国产免费 | 伊人久久青青 | 国产欧美日韩精品一区二区三区 | 综合欧美日韩一区二区三区 | 91极品在线观看 |