Verilog的打印系统函数
上一篇 / 下一篇 2007-06-30 13:19:42 / 天气: 晴朗 / 心情: 高兴 / 个人分类:Backup
Verilog本质上也是一门高级语言,因而也提供了丰富打印信息、输出信息的系统函数。EDA中国门户网站Z1N0Kqj%e
N.a
Verilog提供的打印系统函数分为三类:EDA中国门户网站
[6e1H!r]
显示/写系统函数(Display and Write tasks)EDA中国门户网站%]C2{A0{
脉冲选择监视系统函数(strobed monitoring tasks)
RJ[cc}-f0连续监视系统函数(continuous monitoring tasks)
!] O t#d
T BW.D0显示/写系统函数EDA中国门户网站0j8fP|Oqs9l
`
这类函数包括$display、$displayb、$displayo、$displayh、$write、$writeb、$ writeo、$writeh等八个函数。其使用语法如下:EDA中国门户网站j5d B6\$d
eg7q
系统函数名(变量列表);EDA中国门户网站.[#L
q9GDpS7T0n
变量列表就是需要输出的信息,该变量列表可以是变量名、表达式、双引号括起来的字符串、以及这三种形式的组合。变量列表也可以为空。这时,$display会输出一个回车符(就是开始新的一行),而$write则相当于不进行任何操作。EDA中国门户网站/f/IMh a%q/YY
$display系列和$write系列除了一点差别外完全一致,其差异在于$display会在变量列表后面自动增加一个回车符,而$write则没有该功能,完全按照变量列表指示的内容输出。当变量列表为空时,$display输出一个回车符,而$write则相当于不进行任何操作。EDA中国门户网站:b+U6w E%[
Verilog的这些打印系统函数的使用同其他高级语言比如C中的打印函数很类似。这些函数支持“格式化输出”,也是在双引号括起来的变量中加入转义符号实现的。对于变量列表中的变量或者常量,当指定了输出格式时,这八个函数没有差别,都将以指定格式输出其值;当没有指定输出格式时,各函数以默认的形式输出该变量或者常量的值。EDA中国门户网站*n6_.eW8C1L,@
下表给出各个函数默认的输出格式:EDA中国门户网站Ex/gK8Q#{
系统函数 默认制式 例子(a[7:0]=31)EDA中国门户网站^%]t0a'_d3_;g,o
$display、$write 十进制 $write(12,” and ”, a[7:0]);
wo,]X$k0$displayb、$writeb 二进制 $writeb(12, ” and ”, a[7:0]);EDA中国门户网站-CPjVJ4{[Tku
$displayo、$writeo 八进制 $writeo(12, ” and ”, a[7:0]);EDA中国门户网站:n(W2{hh9t
$displayh、$writeh 十六进制 $writeh(12, ” and ”, a[7:0]);
5D8Y;wZ,c/Ac9]"J0“格式化输出”功能需要使用转义符。除了增加部分跟硬件设计相关的转义符外,Verilog的这些系统函数中的转义符同其他高级语言中的定义和使用基本相同。Verilog的转义符分为两大类:以”\\”引导的和以”%”引导的。通常,以”%”引导的转义符用于指定变量列表中的变量、常量、表达式的格式化输出;以”\\”引导的表示其他的一些格式化输出功能,通常是比较“特殊”的功能,比如输出一个“TAB”,或者输出”\\”本身,以及输出”%”本身等。EDA中国门户网站(o;L(I;F4jK4X6phi
下表给出了Verilog中基本的转义符定义和意义说明:
&XZIP'tya1I0转义符 意义说明EDA中国门户网站j"v%D e;n
%d 以及 %D 以十进制格式输出
3^*FA!g
r;gV'_@7o0%b 以及 %B 以二进制格式输出EDA中国门户网站Xi} G0D0[
%o 以及 %O 以八进制格式输出EDA中国门户网站 D `t$j;^D
%h 以及 %H 以十六进制格式输出EDA中国门户网站?3ujPI?
%s 以及 %S 以字符串格式输出
zAD!p`n0%c 以及 %C 以ASCII码格式输出EDA中国门户网站(Dac;k;g;lNx
%v 以及 %V 输出线网类型变量的强度
R| Yg0X9`:Hvu0%m 以及 %M 输出层次名
UJ4I1{8~P:m)?0%t 以及 %T 以当前时间格式输出EDA中国门户网站BV&C-LT4g0O,g"Y{Q3b
%e 以及 %E 以指数表示方式输出实数(real型)
b'~"C(Z(v1s
sR5c0%f 以及 %F 以十进制数表示方式输出实数(real型)
.^D+^J7r R&fu0%g 以及 %G 以十进制数或者以指数表示方式输出实数。两种输出格式中,哪种占用更少的宽度,就使用哪一种。EDA中国门户网站3z\*? X iK;E
\\n 开始新行(“回车”功能)
8r7q*].K~/X8IX,X(t0\\t 输出一个 TABEDA中国门户网站Q0i6Q{9@S Bu@q
\\” 输出 ” 本身
O6ET
b6B{l0\\\\ 输出 \\ 本身
)|&lyjzZ0%% 输出 % 本身
.pp%`IMo0\\xyz xyz表示一个八进制数。\\xyz表示输出八进制数xyz的值对应的ASCII码符号。比如,”\\123”,应该输出的为符号“S”。
9h,X6tL4Tq0例子2-1给出了这些转义符的基本使用:EDA中国门户网站5E(\:{Y
ZGF
// Filename: exe_2_1.v
cFDaNfQy,}0// This module is writen by YiTurn ZhaoEDA中国门户网站)[q"F5X8j?s
// Module Purpose : $display 和 $write的基本用法
oxA+mX:l0module exe_2_1();
z&H^0zhr]0 //
"W t)dI6`0 reg [7:0] a;