项目开发中常用的Vivado软件调试技巧(二)

作者:FPGA技术实战

前言:本文我们介绍如何从Vivado ILA核将抓取到的数据导出为文件,并通过Matlab软件存为.coe文件。

1. Vivado ILA核导出数据到文件
打开示例工程,程序下载至电路板,抓取信号,如图1所示。
图1:实例工程JTAG抓取数据.png

图1:实例工程JTAG抓取数据

我们在想要导出的信号上右键选择"Export ILA Data...",如图2所示。
图2:右键选择Export ILA Data....png

图2:右键选择"Export ILA Data..."

弹出如图3所示界面,选择需要存储的文件格式,存储路径以及命名文件,至此ILA核数导出到文件中。
图3:设置导出数据格式及路径.png

图3:设置导出数据格式及路径

ILA核导出的数据如图4所示。
图4:设置导出数据格式及路径.png

图4:设置导出数据格式及路径

2. Matlab读取文件数据存储为.coe文件
数据从FPGA中导出后,我们利用Matlab将数据读出,并写入.coe文件,供软件调试使用。Matlab读写文件代码如下:

clear all;close all;
DATA_LEN = 2048;%读取数据长度ROW_NUM = 1; %读取数据起始行数COL_NUM = 3; %读取第3列数据
%读取文件dds_data = csvread('.\dds_data.csv',ROW_NUM,COL_NUM,[ROW_NUM,COL_NUM,DATA_LEN,COL_NUM]); 
%绘图显示plot(dds_data);
%存入.coe文件L = 2048;file_open = fopen('.\DDS_Data\DDS_Data.coe','w'); fprintf(file_open,'MEMORY_INITIALIZATION_RADIX = 10;\n');%dec2bin将十进制转化为2进制,d必须为正数fprintf(file_open,'MEMORY_INITIALIZATION_VECTOR=\n'); for n=1:1:L    fprintf(file_open,'%s',num2str(dds_data(n),16));%num2str将数字转化为数字串    if n==L        fprintf(file_open,';');    else        fprintf(file_open,',\n');    endend

Matlab读取数据波形如图5所示。

图5:Matlab读取数据波形.png


图5:Matlab读取数据波形

DDS_Data.coe文件写入数据如图6所示,该文件可存入FPGA ROM中,可用于测试调试使用。

图6:DDS_Data.coe文件写入数据.png

图6:DDS_Data.coe文件写入数据

文章来源:FPGA技术实战微信公众号