FPGA和matlab读写txt文件

这篇具有很好参考价值的文章主要介绍了FPGA和matlab读写txt文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明

博主一般用matlab和VIVADO进行开发,常常碰到二者需要读写数据的问题,因此对matlab和FPGA读写数据做一个总结,主要是为了方便自己查阅,减少不必要的时间浪费,同时和大家做一个分享。

matlab读写txt数据

matlab读txt

fid=fopen('data.txt','r');
data=fscanf(fid,'%d',[1 Inf]);
fclose(fid);

先创建一个句柄fid,然后再使用fscanf函数读取txt的数据。注意txt文件需在matlab当前文件夹下,否则需写文件路径。%d代表格式为有符号整数。

matlab写txt

数据量化

首先是数据量化,因为本文着眼于matlab和FPGA的联合使用,FPGA能读取的txt数据一般是二进制的,需要先完成数据量化。

data_txt=zeros(1,length);
data_txt=string(data_txt);
for ii=1:length
    if(data(ii)>=0)
        real_txt(ii)=dec2bin(ceil(data(ii)*2^a),data_width);
    else
        real_txt(ii)=dec2bin(2^data_width-ceil(-data(ii)*2^a),data_width);
    end
end

要先创建一个数组data_txt,并将其转换为string格式。然后完成数据量化,data_width是量化宽度,a是缩放的位数,a取决于需要量化的定点数的数据格式(小数位的个数),然后用dec2bin转化为二进制数。
如0.707量化为8位定点数,1位符号位,1位整数位,6位小数位,则量化结果为:
FPGA和matlab读写txt文件
-0.707,量化结果为:
FPGA和matlab读写txt文件

数据写入

然后写入的方式与读数据类似:

fid=fopen('data.txt','w'); 
fprintf(fid,'%s\r\n',data_txt); 
fclose(fid);

先创建一个句柄fid,然后再使用fprintf函数读取txt的数据。%s表示输出字符串,\r是回车符,\n是换行符。

FPGA读写txt数据

FPGA读txt

这在testbench撰写时非常实用,testbench文件除了需要写时钟信号和复位信号之外,常需要读取文件作为输入数据的模拟,比较常见的方法是读取txt文件。

integer i;
reg [width-1:0] data;
reg [width-1:0] data_reg [1:length];
initial 
begin
	#200
	$readmemb("data.txt", data_reg );  
    i = 0;
    repeat(length) begin   
        i = i + 1;
        data = data_reg [i]; 
        #clk_period;         
    end
end  

使用“$ readmemb”将txt的数据读取到data_reg中,data_reg的数据宽度是width,深度是length,然后在每个时钟周期,读取data_reg的数据到data中。
“$ readmemb”若不写文件路径,则txt文件需与testbench在一个文件夹下,写文件路径的话需把文件路径的“\”改为“/”。
代码里的#200可以根据开发需要自行修改,代表延迟200个ns,这边和复位信号的拉高保持同步(testbench中复位信号低电平有效,在200ns拉高)。

FPGA写txt

integer file;
initial
begin
    file = $fopen("data.txt");
end            
wire clk;
assign clk=sys_clk&sys_rst_n;
always @ (posedge clk) 
    $fdisplay(file, "%d", data);    

FPGA的coe文件

在FPGA开发中,RAM或ROM的初始化文件、FIR滤波器的系数等需要读取coe文件,coe文件生成也很方便,一般是matlab输出二进制txt文件,然后在txt文件的开始处加入这两句代码,再把文件后缀名从txt改成coe即可:文章来源地址https://www.toymoban.com/news/detail-492396.html

memory_initialization_radix=2;
memory_initialization_vector=

