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

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

3天内不再提示

Testbench编写文件的读写操作

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2020-11-20 11:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

读取txt文件数据

将数据写入txt文件

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

读取txt文件数据

示例代码如下:

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文件

示例代码如下:

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`,都会在数据后插入一个换行符。

责任编辑:lq

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

    关注

    39

    文章

    7753

    浏览量

    172164
  • 函数
    +关注

    关注

    3

    文章

    4421

    浏览量

    67822
  • 数组
    +关注

    关注

    1

    文章

    420

    浏览量

    27458

原文标题:Testbench编写指南(2)文件的读写操作

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用EB示例工程操作Flash出现读写错误怎么解决?

    当前我使用EB配置DFlash的读写,使用EB 提供的Demo进行读写操作,会出现txbuffer与rxbuffer数据无法对应的情况或者memory有些位置没有写入对应数据。 我当前环境 设备
    发表于 04-21 07:50

    集成式RFID读写器与非集成RFID读写

    集成RFID读写器将典型的固定RFID读写器和RFID天线集成为一体,无需外部天线。如果需要额外的天线,一些集成读写器会有一个额外的天线端口,允许用户连接到另一个天线。集成式RFID读写
    的头像 发表于 03-16 15:46 213次阅读
    集成式RFID<b class='flag-5'>读写</b>器与非集成RFID<b class='flag-5'>读写</b>器

    飞凌嵌入式ElfBoard-文件I/O的了解探究之Linux系统的文件管理机制

    读写操作,都是对内存中这一份动态文件进行相关操作,并不是对磁盘中存放的静态文件操作。当对动态
    发表于 11-18 08:50

    在verilog testbench中运行测试用例时,运行到make run_test出错怎么解决?

    按照胡老师书上的在verilog testbench中运行测试用例时,在运行到make run_test步骤时出错,查了很多方案没有解决。
    发表于 11-11 06:52

    求助,关于testbench仿真的问题求解

    我用c 写了一段加密算法,其中包含了S盒替换表和密钥等参数,现在想用vcs和testbench仿真这个程序,c 编译成机器码后怎么区分哪段数据是写入ITCM哪段是写入DTCM的,又应该怎么写入DTCM
    发表于 11-05 08:56

    语法纠错和testbench的自动生成

    编写Verilog代码时,我一般都是先在编辑器上写完,因为编辑器vscode或者notepad++可以提供语法高亮和自动补全等功能,然后用仿真器跑仿真,但是在编写过程中不可避免的会有一些语法的错误
    发表于 10-27 07:07

    如何利用Verilog HDL在FPGA上实现SRAM的读写测试

    、建立读写操作、配置地址计数器、模拟数据流、综合与仿真以及下载到FPGA进行硬件测试。通过实践,掌握SRAM在FPGA中的使用和基本读写方法,加深对FPGA工作原理的理解。
    的头像 发表于 10-22 17:21 4546次阅读
    如何利用Verilog HDL在FPGA上实现SRAM的<b class='flag-5'>读写</b>测试

    飞凌嵌入式ElfBoard-Linux系统基础入门-文件操作相关shell命令

    2.5 文件操作相关命令2.5.1 touch创建新文件命令:touch英文全拼:功能:创建大小为0的一个空文件参数:touch 文件名示例
    发表于 09-30 09:46

    双UFS4.1 4Lane,速度可达8.6GB/s,大型文件读写速率提升达70%+

    /s。vivo从以往的1个UFS4.1双通道读写升级为2个UFS 4.1四通道并行协作,真正的双UFS4.1 4-Lane,大型文件读写速率提升达到70%+,最高读写速度可达到惊人的8
    的头像 发表于 09-26 07:32 6742次阅读

    求助各位大佬,关于如何读写编码格式为UTF-16LE的配置文件

    如题,小白求助各位大佬,要怎么实现对编码为UTF-16LE的配置文件读写。 使用读配置文件的vi读不出内容。 使用读文本的方式写入异常,文件的编码变成UTF-8且内容也不对。
    发表于 09-14 12:54

    SFUD操作w25q256,无法正常读写是什么原因导致的?

    SFUD操作w25q256,无法正常读写,但是若用裸机对W25Q256执行一次写入后就能正常操作了,这个是什么原因呢?使用的是QSPI操作 这个是上电后的记录图片 执行sf
    发表于 09-11 06:45

    ESP32驱动SPIFFS进行文件操作

    本篇文章介绍如何在ESP32开发板上使用SPIFFS(SPI Flash File System)进行文件操作。看下如何初始化SPIFFS文件系统、读取文件、列出
    的头像 发表于 08-05 18:11 4478次阅读
    ESP32驱动SPIFFS进行<b class='flag-5'>文件</b><b class='flag-5'>操作</b>

    SI522/RC522读卡器如何读写操作ST25TA64K NFC卡?

    -防冲撞-选卡-密钥对比-读写操作 而查看ST25TA手册后,总结为以下流程: 寻卡唤醒-防冲撞-打开RF会话-发送SelectNDEFTagApplication指令-选择检测文件-读写
    发表于 07-28 14:16

    第二十五章 SDIO——SD卡读写测试

    本章介绍了W55MH32的SDIO接口,其可与SD 卡等通信,采用9针接口,分卡识别与数据传输模式。还提及SDIO功能框图、初始化结构体,并有SD卡读写测试代码,涉及文件系统等操作
    的头像 发表于 06-20 14:01 2191次阅读
    第二十五章 SDIO——SD卡<b class='flag-5'>读写</b>测试

    基于RK3576开发板的INI文件操作

    KeyName=value,以等号“=”分隔。INI文件注释以分号“;”表示,在分号后面的文字直到该行结尾全部作为注解。例程如下所示,注意value值只有int型和string型。EASY-EAI提供INI文件操作步骤及API说
    的头像 发表于 05-12 14:47 1690次阅读
    基于RK3576开发板的INI<b class='flag-5'>文件</b><b class='flag-5'>操作</b>