基于 FPGA 的北斗导航自适应抗干扰算法设计与实现
卫星导航已成为现代生活不可或缺的基础设施,尤其在国家安全领域扮演着关键角色。然而,复杂的电磁环境对导航系统的稳定性构成了严峻挑战。为了使导航系统不受干扰的影响,本文以北斗导航系统为平台,研究基于阵列天线的自适应抗干扰算法。
算法原理与方案选择
文章首先介绍了自适应抗干扰算法的原理和方法,并在 MATLAB 中建立阵列模型,对基于功率倒置算法的空域抗干扰算法和空时联合抗干扰算法进行性能仿真。然后根据系统的指标,确定了在 FPGA 中实现抗干扰算法的方案,包括数字下变频(DDC)、权值计算、数据加权、数字上变频(DUC)等模块。
根据权值计算模块实现方式的不同,我们提供了两种抗干扰算法在 FPGA 中实现的方案:
- 基于 NIOS II 软核:将权值计算的过程放在 NIOS II 软核中,用 C 语言进行实现。
- 基于逻辑语言:即用硬件描述语言 Verilog HDL 进行权值的计算。
权值计算涉及到浮点数运算和 Hermite 矩阵求逆,本文给出了各模块的设计方法和仿真结果,并与 MATLAB 仿真结果进行对比。最后给出了两种实现方案的实测结果,表明两种实现方案都具备抗干扰性能,验证了抗干扰系统的正确性。
实验平台搭建
本章主要对空域和空时两种抗干扰算法进行实测验证。权值计算 FPGA 实现的过程中,两种算法的区别主要在于协方差矩阵的维数上。空域算法协方差矩阵维数低,采用分块求矩阵逆的方法,占用资源少,权值更新时间短,选用低成本、低功耗的 Cyclone III 系列作为实现平台即可。空时算法协方差矩阵为高阶矩阵,分块求矩阵逆的方法不再适合。Cyclone V 系列提供了实数矩阵求逆的 IP 核,在该 IP 核的基础上可以快速求出复数共轭对称矩阵的逆。
硬件架构
图 6.1 是系统的数字板结构框图。数字板主要由一片 FPGA 芯片、一片时钟芯片、一片 4 通道 ADC 芯片、一片配置芯片、一片 DA 芯片组成。为了实现低功耗、小型化的设计要求,ADC 芯片选用 AD9253。ADC 采样后的信号传送到 FPGA。在 FPGA 芯片中完成数字下变频、空域滤波(空时二维联合)算法、数据加权,然后再数字上变频,交给射频通道进行模拟上变频后,最后把数据交给接收机进行解调。

