0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

$monitor和$strobe有何差异?

sanyue7758 来源:处芯积律 2024-01-22 09:38 次阅读

在编写测试平时,经常会用到$monitor和$strobe监测某些信号,并且使用格式上与$display比较类似,但是它们之间还是存在差异的,它们在当前仿真时间槽(time-slot)中被执行的区间是不同的。$display发生在Active区,而$monitor和$strobe发生在当前仿真的最后时刻,即post-pone区,并且一个time-slot是存在很多区域的,因此,它们在观测具体信号值时是存在一定差异的。

【示例】

c5037c4c-b8c5-11ee-8b88-92fbcf53809c.png

【仿真结果】

c507adf8-b8c5-11ee-8b88-92fbcf53809c.png

出现示例中的结果,是因为非阻塞赋值的LHS更新发生在Non-Active区,而此时的$display已经执行完毕,所以$display观测不到sig更新后的值,但是$monitor发生在Post-pone区,晚于Non-Active区执行,所以可以观测到sig更新后的值。因此,$display和$monitor观测到sig的值不同。在实际使用过程中,具体使用哪一种监测方式则根据两种监测执行的区间特点自行选择,$strobe与$monitor在本例中监测到的结果是一样都发生在Post-pone区,执行类似,在此不赘述。那么既然$strobe和$monitor执行效果一样,都发生在Post-pone区,那么为什么还要同时存在呢?两者之间有些什么差异呢?下面我们就两者之间的一些差异进行示例说明。

1 $strobe的执行

$strobe只有在被调用时才会对其中的参数进行监测,此时的参数所具有的值可以认为是其所在当前时间槽(time-slot)中的最终值。另外,$strobe在设计中可以多次被调用,且多次调用相互之间不产生任何影响。

【示例】

c516c716-b8c5-11ee-8b88-92fbcf53809c.png

【仿真结果】

c51a7622-b8c5-11ee-8b88-92fbcf53809c.png

示例中,在always过程块中,当敏感时间列表中的信号发生一次变化,always过程块中的$strobe就会执行一次,并且输出此次执行时对应参数的稳定值。在initial过程块中,等待4个时间单位后$strobe执行,并且输出此时对应参数的稳定值,而在sig变化的其他时刻,该语句并未执行(因为initial块只执行了一次,并且完成了他的历史使命)。可见$strobe的执行取决于对其的调用,它的执行并不取决于其中参数的变化,同时可见该语句在代码中可以被多次调用,并且多次调用之间不会产生相互影响。

2 $monitor的执行

$monitor和$strobe虽然它们监测的参数都是当前时间槽该参数最后的稳定值,但两者在具体执行上还是有一定差别的,下面通过示例说明$monitor的用法。

【示例】

c51f3770-b8c5-11ee-8b88-92fbcf53809c.png

【仿真结果】

c52a7ca2-b8c5-11ee-8b88-92fbcf53809c.png

示例中,$monitor位于过程块中,sig从0时刻开始,每发生一次变化,$monitor就会执行一次,可见$monitor会持续监测其中参数的变化,只要其中参数发生变化,$monitor就会执行。那么是不是其中的任何参数的变化都会触发$monitor的执行,例如,可不可以使用$monitor监测时间的变化呢?

【示例】

c52e75be-b8c5-11ee-8b88-92fbcf53809c.png

【仿真结果】

c53bb1f2-b8c5-11ee-8b88-92fbcf53809c.png

示例中,随着仿真时间的推进,$monitor仅执行了一次。这主要是因为在$monitor中,如果监测的参数是$time、$stime和$realtime这些系统函数的返回值,$monitor对这些时间参数的变化并不敏感。

另外,当$monitor中具有多个参数同时发生变化时,这是因为这些参数在当前时间槽中调用$monitor时都已经处于稳定状态了,所以此时$monitor只调用一次,如下所示。

【示例】

c53fd188-b8c5-11ee-8b88-92fbcf53809c.png

【仿真结果】

c5434e94-b8c5-11ee-8b88-92fbcf53809c.png

那么,我们可不可以使用多个$monitor监测信号的变化呢?此时$monitor会如何执行呢?我们看看下面的示例。

【示例】

c549b9fa-b8c5-11ee-8b88-92fbcf53809c.png

【仿真结果】

c54da984-b8c5-11ee-8b88-92fbcf53809c.png

示例中,使用了两个$monitor分别检测sig1和sig2信号的变化,但是仿真结果仅有一个$monitor执行。这主要是因为$monitor执行上的一个特点,在任意仿真时刻,只有一个$monitor系统任务处于激活执行状态,至于多个$monitor执行的顺序,一般则取决于哪一个$monitor最近一次被调用。除此之外,$nonitor还提供了其他的配置系统任务,可以通过这些系统任务实现对于$monitor执行的控制。

【示例】

c554c89a-b8c5-11ee-8b88-92fbcf53809c.png

【仿真结果】

c55f9946-b8c5-11ee-8b88-92fbcf53809c.png

示例中,$monitoroff和$monitoron之间sig的变化并没有触发$monitor系统任务的执行。这主要是因为$monitoroff会不使能当前所有激活的$monitor任务对于其中参数的监测,所以在$monitoroff之后,$monitor监测的参数如果发生变化,将不会触发$monitor的执行。$monitoron的效果与$monitoroff刚好相反,主要用于再次启动激活$monitor任务,在$monitoron执行后,如果$monitor监测的参数发生变化,则会触发$monitor的执行。

