用Matlab读取SignalTap中数据的两种方法
【时间:2013 年 11 月 15 日, 来源:本站原创, 作者:郭强】
使用FPGA进行数字信号处理时,经常需要将FPGA中的实际检测到的数据导出,然后用Matlab进行仿真对比,以确认设计是否达到要求,下面介绍了两种常用的方法。
一、 借助Excel表格转换
操作步骤如下:
1〉 在Quartus工程中新建Stp文件,编译,正确的在线采集FPGA内部的数据。
2〉 如下图所示,在SignalTap窗口中的data下面,右键选择create SignalTapII List file。
3〉 经过步骤2之后,工程所在的文件夹中会生成一个my_stp_auto_singalTap_0.txt的文件。此时可以用Quartus打开,如下图所示:
4〉 在3步骤的图中,蓝色部分是数据的说明(具体表示某一列代表的某个变量),为了Matlab读取数据方便,我们可以去掉前面的说明文件,只留下感兴趣的数据,重新保存。
5〉 用Excel打开刚才保存好的txt文件,第一步选择分隔符号,next界面选择空格,后面的保持默认的选项,如下图所示。然后保存为xslx格式的文件
6〉 打开Matlab,在file下面选择Import Dta…,找到刚才的文件
7〉 操作6后得到如下图所示的结果。在workspace中可以看到需要导入的数据。Ok
8> 把数据读出来,画图
二、 用alt_SignalTap_run指令
这种方法在Datasheet中介绍的比较详细,个人觉得比上面的方法要简单一些
1> 在Quartus工程中新建Stp文件,编译,正确的在线采集FPGA内部的数据。
2> 在Matlab命令行窗口,运行下面的指令,将QuartusII的安装路径添加进来,在bin下面可以看到alt_Signaltap_run.dll文件
addpath D:\altera\11.1\quartus\bin
这里需要注意两点:
A〉 datasheet中,
B〉 SignalTap中如果有数据位款超过32bits的,需要拆分一下。
3> 运行alt_signaltap_run即可
Eg:
X =alt_signaltap_run( 'my_stp_file.stp' );
X = alt_signaltap_run( 'my_stp_file.stp','signed' );
X = alt_signaltap_run( 'my_stp_file.stp','signed', 'auto_signaltap_0' );
X =alt_signaltap_run( 'my_stp_file.stp', 'signed', 'auto_signaltap_0','my_signalset', 'my_trigger' );