空域算法的 FPGA 实验板主要是由 ALTERA 公司的 EP3C120F780 芯片和 ADI 公司的 AD9268 芯片组成,空时算法的 FPGA 实验板主要是由 ALTERA 公司的 5CGXFC7C6F23I7 芯片和 ADI 公司的 AD9253 芯片组成。可见少了 DSP 芯片后整个数字板的功耗、尺寸以及成本都大大降低。
测试环境
整个实验环境的搭建与仪器使用情况如图 6.3 所示。系统的工作流程如下:
- 搭建实验环境,将北斗导航抗干扰天线置于二维转台上,可以测试天线各个方向上的抗干扰性能,并模拟干扰源运动的情况下抗干扰天线能否正常搜星定位。
- 调节信号源的输出信号,包括信号的大小、类型(点频、宽带等)。
- 启动转台,将天线 360 度旋转。
- 在 PC 端观察北斗导航抗干扰天线在有干扰下的搜星定位是否正常。
实验的判断指标主要包括:输出频谱是否稳定;搜星数量是否大于等于 4 个,是否会发生丢星现象;通过 SignalTap 抓取抗干扰前后的数据进行 MATLAB 分析;对比 MATLAB 与 FPGA 抗干扰之后的频谱图。
模块实测结果分析
ADC 模块验证
本系统选取的 ADC 是串行 LVDS 输出的 AD9253。AD9253 单个芯片包括四个通道,且采用的是 48 脚的 LFCSP 封装,大大简化了 PCB 布线工作。AD9253 的采样率可以达到 125MSPS,而且支持双倍速率(DDR)操作。AD9253 采用串行 LVDS 电平信号数据输出,拥有 14bit 分辨率。
ALTLVDS_RXIP 核的主要参数设置如下:输入通道数为 9,解串行化因子为 8,数据速率为 496Mbps,时钟频率为 248MHz。将程序下载到数字板中,加入 5MHz、0dB 的输入信号,SignalTap 抓取的 ADC 采样数据波形正常。
DDC 与 DUC 功能验证
将 FPGA 中的 jic 文件烧写到 EPCS 配置芯片中,重新上电后,程序自动启动。用 SignalTap 抓取进入 DDC 模块前后的数据,在 MATLAB 中画出频谱曲线。加点频干扰时,AD 的采样频率为 62MHz,下变频后,信号频谱由原来的 15.5MHz 搬移到零频。加宽带干扰时,中心频率经过下变频也由原来的 15.5MHz 搬移到零频,验证了下变频模块设计的正确性。
用 SignalTap 抓取上变频 DUC 模块的输入输出端口的数据,上变频的工作时钟为 124MHz。通过上变频模块后,信号频率又由零频搬回原来的中频频率 46.5MHz,验证了上变频模块的正确性。
系统性能验证
将上下变频模块、协方差矩阵计算模块、权值计算模块、数据加权模块联合起来的顶层模块图如图 6.8 所示。对顶层模块进行编译,空域算法与空时算法的资源占用情况如表 6.1 所示。
| 算法 | 空域 | 空时 |
|---|---|---|
| Device | EP3C120F780C7 | 5CGXFC7C6F23I7 |
| Total logic elements | 108742/119088 (91%) | - |
| Logic utilization (in ALMs) | - | 26,236/56,480 (46%) |
| Total registers | 68578 | 42098 |
| Total memory bits | 1016612/3981312 (26%) | 831,442/7,024,640 (12%) |
| Embedded Multiplier 9-bit elements | 576/576 (100%) | - |
| Total DSP Blocks | - | 156/156 (100%) |
将两种抗干扰算法的 jic 文件分别烧写到 EPCS 配置芯片中,重新上电后,程序自动启动。用 SignalTap 抓取权值,根据两次权值更新所需的时钟周期,可以计算出抗干扰算法权值更新的时间。空时算法的计算时间比较长,可以通过计数器求得两次权值输出有效标志位的上升沿之间的时钟周期求得整个算法权值更新的时间。
根据测试结果,空域算法权值计算的工作时钟为 124MHz,权值更新共需要 1284 个时钟周期,因此权值更新时间为 10μs。而空时算法两次权值更新共需要 25879 个时钟,也就是 0.21ms。两种算法在 FPGA 中权值更新的速度都有很大的提高。
为了验证空域算法抗干扰的性能,调节信号源,将干扰调为干信比为 78dB 的宽带干扰,通过 SignalTap 同时抓取下变频数据以及抗干扰之后的数据,导入 MATLAB 进行分析。红色的曲线是抗干扰前的信号频谱图,蓝线是抗干扰之后的信号频谱图,可以发现程序有抗干扰效果。在干信比为 78dB 的宽带干扰下,FPGA 抗干扰和 MATLAB 抗干扰效果相当。此干扰下,导航天线的能正常搜星定位,但载噪比已经到达接收机灵敏度的极限值 30dB。
总结
本章主要介绍了北斗导航抗干扰系统的实验平台,并给出了抗干扰算法的实测结果。首先介绍了抗干扰算法的硬件实现平台、系统外场测试的环境搭建和实验使用的各种实验仪器。然后给出了整个 FPGA 程序的顶层模块图和资源占用情况,并用逻辑分析仪抓取数据,给出两种算法权值的更新时间。把 SignalTap 抓取的数据导入 MATLAB,先画出上下变频前后的频谱图,验证上下变频模块的正确性,然后对比 FPGA 数字板抗干扰与 MATLAB 抗干扰的性能,验证了 FPGA 抗干扰程序的正确性。最后给出了整个系统在空域抗干扰算法下加干扰前后的搜星定位图,验证了整个系统的抗干扰性能。

