摘要:对无源雷达的直通信号和反射信号进行互相关运算可以检测目标是否存在。本文介绍了基于FPGA流水线操作的阵列运算器,该运算器有32个并行乘加运算单元时分,完成256个探测距离的互相关值计算,在128MHz的时钟下,能够对二路信号进行实时互相关处理。
同传统雷达相比,无源雷达本身并不发射能量,而是被动地接收目标反射的非协同式辐射源的电磁信号,对目标进行跟踪和定位。所谓非协同式外部辐射源,是指辐射源和雷达“不搭界”,没有直接的协同作战关系。这样就使得探测设备和反辐射导弹不能利用电磁信号对无源雷达进行捕捉、跟踪和攻击。无源雷达系统简单,尺寸小,可以安装在机动平台上、易于部署,订购与维护成本低。无源雷达不发射照射目标的信号,因此不易被对方感知,一般不存在被干扰的问题。它可以昼夜、全天候工作:可连续检测目标,一般为每秒,信号源是40—400兆赫的低频电磁波,有利于探测隐身目标和低空目标:不需频率分配,因此可部署在不能部署常规雷达的地区。
无源雷达自身不发射信号,既带来优点也带来缺点。由于依赖于第三方发射机,操作员对照射器无法主动控制,在被探测目标保持无线电静默、照射器又不工作的情况下,无源雷达就成了无源之水,不能发挥作用。此外,一些发射机的有效辐射功率较低,易受干扰和空射诱饵的影响而且要求发射机与目标、目标与接收机以及接收机与发射机之间信号不受阻挡,限制了无源雷达的使用。
本文重点介绍了基于FPGA的实时互相关运算器的实现方案。互相关运算器要计算的信号是直通信号(来自FM调频广播电台)和反射信号(飞行器或者其他运动的目标反射FM调频信号的反射信号),二路信号通过32个并行运算单元的计算,流水线式地计算出每一时刻的256个互相关值,并把互相关值送往高速DSP处理器做进一步处理,检测出目标在哪个距离上出现。
1 互相关运算法则
计算目标的位置,关键在于找到时延参数Δt取何值时,二路信号的互相关值。时延参数Δt的计算方法描述如下。
x(t)和y(t)分别为接收到的直通信号和反射信号:

式(1)中:a是衰减系数,s(t)是源信号,Δt是时延量,n1(t)、n2(t)为零均值平稳白噪声过程。在这个模型中,噪音信号是附加的。假设n1(t)、n2(t)与s(t)是相互独立的变量,则二路信号的互相关运算公式可以描述为:

2 互相关运算器的硬件结构
互相关运算器的框架结构如图1所示。互相关运算器由量化模块(其中包括RAM部分)、控制模块、互相关运算模块以及峰值查找模块组成。量化模块对直通信号x(t)和反射信号y(t)进行A/D采样,得到1路2位(包括实部和虚部)和1路12位(包括实部和虚部)的数字信号送往SRAM中,再由控制模块把SRAM所存的数据按照一定的逻辑送给互相关运算模块(对FPGA编程实现)做互相关运算。互相关运算模块把每一时刻t0的所有互相关值,按A(t0,0)、A(t0,1)……A(t0,R)的顺序送往峰值查找模块中的双端口异步FIFO中。以FIFO作为FPGA与DSP的接口,峰值查找模块的DSP从FIFO中取出时刻t0的所有互相关值。比较这些值找出时刻t0有目标出现的r,并把结果送往显示终端显示。峰值查找模块由高速DSP来完成。

3 互相关运算模块的实现
若需要探测距离为0~150km的所有目标,距离分辨率为600m,则每一时刻需要计算256个互相关值。如果窗口T取32,采样模块的采样频率F设为1MHz,互相关运算器的运算能力需要达到F×T×R=500kHz×32×256=4GHz复数乘加/秒。这就决定FPGA芯片在不太高的工作频率下需要并行尽可能多的运算单元。图2是本文所设计的互相关运算模块结构图。它有32个复数乘加运算单元,每一个运算单元都是相互独立的,因此每个时钟能进行32次复数乘加运算,在128MHz的工作频率下,能够达到128MHz×32=4GHz的复数乘加/秒的运算能力。

