FPGA硬件电路matlab,FPGA-【转】fpga硬件调试vivado——数据导出并用MATLAB存储-电路城论坛 - 电子工程师学习交流园地...

本文介绍了如何使用MATLAB解析Vivado Debugger生成的CSV数据,针对硬件实时数据的二进制格式难题,作者详细展示了数据读取、转换和存储的过程,适合对嵌入式调试和MATLAB处理非标准数据感兴趣的读者。
摘要由CSDN通过智能技术生成

Vivado套件中的Debugger(类似ISE套件中的ChipScope)提供了在本地窗口中查看硬件实时数据的途径,但是无法导出类似ChipScope中的.prn这种文本数据格式,只能通过write_hw_ila_data命令导出csv或者vcd文件,vcd文件为通用波形文件,只能用来查看;所以只能通过csv文件解析数据。

命令:write_hw_ila_data -force -csv_file test.csvcsv文件的格式如下图,第一行为对象描述行,前面几列(下图中是3列)为采样序号以及触发说明,之后就是采样的数据,从图中可以看出所有数据都是以二进制格式存放的,而且是按10进制表示的(无论怎么调整波形图中数据格式出来的都是一样的)基本无法适用于常规的分析软件。

1c372da0db4f76d57b60d80b86e524f6.gif

161229114202eb3beed51c59d2.png.bmp (2.79 MB, 下载次数: 22)

2017-7-21 10:21 上传

鉴于此,只能先借用MATLAB强大的数据分析能力,先把数据解析出来。以waveform.csv文件为例进行解析,waveform.csv中的有效数据为第4列到第11列,有效数据是从左到右、从上至下排列的正弦波采样数据,16位有符号数(补码),采样点排列顺序为:

E2->F2->G2....L2->E3->F3->G3….

解析源码如下:

    clc;

clear;

close all;

fclose('all');

%% 设置CSV文件读取范围

srow = 1;       %起始行(行标从0开始);

scol = 4;       %起始列(列标从0开始);

erow = 2048;    %结束行(一般为采样深度);

ecol = 11;      %结束列;

%% 获取csv文件

[filename, pathname] = uigetfile('E:\pl_b3\trunk\tmp\mat\*.csv','读取数据');

csv_file  = [pathname filename];

%% 读取csv文件

csv_data = csvread(csv_file,srow,scol,[srow,scol,erow,ecol]);

%% 矩阵重排为一列

csv_data_resp = reshape(csv_data',[],1);

%% 矩阵转换为二进制文本

csv_data_str = num2str(csv_data_resp);

%% 矩阵转换为有16位有符号数

csv_data_sign = typecast(uint16(bin2dec(csv_data_str)), 'int16');

%% 有符号数写入文本文档

fid_w = fopen([pathname 'csv_convt.txt'],'w');

fprintf(fid_w,'%d\n',csv_data_sign);

fclose(fid_w);

复制代码解析结果如下,顺序存放的文本数据:

1c372da0db4f76d57b60d80b86e524f6.gif

1612291142f3862a8c1c411459.png.bmp (517.03 KB, 下载次数: 20)

2017-7-21 10:21 上传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值