Verliog HDL硬件描述语言学习笔记(四)

本文详细介绍了Verilog HDL中的一些关键系统任务,如$monitor、$time、$stop和$finish,以及编译预处理语句,包括$readmemb、$readmemh、$random等。这些工具在调试和创建FPGA开发模块时非常实用,特别是$monitor用于实时监控变量变化,$time用于获取仿真时间,$stop和$finish控制仿真流程,$readmemb和$readmemh用于从文件加载数据到内存,而$random生成随机数。此外,还讨论了预处理命令如`define、`include、`timescale等在Verilog代码中的应用。
摘要由CSDN通过智能技术生成

最近学习了Verliog语法种几种常用于调试和查错的系统任务以及编写实用模块时常用的编译预处理语句。

4.1 系统任务 $ monitor

任务$ monitor 有监控和输出参数列表中的表达式和变量值的功能,常在initial块中调用,每当参数列表中的变量或表达式的值改变时,整个参数列表中的变量或表达式的值都输出显示,若同时刻多个值改变,则该时刻只输出显示一次,输出格式和规则同$ display。在多模块调试时,任何时刻只能有一个$ monitor起作用。

格式:
$ monitor (p1,p2,...,pn);
$ monitor;
$ monitoron;//启动监控任务$ monitor
$ monitoroff;//关闭监控任务$ monitor

4.2 时间度量系统函数 $ time

Verliog中有2种类型的时间系统函数:$ time和$ realtime,使用它们可以得到当前的仿真时刻,输出的仿真时刻经过尺度变换输出即时间尺度的倍数。常用在$ monitor中用来做时间标记。

$ time返回一个 64位的整数 来表示以模块仿真时间尺度为基准的当前仿真时刻值。
$ realtime返回的时间数字是一个实型数,同样以时间尺度为基准

eg:模块功能:分别在16ns和32ns时设置寄存器set的值为01.

`timescale 10 ns/1 ns //仿真时间尺度为10ns,精度为1ns
module test;
	reg set;
	reg realset;
	parameter p = 1.6;
	initial begin
		$ monitor($ time, ,"set=",set);//监控和输出仿真时间和寄存器值
		$ monitor($ realtime, ,"realset=",set);// “, ,”代表一个空参数,输出显示为空格。
		#p set=0;//延时1.6*10ns=16ns
		#p set=1;//再延时1.6*10ns=16ns,即32ns
	end
endmodule
$ time输出结果:
0 set=x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值