用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中, 。到时不要将win一起敲入命令行,否则报错。

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