版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/DSP应用系统设计大作业专业:电子与通信工程姓名:赵多学号:1302121285题目一一、线性调频<LFM>信号为了提高雷达的作用距离和距离分辨率.实际中通常采用宽脉冲发射以提高发射的平均功率.保证足够大的作用距离;而接收时采用相应的脉冲压缩算法获得窄脉冲.以提高距离分辨率.较好的解决了雷达作用距离与距离分辨率之间的矛盾。而获得大的频带信号.采取LFM信号调制.可以将信号频域展宽.同时也充分利用了雷达发射功率.扩大作用距离.接收时采用匹配滤波器〔MatchedFilter压缩脉冲。线性调频〔LinearFrequencyModulation信号是指频率随时间而线性改变<增加或减少>的信号。线性调频信号s<t>可表示为:-T/2<t<T/2
<1.1>式中为中心频率.为矩形信号.<1.2>K=B/T.是调频斜率.可得信号的瞬时频率为-T/2<t<T/2
<1.3>T为线性调频信号的时宽.B为带宽。可知瞬时频率呈线性变化.当K>0时.频率递增.K<0则递减。将1.1式中的信号重写为:<1.4>式中.<1.5>是信号s<t>的复包络.也即为零中频LFM信号。根据题目要求.可知波形数据采样频率.取脉冲宽度.则可以得知采样数据长度.调制带宽为。利用Matlab生成所需调频信号.并生.dat数据文件以便VisualDSP++软件仿真调用。信号为复数信号.复数数据实部虚部交叉存储.奇数序列为实数序列.偶数序列为虚数序列。以下Matlab程序产生式<1.5>的零中频线性调频信号:clearall;T=120e-6;B=6e6;K=B/T;Fs=20e6;N=T*Fs;t=linspace<-T/2,T/2,N>;St=exp<j*pi*K*t.^2>;subplot<221>,plot<t*1e6,real<St>,'k'>;title<'零中频线性调频信号的实部'>;xlabel<'Timeinus'>,ylabel<'real<St>'>;gridon;axis<[-3030-11]>;subplot<222>,plot<t*1e6,imag<St>,'k'>;title<'零中频线性调频信号的虚部'>;xlabel<'Timeinus'>,ylabel<'imag<St>'>;gridon;axis<[-3030-11]>;freq=linspace<-Fs/2,Fs/2,N>;subplot<223>,plot<freq*1e-6,fftshift<abs<fft<St>>>,'k'>;title<'零中频线性调频信号的频谱'>;xlabel<'FrequencyinMHz'>,ylabel<'S<f>'>;gridon;axistight;fi=K*t;subplot<224>,plot<t*1e6,fi*1e-6,'k'>;title<'零中频线性调频信号的瞬时频率'>;xlabel<'Timeinus'>,ylabel<'fiinMHZ'>;gridon;axistight;saveinput.dat-asciiStfd=fopen<'input.dat','wt'>;a=real<St>;b=imag<St>;fori=1:1:2400fprintf<fd,'%g\n',a<i>>;fprintf<fd,'%g\n',b<i>>;endfclose<fd>;如图1所示为零中频线性调频信号各曲线图。图1零中频线性调频信号各曲线图二、脉冲压缩原理脉冲压缩技术是指雷达发射出宽脉冲信号.在接收端回波宽脉冲信号通过处理后得到窄脉冲的实现过程。脉冲压缩器的设计实际上就是匹配滤波器的设计。匹配滤波可以在时域实现.也可以在频域实现。式1.5的零中频线性调频信号即为发射信号.根据匹配滤波理论.它的匹配滤波器时域脉冲响应为:<2.1>将式<1.5>代入式<2.1>得<2.2>匹配滤波h<t>S<t>S0<t>匹配滤波h<t>图2零中频LFM信号的匹配滤波LFM脉冲信号经匹配滤波器后的输出S0<t>信号.当时.包络近似为辛克〔sinc函数。而此时压缩后的脉冲宽度:T0=1/B.LFM信号的压缩前脉冲宽度T和压缩后的脉冲宽度T0之比通常称为压缩比D.即<2.3>式<2.3>表明.压缩比也就是LFM信号的时宽频宽积。输出S0<t>的最大副瓣电平为主瓣电平的13.2dB.在多目标环境下.旁瓣会淹没附近较小的目标.从而引起目标丢失.所以通常引入加权函数〔窗函数对信号进行失配处理以抑制副瓣产生的消极影响.其副作用是输出信号的包络主瓣降低、变宽.即旁瓣抑制是以信噪比损失及距离分辨力变坏作为代价的。设时域加权函数为w<t>.加权函数可以选择海明窗、汉宁窗等。则加权后输出为:<2.4>频域实现实际上就是将时域的匹配滤波的时域卷积运算转到频域来运算〔快速卷积算法。因脉冲压缩的点数比较大时.频域FFT法的处理速度要比时域实现快很多.大大减少了运算量。用频域FFT法实现脉压的具体过程如图3如下:对信号S<n>进行FFT变换得到S<K>.S<K>与发射信号S<n>的FFT的复共轭S*<K>相乘.然后再对乘积作IFFT而获得时域脉压结果。由于S*<K>可以预先算出存入DSP的RAM空间里.每次运算时.只需读出RAM中的数值即可进行运算。因此S*<K>可以利用Matlab直接生成。软件生成后在对脉压作加窗处理时.仅需将窗函数W<K>与S*<K>的乘积H<K>=S*<K>·W<K>存入RAM中即可.不会额外增加存储量及运算量。用频域FFT法实现高速数字脉冲压缩.文中的脉冲压缩就是基于图3的原理实现的。FFTW<K>FFTW<K>S*<K>IFFTH<K>图3频域脉冲压缩原理结构图为节省运算时间.所以将频域脉压系数H<K>预先处理好。已知输入信号序列为零中频线性调频信号.根据题目要求在第二节已求出输入信号序列.因此根据公式易求出匹配滤波系数序列h<n>.但为保证利用FFT计算线性卷积不出现混叠失真.则循环卷积长度必须满足L=N+M-1.其中L为卷积长度.N和M分别为两卷积序列长度。根据MATLAB生成的输入数据可知N和M均为2400点.因此卷积长度.由于采用FFT进行计算.因此L必须为2的整数次幂.取最小值为8192。因此此设计中所有FFT和IFFT运算点数均为8192点。通过改变窗函数w<t>.可以得到三组H<k>序列文件.分别为矩形窗、汉宁窗和汉明窗.对应于文件real.dat/imag.dat,real1.dat/imag1.dat,real2.dat/imag2.dat三组文件.以便VISUALDSP++软件仿真时进行导入。Matlab生成H<K>序列源代码如下:clearall;T=120e-6;B=6e6;K=B/T;Fs=20e6;N=T*Fs;t=linspace<-T/2,T/2,N>;St=exp<j*pi*K*t.^2>;N_fft=4096;%因采样数据长度N为2400则脉压fft点数4096ht=conj<fliplr<St>>;%匹配滤波h<t>wt0=boxcar<N>;wt1=triang<N>;wt2=hanning<N>;wt3=hamming<N>;wt4=blackman<N>;beta=7.865;wt5=kaiser<N,beta>;ht0=ht.*wt3';%这里默认加汉明窗函数Ht=fft<ht0,N_fft>;a=real<Ht>;b=imag<Ht>;savereal.dat-asciiafd=fopen<'real.dat','wt'>;fork=1:1:N_fftfprintf<fd,'%g\n',a<k>>;end;saveimag.dat-asciibfd=fopen<'imag.dat','wt'>;fork=1:1:N_fftfprintf<fd,'%g\n',b<k>>;%文本文件实际点数N_fft*2end;fclose<fd>;三、VISUALDSP++脉压仿真3.1线性调频信号序列输入由MATLAB软件生成LFM信号序列.文件为input.dat。文件中共2400个复数序列.其中偶数列为实数序列.奇数列为虚数序列.因此共4800个数据。下图为在VISUALDSP++软件中导入input.dat文件并利用其画图功能画其波形:图3零中频信号上半部为实部波形.下半部为虚部波形3.2匹配滤波系数频域序列输入由第二节计算可知.匹配系数H<K>序列为h<n>进行4096点FFT变换得到.因此H<K>共有4096个复数序列.并且将实数序列与虚数序列分别存储成real.dat和imag.dat两个文件。在第二节中利用MATLAB软件生成H<k>序列已详解。根据矩形窗、汉宁窗、汉明窗生成三组序列文件分别real.dat/imag.dat,real1.dat/imag1.dat和real2.dat/imag2.dat。利用VISUALDSP++软件进行导入并画出波形图如下:图4矩形窗H<k>序列上半部为实部波形.下半部为虚部波形图5汉宁窗H<k>序列上半部为实部波形.下半部为虚部波形图6汉明窗H<k>序列上半部为实部波形.下半部为虚部波形根据原理结构图可知.脉冲压缩共分为FFT、复数乘法、IFFT和模值衰减变换四个模块。其中FFT模块采用VISUALDSP++软件中自带模块。而IFFT可采用如下方法求解.因<3.1>由式〔3.1可得.先将X<K>取复共轭.然后直接调用FFT子程序进行FFT运算.最后再取复共轭并乘以1/N得到序列x<n>。这种方法虽然用了两次取共轭运算.但可以与FFT共用一子程序.提高了子程序利用率。四、结果分析4.1输出结果利用VISUALDSP++软件设置断点功能画出各部分输出波形.波形图分别如下:图7零中频线性调频信号8192点FFT波形图8矩形窗加权系数脉冲压缩压缩后波形图9矩形窗系数脉冲压缩后局部放大波形图10矩形窗脉冲压缩后衰减波形图11汉宁窗压缩后波形图12汉宁窗压缩后波形局部放大图13汉宁窗脉压后衰减波形图14汉明窗脉压后时域波形图15汉明窗脉压后局部放大波形图16汉明窗脉压后衰减波形4.2加窗对脉压性能的影响线性调频信号匹配滤波器输出端的脉冲.是经过压缩后的窄脉冲.输出波形具有辛克函数的性质.除了主瓣外还有时间轴上延伸的一串副瓣。靠近主瓣的第一副瓣最大.其值较主瓣峰值只得13.46dB,第二副瓣在降低4dB.以后依次下降。副瓣零点间的间隔为1/B。匹配滤波器输出的旁瓣太高是脉冲压缩雷达的缺点.实际使用中采用加窗的准匹配滤波器来改善副瓣的性能。实际应用中的匹配滤波器需要加窗.以实现旁瓣的抑制.但窗函数点数N固定时.也会导致主瓣的展宽.旁瓣的抑制和主瓣的展宽二者彼此矛盾.需要以实际需要折衷考虑.即在副瓣输出达到要求的情况下.应使主瓣的展宽及强度变化值最小。以下分析不同的窗函数对脉压结果〔主瓣宽度和幅度增益的影响。首先给出六种窗函数自身的性能:表1六种窗函数的主要参数窗函数类型主瓣宽度/rad旁瓣电平/dB过度带带宽/rad阻带最小衰减/dB矩形窗-1321三角窗-2525汉宁窗-3144汉明窗-4153布莱克曼窗-5774凯塞窗-5780根据时宽带宽积可以的到脉冲压缩比为40。原脉压前脉冲宽度为20us,对于20MHz的采样频率.对应采样点400.那么脉压后主瓣宽度采样点数为2*<400/40>=20点〔主瓣宽度等于2倍的零点带宽。下面考虑加窗对脉压结果增益〔以主瓣最大增益为准的影响和脉压后脉冲宽度<第一零点带宽为准>的影响。表2加载六种窗函数后DSP脉压对脉冲宽度、增益的影响窗函数类型脉冲主瓣宽度〔采样点数脉冲增益〔主瓣最大增益第一旁瓣增益〔第一旁瓣最大增益矩形窗2040083.5三角窗44200.510.1汉宁窗40200.55.4汉明窗38216.53.1布莱克曼窗581650.89凯塞窗54175.70.85从表2可以得到结论:脉压可以提升脉冲的增益.幅度增益与原宽脉冲时宽有关。加窗可以有效地抑制副瓣.但是要以主瓣展宽和增益下降为代价。相对而言.一般情况下.选择汉明窗可以获得较好带宽和增益折衷。线性调频信号经过压缩处理接收后的信号幅度峰值是原来发射信号幅度峰值的<D为脉压比>倍.即输出脉冲峰值功率比输入脉冲峰值功率增大了D倍。在要求发射机输出功率一定的情况下.接收机输出的目标回波信号经过匹配滤波压缩处理.具有窄的脉冲宽度和更高的峰值功率.前者提高距离分辨率而后者符合探测距离远的战术要求.这充分体现了脉压体制独特的优越性。从反侦查的角度来说.脉压雷达比普通雷达具有更强的生存能力。由于线性调频信号的幅度和信噪比更小.有侦查方程可知.同等灵敏度的侦察机其侦查距离为原来的.所以在雷达应用领域.脉压雷达具有功率优势.应用前景十分广阔。五、附录部分主程序代码如下://*******************Includes********************//#include<stdio.h>#include<sysreg.h>#include<builtins.h>#include<math.h>#include"FFTDef.h"//*********************Externs******************//externfft32<float<*>[],float<*>[],float<*>[],float<*>[],int,int>;externinit<>;#pragmaalign4section<"data1ab">floatoutput[2*N];//FFT函数输出变量floatreal[N];//变换中实部序列N=4096floatimag[N];//变换中虚部序列floatmax;//脉压后floatinput[4800]={#include"LFM/input.dat"};//输入信号文件其中偶序列为实部floatinput1[2*N];//变换信号数据缓冲floatreal_coff[N]={#include"LFM/real.dat"};//滤波器4096点fft实部real/real1/real2分别为矩形窗、汉宁窗、汉明窗滤波系数//floatimag_coff[N]={#include"LFM/imag.dat"};//滤波器4096点fft虚部imag/imag1/imag2分别为矩形窗、汉宁窗、汉明窗滤波系数//#pragmaalign4section<"data2ab">floatping_pong_buffer1[2*N];#pragmaalign4section<"data3ab">floatping_pong_buffer2[2*N];volatileinti,tmp_i0,tmp_i1;//用于计数〔程序各段计时//*************************mainvoidmain<void>{inti;#ifdefinitialization_errorprintf<"ERROR:ThisFFTfunctionworksonlyinthefollowingconditions:\n">;printf<"-Nmustbeapowerof2\n">;#ifdef__ADSPTS201__printf<"-forrealinputs,64<=N<=32768\n">;printf<"-forcomplexinputs,32<=N<=16384\n">;#elseprintf<"-forrealinputs,64<=N<=8192\n>;printf<"-forcomplexinputs,32<=N<=4096\n">;#endifprintf<"PleasechangethesettingsinthefileFFTDef.h\n">;#else/*inthecaseofTS201,atthebeginningoftheprogramthecachemustbeenabled.Theprocedureiscontainedincache_enablemacrothatusestherefreshrateasinputparameter-ifCCLK=500MHz,refresh_rate=750-ifCCLK=400MHz,refresh_rate=600-ifCCLK=300MHz,refresh_rate=-ifCCLK=250MHz,refresh_rate=375*/#ifdef__ADSPTS201__asm<"#include<defts201.h>">;asm<"#include<cache_macros.h>">;asm<"cache_enable<750>;">;asm<"#include<ini_cache.h>">;asm<"#include<fftdef.h>">;asm<"preload_cache;">;#endiftmp_i0=__builtin_sysreg_read<__CCNT0>;//readinitialcyclefor<i=0;i<4800;i++>{input1[i]=input[i];//信号传输至input1变换缓冲区}/////////////////////////////FFT运算///////////////////////////fft32<&<input1>,&<ping_pong_buffer1>,&<ping_pong_buffer2>,&<output>,N,COMPLEX>;//8192点FFT变换for<i=0;i<N;i++>{real[i]=output[2*i];//线性调频信号FFT变换后实部imag[i]=output[2*i+1];//线性调频信号FFT变换后虚部}//////////////////////////复数乘法运算/////////////////////////////for<i=0;i<N;i++>{input1[2*i]=real[i]*real_coff[i]-imag[i]*imag_coff[i];input1[2*i+1]=-real[i]*imag_coff[i]-real_coff[i]*imag[i];//取共轭}//////////////////////IFFT运算///////////////////////////////fft32<&<input1>,&<ping_pong_buffer1>,&<ping_pong_buffer2>,&<output>,N,COMPLEX>;//8192点FFT变换for<i=0;i<N;i++>{real[i]=output[2*i]/N;//imag[i]=-output[2*i+1]/N;//取共轭}/*到此完成了脉冲压缩.也就是完成了匹配滤波*////////////////////////窄脉冲幅度/////////////////////////////////////////////////////for<i=0;i<N;i++>{real[i]=sqrt<real[i]*real[i]+imag[i]*imag[i]>;//求复数模}max=real[0];for<i=0;i<2*N;i++>//求脉压后模最大值{if<real[i]>max>{max=real[i];}}for<i=0;i<2*N;i++>//衰减变换{real[i]=real[i]/max;real[i]=20*log10<real[i]>;}tmp_i1=__builtin_sysreg_read<__CCNT0>;//printf<"cyclecount=%d",tmp_i1-tmp_i0>;//printthecyclecount#endif}题目三:基于ADSP-TS101的雷达信号处理机实现一、绪论1.1背景经过几十年的发展.今天的雷达提供的有关目标的信息已经远远超出了它最初的定义.不论在地面、舰船、飞机、导弹、太空都活跃着雷达的身影.雷达的原理已经在几兆赫兹到紫外线的频率范围内得到了应用.雷达的性能和用途也发生了巨大的变化.雷达的发明使人类在军事、通讯、航空、航体、跟踪测量等领域的技术发生了本质的重大飞跃。雷达信号处理是雷达系统的一个极其重要的组成部分.用于雷达在复杂背景〔包括杂波和干扰下对目标的检测和目标信息的提取.现代雷达技术的发展越来越倚重于信号处理。雷达信号处理不仅大大的提高了在复杂背景下对目标的检测能力.而且也提供了更加丰富的信息.如对目标进行成像及目标识别等。因此.雷达信号处理是当前雷达技术研究中最活跃、发展最为迅速的部分之一。近几十年.雷达信号处理的研究取得了长足的进步和发展.五十年代实现了抑制杂波的时域滤波以及对复杂信号的匹配滤波.六十年代实现了对有源干扰的空域滤波.并且提出了对变化环境的自适应滤波。六十是年代以来随着数字技术的实际应用和不断发展.使得雷达整体性能大幅度提高。进入到八十年代之后.微处理技术.特别是数字信号处理器的发展.是雷达信号处理完成了从模拟到数字的转化.除了极大的提高了雷达信号处理机的性能之外.还大大提高了整个处理机的系统可靠性.减小了体积和功耗.使得其应用范围变得日益广泛。不同的信号处理领域对数据处理的速度要求不尽相同。在一般情况下.通信和语音信号处理中需要每秒几千万次到几亿次运算.在视频信号和图像处理中.需要每秒几亿次到几十亿次运算.而在雷达和声纳信号处理中.常需要每秒几十亿到几百亿次运算。此外.通信、语音、图像处理中信号动态范围有限.一般用定点运算就可以满足工作要求.而雷达和声纳信号处理需要较大的数据动态范围和数据精度.按定点处理可能发生溢出.往往必需用浮点运算完成.同时.雷达信号处理不同于其他类型的信号处理.不仅运算量大.数据吞吐量也很大.这样对处理单元的输入输出速度和处理机互联网络的通信能力都有很高的要求。因此.雷达信号处理采用高速度.高精度.大动态范围.高数据吞吐量的处理系统势在必行。正是由于雷达信号处理的这些要求.使得在进行系统设计前必须进行DSP选择。DSP分为专用DSP和通用DSP两种.前者的运算是用硬件直接实现的.速度快.但是灵活性差.而且几乎都是定点的.精度和动态范围有限.通用DSP的运算和处理是基于软件实现的.兼容性好.可根据实际需要选择采用定点或浮点运算.具有较强的扩展能力.而且在速度方面也已超过某些专用DSP。1.2概述本文研究的目的是实现基于通用DSP—TSl01的雷达信号处理机。该信号处理机主要由脉冲压缩<PC>.动目标检测<MTD>.自动角测量.恒虚警处理<CFAR>等几个模块组成。二、系统硬件设计2.1处理器简介AD公司的ADSP-TS101STigerSHARCDSP〔简称TS101是一款高性能的数字信号处理器.是SHARCDSP的下一代产品。与SHARCDSP相比.TigerSHARC在速度、内部存储器容量、处理器的体系结构.以及处理器提供的外部资源方面都做了改进.更加适用于构成各种不同的并行多处理器系统。概括的讲.TS101具有如下主要特点:〔1核时钟频率。TS101有两种型号.一种内部核时钟频率可以达到300MHz.即指令周期3.3ns。另一种内部核时钟频率可达250MHz.即指令周期4ns。〔2片内两个计算块——X和Y。每个运算块有一个64bitALU.一个乘法器.一个64bit移位器和一个由32个寄存器构成的寄存器组.可以执行定点和浮点的算术逻辑等通用运算。而SHARCDSP只有一个计算块.相比之下TS101具有更强的运算能力。〔3三条内部地址/数据总线。每条总线都连接到三个内部存储器块中的一个。三条总线都是128bit宽.可以在任何一个周期使用任意一条总线传送多达四条指令或四个对其的数据。这样TS101内核可以在任何一个周期并行访问三个存储块.一个取指令.两个访问数据。〔4有两个整数算术运算逻辑单元J-IALU和K-IALU。每个IALU都包含一个寄存器堆和8个专用的循环缓冲寄存器。两个IALU能提供更强大的地址产生能力和通用的整数操作。〔5有6M位的大容量片内SRAM。分为三个2M位的存储块M0、M1和M2.每一个存储块都能够单独存储程序、数据或同时存储程序和数据。〔6DMA控制器。其拥有14个DMA通道.提供了在处理器核不干预条件下的零开销数据传送。〔7SDRAM控制器。SDRAM的地址、数据引脚可以与TigerSHARC的直接相连。另外.TigerSHARC提供专用的寻址空间来支持SDRAM。〔84个链路口。其支持点对点的高贷款数据传送.通过单个链路口可以以250Mbytes/s的速率进行数据传输。四个链路口为处理器与处理器之间的通讯提供了一个良好的途径.总吞吐量多达每秒1Gbytes。〔9多处理器特性。当单个DSP芯片组成的系统不能满足处理要求时.TS101通过外部口或者链路口与其它TS101相连构成多处理器系统。TS101的外部总线支持多达8个DSP外加Host处理器的并行总线连接。在构成多处理器系统时.处理器之间无论是采用共享总线方式.还是采用链路口相连方式.都不需要任何外加控制.实现无缝连接.在并行总线上可以以800Mbytes/s的速率进行数据传输。2.2雷达信号处理机系统构成雷达信号处理系统由中频信号相干检波模块、脉冲压缩模块、相参积累、参数检测〔包含速度、距离、方位角等参数的MTD和恒虚警处理及大部分组成。中频信号相干检波模块主要工作为:对A/D变换后送来的25M中频信号进行相干检波.使数字回波信号变成分离为I、Q两路的零中频信号.然后对其进行抽样处理.最后把抽样后的数据打包成32bit送往脉冲压缩模块。其中低16bit为I路信号,高16位为Q路信号。其系统原理如图1所示:目标距离速度航向俯仰角检测相参积累恒虚警处理和路脉冲压缩模块目标距离速度航向俯仰角检测相参积累恒虚警处理和路脉冲压缩模块中频信号相干检波模块中频信号相干检波模块A/D和路中频A/D差路脉冲压缩模块A/D差路中频差路脉冲压缩模块A/D图1雷达信号处理机系统原理如图1所示.中频信号相干检波模块将和/差两路信号分别送入和路/差路脉冲压缩模块,两路脉冲压缩各自独立运行.把脉压结果送入相参积累.经过相参积累后系统的信噪比有所提高.利于检测模块对距离、速度、方位角等参数的检测.当完成这些工作后。结合检测后的数据与初始判定门限进行恒虚警处理。该雷达信号处理机一共用三片TSl01完成相干检波后信号处理.其硬件结构如图2所示。图2给出了主要的芯片以及各芯片之间的信号连接关系。其中.TSl01一A和TSl01一B分别完成和路和差路数据的脉冲压缩.TSl01-C完成相参积累、MTD检测、角度测量、CFAR处理等工作。TSl01一A和TSl01一C采用EPROM引导方式.TSl01-3采用链路口引导方式。在对引导芯片EPROM-A作配置时.除了在EPROM-A中装载和路脉压片<A>所需的程序及相关参数以外.还要将差路脉压片<B>所需的程序及相关参数一并装载。当TSl01一A经EPROM—A成功引导后.它不仅从EPROM中获得了自身正常运行所需的程序和相关参数.而且也获得了差路<B>所需的相关程序信息;通过硬件连接的链路口1<A>和链路口0<B>.TSl01-B经链路口引导.从TSl01一A中加载自身程序运行所需的相关信息。从图中可以看出.脉冲压缩和检测片之间采用链路口传输数据信息.其中和路脉冲压缩后的数据利用TSl01一A和TSl01一C各自的链路口0传输.差路脉冲压缩后的数据利用TSl01-B和TSIOI-C各自的链路口l传输。这样的设计主要考虑到TSl01--C在作数据检测时需要频繁的和外部SDRAM交换信息.利用TSl01的链路口一方面充分利用了器件本身的硬件资源.另一方面也避开了多个设备同时请求总线时造成的总线冲突.提高了系统的运行速度。图2雷达信号处理机硬件结构简图不论和路还是差路脉冲压缩.除了引导方式不同以外.其工作原理与实际工作流程是完全一致的.因此.TSl01一A和TSl01一B有部分管脚接收同样的控制信息.如图所示:差转控制提示当前差路信号接收的是航向差还是俯仰差信号;状态标志0/1共同标志当前脉冲重复周期、脉宽是处于何种状态:同步脉冲中断到来时.提示前端开始往TSl01输送数据<经过相干检波后的数据>.TSl01根据此中断信号决定何时装载DMA;前端每传输一个数据.发送一次DMA请求.DMA传输根据请求相应的从外部总线传输一个数据到内部存储器。TSl01一C的状态改变输出则是由检测后的结果决定。三、系统软件设计3.1脉冲压缩的实现随着飞行技术的飞速发展.对雷达的作用距离、分辨能力、测量精度和单值性等性能指标提出了越来越高的要求。测距精度和距离分辨力对信号形式的要求是一致的.主要取决于信号的频率结构.为了提高测距精度和距离分辨力.要求信号具有大的带宽.而测速精度和速度分辨力则取决于信号的时域结构.为了提高测速精度和速度分辨力.要求信号具有大的时宽。除此之外.为了提高雷达系统的发现能力.要求雷达信号具有大的能量。由此可见.为了提高雷达系统的发现能力、测量精度和分辨力要求雷达信号具有大的时宽、带宽能量乘积。但是在系统的发射和馈电设备峰值功率受限的情况下.大的信号能量只能靠加大信号的时宽来得到。测距精度和距离分辨力同测速精度和速度分辨力以及作用距离之间存在着不可调和的矛盾。为了解决这个矛盾.人们提出了脉冲压缩理论.脉冲压缩技术的实现是指雷达通过发射机发射款脉冲信号而接收信号经过压缩处理后获得窄脉冲的过程.脉冲压缩可以使雷达在峰值发射功率大大降低的情况下同时获得长脉冲的高能量和短脉冲的分辨率两方面的优点.它较好的解决了雷达脉冲峰值功率受限和距离分辨率之间的矛盾。同时.宽脉冲的使用可以使多普勒系统的分辨率提高.相应提高速度分辨率。由于脉冲压缩技术是对回波信号做相关处理.故系统还具有较高的抗干扰性。本系统脉冲压缩分为和/差两路.两路脉压分别对前端的和路回波和差路回波进行脉冲压缩处理。和路脉冲压缩的结果用于目标距离、速度的检测以及在测角时作为基准信号;差路脉压信号用于航向/俯仰误差角测量。和路脉冲压缩片在系统启动时.采用EPROM引导方式.从EPROM中载入程序及相关参数<包含差路脉压所需的程序和参数>.在对自身<DSP>做初始化的同时.通过与差路脉压片硬件相连的链路口对差路脉压片进行引导.完成差路脉压片的程序及参数装载。除了引导方式不同以外.和路、差路脉压工作原理与程序流程完全一致。图3给出了脉冲压缩程序的流程图以及时序图。以和路脉冲压缩为例.说明脉冲压缩的实现过程。3.1.1程序及系数调入如图2所示.我们对TSl01-A采用EPROM启动方式.在硬件设计时将BMS引脚设置为低。这样当系统加电时.TSl01检测到BMS为低电平则会自动将程序及相关参数由EPROM载入。在整个脉冲压缩过程中.系统运算所设计的参数主要为三种状态的旋转因子以及对应各个状态的匹配滤波器系数。旋转因子及匹配滤波器系数均由MATLAB软件产生.其中.我们将原始线性调频信号匹配滤波器系数与海明窗函数在MATLAB中预先进行频域相乘.把其结果作为最后载入DSP的匹配滤波器系数.这样.在DSP处理时就可省略脉压过程中的窗函数滤波过程.一定程度上节省了硬件资源.节省了整个程序运行指令周期.提高了效率。图3脉冲压缩程序流程图及时序图为了在程序处理时最大可能的利用TSl01的总线资源.提高脉压处理的速度.针对TSl016Mbit片上存储区分为MO.M1.M2三个区域及其各区域可具有独立总线的优点.我们将程序代码放在片上存储区MO.旋转因子及匹配滤波器系数放在M2.而输入及输出乒乓存储区设置到M1.这样在进行脉压处理中最耗时间的FFT和IFFT运算时.便可充分利用TSIOI的指令并行优势.试验证明.这样设置比将所有参与运算的数据采用其他任何方式存放至少节省10%的指令周期。3.1.2相干检波后的数据输入DSP的直接内存访问<DMA>方式可以在不干扰内核操作的情况下独立运行.对于外部脉压数据的输入.我们采取了中断处理与外部DMA传输相结合的方式。当系统初始化完成后.TS101等待IRQ0中断.中断到来时.TS101进入IRQ0中断程序.完成外部DMA参数预装处理后.关闭IRQ0中断.开启外部DMA中断。此时.DMA的源地值可为TS101外部存储器映射中任意地址.目的地址为内部存储区M1中输入乒乓存储区其中一个。每一次外部相干检波模块送数据至数据总线低32Bit时.同时通过DMAR0引脚向TS101发送DMA请求.每接受一次请求.DMA进行一个数据的传递.同时DMA的传输数据值总量减一。当DMA的传输数据值总量减为零时.本次DMA结束.DMA中断产生.TS101进入DMA中断程序.在DMA中断程序中.重新打开IRQ0中断.关闭外部DMA中断.同时在程序中.将DMA结束标志变量景1.把下一次DMA参数中的目的地址指针指向输入乒乓存储区的另外一个。因为采用了上述方式.在整个脉压过程中.主程序完全不用考虑外部数据的传输过程.只需在每次脉压处理之前检测DMA结束标志变量是否为1.然后直接调用乒乓存储区的数据即可进行后续处理。3.1.3脉冲压缩处理及数据输出外部送入的数据采用32Bit数据宽度.其中高16位为I路信号.低16位为Q路信号.因此.在进行FFT之前.必须将乒乓存储区中的数据解包.同时为避免定点数据运算溢出时舍位所造成的误差.必须将解包后的数据转换为浮点数据。定点转浮点程序运行前首先对DMA结束标志进行循环判断.如果其值为1.表示DMA传递结束.可以进入数据转换.否则将继续等待。一旦进入定/浮转换程序.首先要将DMA结束标志置0以避免下次循环出现错误操作。脉压程序根据FLAG0.FLAG1的值确定当前脉冲压缩处于何种状态.载入对应的旋转因子以及匹配滤波器系数。而在实际工作中雷达只需检测目标距离.速度.方位角等信息。故脉压结果的幅度值绝对大小对目标检测没有大的影响.为了减少运算周期.所以IFFT程序中没有把脉压结果值与傅立叶变换点数N相除。由于FFT程序与IFFT程序原理基本一致.故只需对FFT程序中涉及旋转因子的相应计算的加减号加以修改.修改后的FFT程序即可成为IFFT程序.而且两个程序可调用相同旋转因子.极大的节省了固定数据所占的内存空间。当脉压过程结束后.需将结果送入参数检测模块。TSl01具有14个独立的DMA通道.其链路口操作也是采用DMA传输模式.所以我们在实际设计时只需装载对应的链路口DMA参数即可。如图2所示.参数检测模块与脉冲压缩模块有一组链路口设计为硬件连接.一旦接收方与发送方在彼此对应的链路口都装载完各自的DMA参数后.数据传输就开始在不干扰内核运行的情况下自动进行。3.1.4脉冲压缩处理工作时序我们以状态1说明工作时序<图3>.1状态脉冲重复周期为200us.外部输入数据600点<5MHZ数据流>.所需时间120us.而DMA的传输速度远高于数据输出率.可以认为当数据输入结束后.外部DMA传输同时结束.DSP在200MHZ主频下.完成整个脉冲压缩过程所需时间为118.5us.链路口传输时钟设置为1/4核心时钟<DIV4>.即50M.其传输完1024点复数所需时间约为80us。在图中prt为脉冲重复周期.e_dma表示外部DMA传送周期.ope_t为脉冲压缩处理周期.l_dma为脉压结果经链路口输出数据至检测模块周期。对于prt其高电平为雷达发射脉冲时间.低电平表示接收回波时间。其它的高电平表示工作时间.低电平为等待时间。其他两种状态时序与1状态基本一致.只是周期相应缩短而己。显然.脉冲压缩模块的实时性得到了很好的满足。3.2参数检测模块的实现参数检测模块主要通过相参积累.模平方最大值求取等一系列运算完成距离、速度、角度等参数的检测.同时.根据参数决定雷达的工作状态及完成恒虚警处理。3.2.1主程序如图4所示.系统启动时.DSP首先对程序运行所需的各个状态参数进行初始化。这些参数包括:三种状态下的DMA传送参数<链路口DMA和外部DMA>、每一种状态的积累周期数、初始门限、状态切换点、以及部分标志变量等;另外.由于该DSP外接一个外部存储器.必须在程序运行前对此外部存储器做初始化。图4参数检测主程序初始化完成后.从外部端口读取程序所需的状态信息.这个状态信息主要标识当前雷达的脉冲重复频率、脉冲宽度。根据这个状态信息确定到底在DMA装载时应该载入哪一个状态的值。同时.一旦状态确定.其对应的积累周期内的脉冲数、状态切换点.恒虚警处理时的参考单元数等也相应确定。DSP在初始化时.已对各状态的参数加以定义.这时.程序只需根据外部端口读入的状态信息对后续程序所需的变量做相应配置即可。主程序核心部分为一个循环.循环涉及两个变量判断.一个是跟踪启动标志变量.另一个为状态改变标志变量.初始化时这两个变量均为0。循环开始时.首先对状态改变标志作判断.如果其值为0.则对跟踪启动标志判断.该标志为0.表示雷达目前没有发现目标.程序进入搜索子程序.雷达进行大范围搜索.直到发现目标为止。如果该标志为1.证明雷达在搜索状态发现有目标存在.这时候.信号处理机应该对目标信息作进一步的测量.并将信息送至雷达天线饲服机构.以控制天线始终对准目标.这一切工作均由跟踪子程序完成。如果进入循环前.检测到状态改变标志为1.则说明目标运动到状态切换点上.为了更好的跟踪目标.需要对雷达的工作状态作切换.主程序跳出循环。需要注意的是.信号处理部分并非马上开始下一个状态的工作.而是必须等待链路口DMA将当前传输数据操作完成。因为TSl01的DMA操作不允许往当前正在传递数据的DMA重新写入新的传输参数.如果强行执行.只会导致该DMA锁死。而且.链路口的DMA是和前端脉压链路口DMA成对使用的.如果中止自己的链路口传输.必然会导致脉压部分的链路口传输同时中止.引起时序上出现混乱。为此必须循环判断链路口DMA传输是否结束。一旦链路口DMA传输结束.TSl01发出状态改变以及新状态信息.同时将状态改变标志清零。然后读取外部端口信息并加以判断<外部端口信息来自于一片FPGA.该FPGA主要用于控制信号处理各部分协同工作>。当检测到新状态开始指令后.程序返回配置变量处.用对应于新状态的各参数替换状态改变前的变量值.然后开始新的循环。3.2.2搜索子程序进入搜索子程序后.首先需要对链路口DMA做初始化.因为搜索状态只需对和路数据做检测。因此在搜索子程序中对于差路数据在传输时只将其固定的送至片内一个地址区。考虑到其不参与运算.一个脉冲周期传送结束后.下一个脉冲周期仍然将数据放至同一地址。对于和路数据.需要对整个距离域作相参积累.因此必须对积累周期的每一组数据都保存。考虑到相参积累的主要操作为FFT运算<FFT运算对其输入数据采用位反序寻址>.在DMA将数据传输到外部SDRAM的同时.应该完成数据重排。假设每一个脉冲周期传送数据点数为N.参与积累的脉冲周期数为K.则数据重排后.每一个周期的第i点数据和第i+1点数据之间地址间隔为2K<每一点数据都为复数.需要占两个地址单元>.即跳址存储.经过DMA传输后.在外部SDRAM的数据排列直接表现为同一个距离门的数据连续存放.这样为后面的FFT运算带来了方便。设置完DMA参数后.程序循环检测积累周期的数据传送是否结束.一旦传送结束.启动外部DMA.将外部SDRAM中的数据逐段载入内部存储器.实际操作时.一段数据量为32×128点数据<第一种状态32个距离门的数据、第二种状态16个距离门的数据、第三种状态8个距离门的数据>.每一次外部DMA传送结束.以中断方式开始下一次DMA传送.直到将积累周期内的数据全部传送至内部SRAM。为此.DMA的目的地址对应一个乒乓存储区。FFT取数与DMA输入数据交替使用乒乓存储区的不同区间。图5搜索子程序流图程序对外部DMA送来的数据进行FFT以及模平方最大值求取运算.将最大值对应的距离点i和最大值j记录下来。这个过程循环进行.直到积累周期内的数据全部完成运算。接下来将最大值j.与初始门限作比较.如果j小于初始门限.返回搜索程序入口。反之.认定雷达发现目标.记录j对应的值i.向外部设备发出目标截获信息.等待外部其他设备发出准备好的反馈信息。收到反馈信息后.将跟踪启动标志置1后返回主程序。3.2.3跟踪子程序在跟踪状态.需要检测目标的角度信息.因此需要在积累周期内将和路差路数据都传送至外部SDRAM.由于最后参与角度运算的只需要差路一个距离门的数据.因此对于差路数据的链路口DMA传送时.没有进行数据重排而采用顺序存储方式。这样可以减少DMA传送时的总线冲突.提高传输速度。和路传送方式与搜索状态一致。当积累周期数据传送完毕后需要对相关数据进行相参积累.与搜索状态不同的是此时不需要对整个距离域进行运算。前面已经提到搜索状态对最大值对应的距离点i作了记录.因此已经获取了目标初步的距离信息.我们只对i点本身以及其前后各L<三种状态工分别为:Ll=20、L2=10、L3=5>个点对应的距离门数据作相参积累即可。对于积累完的数据.需要从其中找出模最大值x并记录其对应的多普勒通道N1和距离门N2.如果x大于门限.记录对应该点的求模运算前的数据Y∑<复数>。并以.N1、N2作为下次跟踪的参考点。将对应距离门N2的差路数据通过外部DMA载入内部存储器.需注意的是.因为数据在存储至SDRAM时没有进行数据重排.所以在DMA取数时必须按跳址方式取数.数据点与点之间的地址差为2N<N为脉压后的数据点数>。对这一组差路数据作FFT后求出最大值并记录对应的数据Y△。有了上述信息.求出角度误差占<具体为航向还是俯仰角由脉压模块所发的识别信息决定>.求出多普勒频移发fd.依据公式fd=2v/λ<v为目标速度、λ为雷达发射信号波长>求出目标速度。根据当前状态以及N2.判断是否需要切换雷达工作状态。如果需要切换状态.需要在发送信息之前.将状态改变标志置l。在输出了角度、速度、距离、状态等信息后.需要根据回波信号作恒虚警处理。我们以N2:距离门FFT后的数据作为测量标准.以Nl点作为检测单元.两边各空出两个单元作为保护单元.选用GO--CFAR<选大统计恒虚警>.其参考单元数设为16.对两边参考单元数据求和取平均.然后选取其中的大者与一固定值相乘后作为动态门限实现恒虚警。如图5所示.雷达如果在前一个积累周期处于跟踪状态.当前周期经过相参积累后发现记录区内没有新的数据.此时雷达并不马上转入搜索状态.而是进入记忆跟踪.在记忆跟踪状态.输出目标丢失前的相关数据.如果在5秒后仍然没有检测到新的信息.雷达认定目标丢失.将跟踪启动标志置0后返回主程序。图6跟踪子程序流程图四附录部分主程序为:#include<defts101.h>#include<stdlib.h>#include<math.h>#include<stdio.h>#include<stats.h>//使用floatmeanf<constfloat*_a,int_n>;#include<sysreg.h>//使用系统计数器#include<FFTDef.h>#include"parameter.h"//雷达各参数设定#include"var.h"//外部定义变量externfft_flp32<float*,float*,float*,float*,int,int>;//8192点FFTexternfft_16<float*,float*,float*>;//16点FFTexternComplexVectorDotProduct<float*,float*,int,float*>;//复数点乘volatileinttmp_i0,tmp_i1;//用于计数〔程序各段计时voidmain<>{inti,j,k,n,temp_index;floatref_left,ref_right,ref,ref_Alpha;tmp_i0=__builtin_sysreg_read<__CCNT0>;//readinitialcyclecountfor<i=0;i<N;i++>{fft_input_amp[i]=sqrt<fft_input[2*i]*fft_input[2*i]+fft_input[2*i+1]*fft_input[2*i+1]>;}i=0;//断点,绘图观察脉冲回波信号幅度/**************************频域脉压过程〔匹配滤波频域实现************************************/tmp_i0=__builtin_sysreg_read<__CCNT0>;//readinitialcyclecountfft_flp32<fft_input,ping_pong_buffer1,ping_pong_buffer2,fft_output,N,COMPLEX>;//做复数FFT:X<k>=DFT[x<k>];ComplexVectorDotProduct<fft_output,coeff_fft,N,pc_fft>;//做复数点乘:Y<k>=X<k>*H<k>;//做复数IFFT:y<k>=IFFT[Y<k>]=<1/N>*conj[DFT[conj[Y<k>]];分三步来完成:〔1conj[Y<k>];〔2DFT[conj[Y<k>];〔3<1/N>*conj[DFT[conj[Y<k>]]//第一步:fft_input=conj[Y<k>];for<i=0;i<N;i++>{fft_input[2*i]=pc_fft[2*i];fft_input[2*i+1]=-pc_fft[2*i+1];}//第二步:fft_out=DFT[fft_input]=DFT[conj[Y<k>];fft_flp32<fft_input,ping_pong_buffer1,ping_pong_buffer2,fft_output,N,COMPLEX>;//第三步:y<k>=pc_freq0=<1/N>*conj[fft_out]=<1/N>*conj[DFT[conj[Y<k>]];for<i=0;i<N;i++>{pc_freq0[2*i]=fft_output[2*i]/N;pc_freq0[2*i+1]=-fft_output[2*i+1]/N;}/*到此完成了脉冲压缩.也就是完成了匹配滤波*/tmp_i1=__builtin_sysreg_read<__CCNT0>;//readfinalcyclecountprintf<"thecyclecountforcompressinfrequencyspace=%d\n",tmp_i1-tmp_i0>;/*printthecyclecount*////**************************去掉暂态点************************************/for<i=0;i<M;i++>//#defineTempPointNumber41//前暂态点的个数可以认为是滤波系数个数减一后的一半。{pc_freq1[2*i]=pc_freq0[2*<i+TempPointNumber-1>];pc_freq1[2*i+1]=pc_freq0[2*<i+TempPointNumber-1>+1];}//计算脉压后的幅度〔去除暂态点后for<i=0;i<M;i++>{PC[i]=sqrt<pc_freq1[2*i]*pc_freq1[2*i]+pc_freq1[2*i+1]*pc_freq1[2*i+1]>;}i=0;//断点.观察脉压后结果〔窄脉冲幅度。/**************************MTI************************************************************************/tmp_i0=__builtin_sysreg_read<__CCNT0>;//一次对消<邻近双脉冲对消.SampleNumber是脉冲重复周期Tr内采样点数for<i=0;i<M;i++>{pc_freq1_re[i]=pc_freq1[2*i];pc_freq1_im[i]=pc_freq1[2*i+1];}for<i=0;i<MTIPoint;i++>{MTI_re[i]=pc_freq1_re[i+SampleNumber]-pc_freq1_re[i];MTI_im[i]=pc_freq1_im[i+SampleNumber]-pc_freq1_im[i];}//计算MTI后的幅度〔时域for<i=0;i<MTIPoint;i++>//获得MTI实谱{MTI[i]=sqrt<MTI_re[i]*MTI_re[i]+MTI_im[i]*MTI_im[i]>;}tmp_i1=__builtin_sysreg_read<__CCNT0>;//readfinalcyclecountprintf<"thecyclecountforMTIprocess=%d\n",tmp_i1-tmp_i0>;//printthecyclecounti=0;//断点.绘图观察MTI结果.双击窗口.弹出大图/**************************MTD*************************************************************************/tmp_i0=__builtin_sysreg_read<__CCNT0>;//重排数据.进行相参积累,即MTDfor<i=0;i<SampleNumber;i++>{for<j=0;j<PulseNumber;j++>//数据抽取。抽取16个回波脉冲中.各个回波脉冲重复周期内同位置的数据。有多少个回波脉冲就有多少个数据。{input[j*2]=pc_freq1_re[i+j*SampleNumber];input[j*2+1]=pc_freq1_im[i+j*SampleNumber];}fft_16<input,output,twiddles16>;//使用FFT实现多普勒滤波器组。for<j=0;j<PulseNumber;j++>{MTD_re[i+j*SampleNumber]=output[j*2];MTD_im[i+j*SampleNumber]=-output[j*2+1];}}tmp_i1=__builtin_sysreg_read<__CCNT0>;//readfinalcyclecountprintf<"thecyclecountfo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园学前教育资助培训
- 浙江省丽水市2024-2025学年高二上学期期末教学质量监控历史试卷(含答案)
- 二零二五年度商业街区运营管理合同
- 二零二五年度足疗店技师绩效奖金与提成分配合同
- 2025年度喜剧电影编剧聘用合同
- 二零二五年度监控设备维护与智能监控平台维护与升级合同
- 二零二五年度砂石行业市场准入与监管合同
- 幼儿园美术活动海底世界
- 2025年超市承包合同范本
- 情侣生日检讨书
- 2024-2025学年成都高新区七上数学期末考试试卷【含答案】
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 2025年浙江杭州市西湖区专职社区招聘85人历年高频重点提升(共500题)附带答案详解
- 《数学广角-优化》说课稿-2024-2025学年四年级上册数学人教版
- “懂你”(原题+解题+范文+话题+技巧+阅读类素材)-2025年中考语文一轮复习之写作
- 2025年景观照明项目可行性分析报告
- 2025年江苏南京地铁集团招聘笔试参考题库含答案解析
- 2025年度爱读书学长参与的读书项目投资合同
- 电力系统分析答案(吴俊勇)(已修订)
- 化学-河北省金太阳质检联盟2024-2025学年高三上学期12月第三次联考试题和答案
- 期末复习试题(试题)-2024-2025学年四年级上册数学 北师大版
评论
0/150
提交评论