当前位置:   article > 正文

MATLAB处理Vivado ILA导出的数据_vivado仿真数据导出数据

vivado仿真数据导出数据

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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

使用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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/484493
推荐阅读
相关标签
  

闽ICP备14008679号