查看: 27|回复: 0

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

[复制链接]
  • TA的每日心情

    2024-11-15 16:19
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    292

    主题

    26

    回帖

    2978

    积分

    管理员

    积分
    2978
    发表于 2024-11-15 11:56:01 | 显示全部楼层 |阅读模式
    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 //--------------------------------------------------   

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    友情链接:

    返回顶部 返回列表