Verilog常用系统任务

1、输出信息 $display

输出信息到TCL窗口,用法:

$display(p1,p2,...pn);

即将参数p2到pn按参数p1给定的格式输出,p1为格式控制,p2至pn称为输出表列。

例:

rval=101;
$display("rval=%h hex",rval);

则TCL窗口输出的结果为: rval=00000065 hex

2、文件输出 $fopen、 $fdisplay、$fclose

打开文件$fopen

文件用$fopen 打开,用法

<文件句柄> = $fopen("<文件名>")

任务$fopen 返回一个被称为多通道描述符的32位值。

写文件 $fdisplay

系统任务$fdisplay可以用于写文件,用法:

$fdisplay(<文件描述符>,p1,p2,...pn);

p1,p2,...pn可以是变量、信号名或者带引号的字符串。文件描述符是一个多通道描述符,可以是一个文件句柄或者多个文件句柄按位的组合。

关闭文件$fclose

文件可以用系统函数$fclose来关闭,用法:

$fclose(<文件描述符>);

文件一旦被关闭就不能再写入。

例:

    integer save_file_signal,save_file_return;
    initial begin
      save_file_signal = $fopen("C:/Users/Getao/Desktop/signal.txt");    //打开所创建的文件;若找不到该文件,则会自动创建该文件。
      save_file_return= $fopen("C:/Users/Getao/Desktop/return_sig.txt");    //打开所创建的文件;若找不到该文件,则会自动创建该文件。
      if(save_file_signal==0|save_file_return==0)begin 
        $display ("can not open the file!");    //如果创建文件失败,则会显示"can not open the file!"信息。
        $stop;
       end
     end

    always @(posedge clk) begin
          $fdisplay(save_file_signal,"%d",$signed(signal_ref_I),"\t",$signed(signal_ref_Q),"\t",out_vaild);    //在使能信号为高时,每当时钟的上升沿到来时将数据写入到所创建的.txt文件中
          $fdisplay(save_file_return,"%d",$signed(return_s_n_I),"\t",$signed(return_s_n_Q));    //在使能信号为高时,每当时钟的上升沿到来时将数据写入到所创建的.txt文件中
         
    end

这里未用到$fclose,因为在仿真中一直有数据产生,一直在写数据。

3、退出仿真器 $finish

$finish的作用是退出仿真器,返回主操作系统,也就是结束仿真过程,用法:

$finish;

$finish(n);

$finish根据参数的值输出不同的特征信息,不带参数时参数默认为1;

参数对应输出的特征信息:

0        不输出任何值

1        输出当前仿真时刻和位置

2        输出当前仿真时刻、位置和仿真过程中所用memory及 CPU 时间的统计

 4、暂停模式 $stop

$stop 任务的作用是把EDA工具(例如仿真器)置成暂停模式,在仿真环境下给出一个交互式的命令提示符,将控制权交给用户。用法:

$ stop

$ stop(n)

5、产生随机数 $random

当函数被调用时返回一个32位的随机数,它是一个带符号的整形数。用法:

$random % b; 

 其中b大于0,它给出了一个范围在(-b+1)~(b-1)中的随机数。

例;

reg [23:0] rand;
rand = $ random % 60;

输出的结果应该是一个-59~59的随机数,

下面的例子通过位并接操作产生一个值在0~59之间的数:

reg [23:0] rand;
rand = {$random} % 60;

6、读取文件 $readmemb  $readmemh

         $readmemb 用于读取二进制文件, $readmemh用于读取1进制文件,用法:

$randmemb ("<数据文件名>",<存储器名>);

例:

    reg [7:0] memory [16:0] ;

    initial begin
        $readmemh("C:/Users/Getao/Desktop/test.txt",memory);
    end
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值