打印
[Verilog HDL]

Verilog语言中的系统任务和系统函数

[复制链接]
10|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2024-9-28 16:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Verilog语言中预先定义了一些任务和函数,用于完成一些特殊的功能,它们被称为系统任务和系统函数,这些函数大多数都是只能在Testbench仿真中使用的,使我们更方便的进行验证。

1 `timescale 1ns/1ns //时间尺度预编译指令 时间单位/时间精度
时间单位和时间精度由值1、10、和100以及单位s、ms、us、ns、ps和fs组成
时间单位:定义仿真过程所有与时间相关量的单位仿真中使用 “#数字”表示延时相应时间单位的时间,例#10表示延时10个单位的时间,即10ns。
时间精度:决定时间相关量的精度及仿真显示的最小刻度。

1 `timescale 1ns/10ps  //精度0.01,#10.11 表示延时10110ps
下面这种写法就是错误的,因为时间单位不能比时间精度小。

1 `timescale 100ps/1ns  
主要的函数有如下这些,在支持Verilog语法的编辑器中都会显示为高亮关键字 。

复制代码
//--------------------------------------------------
$display    //打印信息,自动换行
$write        //打印信息
$strobe        //打印信息,自动换行,最后执行
$monitor       //监测变量
$stop          //暂停仿真
$finish        //结束仿真
$time          //时间函数
$random        //随机函数
$readmemb     //读文件函数
//--------------------------------------------------
复制代码
下面我们单独介绍它们的功能,并在ModelSim的Transcript界面中打印这些信息。
1、$display用于输出、打印信息
使用格式为:

复制代码
1 $display("%b+%b=%d",a, b, c); //格式“%b+%b=%d” 格式控制,未指定时默认十进制
2 %h或%H //以十六进制的形式输出
3 %d或%D //以十进制的形式输出
4 %o或%O //以八进制的形式输出
5 %b或%B //以二进制的形式输出
6 //--------------------------------------------------   
7 //a,b,c 输出列表,需要输出信息的变量
8 //每次打印信息后自动换行
9 `timescale 1ns/1ns
10  
11 module tb_test();
12  
13 reg [3:0] a;
14 reg [3:0] b;
15 reg [3:0] c;
16  
17 initial begin
18   $display("Hello");
19   $display("xiangliangzi");
20   a = 4'd5;
21   b = 4'd6;
22   c = a + b;
23   #100;
24   $display("%b+%b=%d", a, b, c);
25 end
26
27 endmodule
28 //--------------------------------------------------   

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1050

主题

11296

帖子

25

粉丝