Verilog 显示任务($display, $write, $strobe, $monitor)

这篇具有很好参考价值的文章主要介绍了Verilog 显示任务($display, $write, $strobe, $monitor)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Verilog 中主要用以下 4 种系统任务来显示(打印)调试信息:$display, $write, $strobe, $monitor。

$display

$display 使用方法和 C 语言中的 printf 函数非常类似,可以直接打印字符串,也可以在字符串中指定变量的格式对相关变量进行打印。例如:

$display("This is a test.");   //直接打印字符串
$display("This is a test number: %b.", num); //打印变量 num 为二进制格式

如果没有指定变量的显示格式,变量值会根据在字符串的位置显示出来,相当于参与了字符串连接。例如:

$display("This is a test number: ", num, "!!!");

如果没有指定格式,$display 默认显示是十进制$displayb, $displayo, $displayh 显示格式分别为二进制、八进制、十六进制。同理也有 $writeb, $writeo, $writeh, $strobeb 等。

下表是常用的格式说明。

%h 或 %H 十六进制格式输出 %c 或 %C ASCII 码格式输出
%d 或 %D 十进制格式输出 %e 或 %E 指数格式输出
%o 或 %O 八进制格式输出 %f 或 %F 浮点数 (real 型) 格式输出
%b 或 %B 二进制格式输出 %t 或 %T 当前时间格式输出
%s 或 %S 字符串格式输出 %m 或 %M 当前层次访问路径输出

还可以使用转义字符显示特殊字符,例如:

\n 换行符 %% 百分号"%"
\t 制表符(Tab 键) \0 八进制代表的字符
\\ 反斜杠"\"符 \0x 十六进制代表的字符
\" 双引号

$write

        $wirte 使用方法与 $display 完全一样,只是前者会在每次显示信息完毕后不会自动换行,后者会自动换行。当输出后不需要换行时,可以使用显示任务 $write。

$write("This is a test");
$write("number: %b", num);
$write("!!!\n");

$strobe

        $strobe 为选通显示任务。$strobe 使用方法与 $display 一致,但打印信息的时间和 $display 有所差异。当许多语句与 $display 任务在同一时间内执行时,这些语句和 $display 的执行顺序是不确定的,一般按照程序的顺序结构执行。$strobe 则是在其他语句执行完毕之后,才执行显示任务。例如:

实例

   reg [3:0]  a ;
   initial begin
      a = 1 ;
      #1 ;
      a <= a + 1 ;
      //第一次显示
      $display("$display excuting result: %d.", a);
      $strobe("$strobe excuting result: %d.", a);
      #1 ;
      $display();
      //第二次显示
      $display("$display excuting result: %d.", a);
      $strobe("$strobe excuting result: %d.", a);
   end

        执行第一次显示任务时,非阻塞赋值与 $display 同时执行,$display 显示赋值之前的变量值,而 $strobe 显示赋值之后的变量值。这正体现了 $strobe 的选通显示特性。

 integer  i ;
   initial begin
      for (i=0; i<4; i=i+1) begin
         $display("Run times of $display: %d.", i);
         $strobe("Run times of $strobe: %d.", i);
      end
   end

执行结果如下:

        $display 按照程序结构,执行显示操作 4 次。而此循环语句是在 0 时刻执行的,所以 $strobe 显示的变量值是循环结束时变量的结果,即 i=4 退出循环后 $strobe 才会执行。这就体现了显示任务 $strobe 的时刻显示特性。

Verilog 显示任务($display, $write, $strobe, $monitor)

$monitor

$monitor 为监测任务,用于变量的持续监测。只要变量发生了变化,$monitor 就会打印显示出对应的信息。

例如:

实例

   reg [3:0]    cnt ;
   initial begin
      cnt = 3 ;
      forever begin
         # 5 ;
         if (cnt<7) cnt = cnt + 1 ;
      end
   end

   initial begin
      $monitor("Counter change to value %d at the time %t.", cnt, $time);
   end

Verilog 显示任务($display, $write, $strobe, $monitor)文章来源地址https://www.toymoban.com/news/detail-414241.html

