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\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);

 

  • 參考:https://blog.csdn.net/wordwarwordwar/article/details/71250232


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM