文献标识码:A
文章编号: 0258-7998(2015)06-0024-03
中文引用格式:蔡晓晖,郑植,李浩.基于PCIe总线的卫星导航信号传输系统设计[J].电子技术应用,2015,41(06):24-26+30.
0 引言
近年来,随着软件无线电技术的快速发展,GNSS软件接收机因其高度的灵活性、通用性、开放性等优点,成为GNSS接收机的发展主流[1]。GNSS数据传输系统作为软件接收机的硬件部分,通过射频接收、A/D转换、数字采集与传输等模块为GNSS软件接收机提供原始的观察数据,原始数据的质量在一定程度上影响着软件接收机对原始数据的要求。
目前导航中频信号的传输系统大都基于USB、PCI总线[2-3],采样速率、数据传输速率都越来越无法满足高性能软件接收机的需求,PCIe作为第三代的高性能I/O串行总线,在总线带宽、传输速率、灵活性等方面都有了较大的提升,根据实际系统的不同,它可以灵活配置成X1、X4、X8和X16通道,单通道在每个方向上的发送与接收速率可以达到2.5 Gb/s,可以满足各种软件接收机对原始导航数据的需求。
1 系统组成
本文所设计的导航数字中频信号传输系统由A/D模块、Xilinx、PCIe IP硬核+PCIe-DMA控制模块、数据缓存模块组成,系统基本结构如图1所示。A/D模块接收射频前端产生的模拟中频型号,对其进行240 MS/s的采样;FPGA完成A/D的控制逻辑及采样后信号的数字处理,同时FPGA还产生PCIe硬核的DMA控制逻辑,将最终的导航数据通过PCIe接口传输到上位机。
2 系统关键模块设计
2.1 A/D模块设计
模数转换器(ADC)是采集系统的关键器件之一。系统采用AD9467实现数据转换功能,AD9467是一款量化精度为16 bit、采样时钟频率高达250 MHz的模数转换器,具有优异的性能。该模块接收射频前端模块经下变频产生的模拟中频信号,考虑到GNSS各频段导航信号(包括GPS、GLONSS、GALILEO以及北斗)为大约210 MHz[4]的带通信号(见表1)以及整数倍频率抽取两个因素,将A/D采样频率设置为240 MS/s,采样后的数据经过FPGA数字处理模块后变成IQ数据,采样率变为20 Mb/s,通过数据缓存,经PCIe接口传输到上位机。
2.2 PCIe-DMA控制模块设计
本系统采用Xilinx公司的Virtex5-XC5VFX70T芯片,该芯片集成了PCIe硬核,实现了X4通道的PCIe接口。系统的DMA控制逻辑原理框图如图2所示,其主要包含PCIe配置空间接口设计、发送模块、接收模块以及中断控制模块。
2.2.1 PCIE接口的配置空间
PCI Express配置空间与驱动程序设计密切相关,它是PCI Express传输卡与上位机的接口管理部分。配置寄存器空间用来与上位机进行交流,上位机驱动程序主要通过这组寄存器对传输卡进行控制。而FPGA端则根据上位机在配置寄存器中的具体参数来完成DMA传输。表2列出了这组寄存器的具体名称及偏移地址。
2.2.2 数据发送模块
在本设计中,发送数据模块(TX_ENGING)接收经A/D采样、数字处理后的导航信号,根据上位机的DMA读请求,将导航数据组织成相应的TLP包[5]发送至上位机。其帧头格式如图3所示。
初始状态下状态机处于TX_RXT复位状态,如图4所示,其有效转换状态可以概括为以下几点:
(1)发送CPLD包:TX端带数据的完成包主要响应上位机对配置空间的读请求,当板卡RX端收到上位机的DMA读请求后,会由开始状态进入发送CPLD包的状态,根据读请求包中的地址信息,将配置空间对应寄存器中数据返回给上位机。
(2)发送存储器写数据包(MWR包):在配置寄存器中存储着每次DMA写操作的相关参数,当DMA写开始后,TX端会根据上述寄存器参数来组织发送相应的MWR包。
(3)发送存储器读数据包(MRD包):该数据包用来读取上位机的回传数据,当DMA读开始后,TX端会根据配置寄存器参数组织发送相应的MRD包。
2.2.3 数据接收模块
接收端(RX_ENGING)接收上位机经PCIe IP硬核传输过来的TLP包,其状态机设计如图5所示,可以大致分为以下几种状态跳转:
(1)接收完成包(CPLD包):当TX端发出对上位机的读请求后,RX端会收到上位机发出的CPLD完成包,其中包内的数据即为所要读取的PC端数据,此时状态机进入CPLD状态,开始接收PC端的数据。
(2)接收存储器写数据包(MWR包)和存储器读数据包(MRD包):PC端能够读写板卡的范围只能是配置空间的配置寄存器,并且每次读写只能是一个双字。PC端通过读写BAR空间来实现板卡与上位机的“交流”,大致可以概括为以下两点:
①对于DMA写操作:PC端通过MWR包来设置相应寄存器的值,主要包含:WriteDMATLPAddress、WriteDMATLPSize、WriteDMATLPCount、DCSR2、INT。通过MRD包来读取相应寄存器的值,在DMA写过程中主要读取DMA写结束寄存器来判断DMA写是否结束。
②对于DMA读操作:PC端通过MWR包来设置相应寄存器的值,主要包含:ReadDMATLPAddress、ReadDMATLPSize、WriteDMATLPCount、DCSR2、INT。通过MRD包来读取相应寄存器的值,在DMA读过程中主要读取DMA读结束寄存器来判断DMA读是否结束。
其操作配置空间寄存器流程如图6所示。
2.2.4 中断控制模块
中断是为计算机处理紧急事件或非预测事件而设计的,也是PCIe传输系统设计的重要组成部分[6],优良的中断设计可以有效提高整个系统的性能。在Xilinx平台中,发出中断主要操作核的4个信号,其时序图如图7所示,cfg_interrupt_n为中断信号,在整个中断周期内拉低两次,第一次表示发出中断,第二次表示清除中断。
设置配置空间偏移地址0x50为中断寄存器,其具体格式如表3所示。当DMA读或者写完成后,FPGA发出相应的读写完成中断到上位机,同时将中断寄存器中的中断有效位和读/写位置1,上位机驱动收到该中断后,读取BAR空间中断寄存器的值,判断中断类型,进入相应中断处理程序,此后FPGA端发出清除中断信号,同时将中断寄存器各位置0,当上位机收到该信号后,跳出中断控制程序,数据传输结束。
3 实验与测试
数据采集传输卡设计完成后,在基于PCIe的总线的上位机上进行测试,A/D端接入射频前端的模拟中频信号,经数据处理、缓存后送入PCIe总线并传入上位机,FPGA程序使用Verilog语言编写,在ISE开发环境进行设计和测试,上位机驱动采用微软的驱动开发环境WDF(Windows Driver Foundation)。系统集成后首先利用ISE ChipScope工具对硬件逻辑设计部分进行验证,图8所示为一次导航数据DMA传输的时序图,为了便于观察时序,设置一次传输DMA的包个数为100。时序分析可知,中断控制信号cfg_interrupt_n在数据发送端口trn_td发送完数据包后,连续两次有效,最终完成一次DMA的传输。
考虑到上位机对FPGA发出的PCIe的中断处理需要一定时间,而这个时间在DMA传输数据量较小时对系统性能影响较大,因此在速度测试时参考了3个速度,分别是传输卡、设备驱动以及应用程序,传输卡速度为PCIe传输接口上的总线速度,不考虑上位机的中断响应时间,测试结果如图9、图10所示。结果表明,在传输数据较小时由于上位机中断处理所需时间,驱动层与应用层读写速度较慢;当传输数据逐渐增大后,三者传输速度趋于一致,DMA写速度为800 MB/s,DMA读速度为630 MB/s。
4 结论
本文设计了一种基于Virtex-5 FPGA的4通道PCIe导航中频信号传输系统,经过测试与验证,该系统能够满足了高精度软件接收机对导航原始数据的需求,与目前主流的基于USB、PCI总线的导航中频信号传输系统相比,本系统在信号采集速率、传输速度方面都具有明显的优势。同时该系统的设计方法也可以推广到雷达、通信、图像处理等高速数据传输领域。
参考文献
[1] 谢钢.GPS原理与接收机设计[M].北京:电子工业出版社,2009.
[2] 胡滨,王庆,严伟.基于USB和FPGA的GPS中频信号采集平台设计[J].舰船电子对抗,2009(9):63-66.
[3] 贾志宏,崔晓伟.室内GPS的数字化采集设计[J].科学技术与工程,2012(9):7031-7034.
[4] 邓仕海,姚铮.全频段多系统全球导航卫星系统数据采集系统的设计与实现[J].科学技术与工程,2014(1):191-194.
[5] 候杭呈,王忆文,李辉.一种基于PCI Express总线的DMA高速传输系统[J].微电子学,2013(6):383-386.
[6] 唐雷雷,贺占庄.PCI Express总线中消息中断的研究[J].微电子学与计算机,2013(7):137-140.