书书书第22卷第2期重庆邮电大学学报(自然科学版)Vol.22 No.22010年4月JournalofChongqingUniversityofPostsandTelecommunications(NaturalScienceEdition)Apr.2010基于FPGA的高速数据传输方案设计与实现收稿日期:20090604 修订日期:20100205武荣伟,苏 涛,翁春蕾(西安电子科技大学雷达信号处理重点实验室,陕西西安710071)摘 要:为解决目前信号处理系统中数据传输的瓶颈问题,设计并实现了一种基于可编程门阵列(fieldprogrammablegatearray,FPGA)的高速实时数据传输方案。该方案借助XilinxFPGA的ChipSync技术,稳定地完成了数据的串化/解串,以及通信链路相对延迟的精确测量和调整。同时,利用提出的数据传输同步方法—系统同步和串行低压差分信号(lowvoltagedifferentialsignaling,LVDS)总线技术实现板卡间大量数据的高速传送,有效地保证了多通道传输的同步性和可靠性,并大大降低了系统互联的复杂度和系统成本。关键词:高速数据传输;同步;低压差分信号;可编程门阵列中图分类号:TN919.3 文献标识码:A文章编号:1673825X(2010)02020504DesignandimplementationofhighspeeddatatransferbasedonFPGAWURongwei,SUTao,WENGChunlei(KeyLabofRadarSignalProcessing,XidianUniversity,Xian710071,P.R.China)Abstract:Tosolvethespeedbottleneckofdatatransferincurrentsignalprocessingsystem,aschemeforhighspeeddatatransferwasproposedandimplementedbasedonfieldprogrammablegatearray(FPGA).ChipSynctechnologyinXilinxFPGAwasusedfordataserializing/deserializinginthescheme,andrelativedelayofdifferentchannelswasalsotestedandadjustedwithit.Meanwhile,amethodfortransferringsynchronizationwasproposed,whichalongwithserialLVDSbustechnologyguaranteesthereliabilityandsynchronizationofchannelsandreducessystemcomplexityandcostgreatly.Keywords:highspeeddatatransfer;synchronization;lowvoltagedifferentialsignaling(LVDS);fieldprogrammablegatearray(FPGA)0 引 言数字信号处理技术的快速发展给现代处理机设计带来了生机,与此同时复杂而庞大的数据处理和传输任务,也使处理机的设计面临着极大的挑战。在雷达信号处理、图像采集、视频信号处理等诸多领域,高速高效的数据传输方案成为系统设计的重要组成部分和难点。传统数据传输的瓶颈[1]是制约现代处理器速度提升的重要因素。本文中我们提出的基于可编程门阵列(fieldprogrammablegatearray,FPGA)的高速数据传输方案,是针对庞大系统板间数据实时传送需求而设计的。该方案利用高效稳定的数据通信同步方式和串行低压差分信号(lowvoltagedifferentialsignaling,LVDS)技术,能够有效保证数据传输的同步性和可靠性,并能大大降低系统互联的复杂度和系统成本。1 方案设计按工程需要,考虑来自AD板的32个馈源的128路正交双通道信号,送往下级板做波束合成(DBF)处理,每通道位宽16bit,DBF处理时钟20MHz,板间数据吞吐量需要达到80Gbit/s以上。若采用203MHz并行总线传输数据则需要128×2×16=4096个通信链路,极不可行。这里采用串行LVDS总线技术,每路信号仅使用一对高速LVDS差分线。这样只需128条通信链路即可高效地完成庞大的数据传输任务,同时单路数据率相应提至640Mbit/s。可见,链路数仅为原来的1/32,使用本文中我们提出的同步方案,可保证数据传输性能。为了保证传输同步,目前使用的串行总线技术主要有2种实现方式:一是给每条串行链路配一路源时钟;二是将源时钟嵌入串行数据流中。虽然这2种方式都能保证时钟与数据的相位匹配,但前者无疑会增加链路数;而后者由于需要对数据进行编码和解码不但会增加系统复杂度,还将提高数据率[2]。这在高速高密集系统设计中应用起来都有很大的局限。基于此,结合二者的优点提出了另一种实现方案,方案示意图如图1所示。该方案只需在发端和收端使用同源的数据传输时钟并约定好数据率,再利用一个统一的同步控制信号即可保证各路数据可靠地同步传输,称之为系统同步方法。图1 数据传输方案示意图Fig.1 Sketchofdatatransferscheme2 方案实现AD板和DBF板数据处理芯片采用Xilinx的XC4VSX55FPGA。该芯片支持LVDS电平标准,最高速率可达1Gbit/s[3],且片内的数控阻抗(DCI)技术直接配置FPGA内部端接阻抗,每个Bank只需1对电阻就可以实现该Bank内所有IO内部阻抗匹配要求[4]。这样省去了专用LVDS电平转换芯片[5],大大节省了印制电路板(printedcircuitboard,PCB)的设计空间。另外,为简化源同步接口,FPGA集成了ChipSync技术,每个IOB都含有SERDES模块(包含OSERDES和ISERDES),集成IDELAY(可变延时线)和Bitslip(比特滑动)功能[4]。利用可编程的精确延迟,可以实现动态相位对齐(DPA),以补偿不同链路之间的时滞以及数据和时钟之间的时滞。2.1 方案实现过程来自AD板的128路I,Q各16bit的双通道20MHz信号以串行方式发送到DBF板。发送端AD板先将I,Q双通道信号拼接成位宽323bit单路信号,然后进行32∶1的并串转换。直接实现该转换,速度和性能都难以保证,因此这里用2次串化的方法完成转换。具体是使用FPGA的异步双端口RAM完成32∶8的串化;接着用OSERDES的DDR模式(doubledatarate,该模式下320MHz的串行时钟驱动640Mbit/s的数据率)把8位并行数据转换成串行数据流,并用LVDS信号把该数据流发送出去。接收端DBF板以相反的过程恢复数据。值得注意的是,由于通路延迟可能会使数据到达DBF板后与本地时钟相位不匹配,造成数据不稳定。所以在进行1∶8解串时,需要使用解串模块ISERDES内的IDELAY调整数据的延时。以其中一路数据为例,传输实现过程如图2所示。图2 单通道数据过程示意图Fig.2 Datatransferprocessofsignalchannel2.2 时钟网络数据传送中不含时钟信息,需要收发双方约定好数据率和传送时钟。一旦约定好,双方就不能擅自改变,这是保证数据正确稳定传输的前提。高质量的时钟网络也能给数据传输提供保障,这里推荐双方对时钟做相同的处理。FPGA内的DCM(digitalclockmanager)为时钟处理带来方便[6]。2.3 链路间相对延时测定PCB布线难以保证各链路等长,各路数据到达接收端的时间也会参差不齐。尽可能精确地测定各链路的相对延时信息,对数据稳定地同步传输至关重要。然而,要完成128路信号的同时测定,硬件上是不可能实现的。XilinxFPGA中ISERDES内建的IDELAY模块和内嵌的逻辑分析仪ChipScope给测·602· 重庆邮电大学学报(自然科学版) 第22卷定提供了可能。IDELAY内含可变延时线,分64节,平均每节可使串行数据滞后75ps,实际的延时节数是可编程的,并可动态调整[4,7]。图3和图4分别是用IDELAY在FPGA内部完成各路相对延时测定的流程图和测定结果部分截图。图3 FPGA内测各链路相对延迟流程图Fig.3 DelaytestflowofdifferentchannelsinFPGA图4 测量结果ChipScope截图Fig.4 ResultofdelaytestcuttingfromChipScope由测量流程可见,从FPGA的RAM中读出的数据就是能使数据稳定传输的IDELAY的延时节数VALUE,相对延迟值的测量精确到皮秒级。图4中px_value就是第x路的VALUE值,而px_shift对应第x路数据最低位(LSB)实际所处的数据位。3 同步控制各路链路传输同步,是保证数据对后级可用的前提。实践中传输同步控制分3级完成,最终的同步由同步控制信号监控。3.1 位对齐位对齐是指根据2.3测定的延时结果调整链路延时,以保证接收端在串行数据最稳定的时刻采集数据,即保证接收时钟沿正对数据眼图的中间。调整的目标如图5a所示,实测的调整效果的ChipScope截图如图5b和图5c所示。图5a中D对应调整前的串行数据,D′对应调整后的串行数据。测试中发端循环发送0—255的连续数。很明显调整前数据不稳定,毛刺很多。图5 位对齐调整示意图和效果截图Fig.5 Methodofbitadjustingandtheresult3.2 字对齐和字同步DBF板接收数据进行1∶8解串时对起始位不好界定,可能出现解串出错(串位),因此需要对解串后的数据进行重组调整。例如,发送并行8bit数据A[0∶7],B[0∶7],C[0∶7],D[0∶7],……解串时收端可能按{B[3∶0],A[7∶4]},{C[3∶0],C[7∶4]},……恢复数据,从而产生解串错误。为正确恢复数据,使用寄存器调整解串结果,方法如图6所示,图7是调整后的ChipScope截图。图6 字对齐校正方法示意图Fig.6 Wordadjustingmethod对于校正后的各路数据,如果传输不同步,还需·702·第2期武荣伟,等:基于FPGA的高速数据传输方案设计与实现要使用8位寄存器来调整同步。一组寄存器可使数据延时一个CLKDIV时钟周期,当然也可以使用FPGA内的SRL(移位寄存器)调整字同步。图7 字对齐后的ChipScope截图Fig.7 ResultofwordadjustingcuttingfromChipScope3.3 帧同步完成8bit数据同步后,还需要将其拼接成16bit,以恢复I,Q双通道数据,同时需要标示帧头和控制帧同步,以便波束合成时的加权处理。这些任务是由20/64MHz的同步信号完成的。按照发端的要求每帧信号包含64个子带,即64个数据。发端AD板在每个20/64MHz时钟的上升沿开始发数,依次为子带1、子带2、……、子带64;子带1……。收端DBF板根据需要做同步调整,使每个20/64MHz时钟的上升沿对准子带1,之后便固定下来。这样20/64MHz时钟的上升沿既能控制帧同步,又起到标示帧头的作用。即便数据在传输过程中某帧出错,也不会影响下一帧数据。接收数据的时序如图8,发送数据的时序类似。图8 DBF板接收数据的时序图Fig.8 DatareceivingtimingonDBFboard 工程实现时,发端和收端都用乒乓操作,即给发端和收端的每条链路都设置2个双口RAM。发端RAM数据32bit写入,8bit读出;收端RAM数据8bit写入,32bit读出,其中高16位为I通道,低16位为Q通道,数据按帧交替写入