到了这里,关于Verilog 显示任务($display, $write, $strobe, $monitor)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pygame 基础教程02: 显示窗口(display) 与 图像(Surface)

    原文链接:https://xiets.blog.csdn.net/article/details/131382728 版权声明:原创文章禁止转载 专栏目录:Pygame 专栏(总目录) pygame.display 模块提供了对 pygame 显示的控制。可以把 pygame.display 看做是包含了一个 系统窗口 的 显示器屏幕。 pygame.display 模块主要函数: pygame.display 模块其他

    2024年02月08日
    浏览(39)
  • org.apache.commons.io.monitor+logback.xml+vue实时显示当前日志信息

    -:后端使用ssemiter保持客户端链接:http 这里不用websocket的原因是,sse很轻,整合方便,可发送日志,消息,群发等都可以。 -:前端使用vue3+ansi_up做页面展示 第一: 刷新页面导致session问题 可以在java的session中记录,如果是同一个客户重新链接的话,直接返回java的session的数

    2024年02月08日
    浏览(71)
  • Windows10 pc使用Apple Studio Display显示器设置

    近期购买了台Apple Studio Display显示器,大概花了约1.5w,连接windows台式机,显卡为NVIDA GTX-1660,而Apple Studio Display只有雷电接口,尝试多种转接方式,均以失败告终,最终参考b站up主使用贝尔金VR线成功,贝尔金VR线京东链接 , 附图如下: 这边测试NVIDA RTX-2060 Super 、NVIDA GTX-16

    2024年02月11日
    浏览(207)
  • 使用SPACEDESK时iPad显示Connected-Display OFF解决方法

    SPACEDESK 是一款网络显示多显示器软件,适用于电脑桌面复制(镜像或克隆),能将iPad作为Windows的电脑副屏使用;SPACEDESK 小巧且免费,适用Windows(10/11)、Mac、iOS、Android Studio系统; SPACEDESK 相比 Splashtop Wired XDisplay的最大优势是它能 无线连接 ,不需要使用数据线将iPad连接到

    2023年04月08日
    浏览(64)
  • Windows 10驱动开发入门(五):创建虚拟显示器 Indirect Display驱动开发

    在开发或者办公中,越大的屏幕看起来就显示越舒服了,通常我们的做法是有两块屏幕,这样显示的内容就变多了,可以很容易提高办公的效率。 在设置中 显示 中,如果我们有两块屏幕,在显示器中自然的会出现两个,在其中可以对两块屏幕进行相应的设置。 在这个驱动中

    2023年04月16日
    浏览(41)
  • 【CSS】元素显示与隐藏 ( display 隐藏对象 | visibility 隐藏对象 | overflow 隐藏对象 )

    在开发中 , 经常需要使用到 元素的显示 与 隐藏 , 默认状态下 , 按钮下面没有任何内容 ; 将鼠标移动到 红色按钮 后 , 显示一个对话框布局 ; 控制 元素的 显示 与 隐藏 的样式有如下三种 : display visibility overflow 为标签元素设置 可以 隐藏该元素 ; 如果想要 显示该对象 , 为该元

    2023年04月14日
    浏览(53)
  • Linux访问firefox 显示Error: no DISPLAY environment variable specified

            在 CentOS 7 中访问 Firefox 浏览器时,出现 \\\"Error: no DISPLAY environment variable specified\\\" 的错误提示通常是由于缺少显示环境变量导致的。 要解决这个问题,你可以按照以下步骤进行配置:           如果仍然遇到问题,请确保你的 X Window System 和图形界面环境正常工

    2024年02月20日
    浏览(53)
  • 【Verilog 教程】6.2Verilog任务

    :任务 任务与函数的区别 和函数一样,任务(task)可以用来描述共同的代码段,并在模块内任意位置被调用,让代码更加的直观易读。函数一般用于组合逻辑的各种转换和计算,而任务更像一个过程,不仅能完成函数的功能,还可以包含时序控制逻辑。下面对任务与

    2024年02月07日
    浏览(38)
  • 【win11】Thinkpad14+显示器分屏问题(display port dp口转type-c)

    背景:显示屏dp转dp且主机没有dp口 打开右下角开关,设置信号输入为dp模式 确认电脑typec口可以传输音视频 购买dp母转typec线 win+x打开设备管理器,找到显示适配器 启用如果显失败需要下载驱动软件 驱动下载地址 下载完后重启,再win+x打开适配器右键启用 win+p 投屏

    2024年02月16日
    浏览(133)
  • 【CSS 10】浮动实例 处理布局流 display: inline-block 行内块元素 水平显示列表项 align 对齐

    浮动实例 网格/等宽的框 通过使用 float 属性,可以轻松地并排浮动内容框 display: inline-block 与 display: inline 相比,主要区别在于 display: inline-block 允许在元素上设置宽度和高度 同样,如果设置了 display: inline-block,将保留上下外边距/内边距,而 display: inline 则不会 与 display: b

    2024年02月11日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包