引言
随着FPGA器件规模的不断增加、封装密度不断提高,传统逻辑分析仪在FPGA板级调试中的应用日益困难。为此,主流FPGA厂商相继在其开发工具中增加了嵌入式逻辑分析仪(ELA) IP软核,如Lattice在ispLEVER中提供的ispTRACY,Xilinx在ISE中提供的ChipScopePro,Altera在Quartus II提供中的Signal Tap II等。ELA在FPGA内部预先设计探测点和测试逻辑,可在软件工具的配合下对FPGA设计进行较全面的测试。采用ELA,只需用JTAG下载电缆连接待调试的FPGA器件,占用FPGA的部分逻辑资源和内部存储器资源,无需传统的逻辑分析仪就可以观察FPGA的内部信号和I/O引脚的状态。
以我们开发的全彩LED同步显示控制系统为例,该系统包括采集、传输、接收等模块,FPGA为Altera Cyclone系列PQFP封装的EP1C6Q240C8,逻辑单元(LE)数量为5980个,RAM大小为92160 bit。使用Quartus II软件首次对设计文件进行综合布局和布线,将布线好的工程下载到FPGA板上运行时,全彩LED屏显示效果非常差,图像闪烁且左右移动。根据Quartus II编译报告可以看出,该工程消耗的器件资源仅为26%,但是却占用了90%的引脚,留给外部测试的引脚仅为10%,使得利用Quartus II内部集成软件测试的优势得以体现。为了找出设计缺陷,采用Signal Tap II采集到FPGA内各个关键信号的波形,根据波形找出原因在于LED显示屏接收板中的数据信号较控制信号形成了延时,造成了时序不匹配。
本文介绍的FPGA时序匹配设计方法,利用Quartus II软件中的Signal Tap II采集FPGA内部信号波形,通过比较分析采集的数据,可得出精确的延时信息。在Signal Tap II时序测试结果的指导下改进了设计,经实际电路的波形测试证明,LED显示屏接收板中的数据信号与控制信号时序匹配良好。
Signal Tap II
Signal Tap II是Altera公司FPGA开发软件Quartus II中的一个实用工具,能够捕获、显示FPGA内部节点或I/O引脚实时信号的状态,帮助设计者在系统设计时观察硬件和软件的交互作用。
图1为Signal Tap II嵌入式逻辑分析仪采集数据的原理框图。其中CLK(采样时钟)和Trigger(触发逻辑)可以根据需要设定。在Signal Tap II工作时,待测试信号在CLK的上升沿被嵌入式逻辑分析仪实时捕获,经FPGA内部的RAM缓存后,通过JTAG接口传送至Quratus II软件中显示。其中,RAM缓存方式有连续存储和分段存储。JTAG接口用的下载电缆包括USB Blaster、ByteBlasterMV、ByteBlaster II或MasterBlaster等。这些在Signal Tap II工作窗口可以灵活设置。
嵌入式逻辑分析仪捕获数据的流程如图2所示。首先判断时钟的上升沿是否满足,不满足继续等待时钟,满足先捕获前触发数据,触发级别满足后,捕获后触发数据,然后清除数据,结束该捕获流程。其中Signal Tap II最多可支持10级触发级别。触发级别高意味着可接收更复杂的数据获取命令,提供更高的精度和问题解决能力。
使用Signal Tap II设计时序匹配电路
延时的产生
在LED全彩大屏同步显示控制系统中,针对占空比控制亮度损失大的问题,在显示驱动控制模块设计中采用了分场叠加与占空比控制相结合的方法对存储的图像数据进行分场扫描,实现了低亮度损失、800×512分辨率、256级灰度LED全彩大屏的显示。其中,“分场叠加”是指:前端将一幅彩色图像的数据按灰度级分解为多个位平面,终端根据不同位平面数据扫描不同的场次,在有限时间内实现各场次的叠加,从而在LED全彩大屏上重建彩色图像。
图3为位面分离模块在Quartus II软件中生成的引脚图。其中RGBdin[23..0]为输入的颜色数据(R、G、B三种颜色各八位),clkin156为输入数据时钟,clk_after85pc为延时后的使能信号,rst_bit_regroup为移位寄存器的复位信号,rst_mux为颜色位选择器的复位信号,rgb_regroup_output[23..0]是经过数据重组后输出的数据。
“位面分离模块”实现“分场存储”功能,即将每个颜色的8比特数据(以256级灰度为例)按灰度级分类,分别存入存储器的8个数据段中。位平面的分离需要时间,将带来系统延时。图4为利用Signal Tap II采集的输入数据RGBdin[23..16]和输出数据rgb_regroup_output[23..16]的波形关系。其中采样时钟设置为clk38 (CRT显示器分辨率为800×600,刷新频率为60Hz,输出的点时钟为38MHz),采样深度设置为4K bit,则Signal Tap II采集波形时占用了16×4K=64K bit个存储单元。
由图4 (黑色亮线)可以看出,输出数据在第9个时钟(clk38)时由FF(高阻)变成有效数据。该模块的输出数据是送到外部存储器中进行缓存的,存储器的写使能信号为输入数据的数据有效信号。由于该数据延时了9个clk38时钟,存储器的写使能控制信号也应延时9个clk38时钟生效。
时序匹配设计及测试波形
基于D触发器的延时功能,设计了如图5所示的时序匹配模块,解决了上述位面分离操作与写存储器控制信号的时序匹配问题。图5中,flag为数据的有效信号标志,高电平时数据输出有效;Clk156为点时钟38MHz的四倍频时钟,Flag_delay8和flag_delay9分别是flag延时8个clk38时钟和9个clk38时钟的新的数据有效信号标志。
根据理论计算,一个D触发器会带来一个clk156的时钟的延时,那么要延时9个clk38的时钟必须使用36个D触发器。实际上,D触发器固定的建立时间、保持时间,也会带来系统延时。根据Signal Tap II采集的波形对D触发器的个数进行适当的删减,达到了精确的9个clk38时钟的延时,最后的时序匹配模块由34个D触发器构成。
图6为时序匹配模块的内部框图。D触发器D端口接flag,clk端口接clk156,第30个和第34个D触发器Q端口分别连接Flag_delay8和flag_delay9。该时序匹配模块采用四倍于clk38的clk156作为驱动时钟,以确保延时信号的相位延时足够精确。
把该时序匹配模块加入工程,重新综合布局布线,下载到全彩LED大屏同步显示控制系统的接收板上,Quartus II编译报告中除了占用部分内部存储器资源和LE资源,其它的(如I/O引脚的利用率)都没有变化。观察LED大屏显示效果,图像清晰稳定,证明了该时序匹配模块的可行性。
该时序匹配模块仅为LED同步显示控制系统中一个最简单的模块,用于示例说明嵌入式逻辑分析仪Signal Tap II在FPGA时序匹配设计中的应用方法。应用Signal Tap II还能解决各种各样的问题,如外部存储器的双向数据口的实时波形检测、驱动模块的并串转换波形等。使用Signal Tap II有如下优点:
·不占用额外的I/O引脚。利用Signal Tap II成功的采集了FPGA内部信号的波形,如flag,flag_delay8,flag_delay9等都为FPGA内部寄存器信号。
·Signal Tap II为硬件板级调试工具,它采集的波形是工程下载后的实时波形,方便设计者查找引起设计缺陷的原因。
·节约成本。Signal Tap II集成在Quartus II软件中,无需另外付费。
使用Signal Tap II时应注意:
·用Signal Tap II 采集数据时,应符合采样定律,即采样频率必须是信号最大频率的两倍或更高,否则采集到的波形会失真或者是一条全低的直线。
·采样深度决定了每个信号可存储的采样数目,信号的数量和采样深度的乘积不能超过所选FPGA芯片内部RAM的大小,添加待观察信号、设置了采样深度后,可以根据Signal Tap II的Instance Manager 窗口观察内部存储资源的使用情况。如果观察的信号数量多,采样深度设置受到限制,此时灵活设置触发条件相当必要。图4和图7采集的波形都是以设置RGBdin[23..16]为00h为触发条件,如图4,7中的虚线所示。
·Signal Tap II必须工作在JTAG方式,调试完成后应将Signal Tap II文件移除,以免浪费FPGA资源。
结语
时序匹配是FPGA电路设计中的一个重要问题,介绍了一种应用嵌入式逻辑分析仪Signal Tap II捕获FPGA内部信号波形的方法,通过比较分析采集的数据,可得出精确的延时信息,指导FPGA时序匹配的设计。
以LED全彩大屏同步显示控制系统中显示驱动控制部分的位面分离模块为例,在嵌入式逻辑分析仪Signal Tap II的时序测试结果的指导下,设计一个由34个D触发器构成的时序匹配模块,经实际电路的波形测试证明,信号时序匹配良好。