testbench (verilog)读取文件的细节问题

为什么要用?

在使用数字图像IC设计中,往往需要测试所设计的图像处理模块的功能,此时模块的输入端数据时序要求比较复杂,因此需要通过testbench按照一定的时序关系读取外部的文件中的数据,或者模块计算完后需要将输出的数据导出到外部文件中进行存储。

Verilog 提供了很多可以对文件进行操作的系统任务

文件开、关:fopen,fclose , ferrorfdisplay , fwrite,fstrobe , fmonitorsformat , swritefgetc , fgets,fscanf , freadfseek , ftell,feof , frewindreadmemh , $readmemb

如何使用?

  • 文件打开: fd = $fopen("filename",mode)
    其中 fd : 为返回的32bit文件描述符 (打开错误时fd为0)
    filename : 打开文件的名字
    mode : 用于指定文件的打开方式
文件打开方式 mode 类型及其描述如下:
r   只读打开一个文本文件,只允许读数据。
w   只写打开一个文本文件,只允许写数据。如果文件存在,则原文件内容会被删除。如果文件不存在,则创建新文件。
a   追加打开一个文本文件,并在文件末尾写数据。如果文件如果文件不存在,则创建新文件。
rb  只读打开一个二进制文件,只允许读数据。
wb  只写打开或建立一个二进制文件,只允许写数据。
ab  追加打开一个二进制文件,并在文件末尾写数据。
r+  读写打开一个文本文件,允许读和写
w+  读写打开或建立一个文本文件,允许读写。如果文件存在,则原文件内容会被删除。如果文件不存在,则创建新文件。
a+  读写打开一个文本文件,允许读和写。如果文件不存在,则创建新文件。读取文件会从文件起始地址的开始,写入只能是追加模式。
rb+ 读写打开一个二进制文本文件,功能与 "r+" 类似。
wb+ 读写打开或建立一个二进制文本文件,功能与 "w+" 类似。
ab+ 读写打开一个二进制文本文件,功能与 "a+" 类似。
  • 文件关闭: fd = $fclose(fd)
    其中 fd : 需要关闭的对应文件
  • 文件写入
    fdisplay(fd,arguments);fwrite(fd, arguments) ; 按顺序或条件写文件,不自动换行
    fstrobe(fd,arguments);fmonitor(fd, arguments) ; 只要数据有变化就写文件

例子:$fdisplay(fd, "New data1: %h", fd) ;

  • 字符串写入
    swrite(reg,listofarguments);reglen=sformat(reg, format_str, arguments) ;
    按格式 format_str 写字符串到变量 reg 中格式与 $display 指定格式时一致不建议省略第二个参数 format_str可返回字符串长度 len。
  • ★★★文件读取
    按字符读文件 c = $fgetc( fd ) ;
    按字符格式将 fd 数据输出给变量 c,c 位宽最少为 8

按字符写缓冲区 code = ungetc(c,fd);fdccfgetc 时返回,文件 fd 自身内容不会发生变化。正常写缓冲时返回值 code 为 0,发生错误时返回值 code 为 EOF

按行读文件 code = $fgets(str, fd) ;
按字符连续读,直至变量 str 被填满,或一行内容读取完毕,或文件结束正常读取时返回值 code 为读取行数(次数),发生错误时 code 为 0

按格式读文件 code = fscanf(fd,format,args);formatfdargsformatdisplay 指定格式说明读取一次的停止条件为空格或换行
读取发生错误时返回值 code 为 0

按格式读字符串 code = sscanf(str,format,args);formatstrargsfscanf 一致

按二进制读文件 code = $fread(store, fd, start, count) ;
按二进制数据流格式将数据从文件 fd 读取到数组或寄存器变量 store 中。start 为文件起始地址,count 为读取长度。若 start/count 未指定,数据会全部填充至变量 store 中若 store 为寄存器类型,则 start/count 参数无效,store 变量填充满一次数据后便会停止读取

posted @   森是林上木  阅读(840)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示