前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Testbench编写指南(2)文件的读写操作

Testbench编写指南(2)文件的读写操作

作者头像
碎碎思
发布2020-06-30 11:05:07
1.4K0
发布2020-06-30 11:05:07
举报
文章被收录于专栏:OpenFPGA

Testbench编写指南(2)文件的读写操作

文章转自:https://blog.csdn.net/FPGADesigner/article/details/80470972


文章目录

  • Testbench编写指南(2)文件的读写操作
    • 读取txt文件数据
    • 将数据写入txt文件

  第2篇的题材是文件的读写控制,仿真时经常需要从文件中读取测试激励,还要将仿真结果存取在文件中供其它程序读取调用。


读取txt文件数据

  示例代码如下:

代码语言:javascript
复制
integer i;   //数组坐标
reg [9:0] stimulus[1:data_num];  //数组形式存储读出的数据

initial 
begin
    $readmemb("SinIn.txt", stimulus);  //将txt文件中的数据存储在数组中
    i = 0;
    repeat(data_num) begin   //重复读取数组中的数据
        i = i + 1;
        din = stimulus[i]; 
        #clk_period;         //每个时钟读取一次
    end
end  

  用“数组”来表述Verilog HDL中的定义并不准确,但对大多数人来说应该更好理解。可以将stimulus视作一个存储器,[9:0]定义了数据的位宽,[1:data_num]定义了存储器的深度。stimulus的定义应该与txt文件中的数据相匹配。txt文件中每行存储一个数据,则上述定义对应的是txt中存储了data_num个数据,每个数据的最大位宽为10bit。   读取二进制格式的文件是用系统任务readmemb;读取十六进制格式文件使用readmemb;读取十六进制格式文件使用readmemh。其命令为$readmemb(“filename”, mem_name),将filename中的内容读取到mem_name中。   注意filename文件路径中应该用反斜杠“/”,与windows系统中的文件路径使用的“\”不同。如果不指定路径,向上面程序一样直接写文件名字,那么该文件必须和testbench文件在同一路径下。 repeat(n) begin … end中的内容应该根据设计的需要编写。


将数据写入txt文件

  示例代码如下:

代码语言:javascript
复制
integer file_out;

    initial
    begin
        file_out = $fopen("mixer_out.txt");
        if (!file_out) begin
            $display("can't open file");
            $finish;
        end
    end            
    
    wire signed [19:0] dout_s = dout;
    wire rst_write = clk & rst_n;         //复位期间不应写入数据
    always @ (posedge rst_write)   
        $fdisplay(file_out, "%d", dout_s);

  写入文件需要先用$fopen系统任务打开文件,这个系统任务在打开文件的同时会清空文件,并返回一个句柄,如果句柄为0则表示打开文件失败。   如果原来不存在该文件,则会自动创建该文件。   打开文件之后便可以用得到的句柄和KaTeX parse error: Expected 'EOF', got '&' at position 55: …printf函数的用法很像。

上面的程…fdisplay`,都会在数据后插入一个换行符。

欢迎大家关注我的博客,其他相关资料和交流可以到我的博客上留言,谢谢大家!

博客地址:https://blog.csdn.net/Pieces_thinking

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenFPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Testbench编写指南(2)文件的读写操作
    • 文章目录
      • 读取txt文件数据
        • 将数据写入txt文件
        相关产品与服务
        数据保险箱
        数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档