首页 > 其他分享 >【FPGA 仿真和调试脚本】常用系统任务

【FPGA 仿真和调试脚本】常用系统任务

时间:2023-04-17 14:35:02浏览次数:28  
标签:仿真 cnt monitor FPGA rval 任务 101 display 调试

一、显示任务$display和$write

系统显示任务$display和$write在仿真测试中是最为常用的信息显示方式。$display和$write任务最主要的区别在于,$display在一次输出后会自动换行,而$write则不会,他们的其他用法格式基本类似。

【语法结构】

【任务名】(“【可选字符串】+【格式】”,【信号1】,【信号2】,……)

 

【任务名】可以是$display,$displayb,$displayo,$displayh,$write,$writeb,$writeo或$writeh。

【格式】由“%”和格式字符组成,【信号】为进行显示的信号名,【信号】数量和【格式】数量必须对应。

若不指定显示【信号】的【格式】,则【信号】显示的格式将会是$display和$write默认为十进制,$displayb和$writeb默认为二进制,$displayo和$writeo默认为八进制,$displayh和$writeh默认为十六进制。

$display举例如下:

// 系统打印任务$display的使用
`timescale 1ns/1ns
module testbench_top();

reg [31:0] rval;

initial begin
    rval = 101;
    $display("rval = %h hex %d decimal", rval, rval);
    $display("rval = %0h hex %0d decimal", rval, rval);
    $display("rval = %o octal\nrval = %b bin", rval, rval);
    $display("rval has %c ascii character value", rval);
    $display("current scope is %m");
    $display("%s is ascii value for 101", 101);
    #101;
    $display("rval = %h hex %d decimal", rval, rval);
    $stop;
end
endmodule
# rval = 00000065 hex 101 decimal
# rval = 65 hex  101 decimal
# rval = 00000000145 octal
# rval = 00000000000000000000000001100101 bin
# rval has e ascii character value
# current scope is testbench_top
# e is ascii value for 101
# simulation time is       105

默认情况下,输出显示的数值所占字符个数由输出信号的数值类型和位宽决定。例如该例子中32位寄存器rval以16进制显示时,其最大值是FFFFFFFF,所以即便显示数值是65,但在显示时也会占用8个字符位。除了十进制显示时会默认将高位0以空格填充,其它进制都会将高位0显示出来。在%和格式字符之间可以添加数字0,来隐藏前置的0或空格,使得第一个非0数字顶格显示。

 

二、监视任务$monitor

系统监视任务$monitor可以在仿真测试脚本中实现对任何变量或表达式取值的监视和显示。$monitor和$display的语法结构与用法类似。

当$monitor任务中包含一个或多个监控信号并运行时,若参数列表中由任何的变量或表达式的值发生变化,所有参数列表中的信号值都将输出显示。同一时刻若有两个或多个参数发生变化,则合并一次输出显示。

$monitor任务在申明后默认开启,在其运行期间若调用系统任务$monitoroff则关闭$monitor,直到调用系统任务$monitoron后重新开启。

【语法结构】

【任务名】(“【可选字符串】+【格式】”,【信号1】,【信号2】,……)

// 监控每个时钟周期递增的4位计数器o_cnt

// 系统复位后,监控信号o_cnt的变化,输出最新数值和时间戳
initial begin
    @(posedge rst_n);
    $monitor("o_cnt is %d at %0dns", o_cnt, $time);
end

// 当o_cnt取值为6~12范围时,关闭监控
always @(posedge clk) begin
    if (o_cnt == 4'd5)  $monitoroff;
    else if (o_cnt == 4'd12) $monitoron;
end

 

标签:仿真,cnt,monitor,FPGA,rval,任务,101,display,调试
From: https://www.cnblogs.com/Ivan0506/p/17293156.html

相关文章

  • 从零开始学习MySQL调试跟踪(2)
    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:Yejinrong/叶金荣文章来源:GreatSQL社区投稿启用coredump制造一个coredump场景真实故障场景分析跟踪上一篇文档介绍了如何构建gdb跟踪调......
  • 基于LS-SVM的数据分类matlab仿真测试
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要        LSSVM(LeastSquareSVM)是将Kernel应用到ridgeregression中的一种方法,它通过将所有样本用最小二乘误差进行拟合(这个拟合是在kernel变换过的高维空间),但是LSSVM的缺陷是计算复杂度大......
  • 基于hough变换的条形码数字分割和数字识别matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:        2.算法涉及理论知识概要       霍夫变换是一种特征提取(featureextraction),被广泛应用在图像分析(imageanalysis)、计算机视觉(computervision)以及数位影像处理(digitalimageprocessing)。霍夫......
  • 基于hough变换的条形码数字分割和数字识别matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要霍夫变换是一种特征提取(featureextraction),被广泛应用在图像分析(imageanalysis)、计算机视觉(computervision)以及数位影像处理(digitalimageprocessing)。霍夫变换是用来辨别找出物件中的特征,例如:线条。他的......
  • NumPy 秘籍中文第二版:七、性能分析和调试
    在本章中,我们将介绍以下秘籍:使用timeit进行性能分析使用IPython进行分析安装line_profiler使用line_profiler分析代码具有cProfile扩展名的性能分析代码使用IPython进行调试使用PuDB进行调试简介调试是从软件中查找和删除错误的行为。分析是指构建程序的概要文件,以便收集有关......
  • m无线传感器网络WSN的时间同步捕获算法matlab仿真,对比单步捕获法,双步捕获法以及锯齿
    1.算法仿真效果matlab2022a仿真结果如下:       2.算法涉及理论知识概要2.1WSN同步概要       由于,信息传输和计算会消耗大量的能量,无线传感器网络中的节点都是由电池供电,能源有限,让节点长时间持续时间同步过程以达到极高精确度的时钟同步将导致极大......
  • 基于DSP+FPGA+AD9238的冲击波超压测试系统设计与实现
    对冲击波关键特征参数进行可靠、精确地评估是进行军事行动规划的前提和依据,测试结果可以为战斗部设计提供参考,也可以为武器弹体材料的研发制造提供有效依据。近年来,随着集成电子技术与软件系统取得突破性成果,冲击波测试技术获得了稳定的发展。2.2测试系统的总体框架......
  • 基于DSP+FPGA的机载雷达伺服控制系统的硬件设计与开发(一)总体设计
    2.1功能要求及性能指标2.1.1功能要求(1)具备方位和俯仰两轴运动的能力;(2)方位轴可实现预置、周扫和扇扫功能;(3)俯仰轴可实现预置功能。2.1.2性能指标(1)运动范围:方位转动范围为,俯仰转动范围为;(2)角速度:方位最大角速度为100º/s,俯仰最大角速度为40º/s......
  • python 批量打印证书(保存未调试)
    importosfromPILimportImage,ImageDraw,ImageFontimportxlrd#要求录入学校信息的证书defzs_school(size,left,height,n,c,m1,d1,m2,d2,t):newfont=ImageFont.truetype(font="Songti.ttc",size=size)draw.text((600,height),n,font=newfont......
  • 三维海浪曲面的动态模拟matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要       考虑到三维海浪波运动的高度、形状、频率以及方向随时的变化以及参考相关论文,基于海浪谱使用双叠加模型模拟出三维海浪图像,用matlab程序模拟出来的海浪的最大高度与风级关系符合实际......