随着软件无线电在卫星导航接收机上的广泛应用,卫星导航接收机的硬件部分简化为射频前端和高速数据采集模块两部分。随着GPS现代化和伽利略、北斗信号的发展,未来接收机必须能够接收多个频点的导航信号,为了避免多频下变频存在的多路频率混频的难题,可以在射频上直接进行数字采样和数据传输。
2009年,瑞士的洛桑联邦理工大学设计出了多频射频直接采样的前端,并对各级信号增益和三阶截止点进行了详细的评估。同时对多频信号的采样率要求进行了分析[1]。2009年,北京航空航天大学设计出了能够同时在射频上直接采集GPS L1、L2双信号的接收机,采样率为100 MHz[2]。
国内外目前对于多频射频直接采样的高速数据采集部分研究很少,北京航空航天大学之前的方案只是做到双频的集成,采样率较低。而洛桑联邦理工大学的射频前端方案成熟但是对于数据采集和定位分析的工作没有论述。能够同时接收GPS 3个频带信号、伽利略信号以及北斗信号的接收机需要的采样率更高更难以实现。因此多频直接采样接收机的硬件设计工作在国内外均开展较少,其中高速数据采集以及多频射频前端设计是其中的两个关键问题。
1 硬件系统设计
卫星导航系统软件接收机的思想是让宽带A/D转换器尽可能靠近射频天线,尽早地将模拟信号转为数字信号[3],最大程度地用软件来实现接收机的各种功能。
本文中数据采集系统的工作原理是,使用宽频天线接收信号后,在射频前端进行放大、滤波和增益控制工作。其中多频技术需要使用分路滤波技术。前端输出的信号被送到高速ADC进行采样,其后通过FPGA进行缓冲和处理(如FIR数字滤波器处理等)。然后PFGA将数据封装成帧结构通过以太网口将其传送到主机上。主机在物理层抓获以太网数据包,分析MAC地址后将需要的数据存储到硬盘之中。
1.1 射频前端设计
直接采样的射频前端与传统的采用下变频技术的接收机前端有所不同。如图1所示,直接采样的射频前端使用高增益GNSS天线接收信号。而信号经过LNA作第一级放大后,经过1.1 GHz~1.7 GHz带通滤波,再使用PA进一步放大。此后射频信号分为3路,分别进行滤波、放大、再滤波后合并,之后使用AGC环路调节输出信号功率。
下变频前端的混频器频率由晶振提供,通过混频对射频信号进行多级下变频,并进行放大和滤波,最后输出中频信号供ADC采集。
在射频上直接进行采样不需要本地晶振,但是所有放大器和滤波器均需要在射频下工作。多频前端需要对不同的频带进行分路滤波放大,同时将带外噪声尽可能地滤除掉。本系统使用了实验室自行设计的射频前端,能够在ADC之前得到频谱形状如图2所示的信号。它包括了GPS的L1、L2、L5信号和伽利略E1、E5a、E5b以及部分北斗卫星的信号。表1列出了上述导航系统的信号频率及带宽。
前端将信号放大至ADC可以采样的电平,对于ADC08D500, 1 bit量化的信号最小输入能量是-47.92 dBm[5]。GNSS天线的增益为50 dB,两级LNA增益共约35 dB, PA增益20 dB,前端总插入损耗约为20 dB, AGC环路增益动态范围为-35 dB~+22 dB,使用前端的增益足够对信号进行4 bit采样。
对于GNSS信号,超过2 bit采样对信噪比的改善作用不是很明显,而太高量化位数会增加数据处理的困难。本设计选择存储了1 bit和2 bit的采样数据,但是在ADC采样时仍然进行了8 bit采样,以便于FPGA进行FIR滤波。经过FIR滤波以后的数据可以进行截位处理,即截取1 bit或者2 bit进行保存。
前端设计的主要难点在于以下三个方面:射频宽频带放大器容易饱和;分路放大再合路会给信号带来很大损耗;射频AGC电路需要进行特殊屏蔽处理。
1.2 采样率的选择
卫星导航系统使用扩频通信技术,ADC采集的是噪声信号,信号频带上的混叠相当于将其他频带信号作为噪声混叠到目标频带中。因此可以容忍一定程度信号频谱的混叠。对于GPS的3个频带,根据带通采样原理可以计算需要的采样频率。计算时不仅要求信号采样后频谱自身不混叠,同时不同频带的频谱两两之间也不混叠。
对于GPS的L1、L2、L5信号(实际也包括了伽利略的E1、E5a),采样后频谱不混叠可选用的最低采样频率是158 MHz。若考虑伽利略的E5b,直采系统的最低采样率为227 MHz [1]。为了满足不同采样频率的要求,本设计采样频率合成器生成多种采样时钟,使用FPGA的SPI对频率合成器进行配置,本文1.3节中将会介绍多种采样时钟的生成方法。
1.3 ADC模块的设计
ADC08D500是美国国家半导体公司生产的高速模数转换芯片,其取样率可高达500 MS/s,使用差分输入,有效位数为8 bit,可以进行双通道采样, 而功耗仅有1.4 W[5]。
ADC08D500除了单通道能实现最高采样达500 MS/s的速率外,还能够进行双边沿采样(DES),只对某一路通道的信号在时钟信号的一个周期的上下两个边沿进行采样,利用芯片内置的两个转换器进行交错操作,最终达到1 GS/s的采样率。
ADC采样的时钟来自于频率合成器输出的时钟。为了满足ADC采样对于采样时钟的相位噪声的要求,本设计使用了10 MHz的原子钟作为频率合成器输入,通过FPGA的SPI将频率合成器输出配置成需要的频率,如230 MHz。此外本文还使用了TCXO作输入,对频率合成器输出信号的相位噪声情况进行衡量。通过相位噪声和时钟抖动的情况计算出频率合成器输出时钟总的抖动为1.24 ps,这个抖动情况能够满足ADC08D500对GNSS信号的采集需要。
ADC08D500的输出有两个通道四组8 bit差分总线,分别是I[7:0]、Id[7:0]、Q[7:0]、Qd[7:0],另外还有两组输出的差分时钟做FPGA的数据采集时钟。
1.4 高速数据传输设计
将卫星导航信号进行数字化时,通常将量化位数选取为1 bit或者是2 bit。当采样率为230 MHz时,2 bit采样数据传输需要约60 MB/s的接口传输速度和硬盘写入速度。千兆位以太网的理论速度达1 000 Mb/s,能够满足数据传输的需要,而且ISE工具自带了Ethernet MAC IP核。因此,本文中采用以太网进行数据的传输。
使用以太网传输数据,可以在FPGA实现TCP/IP协议功能,也可以直接通过以太网的物理层进行数据传输。Virtex5 FPGA内部拥有嵌入式软核处理器MICroBlaze,能够进行FPGA内部的嵌入式开发。开发以太网时通常在嵌入式系统中添加TCP/IP协议栈,常用的TCP/IP协议栈是Lwip或者是Treck协议栈[6]。但是使用TCP/IP协议,协议的每一层都会在数据帧前添加各自的帧头,再加上协议的一些检错重发等功能,真正待传输的数据的吞吐率是很低的,千兆以太网的速度通常只有200 Mb/s~300 Mb/s,不能满足本系统对于数据传输率的要求。
在物理层直接传输数据,数据传输速率几乎可以达到以太网的理论传输极限(实测能超过900 Mb,根据数据帧封装不同有所差异)。虽然没有TCP/IP协议中对丢包错包等数据完整性问题的修正功能,但可以通过上层的校验和序号发现数据帧错误和乱序。下文将讨论在主机端如何在网卡上直接捕获并存储高速数据。
整个数据采集系统的结构如图3所示,除了ADC电路的设计,主要工作在FPGA下完成。
1.4.1 FPGA数据预处理
本文使用Xilinx公司的Virtex5系列FPGA开发板ML506进行数字信号处理,开发环境基于ISE Design suite 11进行。
从ADC传送出的数字信号为8对或者16对差分数据以及1路差分时钟。对于采样数据的截位处理可以分为直接截位和滤波后截位两种处理方式。直接截位是只选择其中的高位数据进行传输,滤波后截位是接收全部的8 bit数据,将数据送给数字滤波器处理后再进行截位,本文采用先滤波后截位的方法,可以选择保存1 bit或者2 bit数据。
ADC08D500器件以230 MHz的高采样率进行8 bit量化时,输出数据率将非常大。单独对其中任一导航信号频带来说,高达230 MHz的采样率都是不必要的。对此,在FPGA中添加入FIR(有限冲激响应数字滤波器),分别滤出采样后导航信号各频带,在使用截位输出来降低量化位数的同时,使用抽取来降低采样率。以GPS系统为例,当采样率为230 MHz时,L1、L2和L5的中频分别为195.42 MHz、77.6 MHz和26.45 MHz。因此,在FPGA中生成3个FIR(带通FIR)就可以滤除带外信号,消除信号互相之间的干扰。具体实现方法是在MATLAB通过“ftdtools”滤波器设计工具,计算滤波器参数以生成COE形式的滤波器文件。
将设计出的3个滤波器文件(.COE文件)导入FPGA的FIR IPcore中,就可以生成相应的滤波器Verilog代码,即可获得对应的频率幅度响应图,其效果如图4所示。