文献标识码:A
文章编号: 0258-7998(2010)10-0057-03
高速调制解调器集成化设计[1,2]面临的挑战之一是高速逻辑电路的设计与调试。在符号速率为几百兆的情况下,时钟周期仅为几个纳秒,这对数据传输、信号处理都提出了严格要求。同时,设计高速调制解调器是一项复杂的系统工程,其间难免的逻辑错误和设计缺陷需要通过反复的在线调试才能发现。调试高速数字电路需要高速率逻辑分析仪、高采样率数字示波器等高档仪器的支持,这在很大程度上增加了项目开发成本。基于逻辑分析仪调试数字电路时,每一个待观测数据位对应一根数据线,同时观测多组信号时,需要在电路板上引出大量的测试引脚,既浪费芯片的引脚资源又不够灵活,使调试过程繁琐不堪。
基于芯片内部的数据采集和分析是一种先进的调试技术,尤其适用于高速、复杂系统的在线调试。Xilinx公司的ChipScope软件可以在多个系列的FPGA内部嵌入关键的逻辑分析模块,通过这些功能模块,为设计者提供一套完整的逻辑分析方案。
先进的软硬件提供了解决问题的一般化工具。如何利用这些技术解决工程中遇到的实际问题依然是设计者必须面对的难题。结合高速率8PSK信号的数字锁相环设计,给出了一种有效的高速全数字解调器的在线调试方法。
1 基于ChipScope的FPGA调试
图1为基于ChipScope进行FPGA调试的实现框图[3],仅包含一台安装Xilinx FPGA集成开发软件包的高档微机、一根FPGA配置电缆以及待调试的用户板,不需要任何其他测量仪器。
通过ChipScope Pro Core Generator/Inserter软件包,放置ICON、ILA等IP核至用户HDL源程序中,经Xilinx ISE编译、综合生成二进制比特流,配置到待调试的目标器件中。基于ChipScope Pro Analyzer软件,用户计算机通过JTAG边界扫描端口读回采集的数据,即可以测试和分析用户的设计。基于该调试方案,用户可以同时观测256通道的实时数据,单一通道的最大缓存深度达2 M采样。
2 一种有效的在线调试方法
高速数字逻辑的调试过程就是寻找设计缺陷并克服缺陷的过程,其中发现设计缺陷是关键,特别是对于高速数字解调器的调试。
提出的调试方法如图2所示,基本思想是即使符号速率高达几百兆,若能够实时检测错误事件的发生,并将该时刻前后一小段时间内的所有相关数据保存下来,则可以对高速数字逻辑进行调试,即在线捕获错误数据,非在线分析设计缺陷。由此可见,在FPGA内部实现有效调试的技术关键在于两点:一是错误事件的有效检测;二是包含错误信息的相关数据的缓存。
图2给出了在线调试原理图,下面结合高速率8PSK信号的载波同步设计进行说明。
2.1 错误检测
在没有信道噪声的情况下,对于正确的设计,解调器输出没有误码;如果存在设计错误,则解调器输出必然存在误码。调制端发送周期性的信息序列,全数字解调器的错误检测在数字锁相环之后进行,一旦检测到误码,则当前时刻采样点附近已经发生错误,此时立即产生触发信号En,经先进先出逻辑(FIFO2)延时后接FIFO1的写使能端。以码长L的周期信息序列为例,误码检测可采用两种方式:
(1)粗检测,如果当前时刻(n)判决结果与n-L时刻判决结果不一致,则产生误码,粗检测存在漏检。
(2)精检测,首先将周期信息序列与判决序列滑动相关进行码序列同步,然后检测后续判决结果的误码。
2.2 数据存储
如果解调器输出端没有检测到误码,则En为FIFO1的“写有效”控制信号,数字锁相环的前端输入x(n)和后端输出y(n)经FIFO1缓存后丢弃;如果解调器输出端检测到误码,则En由“写有效”变成“写无效”,FIFO1停止写入新的数据,与错误相对应的x(n)、y(n)以及错误发生前后一段时间内的采样均保存在FIFO1内部,不再被后续的数据所覆盖(采样的多少与FIFO1的深度和FIFO2的缓存时间相关)。FIFO2缓存En的目的是将错误对应的数据放到最终采集数据段的中间。定义数字锁相环输入、输出之间的延时为T0,FIFO2的缓存深度为T2,则FIFO1的缓存深度T1要大于2(T0+T2)。
2.3 上传数据
FIFO1停止写操作后,点亮FPGA外围指示灯,指示错误事件发生并已经捕获错误,由于FIFO1的读使能信号始终有效,捕获的数据从FIFO1输出端循环读出。设计者启动ChipScope抓包进程,ICON控制芯片内部块RAM保存FIFO1循环输出的数据,然后由JTAG口低速读入计算机。
2.4 数据分析
图2标记的所有设计者关心的内部信号均可以作为观测对象。ChipScope采集数据后,存至扩展名为“prn”的文本文件中,基于Matlab编程可以对数据进行任意比较、分析,大大提高了分析海量数据的效率,方便对FPGA内部不完善逻辑的调试。
3 应用举例
数字锁相环是载波同步的核心,其性能直接决定了载波同步的质量。图3为判决辅助的数字锁相环,在信号的相位域进行相位锁定,其中判决模块基于FPGA-RAM查表实现。初步设计的相位累加器如图4所示,在[-π,π]范围内进行相位累加,同时执行防溢出控制,累加位数可扩展,执行速度很容易达到200 MHz以上。
测试过程中,发现解调器输出存在偶发性的非合理误码,为此采用前面的调试方法对高速全数字解调器进行在线调试,例如数字锁相环模块的调试流程如图5所示。
对捕获数据的分析表明,图4的相位累加器仍然存在溢出现象,这是产生偶发性非合理误码的原因所在,改进后的防溢出相位累加器如图6所示。
对于相位累加器溢出导致的这类海量数据流中的偶发性错误,若采用常规手段调试,则如同“大海捞针”,本文给出的调试方法很好地解决了这一难题。
在高速全数字解调器的后期调试中,发现程序缺陷往往花费大量时间,特别是对于全数字解调器这类实时、高速逻辑,大量中间数据具有随机性,不利于程序缺陷诊断,但是大多数程序缺陷会导致最终误码输出。本文结合数字锁相环的设计,灵活运用FIFO捕获并缓存包含错误信息的所有设计者关心的相关数据,解决了高速、海量数据流中捕获偶发性错误信息困难这一难题,为程序缺陷分析创造条件。该方法效率高、实用性强,可直接用于高速全数字解调器的后期调试,其基本思想也适应于其他高速逻辑的FPGA调试。
参考文献
[1] GRAY A A,HOY S D,GHUMAN P.Parallel VLSI equalizer architectures for multi-Gbps satellite communications[A]. IEEE Global Telecommunications Conference (GLOBECOM′ 01),2001(10):315-319.
[2] GREBOWSK G,GRAY A A,SRINIVASAN M.Method and appuratus for high data rate demodulation[P].US Patent 6177835,2001,23(1).
[3] Chipscope pro software and cores user guide[EB].Xilinx Help,UG029(v7.1),2005(2):1-11.