国产毛片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視頻專區
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點宏來節省時間和空間
  • Dev Tool Bits——使用DVRT協議查看項目中的數據
  • Dev Tool Bits——使用MPLAB® Data Visualizer進行功率監視
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩亚洲二区在线 | 国产精品黄页在线播放免费 | www.亚洲视频.com | 91啦视频在线观看 | 亚洲一区二区影视 | 调教圈| 亚洲欧美网址 | 日韩欧美一区二区三区不卡视频 | 国内精品免费网站牛牛 | 四虎4hu永久免费视频大全 | 欧美国产大片 | 国产精品专区第二 | 欧美性受一区二区三区 | 青草视频网站在线观看 | 天堂在线国产 | 午夜国产精品免费观看 | 亚洲精品欧美日本中文字幕 | 色婷婷视频在线 | 午夜国产精品免费观看 | 美女网站色在线观看 | 日本一区二区三区不卡在线视频 | 日韩午夜免费视频 | 男女啪啪抽搐一进一出免费看 | 日韩精品中文字幕在线 | 忍者刺客韩国在线观看完整免费版 | 久久尹人香蕉国产免费天天 | 国产中的精品一区的 | 国产剧情jvid在线观看 | 精品国产第一国产综合精品 | 高清国产一区二区三区 | 国产视频精品视频 | 四虎免费永久网站入口 | 国产精品嫩模在线播放 | 国产码欧美日韩高清综合一区 | 欧美亚洲国产日韩综合在线播放 | 亚洲国产成人九九综合 | 天美果冻传媒 | 在线男人天堂 | 一级做a爰片毛片 | 国产成人精品一区二区三区 | 黄页视频免费在线观看 |