zoukankan      html  css  js  c++  java
  • Vivado抓取信号

    作者:桂。

    时间:2018-05-03  21:16:03

    链接:www.cnblogs.com/xingshansi/p/8987608.html 


    前言

    FPGA调试需要抓取特定信号,一个直观的思路是:保存抓取的信号,事后分析/ 或者 导出实测数据,用作后续算法仿真验证。 本文简要记录数据的导出及读取。

    一、信号导出

    (1)把想要观测的信号线加入在线逻辑分析仪中。
    (2)上板测试,trigger到想要的实时数据,用一句TCL语句保存为ila格式的文件,那句话是write_hw_ila_data data1 [upload_hw_ila_data hw_ila_1] 。其中data1为用户自己取的文件名,要带上路径,hw_ila_1为要保存的那组实时信号的名字。还有两句是读出保存好的数据的,read_hw_ila_data data1.ila,display_hw_ila_data。
    (3)把保存好的.ila格式的文件导入matlab中,用unzip语句解压,会出现一个csv格式的文件,这个文件可以用excel打开,并能直观地看到所有sample。
    (4)在excel中用自带的函数功能对数据进行处理,处理后可以再导入matlab中进行高级处理。

    二、信号读取

    解压的数据如图所示:

    鉴于此,只能先借用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	runk	mpmat*.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
    ',csv_data_sign);
    fclose(fid_w);
    • 参考:https://blog.csdn.net/wordwarwordwar/article/details/71250232

  • 相关阅读:
    商业分析07_15辅助产品设计
    商业分析07_14行为序列的分析方法
    商业分析07_13路径挖掘的分析方法
    商业分析07_12精准运营推送
    商业分析07_11归因查找
    商业分析07_10高质量拉新
    商业分析07_08功能/内容上线的评估
    商业分析07_07用户留存分析
    Ubuntu14.04安装CUDA8.0与Cudnn5.1
    Windows编译libcaffe时报cudnn.hpp(114): too few arguments in function call错误
  • 原文地址:https://www.cnblogs.com/xingshansi/p/8987608.html
Copyright © 2011-2022 走看看