MATLAB处理Vivado ILA导出的数据

3 篇文章 14 订阅

ILA导出的是csv文件,如下所示,
在这里插入图片描述

使用sscanf函数

在matlab使用sscanf函数对文件的每行进行处理,

% 从文件中读入数据
file_path = 'iladata.csv';
fid = fopen(file_path);

data_width   = 8;       %实际未使用到,数据是以16进制的形式存储的,位宽为8Bits
data_col_num = 16;
data_row_num = 1024;

line=fgetl(fid);    %读入首行,该行中不包括有效数据
A=zeros(data_row_num,data_col_num);
B=zeros(1,data_col_num);
for i=1:data_row_num
    line=fgetl(fid);
    K=strfind(line,',');
    data_offset = K(3); %有效数据所在列的位置
    for j=1:data_col_num
        B(j)=sscanf(line(j*2-1+data_offset:j*2+data_offset),'%x');
    end
    A(i,:)=B(1,:);
end
fclose(fid);

%将无符号数转换为有符号数
C = A;
C(find(A>=128)) = C(find(A>=128))-256;

使用Perl脚本

始终觉得Matlab处理字符串不够方便,还是在matlab中调用perl处理文本更爽~

use strict;
use warnings;
use Text::CSV_XS;

my $csv_file = $ARGV[0];
my $txt_file = $ARGV[1];
my $csv = Text::CSV_XS->new({ sep_char => ',' });
open(my $csv_fid, '<', $csv_file);
open(my $txt_fid, '>', $txt_file);

my $line_num = 0;
while (my $line = <$csv_fid>) {
    chomp $line;
    if($line_num>0)
    {
        if ($csv->parse($line)) {
            my @fields = $csv->fields();
            my $str_datas = $fields[3];
            my @datas = unpack("(A2)*",$str_datas);
            for(@datas)
            {
                print $txt_fid hex($_)," ";
            }
            print $txt_fid "\n";
        } else {
            warn "Line could not be parsed: $line\n";
        }
    }
    $line_num=$line_num+1;
}
csv_file = 'iladata.csv';
txt_file = 'data.txt';
perl('deal_ila.pl',csv_file,txt_file)
load(txt_file);
% 无符号数转成有符号数
s_data = data;
s_data(find(s_data>=128)) = s_data(find(s_data>=128))-256;
  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将 Vivado 中的数据导出MATLAB,可以使用以下步骤: 1. 在 Vivado 中生成数据文件:首先,在 Vivado 中完成设计和仿真,并生成需要导出数据。这可以是时序仿真结果、逻辑分析仪波形等。确保您已经保存了这些数据。 2. 导出数据文件:在 Vivado 中,使用适当的选项将数据导出为文本文件或者其他支持的格式。例如,可以导出为 CSV(逗号分隔值)文件或者 VCD(Value Change Dump)文件。 3. 将数据文件从 Vivado 复制到 MATLAB:将导出数据文件从 Vivado 所在的计算机复制到 MATLAB 所在的计算机上。可以使用网络共享、移动存储设备或者其他适当的方式进行复制。 4. 在 MATLAB 中读取数据文件:在 MATLAB 中使用适当的函数(例如 `csvread`)或者工具(如 Signal Processing Toolbox)读取导出数据文件。确保您使用正确的函数和选项来正确解析和读取数据。 5. 分析和处理数据:一旦数据成功导入到 MATLAB,您可以使用 MATLAB 的各种功能和工具对数据进行进一步的分析、处理和可视化。这可能涉及到绘图、计算统计指标、应用滤波器等等,具体取决于您的数据和分析需求。 请注意,上述步骤提供了一般性的指导,具体的实施方式可能因您的环境和需求而有所不同。确保仔细阅读 VivadoMATLAB 的文档,并参考相应的示例和教程来帮助您完成这个过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值