当前位置:首页 > 嵌入式 > 嵌入式硬件

引言

随着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作为驱动时钟,以确保延时信号的相位延时足够精确。

图7为Signal Tap II采集时序匹配模块的波形输出。其采样时钟为38MHz,采样深度为4K bit。rgb_regroup_output[23..0]为位面分离后红色输出的数据。可以看出,输出数据在flag_delay9的上升沿开始由 FFh(高阻)变成有效数据00h,达到了数据和控制信号的完全同步。

性能分析

把该时序匹配模块加入工程,重新综合布局布线,下载到全彩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触发器构成的时序匹配模块,经实际电路的波形测试证明,信号时序匹配良好。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

机器人操作系统(ROS)驱动程序基于ADI产品而开发,因此可直接在ROS生态系统中使用这些产品。本文将概述如何在应用、产品和系统(例如,自主导航、安全气泡地图和数据收集机器人)中使用和集成这些驱动程序;以及这样将如何有助...

关键字: 电机控制器 机器人 嵌入式

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

支持高达48V@5A的PD受电模式,达到目前USB PD最高标准。

关键字: 嵌入式 开发板

【2024年4月8日,德国慕尼黑讯】低碳化和数字化是当今时代人们面临的两大核心挑战,人类社会需要依靠创新和先进的技术,才能破除挑战、推动转型进程。在德国纽伦堡举办的2024国际嵌入式展(Embedded World 20...

关键字: 半导体 微控制器 嵌入式

TDK 株式会社(TSE:6762)进一步扩充 Micronas 嵌入式电机控制器系列 HVC 5x,完全集成电机控制器与 HVC-5222D 和 HVC-5422D,以驱动小型有刷(BDC)、无刷(BLDC)或步进电机...

关键字: 嵌入式 电机控制器 内存

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言
关闭
关闭