若把方程式(4)映射到一个具有32个并行运算单元的循环阵列,循环T次就可计算出32个距离上的互相关值,顺序计算8个这样的距离块就可以完成256个单元的计算。把上述结构映射到FPGA上实现,则FPGA上并行32个运算单元,且每1个运算单元具有1个与其他运算单元独立的复数乘加模块、寄存器组和1个互相关值输出锁存寄存器。这种并行结构的优点在于:使运算模块中的存储单元独立于32个运算模块之外,简化了FPGA的外围电路,极大地方便了硬件的实现。
二路信号在接收信噪比条件下量化成直通信号x(t)和反射信号y(t)。在本系统中直通信号x(t)和反射信号y(t)的量化位宽分别是6位和1位,二路信号都是复变量,因此数据通路的宽度分别是12位和2位。由于反射信号仅需要1位量化,因此可以用组合加法操作代替乘法操作。加法的实现比乘法简单得多,在FPGA中占用的资源也比乘法器少得多,因而能够在1块50万门左右的FPGA中实现32个运算单元或者更多的运算单元。为了使窗口值T取128时计算的结果不会溢出,运算器选取了26位位宽的加法器。在数据流上,直通信号x(t)传送到32级距离的运算单元,反射信号y(t)以逐步右移锁存的方式送往每一个运算单元上。x(t)和y(t)都由一个15位地址计数器来控制SRAMs,读出所需要的数据。
为了消除计算不同时刻之间以及相同时刻不同距离块之间互相关值所需要的额外时间,使FPGA中的计算资源不会因为准备运算数据而闲置,本设计采用了一个寄存器组给每一个复数乘加模块加载运算数据,其寄存器组的结构如图3所示。

每一个寄存器组由4个寄存器和7个2路复用器组成。寄存器组工作时的时序图如图4所示。4个寄存器分成2个小组,小组1:Reg1;Reg2,小组2:Reg3、Reg4。每次小组1动作,小组2则预装;反之亦然。图4中第1阶段为全部寄存器组的预装(预装t1时刻的数据);从第2阶段起开始计算互相关值,这时小组1动作,计算t1时的互相关值。

小组2预装并计算t2时刻所需要的数据;第3阶段,小组1继续动作,直到计算完成256个互相关值,小组2不动作;第4阶段,小组2动作,小组1预装并计算t3时刻所需要的数据;第5阶段,小组2继续动作,小组1不动作,直到计算完成t2时刻的256个互相关值后,整个寄存器组转往第2阶段。
在图2中,复数乘法模块根据Y寄存器组的输出值对RegX传送过来的值进行累加。当Y寄存器组的输出值为0时,CM送0值给累加器,这时累加器把当前累加值与0相加,并把结果锁存;当Y寄存器组的输出值为1时,CM送RegX传送过来的值给累加器,累加器则把当前累加值与RegX传送过来的值相加,并把结果锁存。累加器进行T(本文中T=32)次累加之后,把累加结果锁存到互相关值输出锁存器(见图2)对应的寄存器中,这时发出reset命令把结果锁存器清零,为计算下一个互相关值做初始为零的准备工作。
当属于某一时刻t0上32个互相关值计算完毕之后,控制逻辑模块发出锁存信号把这32个互相关值送往互相关值输出锁存寄存器组中。假设从n0时钟开始计算t0时刻的某32个互相关值,在n0+31时刻下32个互相关值计算完成,这时的结果同时锁存到互相关值输出锁存器中。在计算t0时刻下一组32个互相关值或者t0+1时刻0~31个互相关值时,输出锁存寄存器组把计算结果加上帧的标志(由控制逻辑模块给出,如果t0时刻为0,则t0+1时刻为1,用于区分当前互相关值是属于前一时刻的互相关值还是属于后一时刻的互相关值,便于峰值查找模块的实现)。数据按照A(t0,32k+0)、A(t0,32k+1)……A(t0,32k+31)(k=0~7)的顺序送往峰值查找模块的FIFO中。互相关值输出锁存寄存器的时序如图5所示。

互相关运算器中的FPGA模块采用的是1片Xilinx 2v500fg256芯片,500 000门的规模。其VHDL语言实现代码已在Xilinx 2v500fg256上通过了Xilinx ISE5.1的仿真、综合布局及布线。互相关运算模块加上地址控制单元和逻辑控制单元总共占用了2317个Slices(75%),2952个Slice Flip Flops(48%),2792个4输入查找表(Look-Up-Table,LUT)s(45%)和1个全局时钟(7%)等。从互相关运算器的结构可以得到:FPGA芯片上集成的并行运算单元越多,数据处理能力就越强,但FPGA芯片的规模限制不能集成太多的并行运算单元。
4 结论
本文阐述了无源雷达系统中基于FPGA的实时互相关运算器的一种实现方案。该运算器由1块500 000门的FPGA芯片完成2路信号的互相关运算(或积分运算)。经实验模拟,在探测距离为0~150km、距离分辨率为600m时,互相关运算器能够实时完成直通与反射2路信号的互相关运算。该运算器还可以扩展到和其他的接收机相连,处理其他的数据,例如目标的方位角等。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。