2023年11月26日发(作者:)
用Matlab读取SignalTap中数据的几种方法
使用FPGA进行数字信号处理时,经常需要将FPGA中的实际检测到的数据导出,然后用
Matlab进行仿真对比,以确认设计是否达到要求,下面介绍了几种常用的方法。
一、 直接导入.txt或借助Excel表格转换
操作步骤如下:
1〉 在Quartus工程中新建Stp文件,编译,正确的在线采集FPGA内部的数据。
2〉 如下图所示,在SignalTap窗口中的data下面,右键选择create SignalTapII List
file。
3〉 经过步骤2之后,工程所在的文件夹中会生成一个my_stp_auto_singalTap_
的文件。此时可以用Quartus打开,如下图所示:
4〉 在3步骤的图中,蓝色部分是数据的说明(具体表示某一列代表的某个变量),为
了Matlab读取数据方便,我们可以去掉前面的说明文件,只留下感兴趣的数据,重新保存
为txt文件。打开Matlab,在file下面选择Import Dta…导入.txt文件即可。或者进行
第五步也可。
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_文件
addpath D:altera11.1quartusbin
这里需要注意两点:
A〉datasheet中,。到时不要将win一起敲入命令行,否则报错。
B〉 SignalTap中如果有数据位款超过32bits的,需要拆分一下。
3> 运行alt_signaltap_run即可
Eg:
X =alt_signaltap_run( 'my_stp_' );
X = alt_signaltap_run( 'my_stp_','signed' );
X = alt_signaltap_run( 'my_stp_','signed', 'auto_signaltap_0' );
X =alt_signaltap_run( 'my_stp_', 'signed',
'auto_signaltap_0','my_signalset', 'my_trigger' );
三、导出signaltap II 文件为.csv格式。
在signaltap II logic analyzer file 中选export 如下:
设置导出目录,文件名字,ok 即可。
用Excel打开保存的文件,取所需要的数据到MATLAB处理。或者直接导入.csv文件。


发布评论