综上所述,$strobe和$monitor执行的主要特定如下:

Ø$strobe和$monitor监测的相关变量的值,都是这些变量在当前时间槽中的最终稳定值;

Ø$strobe只有在被调用时才会对其中的参数进行监测,而$monitor只要监测的参数发生变化,$monitor就会执行;

Ø代码中可以存在多个$strobe,并且多个$strobe的调用相互之间不影响;

Ø在$strobe和$monitorr中,如果监测的参数是$time、$stime和$realtime这些系统函数的返回值,$strobe和$monitor对这些时间参数的变化并不敏感

Ø在任意仿真时刻,只有一个$monitor系统任务处于激活执行状态,至于多个$monitor执行的顺序,一般则取决于哪一个$monitor最近一次被调用;

Ø可以通过$monitoroff和$monitoron对$monitor的执行进行监测;

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Monitor
    +关注

    关注

    1

    文章

    62

    浏览量

    28159
  • 配置系统
    +关注

    关注

    0

    文章

    7

    浏览量

    6465
  • Strobe
    +关注

    关注

    0

    文章

    2

    浏览量

    6307

原文标题:$monitor和$strobe都看的是啥

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问2538和2530的性能差异哪些?特别的,在收发数据的带宽上有差别?

    本帖最后由 一只耳朵怪 于 2018-5-24 14:45 编辑 你好,请问2538和2530的性能差异哪些?特别的,在收发数据的带宽上有差别!多谢!
    发表于 05-22 06:14

    单端信号和差分信号差异

    单端信号和差分信号会有差异吗? 他们差异,还有在数据传输中 为什么使用LVDS或M-LVDS?
    发表于 03-09 08:40

    数码调变技术与多工技术差异

    数码调变技术是什么?什么是多工技术?数码调变技术与多工技术差异
    发表于 05-18 06:14

    DVB-H和韩国T-DMB地面数字广播电视技术差异

    DVB-H和韩国T-DMB地面数字广播电视技术差异?开展手机电视业务面临哪些问题?
    发表于 05-26 07:07

    无刷直流电机(BLDC)与永磁同步电机(PMSM)结构及其物理特性差异

    无刷直流电机(BLDC)与永磁同步电机(PMSM)结构及其物理特性差异?无刷直流电机(BLDC)与永磁同步电机(PMSM)数学模型的区别在哪?无刷直流电机(BLDC)与永磁同步电机(PMSM)的调制模式
    发表于 07-28 07:11

    STM32的三种Boot模式差异

    STM32的三种Boot模式差异呢?如何去验证这种差异呢?
    发表于 11-26 07:15

    基于寄存器与基于固件库的stm32 LED流水灯编程方式差异

    如何去实现基于寄存器的stm32 LED流水灯程序呢?基于寄存器与基于固件库的stm32 LED流水灯编程方式差异
    发表于 12-06 07:24

    基于标准库函数与基于HAL库函数的stm32编程方式差异

    Arduino IDE开发的优点是什么?安装Arduino IDE及程序目的是什么?基于标准库函数与基于HAL库函数的stm32编程方式差异
    发表于 12-06 07:17

    Qt ECG Monitor是什么?功能

    Qt ECG Monitor是由Qt-UI开发和维护的嵌入式床旁心电监护仪界面项目。项目提供C++/Python语言,基于Qt5下原生QWidget编译开发,包含以下功能界面:包含Windows
    发表于 12-30 06:34

    放大器中,大信号和小信号电压增益差异

    问题:放大器中,大信号和小信号电压增益差异
    发表于 11-15 07:43

    CCTV MOnitor与PC Monitor差异及区别

    CCTV MOnitor与PC Monitor差异 一般PC用Monitor的解像度(ResoIution)较 高,且会随著使用者的VGA卡(显示介面卡)与显 示程式而改变。常见
    发表于 12-29 11:26 1089次阅读

    磷酸铁锂电池与錳酸锂电池差异?

    磷酸铁锂电池与錳酸锂电池差异? 磷酸铁锂电池与錳酸锂电池对照分析 1、电器
    发表于 10-27 09:43 3806次阅读

    陶瓷电容温度系数浅析:1类和2类电容差异?如何标识?

    陶瓷电容温度系数浅析:1类和2类电容差异?如何标识?
    的头像 发表于 12-08 17:30 1052次阅读
    陶瓷电容温度系数浅析:1类和2类电容<b class='flag-5'>有</b><b class='flag-5'>何</b><b class='flag-5'>差异</b>?如何标识?

    平面型VDMOS和超结型VDMOS的雪崩耐量差异以及如何选择?

    平面型VDMOS和超结型VDMOS的雪崩耐量差异以及如何选择? 平面型VDMOS和超结型VDMOS是常见的金属氧化物半导体场效应管(MOSFETs)的不同设计类型。它们在结构上存在一些细微的
    的头像 发表于 11-24 14:15 1119次阅读

    LED洗墙灯跟线条灯的区别,使用的芯片差异

    LED洗墙灯跟线条灯的区别,使用的芯片差异
    的头像 发表于 01-05 14:30 1469次阅读