APP下载

基于OpenMP的分段频域脉冲压缩算法研究

2021-10-15贾倩茜潘瑞云

雷达与对抗 2021年3期
关键词:脉压频域分段

杨 光,贾倩茜,曹 鼎,曹 阳,潘瑞云,左 霖

(中国船舶集团有限公司第八研究院,南京 211153)

0 引 言

根据雷达信号分辨理论,在保证一定信噪比并实现最佳处理的前提下,测距精度和距离分辨力主要取决于信号的频率结构,它要求信号具有大的带宽;测速精度和速度分辨力取决于信号的时间结构,它要求信号具有大的时宽。理想的雷达信号应具有大的时宽带宽乘积:大时宽不仅保证速度分辨,更是提高探测距离的手段;大带宽则是距离高分辨的前提。单载频脉冲信号的时宽带宽积近似为1,即其同时的大时宽和大带宽不可兼得。为了解决上述矛盾,雷达必须采用具有大时宽带宽乘积的复杂信号形式。脉冲压缩处理将发射的宽脉冲信号压缩成窄脉冲信号,既可以发射宽脉冲以提高平均发射功率和雷达的检测能力,又能保持窄脉冲的距离分辨率。

脉冲压缩处理算法分为时域和频域两种。警戒搜索雷达的探测重复周期较长,时域和频域脉冲压缩处理的运算量都非常大,所以通常采用数据分段的方法进行并行频域脉冲压缩来进一步提高算法的处理速度。并行加速通过多核多线程方式实现,主要应用支持跨平台(Linux/Windows)的OpenMP技术。该技术是可移植多线程应用程序开发的行业标准,在细粒度(循环级别)与粗粒度(函数级别)线程技术上具有很高的效率。OpenMP自动将循环线程化,提高多处理器系统上的应用程序性能。用户不必处理迭代划分、数据共享、线程调度及同步等低级别的细节。

本文首先介绍基于重叠相加法和重叠保留法的两种分段频域脉冲压缩算法,然后以多核服务器为硬件平台,研究基于OpenMP技术的分段频域脉冲压缩算法,最后对普通频域脉压和两种分段频域脉压算法的时间进行对比测试,结果表明分段频域脉压可以大大缩短脉冲压缩处理的时间。

1 算法原理

脉冲压缩处理在数学上可以描述为两个序列在时域的线性卷积问题,等价于频域相乘。两个离散信号的频域相乘相当于它们在时域做循环卷积,可由FFT算法实现。设序列x(n)和h(n)均为有限长序列,长度分别为M和N,其线性卷积为y(n),循环卷积为yc(n),快速FFT计算线性卷积的流程如图1所示。

图1 FFT计算线性卷积的流程图

yc(n)是将y(n)以L为周期进行周期延拓后再取主值区间得到的序列。利用循环卷积计算线性卷积的条件为L≥N+M-1。当序列x(n)和h(n)的长度相差不大时,用循环卷积计算线性卷积比直接计算线性卷积的速度要快得多。当应用于雷达脉冲压缩处理时,序列x(n)和h(n)分别对应于雷达的重复周期和发射脉冲,雷达的重复周期一般为发射脉冲宽度的5~10倍。如果采用上述快速FFT算法直接计算线性卷积,除要求对发射脉冲序列补充很多零点以外,还必须将重复周期对应的序列全部输入后才能进行FFT计算,增加了算法的处理时间,很难实现实时处理。针对这种情况,可以通过将长序列分段并行计算来减少算法的处理时间,这种分段处理方法有重叠相加法和重叠保留法。

1.1 重叠相加法

设h(n)的长度为N,x(n)的长度为无限长,取段长M尽量与N接近,则

(1)

式中,xk(n)=x(n)RM(n-kM)。

所以,x(n)和h(n)的卷积为

(2)

式中,yk(n)=xk(n)*h(n),yk(n)是长度分别为M和N的两个序列的线性卷积,可用FFT算法计算,FFT的长度为L=N+M-1。

分别计算出各段的卷积yk(n),按式(2)将结果相加,即完成基于重叠相加法的快速卷积计算。

1.2 重叠保留法

设h(n)的长度为N,将序列x(n)分段,每段长为M,然后各段向前多取N-1个采样点,并在信号前面补N-1个零,这样每一段xk(n)的长度为L=N+M-1。对每一段xk(n)与h(n)进行循环卷积y′k(n)为

y′k(n)=x(n)⊗h(n)

(3)

y′k(n)长度为N+M-1,而线性卷积yk(n)=xk(n)*h(n)的长度为L=2N+M-2,大于循环卷积的长度,必然产生混叠现象,即当0≤n≤N-2时,y′k(n)的值混有h((n-m))LRL(n)与xk(m)尾部的卷积值,在N-1≤n≤L-1范围内h((n-m))LRL(n)=h(n-m),此时y′k(n)与yk(n)相等,将这部分y′k(n)保留下来,最后将各段数据衔接起来,就完成了基于重叠保留法的快速线性卷积计算。

2 算法实现

2.1 基于重叠相加法的分段频域脉压实现步骤

设雷达发射脉冲序列h(n)长度为N,雷达回波信号x(n)长度为P,基于重叠相加法的分段频域脉压算法步骤如下:

(1)根据h(n)的长度N计算FFT点数Nfft=2^「log2(N)⎤,根据x(n)的长度P计算分段数目Nseg=「P/Nfft⎤;

