登录站点

用户名

密码

Signal Tap II简单使用小记

已有 364 次阅读  2011-12-05 21:04

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的简单实用,更多高级功能还需进一步学习使用。


没有了 下一篇: C语言中的变量作用范围

分享 举报