vivado导出仿真波形数据至txt文件+matlab分析
vivado导出仿真波形数据至txt文件
若想把上述波形中的m_axis_data_tdata[31:0]打印出来,则只需在.v代码中加入以下代码,run behavioral simulation后,波形内容就会被保存下来。
下面展示代码
。
integer save_file;
initial begin
save_file = $fopen("路径/m_axis_data_tdata.txt"); //打开所创建的文件;若找不到该文件,则会自动创建该文件。
if(save_file == 0)begin
$display ("can not open the file!"); //如果创建文件失败,则会显示"can not open the file!"信息。
$stop;
end
end
always @(posedge clk) begin
if (data_en) begin
$fdisplay(save_file,"%d",m_axis_data_tdata); //在使能信号为高时,每当时钟的上升沿到来时将数据写入到所创建的.txt文件中
end
end
matlab读取txt文件
m_axis_data_tdata = csvread('m_axis_data_tdata.txt');
matlab分析txt文件数据频谱
%% 信号频谱
% 计算FFT
X_m_axis_data_tdata = fft(m_axis_data_tdata);%data_mix
X_m_axis_data_tdata_len = length(m_axis_data_tdata);
% 计算双边频谱(默认情况下,fft给出单边频谱)
X_m_axis_data_tdata = abs(X_m_axis_data_tdata);
X_m_axis_data_tdata_phase = angle(X_m_axis_data_tdata);
X_m_axis_data_tdata = X_m_axis_data_tdata/max(X_m_axis_data_tdata); % 归一化幅度以便可视化
% 创建频率向量
% f = fs*(0:(sin_len/2))/sin_len;
f_m_axis_data_tdata = fs*(0:(X_m_axis_data_tdata_len/2))/X_m_axis_data_tdata_len;
% 绘制幅度频谱
figure(114)
% plot(f, X_mag(1:sin_len/2+1));
plot(f_m_axis_data_tdata, X_m_axis_data_tdata(1:X_m_axis_data_tdata_len/2+1));
title('Amplitude Spectrum of Sin Signal');
xlabel('Frequency (Hz)');
ylabel('Amplitude');
title('vivado信号频谱');
grid on;
matlab cell数组转换为double数组
coe_data_mix_lh_buf = coe_data_mix_lh(3:end,:);%去掉进制说明
data_mix_lh_char = char(coe_data_mix_lh_buf);
data_mix_lh = str2num(data_mix_lh_char);
参考:
链接: [https://blog.youkuaiyun.com/weixin_43872190/article/details/122271074?fromshare=blogdetail&sharetype=blogdetail&sharerId=122271074&sharerefer=PC&sharesource=lzr232&sharefrom=from_link]