Signal Tap II简单使用小记

Signal Tap II有助于观察逻辑内部信号行为,可使不借助外部设备进行设计调试。(当然使用的前提条件是有硬件平台)

Signal Tap II ELA 组成框图 

                     

采样获得的数据会存储在器件的存储器块中,通过JTAG下载线可以把数据传回Quartus 中进行波形显示。 可以设置数据采集缓冲器(Buffers)的大小、数据采集方式和存储方式、以及此Buffer的存储器类型。   可以在一片FPGA上生成多个ELA,这一功能非常适合在设计中为每个时钟域配备一个分析仪。  ELA可以计算每个实例用到的逻辑资源和存储器资源,并显示在实例管理器中。

 

要使用Signal Tap II ELA,必须对其进行配置:

1     设置采样时钟。  ELA只能在采样时钟的上升沿采样数据,可以使用设计中的任何信号作为采样时钟(推荐使用全局的与被测信号同步的非门控信号)。 采样时钟决定了信号波形的分辨率,它的频率要大于被测信号的最高频率。

2     设置被测信号。  可以分配两种信号(通过Node List信号设置触发条件):

Pre-Synthesis:设计拟定之后,综合优化之前的信号,反映RTL级信号。(RTL Viewer)

Post-fitting : 物理综合优化和布局布线后的信号(Technical Map Viewer)

为了可以使用增量编译,建议不要混合使用两种信号;若使用了预综合信号则要采取信号保留(Signal Preservation)措施。

不可测试引脚:Post-fit输出引脚、进位链信号、JTAG控制信号、ALTGXB宏功能信号、LVDS信号(串行/解串器块的数据输出)、DQ/DQS信号。

3     设置采样深度。 

代表每个信号的采样数量,即采样Buffer大小。还可以选择采样Buffer的RAM类型,如M4K、M512、M_RAM等。

被测信号波形的时间长度为t,则t = N × T.   N为Buffer存储的采样点数(采样深度),T为采样时钟周期。

4     设置Buffer的采样模式。 

段式Buffer:被分成多个大小相同的Buffer,每个Buffer都是独立的FIFO,并有各自的触发条件。每次采集过程中只有一个Buffer可用,其工作方式与非段式Buffer一样。(常用来检测较少出现的重复事件)     

非段式Buffer(循环Buffer):ELA把整个存储器当做一个FIFO,连续存入数据。(非段式存储可以使用存储资格(Store Qualification:5种可选方式)功能滤掉与设计无关的采样值) 

 5     设置触发条件。    

基本触发条件:触发模式有  Don’t Care、Low、High、Falling Edge、Rising Edge、Either Edge 等,可以设置位信号和总线信号。

            高级触发条件:图形编辑。   

两种触发条件流程控制机制:顺序触发(Sequential Triggering)和自定义基于状态触发(Custom State-Based Triggering)。其中顺序触发最多支持10级触发,最后一个触发条件满足时开始采样。(如图示,n <= 10) 

 6   设置触发位置。   三个触发位置:

Pre-Trigger  保存触发后的数据(12%pre-trigger, 88% post-trigger)  

Center-Trigger  保存Pre-Trigger 和 Post-Trigger数据各50%  

     Post-Trigger  保存触发前的数据(88%pre-trigger, 12% post-trigger)。

7   设置外部触发。 

Trigger in:用外部信号源(输入信号或其他内部信号)触发一个ELA,触发级别最高(Level 0)。 

Trigger out: ELA可以提供触发外部逻辑或其他ELA的信号输出。

 

配置完成后,进行编译下载并运行Signal Tap II ELA。 触发条件满足时,就开始采样数据,数据会被存储在存储缓冲区然后通过JTAG送到.stp文件进行波形显示。

现以一个正弦函数发生器举例说明Signal Tap II的简单实用。

A、       首先创建一个.MIF或者.HEX文件来载入正弦波的数据(可用C程序得到具体数值)。再用MegaWizard  Plug-In  Manager建立一个ROM元件来存储正弦波的数据,得到此ROM的源文件。再完成顶层的源文件编写及引脚配置,正确编译。

B、        新建Signal Tap 文件,更改实例名为Sin wave。如下图所示: 

C、       最重要的便是对这一实例的配置步骤:

在Setup面板中,添加被测信号Q(ROM地址信号)和data_out(正弦波输出信号),设置采样时钟,采样深度,RAM类型,触发条件,触发位置等。保存并添加到工程,编译下载即可采集数据并在data面板中观察采样信号(显示形式有数制、柱状和线型)。且此时列所耗费的LE和RAM资源在上图的Instance Manager中有列出。

D、       下面主要说明触发条件的不同对采集数据的影响。(触发位置都为Center - Trigger)。

令在Q.5=1的时候触发,即: 

可得波形如下所示,可知触发采集点为Q=32: 

条件改为2级触发时,即: 

所的波形为,可知触发采集点为data_out=255: 

比较两图可知,采集数据的触发点为满足最后一级触发条件时刻,这也验证了了顺序触发的原理。

 

这只是ELA的简单实用,更多高级功能还需进一步学习使用。

posted @ 2011-11-24 23:45  陈小硕  阅读(4879)  评论(2编辑  收藏  举报