Verilog中的$display和$write任务

时间:2022-09-17 19:33:04

$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

Verilog中的$display和$write任务的更多相关文章

  1. verilog中读取文件中的字符串_modelsim高级仿真

    今天给个程序大家玩玩.因为今天遇到一个问题,就是要向UART发送指令,指令非常多,都是字符串.一直copy 函数 UART ("COMM_1");  UART ("COM ...

  2. CSS中的display属性

    CSS中的display属性 display:block是可以把非块级元素强制转换为块级元素显示,如内嵌元素span,原来不支持设置宽高,宽度是由内容撑开的,几个span元素是在同一行内的,如果给sp ...

  3. system verilog中的跳转操作

    在verilog中,使用disable声明来从执行流程中的某一点跳转到另一点.特别地,disable声明使执行流程跳转到标注名字的声明组末尾,或者一个任务的末尾. verilog中的disable命令 ...

  4. system verilog中的类型转换(type casting)、位宽转换(size casting)和符号转换(sign casting)

    类型转换 verilog中,任何类型的任何数值都用来给任何类型赋值.verilog使用赋值语句自动将一种类型的数值转换为另一种类型. 例如,当一个wire类型赋值给一个reg类型的变量时,wire类型 ...

  5. 一段比较有意思的代码——介绍system verilog中的新增幅值语句

    system verilog中新加了很多幅值语句,虽然都只适用于阻塞幅值,但是在某些场合中非常实用. 下面是一段有意思的代码,覆盖了一些用法. package definitions; typedef ...

  6. 理解与应用css中的display属性

    理解与应用css中的display属性 display属性是我们在前端开发中常常使用的一个属性,其中,最常见的有: none block inline inline-block inherit 下面, ...

  7. js中style.display=""无效的解决方法

    本文实例讲述了js中style.display=""无效的解决方法.分享给大家供大家参考.具体解决方法如下: 一.问题描述: 在js中我们有时想动态的控制一个div显示或隐藏或更多 ...

  8. 关于verilog中if与case语句不完整产生锁存器的问题 分类: FPGA 2014-11-08 17:39 260人阅读 评论(0) 收藏

    在很多地方都能看到,verilog中if与case语句必须完整,即if要加上else,case后要加上default语句,以防止锁存器的发生,接下来就来说说其中原因. 一,什么是锁存器?锁存器与触发器 ...

  9. 关于Verilog 中的for语句的探讨

    在C语言中,经常用到for循环语句,但在硬件描述语言中for语句的使用较C语言等软件描述语言有较大的区别. 在Verilog中除了在Testbench(仿真测试激励)中使用for循环语句外,在Test ...

随机推荐

  1. Ubuntu 下安装 Mysql

    这里讲用Ubuntu下安装MySql ubuntu上安装mysql非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server   2. apt-get ...

  2. SQL-基础知识

    SQL Server中的关于时间转换和获取时间的方法 1.获取当前UTC时间 GETUTCDATE()

  3. shopex商城的部署和安装

    1.在网站上下载最新的压缩包: 2.shopex是商业软件,不开源,且源代码是加密的! 3.如果你出现zend的错误,是因为你的php环境没有安装此插件,推荐使用phpstudy最新版本,我使用的ph ...

  4. 清楚form表单数据的便捷jQuery之法

    有时候可能需要实现这样的效果:注册表单或者地址表单等填写多个记录之后,想要清除重新填写,如果一个个删除非常麻烦,因此这时清除按钮非常必须.接下来为您详细介绍两个自己经历的便捷方法,需要了解的朋友参考下 ...

  5. MyBatis一次执行多条SQL语句

    MyBatis一次执行多条SQL语句 有个常见的场景:删除用户的时候需要先删除用户的外键关联数据,否则会触发规则报错. 解决办法不外乎有三个:1.多条sql分批执行:2.存储过程或函数调用:3.sql ...

  6. mlpack:可伸缩C++机器学习库(转)

    摘要:mlpack是一个可伸缩C++机器学习库,它的目的是让新用户通过简单.一致的API使用机器学习,同时为专业用户提供C++的高性能和最大灵活性. mlpack是一个直观.快速.可伸缩的C++机器学 ...

  7. Vuex(一)——vuejs的状态管理模式

    一.Vuex是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式. 它采用集中式存储 管理 应用的所有组件 的 状态,并以 相应的规则 保证 状态以一种 可预测的方式 发生变化. ...

  8. iOS监听模式系列之通知中心

    补充--通知中心 对于很多初学者往往会把iOS中的本地通知.推送通知和iOS通知中心的概念弄混.其实二者之间并没有任何关系,事实上它们都不属于一个框架,前者属于UIKit框架,后者属于Foundati ...

  9. OnlineJudgeFE之前端二次开发

    之前我们在这篇文章青岛大学开源OJ平台搭建 讲了关于它的安装和部署. 今天我们讨论如何对其进行二次开发.首先谈谈前端的二次开发. 如果想要对青岛大学的OJ项目进行二次开发,目前我觉得要满足这么几个要求 ...

  10. 【PowerDesigner】【10】绘制类图

    前言:我感觉我也是一知半解,参考博客的内容会比我的文章更有帮助 用途:描述项目中类与类的关系(即描述java文件) 正文: 1,新建oomFile→New Model→Model types→Obje ...