1. 引言
在GPS接收机的设计中,为了检验和完善信号处理算法,需要在本地获得GPS数字中频信号数据。采用真实的数据并不是最佳选择,主要是因为其中的许多信号属性无法控制,也无法模拟不同的接收环境和干扰情况,这给算法的验证测试带来麻烦;而且存储GPS真实数据需要消耗大量的硬件资源。解决这一问题的有效方法是设计一个能够产生GPS数字中频信号并且参数可控的仿真信号源。
通常的仿真信号源设计方式被割裂为两种——纯硬件方式和纯软件方式。纯硬件方式是利用硬件器件和硬件表述直接进行设计,其设计难度大、周期长,而且系统结构设计的改变会带来巨大的硬件设计工作量。纯软件设计的仿真信号源,是利用软件语言在PC机上搭建整个系统,其产生的数据需要被缓存起来以供硬件测试。这样做不仅浪费存储资源,而且难以满足实时性要求。本文介绍了一种新的GPS中频信号源的FPGA设计方案,它是利用Xilinx System Generator for DSP工具可以自动由系统级表述转换成FPGA硬件表述的特点,完成从软件图形化设计到FPGA硬件实现的一体化流程。其优点在于,功能设计部分在MATLAB/SIMULINK下完成,信号源产生结构清晰,进行信号验证检测和参数更改;硬件实现时,通过Xilinx System Generator 工具,自动生成优化的硬件描述语言文件和硬件测试文件,辅以Xilinx 硬件开发平台,大大减少了直接的硬件设计工作量,缩短了从设计到实现的过程,也方便了对系统设计的修改和升级。
2. Xilinx System Generator for DSP
Xilinx System Generator是Xilinx公司开发的FPGA辅助设计工具,包括嵌入Simulink的Xilinx 模块集合(BlockSet)和模型到硬件的转换软件。它可自动生成FPGA综合、仿真和实现工具所需的命令文件。用户可以在图形化环境中完成系统模型的硬件开发。在设计中,System Generator将Xilinx 模块集合里的模块映射为IP(Intellectual Property)库中的模块,接着从系统参数推断出控制信号和电路,再将Simulink的分层设计转换为VHDL的分层网表,之后调用Xilinx Core Generator 和VHDL模拟、综合实现工具来完成硬件设计,最后通过FPGA平台实现硬件系统。这样,设计者就可以轻而易举地从一个抽象的系统级表述转换到单一来源的门级的FPGA硬件表述。这也解决了不熟悉硬件语言描述的设计者进行硬件设计实现的问题。
3. GPS 数字中频信号源的FPGA设计
3.1 GPS数字中频信号
3.2 设计方案
图1 GPS数字中频信号源设计方案
根据GPS数字中频信号的产生公式,我们可以得到如图1所示的设计方案。其中每一个通道负责产生一颗特定卫星(对应一个特定的卫星PRN号)的扩频码、导航数据等信号。参数设定模块负责计算和设定各个模块的关键参数(如卫星PRN号,载波频率,码发生器的寄存器状态等),其中包括一个对应GPS时间的Z计数器和X1计数器[3]。载波发生器是以Xilinx 模块集合中的NCO(Numerically Controlled Oscillator)模块[4]为核心搭建的,其频率和相位可由参数设定模块调控。多径模块可以模拟传播过程中多径效应,方案中是通过将前端一颗或多颗卫星产生的信号经过不同的延迟加入到原信号中实现的。滤波/采样部分可以根据后续模块的不同(C/A码捕获或P码捕获),在软件设计中采用不同的参数(滤波器带宽、采样率),或在硬件实现时采用不同的硬件滤波器和采样器。下面介绍C/A码、P码发生器、设定器以及其他几个关键模块的设计方案。
3.2.1 C/A码发生器及设定器设计
GPS 的C/A码是序列长度为1023的GOLD码,码速率为1.023MHz,周期为1ms。由两个10位移位寄存器G1和G2通过异或合并得到的,其移位多项式分别为 和 。
本方案中C/A码设定器可以工作于两种模式:
1)在码循环周期的初始点或半中点设定。根据待设定的目标GPS时刻对应的计数器值,换算出距离未来最近的C/A码循环周期初始点或半中点的码片数,并用此数值设置倒计数器初值,待其计数为零时C/A码设定器将G1和G2寄存器复位到它们的初始状态或半中点状态。自此以后C/A码发生器与目标GPS时间实现同步。该设定过程的最大延迟为511ms.
2)即时设定。本方案中对每一个寄存器位单独设计了设定单元,可以在下一个时钟周期到来时,将该位设定成0或1。在本工作模式中,模块需要首先换算出目标GPS时刻对应的C/A码状态索引,之后结合预存的寄存器状态表查找到G1和G2的寄存器状态,通过设定单元在下一个时钟周期将状态进行修改。这种模式可以实现即时同步。
3.2.2 P码发生器及设定器设计
GPS的P码是由4个具有不同特征多项式的12位移位寄存器X1A,X1B,X2A,X2B的结果合并得到。通过译码截断、延迟、时钟控制等模块实现X1B相对于X1A,X2B相对于X2A,以及X2A/X2B相对于X1A/X1B的相位进动,从而产生周期为1.5秒的X1历元以及周期为38个星期的P码序列。通过控制 相对于 结果的延迟,达到产生不同卫星对应P码的目的。
图2 X2B状态设定器工作流程图
P码设定器相对于C/A码设定器要复杂的多,需要根据4个移位寄存器的不同情况进行不同的设计,且需要在不同的时间复位。图2给出了我们提出的X2B寄存器设定器的设计算法,X1A,X1B和X2A的设定器的设计思路与之类似。X1计数值,Z计数值和卫星PRN号作为输入。首先根据X1,Z计数值,计算出X2历元内的计数值X2和在一个X2B循环内的计数值X2B。如果此时间处于一星期的X1A的最后一个循环,需要在此循环结束时对X2B进行截断。否则,根据设定时间对应X2B寄存器的不同情况,推算出距离下一个寄存器初始状态所需等待的P码码片数(N2B)。将此值作为计数器初值并开始倒计数,当计数为零时将X2B寄存器设置为初始状态,从此时刻开始,该寄存器的状态与目标GPS时间达到同步。在实现该算法时,利用Xilinx 模块集合中的Mcode模块编写算法程序。此种算法完成对所有4个寄存器的同步最大延迟小于500 。同样,P 码设定器也可工作在即时设定模式下。
3.2.3导航数据模块
导航数据为50Hz的二进制码,由12.5分钟长的超帧组成,每个超帧分为25帧,每帧5个子帧,每个子帧10个字长,每个字长30bit。每帧第1,2,3播放卫星的星钟修正参数和广播星历,第4,5个子帧为历书数据、电离层修正参数及其它系统信息。方案中我们只设计第1,2个子帧,对于其它3个子帧,我们将NASA网站下载的24小时GPS历书数据转换为二进制比特文件,导入导航数据模块产生。第1个子帧为遥测字(TLW),其前8个比特为同步头(10001011),第9~24比特为卫星测控信息和保留位(这里我们都置为0),最后6比特为校验位。第二个子帧为握手字(HOW),由Z计数(对P码产生器中的X1历元个数的计数),告警标志,反欺骗标志,子帧ID,保留位和校验位组成。
在实现时,可以使用Xilinx Mcode模块,结合星历数据文件,产生仿真导航数据,也可设计成对外的输入接口,接真实导航数据或其它导航数据仿真器的输出。
3.2.4 高斯白噪声产生模块
这里我们需要产生限带的高斯白噪声,由于伪随机噪声具有类似于随机噪声的一些统计特性,具有随机噪声的特点,我们采用与码发生器中类似的寄存器序列来产生伪随机m序列。又因为m序列的噪声特性与其周期长度有关,周期越长,越接近白噪声谱,我们这里采用特征多项式为 的m序列发生器。若m序列的码元周期为 ,则在0~0.45/ (Hz)的范围内可认为具有均匀的功率谱。因此通过控制 可以得到所需频率范围内的模拟高斯白噪声。
4.硬件实现及运行结果
此GPS数字中频信号源的设计方案在Simulink环境中完成了图形化设计和仿真验证,并利用System Generator工具生成FPGA硬件表述文件和硬件测试文件,在Xilinx ISE环境下进行了编译和综合,同时利用ModelSim进行了硬件仿真验证。最后将Xilinx ISE生成的位流文件下载到采用Xilinx XC2S200 芯片的FPGA硬件平台进行了硬件系统实现和信号验证。图3给出了基于本方案设计的仿真信号源所产生的GPS数字中频信号的时域波形和功率谱(卫星PRN号为1,中频频率为15.42MHz,信噪比10dB)。经过与实际GPS中频信号及其功率谱的对比发现,二者特性是相一致的。
图3 仿真信号源产生的 GPS数字中频信号及功率谱
5.结论
文章从GPS数字中频信号源的数学模型出发,基于纯硬件和纯软件信号源设计方式的缺点,提出了兼具软件设计灵活性和硬件设计实时高效性的GPS数字中频信号源的设计方案。方案通过多通道并行结构实现了对多颗可见卫星信号的模拟,通过码发生器和设定器实现了对任意GPS时间对应C/A码、P码的产生和同步,并通过多径、高斯白噪声模块模拟了信号传播过程中的多径效应和噪声环境。对卫星PRN的选择及各个模块的关键参数进行集中计算、设定和管理,方便了参数调节、对各种效应影响的研究以及和其他信号处理模块的协作[7]。本设计采用的基于System Generator的一体化流程,既降低了因系统修改和升级带来的硬件设计工作量,又弥补了软件方案实时性不足的缺点,这也为GPS接收机其他模块及其他信号处理系统的设计提供了新思路。本信号源的设计和实现是GPS及其他卫星导航系统接收机自主研制的重要组成部分,在卫星导航系统的民用产业化过程中,能够产生可观的社会效益和经济效益。
本文作者的创新点:提出了兼具软件设计灵活性和硬件设计实时高效性的GPS数字中频信号源的高效一体化FPGA设计方案。
责任编辑:gt
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)