Verilog语言$display作用讲解

更新时间:2023-03-15 17:19:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Verilog中的$display和$write

任务

1、格式

$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 caPACitor) 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

本文来源:https://www.bwwdw.com/article/dn6v.html

Top