龚文浩,孙国良,黄智刚
(北京航空航天大学,北京 100191)
伪卫星是一种布设在地面的无线电定位信号发射器,通常发射类GPS信号,其定位原理与卫星定位相同,使用4颗以上的伪卫星即可组成伪卫星定位网络,主要用于区域定位。目前,全球导航卫星系统(GNSS)在生活中各个领域得到广泛应用,但是在森林、峡谷、矿井坑道或者城市建筑内等环境中,受信号遮挡等影响无法实现定位。针对上述场景,伪卫星定位成为了一种方便、可行的方案,具有广泛的应用价值。
本文给出了基于AD9361实现伪卫星信号发射器的设计方案。AD9361[1]作为 ADI公司设计的一款高集成度、高灵活度以及可编程的高性能射频收发器,拥有两个相同且独立控制的发射通道,每个通道提供了必要的数字信号处理、数模转换、射频模块等,以实现直接变频系统。数字信号处理部分拥有可控制、可编程的128抽头FIR(Finite Impulse Response)滤波器以及多级插值滤波器,完成对数字信号的滤波、数据速率插值等处理;数模转换器采用12位量化,最高采样率61.44MHz;射频模块的工作频率范围是70 MHz至6.0 GHz,涵盖大部分特许执照和免执照频段,另外 AD9361还拥有90dB的功率控制范围,这将允许伪卫星系统针对不同应用情景需求灵活设置信号发射频段与发射功率;此外AD9361支持的通道带宽范围为200 kHz至56 MHz,足够满足无线电定位信号通常的带宽要求。
本文将分别介绍基于上述方案的伪卫星信号发射器系统架构、系统的设计实现以及对信号发射器的测试分析等。
本设计中,伪卫星信号发射器主要由SoC芯片、AD9361、卫星导航数据模块、上位机等组成,系统架构如图1所示。
图1 伪卫星信号发射器系统结构图
该信号发射器由AD9361实现射频信号的产生及控制;通过Xilinx ZYNQ ZC7020 CLG400型号SoC芯片实现信号源的基带设计。ZC7020芯片的基本架构分为两部分,其一,Processing System(一般简称为 PS),即处理器(ARM)部分,其二,Programmable Logic(一般简称为PL)即可编程逻辑(FPGA)部分[3]。PL部分主要负责伪卫星信号发射器的数字基带设计[4],然后利用AD9361模块将数字基带信号进行滤波、数模转换、上变频等一系列处理,产生所需射频信号;对AD9361的控制由PS部分负责实现,其中AD9361的部分配置信息通过上位机发送给 PS部分,这样实现了通过上位机对AD9361关键参数的灵活设置。
同时,信号发射器采用了高精度天宝GPS模块提供的时间和位置信息作为伪卫星的时间和空间基准。通过GPS模块的1PPS信号实现与世界协调时(Coordinated Universal Time,UTC)整秒时刻严格对齐,具体的时刻信息通过 RS232串口输出的TSIP协议数据获取。该时间同步方式将伪卫星时间与 UTC时间相同步,为多台伪卫星发射器的同步提供了基础。
伪卫星信号由导航电文、伪随机码和载波三部分构成。其中,导航电文提供了伪卫星位置以及时间信息,伪随机码实现了对导航电文的扩频处理,并对数字载波进行二进制相移键控(Binary Phase Shift Keying,BPSK)调制;调制后的数字中频信号由FPGA控制的AD9361转换为射频信号。
导航电文包含了定位所需的关键信息,是伪卫星定位中不可或缺的一部分。本设计中电文用于主要包含了时间、伪卫星三维位置等信息。电文速率采用50bps,周期为6s。其结构如图2所示。
电文以一个帧的结构编排成数据流,共包含10个字,每个字包含30bits,最后6bits为奇偶校验位(规则参考GPS电文)。所设计伪卫星导航电文中每个字前24bits详情如表1所示。
第一个字主要用于电文帧的同步,其中第1~8bits为同步码“10001011”,该同步码每隔6s出现一次。第二个字的第1~14bits为日内时计数,日内时计数由本地计数器提供,每六秒计数器加一,本地计数器的初始值由伪卫星信号发射器开机后所得到时间基准计算所得,对应于每日零时计数器值为零。后面的几个字中包含了当前的年月日以及伪卫星的经纬高,该日期与日内时计数相结合便能得到电文帧发射的准确时间;伪卫星三维位置同样由卫星导航数据模块提供,并且实时更新,更新频率为每分钟一次。
图2 伪卫星信号电文结构
表1 伪卫星导航电文详细格式
这样的电文结构设计,使得只要卫星导航数据模块能够接收卫星信号并准确输出当前时间、位置等,则伪卫星信号发射器便可在短时间内发射带有准确时间、位置信息的导航电文。这将允许伪卫星在不同区域、随时布置组网,方便快速的用于区域定位。此外,当前电文设计中仍保留约70bits备用,可满足钟差等其他信息使用。
伪随机码具有良好的自相关和互相关性能,在无线电定位中的主要作用为信号扩频处理与码分多址。本设计中伪随机码采用了GPS的C/A码,码率1.023Mcps,周期1ms[8]。C/A生成主要由有两个十级反馈移位寄存器和一个相位选择器组成,首先由两个反馈移位寄存器产生一对码率为1.023Mcps、周期长为1023码片的m序列G1和G2,这两个十级m序列的特征多项式如下:
然后相位选择器通过选择G2发生器中的两个不同的寄存器单元异或输出,再与G1输出异或即可产生不同编号的C/A码。
数字基带部分的主时钟采用 51.15MHz。电文速率为 50bps,电文产生模块中的时钟由主时钟1023000分频得到;伪码速率为 1.023Mcps,伪码产生模块中的时钟由主时钟 50分频得到;数字载波频率 5.115MHz,产生数字载波最常用的方式为直接数字式频率合成,这种方式虽然简单灵活而且精度较高,但是通常情况下这种方式所产生的载波频率会存在微小的频差,随着时间的累积,会造成数字载波与电文、伪码的相位不对齐。因此,本设计中采用直接分频的方式,将一个周期正弦波/余弦波从零相位开始等分十个相位点分别计算对应值,然后利用主时钟沿依次读取上述值,即可产生精确的5.115MHz的数字载波。
将导航电文与伪随机码进行异或运算,其结果对5.115MHz的低中频数字载波进行BPSK调制,完成数字基带信号的产生。AD9361上变频采用了正交上变频的方式,因此需产生有 I、Q两路数字基带信号。通过 Modelsim软件数字基带信号进行仿真,结果如图3所示。
图3 伪卫星基带信号仿真结果
图3 中,code是导航电文,carrierWave_cos、carrierWave_sin为数字载波,navidata导航电文,signal_cos 、signal_sin为经BPSK调制后的低中频数字信号;从上图可以看出,调制后的信号相位反转点准确,伪码、导航电文以及数字载波的相位严格对齐。
AD9361负责伪卫星信号发射器中数字基带信号向射频信号的转换。AD9361的控制通过ZC7020芯片的PS部分完成,主要通过一组SPI接口,对AD9361内部大量寄存器写入值,以完成对AD9361的控制[5]。
表2 AD9361参数配置函数
ADI公司提供了基于Xilinx-Linux的AD9361开发程序包,其中包含了大量的AD9361配置函数。在对AD9361寄存器进行配置时,首先调用程序包提供的初始化主函数,并对其中某些参数进行修改;其中包含,本设计中 AD9361使用的晶振频率为26MHz,相应的将其中参考时钟频率reference_clk_rate修改为 26000000;将frequency_division_duplex_mode_enable设置为 1,使用FDD工作模式;将lvds_mode_enable设置为1,使用LVDS接口方式等等。通过该初始化主函数能够完成对大部分寄存器的初始化配置。然后再对某些关键参数进行单独配置,其中部分参数配置函数如表2所示。
为了方便对AD9361关键参数的灵活设置,本设计使用一台PC机作为上位机,通过以太网接口与 PS相连,利用UDP协议[6]向 PS发送AD9361的配置信息;将PS端作为UDP通信的服务器端,设置固定的端口号,上位机端作为客户端。上位机中控制程序在 MATLAB中实现,将发送信息封装成特定格式的数据包,数据包结构如图4所示,使用udp函数向服务器端的IP地址与端口号发送数据包;在PS中LINUX环境下,使用socket函数创建服务器端套接字,利用bind函数将套接字绑定到服务器的网络地址上,再利用recvfrom函数接收数据。将接收到的数据进行包头识别、ID识别,读取出相应的配置信息,使用对应的配置函数完成对AD9361相关参数的配置。
图4 数据包结构
包头为 0xF0,作为数据包的识别码;ID位不同配置信息的识别码;后面数据为 ID对应的配置数据。
利用频谱仪、标准导航接收机对伪卫星信号发射器进行测试,从频谱、导航可用性两个角度验证信号发射器所发射信号的准确性。
将 AD9361射频部分的本振 LO依次设置为71.61MHz、2.450085GHz,则实际发射信号中频频率分别为 76.725MHz、2.4552GHz,发射功率设置为-30dBm。通过惠普HP8595E频谱仪对射频信号进行频谱分析,分别将频谱仪中心频率设置为76.725MHz、2.4552GHz、,带宽为10MHz,解析带宽(RBW)为 100kHz,视频带宽(VBW)为 10kHz[9]。信号频谱如图5所示。
图5 信号频谱
图6 导航接收机捕获跟踪测试
经过测试,在两个不同频段,射频信号频谱均满足两侧对称,主瓣带宽 2.046MHz,第一旁瓣相对于主瓣功率衰减约15dBm,因此伪卫星信号发射器在不同频段发射信号频谱准确。
本设计中,伪卫星信号具有与GPS民用信号相同的伪随机码,电文帧结构与GPS电文子帧相似,因此将本发射器信号载波频点设置为 1575.42MHz时,能够通过GPS接收机对信号完成捕获、跟踪与电文解算。本测试采用某型标准GNSS接收机进行。
将发射信号伪随机码编号设置为 2,中心频率设置为1575.42MHz,发射功率衰减至约-130dBm,用该卫星导航接收机进行处理。接收机处理结果如图6所示。从图中可以看出,接收到了卫星编号为2的信号,多普勒频率为 30Hz,信号载噪比45.0dBHz;“LOCK”结果为“ATBP”,表示已经完成了捕获(Acquisition)、跟踪(Tracking)、位同步(Bit synchronization)、前导码(Preamble)识别。由此表明伪卫星信号发射器所产生的射频信号准确,信号质量较高。
为满足伪卫星定位的需求,本文设计并实现了一种以FPGA为控制核心、AD9361为射频模块的伪卫星信号发射器。该信号发生器能够通过上位机程序方便的控制射频信号中心频率,以满足不同应用场景下对信号频段的需求;整体设计结构简单,易于后续在FPGA上对基带信号的结构、体制进行改进。通过对信号频谱、接收机处理等测试,证明了所设计实现的伪卫星信号发生器能够发射准确的无线电定位信号。
参考文献:
[1]Analog Devices Inc. RF Agile Transceiver AD9361[EB/OL]. 2013, www.analog.com.
[2]李杰. 无线通信中的高阶QAM实现技术研究[D]. 电子科技大学, 2016.
[3]何宾. Xilinx ALL Programmable Zynq-7000 SoC设计指南[M]. 北京: 清华大学出版社, 2013.
[4]姚铭. 基于FPGA的伪GPS卫星信号的研究与实现[D].湖北工业大学, 2009.
[5]Analog Devices Inc. AD9361 Reference Manual UG-570[EB/OL]. 2014, www.analog.com.
[6]周丽娟. 基于UDP协议的Socket网络编程[J]. 电脑知识与技术, 2008, 4(34):345-346.
[7]Trimble ICM SMT 360™ & RES SMT 360™Multi-GNSS Timing Modules User Guide [Z]. 2014.
[8]谢钢. GPS原理与接收机设计[M]. 北京: 电子工业出版社, 2009.
[9]李江雪. 频谱分析仪最佳工作状态的设置[J]. 中国科技信息, 2010(21):23-24.