(2)将h(n)补充零点,补到2·Nfft点,并计算长为2·Nfft点的FFT,得到H(k);

(3)将x(n)补充零点,补到Nseg·Nfft点。将x(n)分为Nseg个长度为Nfft的子段,将每个子段xi(n)补充零点,补2·Nfft点,并计算长为2·Nfft点的FFT,得到Xi(k);

(4)计算Yi(k)=Xi(k)H(k),并求Yi(k)长为2·Nfft点的IFFT,yi(n)=IFFT[Yi(k)];

基于重叠相加法的分段频域脉压实现过程如图2所示。

图2 基于重叠相加法的分段频域脉压实现过程

2.2 基于重叠保留法的分段频域脉压实现步骤

(1)根据h(n)的长度N计算FFT点数Nfft=2^「log2(N)⎤,计算分段后xi(n)的长度M=Nfft-N+1,根据分段长度M(要求M≥N)和x(n)的长度P计算分段数目Nseg=「P/M⎤;

(2)将h(n)补充零点,补到Nfft点,并计算长为Nfft点的FFT,得到H(k);

(3)将x(n)补充零点,补到Nseg·M点。再将x(n)分为Nseg段,每段xi(n)长度为M,然后各段向前多取N-1个样点,并将这些样点置零,如此xi(n)的长度为M=(Nfft-N+1)+N-1=Nfft点。计算长为Nfft点的FFT,得到Xi(k);

(4)计算Yi(k)=Xi(k)H(k),并求Yi(k)长为Nfft点的IFFT,yi(n)=IFFT[Yi(k)];

(5)将各段yi(n)中第N至Nfft点的数据保留和拼接,得到脉压结果,即y((i-1)M+1:iM)=yi(N:Nfft),i=1,2,…,Nseg。

基于重叠保留法的分段频域脉压实现过程如图3所示。

图3 基于重叠保留法的分段频域脉压实现过程

2.3 基于重叠相加法的脉冲压缩实现步骤

硬件平台为主频2.6 GHz、96核的服务器。模拟脉冲宽度为400 μs、脉冲重复周期为2 500 μs、采样率为6.25 MHz的线性调频信号,在服务器中通过读文件的形式将模拟信号输入至服务器内存。基于OpenMP的频域脉压实现算法的功能框图如图4所示。

图4 基于OpenMP的频域脉压实现算法的功能框图

根据信号的脉冲宽度和重复周期数分别计算出重叠相加法(以下简称“方法一”)和重叠保留算法(以下简称“方法二”)中FFT的点数、信号的分段个数。通过信号补零处理构造输入信号并分段,然后开辟并行区域,对各段数据并行频域脉压处理,最后将每段数据进行保留或相加得到分段频域脉压结果。两种算法的频域脉压结果如图5所示。可以看出,方法一和方法二的处理结果与普通频域脉压结果相同,从而验证了两种分段频域脉压算法的正确性。

图5 基于OpenMP的频域分段脉压仿真

服务器的运行结果如图6所示。根据算法的分段数,服务器开辟相应个数的线程执行并行计算,通过1 000次仿真实验测试算法的运行时间,如表 1所示:方法一的运行时间为158 μs,方法二的运行时间为75.8 μs,两种算法的时间效率较传统普通频域脉压方法分别提高了2.76倍和5.76倍。

图6 服务器运行结果

表1 算法运行时间统计

2.4 两种算法的时间效率对比

方法一要求分段后的序列长度M大于等于发射脉冲序列长度N,否则对发射脉冲进行FFT处理时,将会出现“欠采样”的现象,所以方法一分段后序列的最小长度为N,FFT处理的点数最小值为2N。方法二中分段后的序列“重叠保留”了M个采样点,不会出现上述“欠采样”现象,所以方法二分段FFT处理的点数最小值为M+N-1。

由于服务器中的算法库通常只支持基2的FFT算法,对于给定的脉冲长度N,可能会出现方法一处理的FFT点数为方法二两倍的情况,例如2.3节中仿真输入的脉冲宽度和重复周期分别为400 μs、2 500 μs,采用方法一和方法二处理的FFT的点数分别为8 192和4 096。所以对于任意给定的脉冲长度N,在服务器线程资源充足的情况下,为了避免出现方法一FFT计算点数翻倍的情况,通常选择方法二执行分段频域脉压处理。

3 结束语

雷达信号处理中脉冲压缩处理等价于两个序列的线性卷积问题。本文首先推导了循环卷积计算线性卷积的条件,然后介绍了长序列卷积加速的两种分段处理算法,随后给出了两种算法在工程应用中的实现过程,最后在服务器中采用OpenMP技术对算法进行实现,并统计了算法的时间。研究表明,在服务器线程数量充足的情况下,根据不同的处理方法和分段数目,基于OpenMP的分段频域脉压算法可将传统的频域脉压算法的时间效率提高2~5倍,具有很高的工程应用价值。

猜你喜欢

脉压频域分段
2018年—2020年山西省普通高考成绩分段统计表
汽车瞬态响应试验频域特性分析
脉压异常需要治疗吗?
分段函数的常见题型及其解法
高压、低压和脉压,哪个异常更危险
高压、低压和压差,哪个更危险
一种海上浮式风电基础频域动力响应分析新技术
测量血压时要注意“脉压”
例谈分段函数单调性问题的解决
寻求分段函数问题的类型及解法