$display(p1,p2, ,pn);

$write(p1,p2, ,pn);

这两个函数和系统任务的作用都是用来输出信息,即将参数 p2 pn 按参数 p1 给定的格式输出。参数 p1 通常称为:“格式控制”,参数 p2 pn 通常称为“输出列表”。

$display 自动地在输出后进行换行, $write 则不是这样。如果想在一行里输出多个信息,可以使用 $write 如: $display(“%d”,10) $display(“%d\n”,10) 效果相同

$display $write 中,其输出格式控制是用双引号括起来的字符串,它包括以下两种信息:

1 、格式说明,由 ”%” 和格式字符组成。 它的作用是将输出的数据转换成指定的格式输出。格式说明总是由 ”%” 字符开始的。下面是几种常用的输出格式。

1 )、 %h %H 以十六进制的形式输出

2 )、 %d %D 以十进制的形式输出

3 )、 %o %O 以八进制的形式输出

4 )、 %b %B 以二进制的形式输出

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 无符号十进制数

2 、普通字符,即需要原样输出的字符。 其中包括一些转义字符,下面的字符形式用于格式字符串参数中,用来显示特殊的字符。

1 )、 \n 换行

2 )、 \t 相当于按一个 Tab

3 )、 \\ 反斜杠字符 \

4 )、 \” 双引号字符

5 )、 \0 八进制数代表的字符

6 )、 \0x 十六进制数代表的字符

7 )、 %% 百分符号 %

Verilog 中, 转义符 一定是使用在双引号括起来的字符串中!

2 %v %m %t

1 %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 ca PAC itor) 4
We
弱驱动 (Weak drive) 3
Me
中级容性 (Medium capacitor) 2
Sm
小容性 (Small capacitor) 1
Hi
高容性 (High capacitor) 0

%v 打印一个信号的强度时,前两个符号除了用上表中的信号强度 标志符 表示信号强度外,也可以用两个数字表示信号强度。关于信号强度和逻辑值的建模在后续章节进行详细介绍。

2 、使用 %m ,可以打印当前打印语句所在的模块层次。 3 %t 通常用于打印当前的仿真时间,当然也可以用于打印其他数据。该转义符表示把对应的变量使用当前使用的时间表示格式进行打印。 Verilog 提供 系统函数 $time 获得当前的仿真时间信息,该系统函数输出值为 64 比特表示的整数。 Verilog 还提供系统函数 $timeformat 用于设定当前的时间格式。关于 $time $timeformat 的使用也放在后续章节说明。

可以显示全层次路径名,包括模块实例、任务、函数、命名块。
如:可以具体到某个模块的某个函数

如: $display(“%t”,$time) 输出当前的仿真时间

4 、如果输出列表中的表达式的值包含不确定的值或高阻值,其结果遵循以下原则:

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