0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

verilog系统函数

XL FPGA技术交流 来源:XL FPGA技术交流 作者:XL FPGA技术交流 2024-07-05 11:48 次阅读

1、$fwrite 向文件写入数据

$fdisplay


格式:$fwrite(fid,"%h%hn",dout_r1,dout_r2);

(1)fwrite是需要触发条件的,需要手动添加换行。

(2)如果写放文件的格式为%d,则认为是无符号数,如下例: wire [27:0] data; fp_re = $fopen("dout.txt","w"); always @(posedge clk) begin if(dout_rdy == 1'b1) $fwrite(fileid,"%d",data); end

如果要输出有符号数据,需要将信号定义为有符号数。

eg:wire signed [27:0] data;

(3)输出顶层文件中例化的信号(或下一级例化的文件的信号)

eg:$fwrite(file_id,"%d%12dn",u_coef_update.ekxdn_i,

u_coef_update.u_mult.mult_out);

在文件coef_update中定义的信号或REG ekxdn_i,如果要输出有符号数,

要在coef_update中把ekxdn_i定义为signed;

在文件coef_update文件中例化文件u_mult,输出相应的信号mult_out. 2、$fscanf 从文件中读取数据 (1)读取格式为按行读取,一行读完之后再转向下一行; (2)读取也是需要触发条件的; always @ ( posedge clk ) begin if(cnt_test == 3'd7) begin $fscanf(coef_file,"%d%d%d%d",coef01_i,coef01_q,coef02_i,coef02_q); $fscanf(ref_file,"%d%d%d%d",ref01_i,ref01_q,ref02_i,ref02_q); end end 3、$fopen 打开文件 (1) 在读写文件之前,一定要用fopen打开文件 (2)读写路径的设置 file_id = $fopen("F:/modelsim/coef.txt"),注意这里的斜杠方向。

4、$random

random_function ::= $random [ ( seed ) ]

$random产生一个32位的有符号数,seed可以是reg,integer,time类型

Example 1—Where b is greater than 0, the expression ($random % b) gives a number in the following range: [(-b+1): (b-1)].

产生–59 到59的数: reg [23:0] rand; rand = $random % 60; Example 2—用连接符产生0 to 59: reg [23:0] rand; rand = {$random} % 60;

=====================================

操作实例:

=====================================

integer step_file; //文件要定义成integer

         //open the fileInitialBeginstep_file = $fopen("F:/Company/Src/txt/step.v","r");      file_ekxdn =$fopen("F:/Company/Src/txt/ekxdn.v","w");end always #5 clk = !clk;    //read data from file

   always @ ( posedge clk )//read from the file   begin      if( cnt_test[2:0] == 0 )               $fscanf(step_file,"%d%d",ref01_i,ref01_q);
    end

    //write data to file    wire signed[24:0]  ekxdn_i,ekxdn_q;    always @( posedge clk )    begin      if( cnt_test[2:0] == 3'b111 )   $fwrite(nx_coef_file,"%d%12dn",nx01_coef_i,nx01_coef_q);end

读写文件的数据格式如下:

75c7c9ca-3a67-11ef-82a0-92fbcf53809c.jpg                     

以下点要注意:

1、可能由于加密的原因,读不了txt文件,只能读。V的了

2、打开文件的$fopen语句必须放在initial 中才可以

3、必须注意路径中斜杠的方向“/”

4、相对路径的设置(请参考积累中的“相对路径与绝对路径”)

5、如果读入的是有符号数,那么要把数据的类型定义为signed

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1332

    浏览量

    109691
  • 函数
    +关注

    关注

    3

    文章

    4233

    浏览量

    61944
收藏 人收藏

    评论

    相关推荐

    22 15C 基于Verilog系统函数语法的按键抖动模拟与仿真 - 第1节 #硬声创作季

    fpga编程定时器函数代码HT6221
    充八万
    发布于 :2023年08月18日 23:44:37

    22 15C 基于Verilog系统函数语法的按键抖动模拟与仿真 - 第2节

    fpga编程定时器函数代码HT6221
    充八万
    发布于 :2023年08月18日 23:45:27

    22 15C 基于Verilog系统函数语法的按键抖动模拟与仿真 - 第3节 #硬声创作季

    fpga编程定时器函数代码HT6221
    充八万
    发布于 :2023年08月18日 23:46:17

    22 15C 基于Verilog系统函数语法的按键抖动模拟与仿真 - 第4节 #硬声创作季

    fpga编程定时器函数代码HT6221
    充八万
    发布于 :2023年08月18日 23:47:07

    22 15C 基于Verilog系统函数语法的按键抖动模拟与仿真 - 第5节 #硬声创作季

    fpga编程定时器函数代码HT6221
    充八万
    发布于 :2023年08月18日 23:47:57

    verilog常用系统函数以及例子

    verilog常用系统函数以及例子
    发表于 08-15 15:49

    Verilog的打印系统函数有哪几类? 在使用Verilog时有哪些注意事项?

    Verilog的打印系统函数有哪几类?在使用Verilog时有哪些注意事项?
    发表于 04-30 06:30

    Verilog HDL语言中任务与函数的比较

    其中,返回值的类型和位宽是可选项,如果缺省会返回一位寄存器类型数据。Verilog HDL认为函数的定义隐式地声明了与函数同名的寄存器。函数的定义把
    的头像 发表于 07-02 10:24 2194次阅读

    剖析verilog2005的骚操作之对数函数

    小技巧分享: verilog下取对数其实可用$clog2这个系统函数,和自己找代码里面写入function是同样的效果,但是方便的多。这是verilog 2005就开始支持的标准,所以
    的头像 发表于 10-09 15:29 4119次阅读
    剖析<b class='flag-5'>verilog</b>2005的骚操作之对数<b class='flag-5'>函数</b>

    Verilog数字系统设计——任务和函数二(系统任务readmemb或readmemh)

    Verilog数字系统设计十任务和函数实验2文章目录Verilog数字系统设计十前言一、Verilog
    发表于 12-05 19:06 7次下载
    <b class='flag-5'>Verilog</b>数字<b class='flag-5'>系统</b>设计——任务和<b class='flag-5'>函数</b>二(<b class='flag-5'>系统</b>任务readmemb或readmemh)

    Verilog系统函数和边沿检测

    “ 本文主要分享了在Verilog设计过程中一些经验与知识点,主要包括Verilog仿真时常用的系统任务、双向端口的使用(inout)、边沿检测”
    的头像 发表于 03-15 13:34 2086次阅读

    verilog函数和任务对比

    verilog中,函数和任务均用来描述共同的代码段,并且在模式内任意位置被调用,提高代码效率,让代码更加的直观,提高代码可读性。但是在实际使用的过程中,函数和任务也存在诸多的不同,下面将对而这进行
    的头像 发表于 02-12 18:43 737次阅读

    verilog function函数的用法

    Verilog 是一种硬件描述语言 (HDL),主要用于描述数字电子电路的行为和结构。在 Verilog 中,函数 (Function) 是一种用于执行特定任务并返回一个值的可重用代码块。函数
    的头像 发表于 02-22 15:49 3778次阅读