到了这里,关于FPGA和matlab读写txt文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python 文件读写】— txt文件

    目录 一、文件读写模式 二、读文件 1、所用函数 2、示例 三、写文件 1、所用函数 2、示例 四、另一种书写形式 1、读文件 2、写文件 模式 具体信息 r 文件只读,若文件不存在则报错 r+ 文件可读可写,若文件不存在则报错,写入时会覆盖原有内容 rb 文件只读(二进制形式),若

    2024年02月12日
    浏览(61)
  • python读写txt 文件

    一、读文件 步骤:打开 – 读取 – 关闭 f= open(‘D:pythontxt1.txt’) f.read() #返回txt 文件的所有内容 while True: lines = f.readline() # 按行读取数据,行自动+1 if not lines: break pass print(lines) 二、文件写入 f1= open(‘D:pythontxt1.txt’,‘w’) f1.write(‘5.5 5.6!’) f1.close() //只有close的时候文件才

    2023年04月09日
    浏览(42)
  • C# 读写TXT文件

    首先引入命名空间 using System.IO; 读TXT文件: 写TXT文件:

    2024年02月08日
    浏览(37)
  • Java读写txt文件

    如果想直接输出,将代码 strList.add(line); 换成 System.out.println(line); 就行。 方法加个返回值,可方便后续对内容的操作 调用 需要引入maven包 调用 方法中可以换成传字符串,那整个for循环就能替换成 info.write(str); 调用时就像下面这样

    2024年02月11日
    浏览(46)
  • 轻松搭建FPGA开发环境:第三课——Vivado 库编译与设置说明

    工欲善其事必先利其器,很多人想从事 FPGA 的开发,但是不知道如何下手。既要装这个软件,又要装那个软件,还要编译仿真库,网上的教程一大堆,不知道到底应该听谁的。所以很多人还没开始就被繁琐的开发环境搭建吓退了,还没开始就放弃了! 笔者用几节课的时间,从

    2024年02月04日
    浏览(45)
  • 关于C#读写文本文件(.txt)的方法

    读写文本文件其实是件很简单的事情,本文主要给大家介绍了关于C#读写文本文件(.txt)的相关资料,需要的朋友可以参考下 读取txt文件 如果你要读取的文件内容不是很多,可以使用 File.ReadAllText(filePath) 或指定编码方式 File.ReadAllText(FilePath, Encoding)的方法。它们都一次性将文本内

    2024年02月15日
    浏览(39)
  • vivado读写文件

            在平时对代码进行仿真的过程中经常会需要对数据进行处理,特别是对信号处理方面的内容来说很多数据在FPGA中并不能够直接的观察到需要导出后另外处理观察。所以在仿真中添加对文件的读写有利于解决问题。         读文件需要先定义一个数组,数组宽度

    2024年02月05日
    浏览(25)
  • Unity中的文件读写TXT 与XML

    在游戏开发中,有的单机游戏会用到保存数据到本地,或者根据本地的数据来进行下次的设置。这里,鄙人介绍TXT与xml 的读写。 首先是txt: 新建一个unity工程,创建一个cube,新建一个脚本:CreatTxt挂载到cube上。然后打开脚本。输入一下的代码: 然后保存运行: 运行后的截

    2024年02月04日
    浏览(43)
  • Rust ?运算符 Rust读写txt文件

    一、Rust ?运算符 ?运算符:传播错误的一种快捷方式。 如果Result是Ok:Ok中的值就是表达式的结果,然后继续执行程序。 如果Result是Err:Err就是整个函数的返回值,就像使用了return ?运算符只能用于返回Result的函数。 ?运算符与main函数 main函数返回类型是:() main函数的

    2024年02月22日
    浏览(35)
  • 使用python读写txt和json(jsonl)大文件

    在深度学习方向,尤其是NLP领域,最重要的就是和海量的文字打交道,不管是读取原始数据还是处理数据亦或是最终写数据,合理的读写文件是极为重要的,这篇博客用以记录一下工作中学习到的对大文件读写的过程。 目录 读写txt文本文件 读写JSON文件 读写JSONL文件 遇到的

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包