用高速DSP在频域上实现LFM信号的实时脉冲压缩
为了克服I、Q支路的幅相不平衡,本文采用中频直接采样的方法,即只用一个支路和一个A/D变换器。中频直接采样的数据通过适当的处理就可获得零中频上的正交信号数据。
FFT变换将中频直接采样的数据从时域变换到频域。
正交化的过程是从中频数据获得两路正交信号数据的过程,亦即从中频信号频谱获取正交信号频谱的过程。当采样频率fs、载频f0和信号带宽B之间满足f0=(2M-1) ·fs/4关系(一般M=1,fs>2B)时,中频信号频谱的正频率部分跟相应正交信号频谱是完全吻合的。
为了获得零中频上的正交信号频谱,必须将中频上的正交信号频谱沿频轴移动一个载频数量的大小,即移频。
用于脉冲压缩的匹配滤波器的时域值及基频谱在整个工作过程中是不变的。零中频正交信号的数据经脉冲压缩后,再做IFFT得到最终的脉冲压缩时域数据。
2.4 软件计算及其优化
在整个工作流程中,FFT及IFFT运算占用的比例很大,因此在LFM信号的实时脉冲压缩过程中,FFT程序的优化至关重要。
FFT运算采用基2时域抽取算法。在FFT的循环过程中,需要计算旋转算子javascript:window.open(this.src);" style="cursor:pointer;"/>。这是一个三角浮点运算,用C6201运算速度慢,很难达到实时处理的要求。所以在FFT运算之前把旋转算子计算好,放在数据存储器中加以调用。而且旋转算子的调用很有规律,寻址比较方便,所以不需花费很大的计算量。这样大大提高了FFT的运算速度。
N点FFT运算需要1/2(N·log2N)复数乘法。乘法花费指令周期较多,因此复数乘法的优化比较重要。在FFT程序中,主要采用了以下优化措施:
(1)采用short数据类型
FFT中的数据类型为short,字长16位。模拟信号经A/D变换后长度为12位,与16位比较接近,这样能够很好的节省内存资源。由于TMS320C6201为定点型芯片,用它来计算整数类型的代数和运算,能够发挥其最大的运算优势。而且,C6000系列的指令集内只有16位乘法指令,这样采用16位字长,能够节省乘法运算的指令周期数。
(2)使用字访问short类型
在复数乘法中,读、写内存比较频繁。读操作花费指令周期较多(需5个指令周期)。如果以short类型(字长16位)读、写内存,将要读内存6次,写内存4次。由于C6000指令集内的读写操作的数据可以是32位。所以可以采用int类型(字长32位)读、写内存,即每访问一次内存,操作数为两个Short数据。这样只需读内存3次,写内存2次,花费时间可以减少一半。
(3)使用内联函数
C6000编译器提供了大量的内联函数。如16位乘法算:_mpy(),_mpyh(),_mpyh1(),_mpylh()等。内联函数可快速优化C代码,在程序中应尽量使用。
2.5 长数据分段迭加
当一个雷达重复周期内采样的数据长度很大而相应匹配滤波器的数据很短时,可采用长数据分段迭加来减小运算量。即将信号长数据分散成若干个小段(每小段数据长度都与匹配滤波器数据长度相当),对每小段数据分别作FFT处理后再相加。实验结果表明:当信号数据长度越大时,采用此种方法相对于通常补零FFT方法的优越性越大,可以满足LFM信号实时脉冲压缩的要求。
通用DSP技术的不断发展,给实时雷达信号处理系统的实现带来了极大的方便。本文阐述了LFM信号实时脉冲压缩为雷达实时信号处理的一个实例,对于雷达声或纳等设备的实时信号处理具有一定的参考价值。