$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