版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第9章TS系列DSP系統(tǒng)設(shè)計(jì)實(shí)例9.1通信信號(hào)參數(shù)估計(jì)的例子9.2脈沖分選的例子9.3通信信號(hào)監(jiān)測系統(tǒng)設(shè)計(jì)實(shí)例9.4鏈路口耦合構(gòu)成多處理器系統(tǒng)9.5多DSP系統(tǒng)的設(shè)計(jì)實(shí)例9.1.1基于高階循環(huán)累積量的載頻估計(jì)
在移動(dòng)無線通信信道中,由于存在傳播延時(shí)及多普勒效應(yīng),信號(hào)的載波會(huì)出現(xiàn)偏移。如果檢測器是相干的,那么接收機(jī)就必須估計(jì)這種載波偏移。盲前向載波偏移估計(jì)方法對(duì)于解決突發(fā)模式傳輸和高效率調(diào)制中的同步問題是非常有潛力的,因?yàn)樗恍枰荛L的捕獲時(shí)間,而且不需要那些浪費(fèi)帶寬的訓(xùn)練序列。因此,盲前向載波偏移估計(jì)方法經(jīng)常應(yīng)用于廣播網(wǎng)絡(luò)的同步,以及那些匹配濾波器前面的粗載頻偏差估計(jì)環(huán)節(jié)。9.1通信信號(hào)參數(shù)估計(jì)的例子這里利用接收序列的高階循環(huán)統(tǒng)計(jì)量來完成數(shù)字通信信號(hào)的盲前向載波偏移估計(jì)。接收機(jī)接收的信號(hào)可以表示為(9.1-1)定義x(n)的四階共軛時(shí)變相關(guān)為(9.1-2)其中。將x(n)帶入上式可得(9.1-3)(9.1-4)9.1.2通信信號(hào)參數(shù)分析的硬件及軟件實(shí)現(xiàn)
通信信號(hào)參數(shù)分析的硬件組成如圖9.1-1所示。這是一個(gè)零中頻接收機(jī),接收的射頻信號(hào)通過正交混頻器下變頻到直流,本振是一個(gè)固定的自由振蕩器。由于沒有使用鎖相本振,因此接收信號(hào)和本振的頻率與相位必然存在一定的偏差。IQ兩路基帶信號(hào)送到AD進(jìn)行量化,經(jīng)過FPGA緩存后,送給DSP進(jìn)行后續(xù)處理,其中包括對(duì)殘留的載波頻率偏差估計(jì)等。圖9.1-1通信信號(hào)參數(shù)分析硬件組成下面給出在VisualDSP++5.0環(huán)境中實(shí)現(xiàn)基于高階循環(huán)累積量的載頻估計(jì)算法。
在實(shí)際硬件實(shí)現(xiàn)中IQ數(shù)據(jù)由AD量化得到,在這里為了程序的完整,首先產(chǎn)生了一段模擬數(shù)據(jù)。程序如下所示:
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<complex.h>
#include"FFTDef.h"
#defineM1024 //數(shù)據(jù)長度
#defineRAND_RANGE2147483647.0 //rand函數(shù)產(chǎn)生隨機(jī)數(shù)的范圍
#definePI3.1415927
#defineSNR5 //信噪比dB
#defineN_FFT1024 //FFT的點(diǎn)數(shù)
#pragmaalign4096
complex_floatc40[M]; //四階共軛時(shí)變相關(guān)
#pragmaalign4096
complex_floats[M]; //已調(diào)復(fù)信號(hào)
#pragmaalign16
floattwiddles[MAX_FFT_SIZE]={
#include"twid1k_m.dat" //FFT旋轉(zhuǎn)因子
};
floatC40_Amp[M]; //循環(huán)四階累積量幅度,為了方便繪圖,將以下三個(gè)變量設(shè)為全局變量
floatalfa[N_FFT]; //循環(huán)頻率
floatS_Amp[M]; //s的FFT幅度
externvoidFFT32(floatinbuf[],floatoutbuf[],intsize,intrealOrComplex);//FFT函數(shù)聲明,參見VisualDSP++?
//平臺(tái)自帶的例子
intmain(intargc,char*argv[])
{
intN;
int*sc; //二進(jìn)制符號(hào)序列
floatfs; //采樣率Hz
floatfc; //載頻Hz
floatsr; //符號(hào)速率Hz
inti,j;
floattheta,rayleigh; //相位,Rayleigh噪聲
complex_floatc20;
floatsigma; //高斯白噪聲方差
intN_FFT_2;
complex_floatS[M]; //s的FFT結(jié)果
complex_floatC40[M]; //循環(huán)四階累積量
floatfMax;
floatfe; //載頻偏差的估計(jì)結(jié)果
fs=320; //采樣率Hz
sr=45; //符號(hào)速率Hz
fc=20; //載頻Hz
N=M*sr/fs+1; //計(jì)算二進(jìn)制符號(hào)的個(gè)數(shù)
sc=malloc(N*sizeof(int)); //為二進(jìn)制符號(hào)分配空間
if(sc==NULL) //為二進(jìn)制符號(hào)分配空間失敗則終止
{
return-1;
}
for(i=0;i<N;i++) //產(chǎn)生二進(jìn)制符號(hào)序列
{
sc[i]=(rand()%2)*2-1;
}
for(i=0;i<M;i++) //過采樣以及調(diào)制
{
j=(int)(i*sr/fs)+1;
theta=2*PI*fc*i/fs;
s[i].re=sc[j]*cos(theta);
s[i].im=sc[j]*sin(theta);
}
sigma=sqrt(0.5/powf(10.0,SNR/10.0));
for(i=0;i<M;i++) //疊加高斯白噪聲
{
theta=-2*PI*rand()/RAND_RANGE;
rayleigh=sigma*sqrt(-2*log(rand()/RAND_RANGE));
s[i].re=s[i].re+rayleigh*cos(theta);
s[i].im=s[i].im+rayleigh*sin(theta);
}
//對(duì)s進(jìn)行FFT
FFT32((float*)s,(float*)S,N_FFT,COMPLEX_DATA);
N_FFT_2=N_FFT>>1;
for(i=0;i<N_FFT_2;i++) //求頻譜幅度,F(xiàn)FT結(jié)果平移
{
S_Amp[i]=cabsf(S[i+N_FFT_2]);
S_Amp[i+N_FFT_2]=cabsf(S[i]);
}
for(i=0;i<M;i++) //計(jì)算四階共軛時(shí)變相關(guān)
{
c20=cmltf(s[i],s[i]);
c40[i]=cmltf(c20,c20);
}
//對(duì)四階共軛時(shí)變相關(guān)進(jìn)行FFT
FFT32((float*)c40,(float*)c40,N_FFT,COMPLEX_DATA);
for(i=0;i<N_FFT_2;i++)//求頻譜幅度,F(xiàn)FT結(jié)果平移
{
C40_Amp[i]=cabsf(C40[i+N_FFT_2]);
C40_Amp[i+N_FFT_2]=cabsf(C40[i]);
}
for(i=0;i<N_FFT;i++) //循環(huán)頻率
{
alfa[i]=(i-N_FFT_2)*fs/N_FFT;
}
fMax=0;
fe=0;
for(i=0;i<N_FFT;i++) //搜索頻譜幅度最大的頻點(diǎn)
{
if(C40_Amp[i]>fMax)
{
fMax=C40_Amp[i];
fe=i;
}
}
fe=0.25*(fe-N_FFT_2)*fs/N_FFT; //載頻偏差估計(jì)
printf("fe=%f\nHz",fe); //打印載頻偏差估計(jì)值
return0;
}首先,程序中產(chǎn)生了一個(gè)信噪比為5dB的BPSK信號(hào),存放在數(shù)組s[]中,對(duì)其進(jìn)行譜分析,結(jié)果存為S[]。BPSK信號(hào)頻譜的幅度為S_Amp[],將其頻譜用VisualDSP++5.0的繪圖功能繪制出來。對(duì)圖形進(jìn)行配置的方法如圖9.1-2所示,在PlotConfiguration中選擇X-YPlot,X坐標(biāo)選擇變量alfa[],Y坐標(biāo)選擇變量S_Amp[]。最終繪制的結(jié)果如圖9.1-3所示,可以看出從這里恢復(fù)其載頻是不容易的。然后,程序中計(jì)算四階共軛時(shí)變相關(guān)c40[];最后,程序調(diào)用函數(shù)FFT32()計(jì)算循環(huán)四階累積量。FFT32(?)是進(jìn)行快速傅立葉變換的函數(shù),是VisualDSP++5.0環(huán)境中的一個(gè)例子,可以在安裝目錄下找到,限于篇幅,不在這里寫出。程序運(yùn)行完成后,同樣可以通過繪圖功能將循環(huán)四階累積量的幅度畫出來,如圖9.1-4所示??梢钥吹皆?dB的信噪比下,BPSK信號(hào)的載頻仍然可以清晰地出現(xiàn)在4fe的地方。
程序在最后進(jìn)行載頻偏差估計(jì),結(jié)果保存在變量fe中,經(jīng)printf函數(shù)打印出來。圖9.1-2圖形繪制設(shè)置圖9.1-3信噪比為5dB的BPSK信號(hào)頻譜圖9.1-4信噪比為5dB的BPSK信號(hào)循環(huán)四階累積量幅度 9.2脈沖分選的例子
9.2.1PRI變換
在對(duì)雷達(dá)信號(hào)的偵察中,脈沖到達(dá)時(shí)間(TOA)是一個(gè)比較可靠的描述脈沖特性的參數(shù)。與脈沖的頻率和脈寬這兩個(gè)參數(shù)不同,TOA無法直接用于雷達(dá)信號(hào)的分析,而是將一組脈沖聯(lián)合起來估計(jì)脈沖的脈沖重復(fù)間隔(PRI)。真實(shí)的情況往往比較復(fù)雜,多部雷達(dá)的信號(hào)經(jīng)常會(huì)在同一個(gè)觀察周期內(nèi)到達(dá)接收機(jī),那么這些雷達(dá)脈沖的TOA就會(huì)交織在一起,這時(shí)候?qū)RI的估計(jì)就變得很困難,如圖9.2-1所示。較早的方法是對(duì)TOA進(jìn)行自相關(guān)分析,但是自相關(guān)分析會(huì)出現(xiàn)諧波。為了彌補(bǔ)這個(gè)缺陷,本文介紹一種PRI變換算法,該算法是將脈沖序列的TOA差值變換到一個(gè)譜上,由譜峰位置估計(jì)脈沖序列所對(duì)應(yīng)的PRI值,該譜也稱為“PRI譜”。
圖9.2-1脈沖交織的示意圖設(shè)脈沖的到達(dá)時(shí)間用脈沖前沿的時(shí)間來表示。令tn(n?=?0,1,2,…,N-1)為脈沖的TOA,其中N為采樣脈沖數(shù)。由于這里只考慮TOA這個(gè)單一參數(shù),可以把脈沖序列模型化為單位沖激函數(shù)的和,即(9.2-1)然后對(duì)g(t)進(jìn)行積分變換,即(9.2-2)其中,τ>0,這種算法稱之為PRI變換算法。|D(τ)|給出了一種PRI的譜圖,在代表真PRI值的地方將出現(xiàn)峰值。將式(9.2-1)代入式(9.2-2),得(9.2-3)9.2.2脈沖分選硬件和軟件實(shí)現(xiàn)
在對(duì)雷達(dá)脈沖進(jìn)行分選的設(shè)計(jì)中,主要包括以下硬件:脈沖描述字(PDW)形成FPGA、分選DSP等。其硬件框圖如圖9.2-2所示,輸入信號(hào)為視頻脈沖和瞬時(shí)頻率,進(jìn)入分選FPGA,在分選FPGA中把瞬時(shí)頻率、TOA、脈沖寬度(PW)等形成PDW,分選FPGA將所形成的PDW通過DMR0發(fā)送給分選DSP,在DSP中進(jìn)行信號(hào)的分選工作,生成分析結(jié)果。圖9.2-2信號(hào)分選模塊的構(gòu)成下面給出在DSP中進(jìn)行信號(hào)分選的部分代碼。在VisualDSP++5.0環(huán)境中實(shí)現(xiàn)前面的PRI變換算法,在實(shí)際硬件實(shí)現(xiàn)中TOA數(shù)據(jù)由FPGA測量得到,通過DMA送給DSP。在這里為了程序的完整,程序首先用SignalSimu()函數(shù)產(chǎn)生了一段模擬數(shù)據(jù)。程序如下所示:#include<defTS101.h>#include<stdlib.h>#include<math.h>#include<stdio.h>
#defineMAX_PRI25000 //最大的PRI#defineHIST_BINS2000 //直方圖格子的數(shù)量
#definePRI01300 //序列1的PRI
#definePRI1900 //序列2的PRI
#definePRI2700 //序列3的PRI
#definepi3.1415927
#defineRADAR_NUM3 //三個(gè)脈沖序列交織
#defineMAX_PRI_NUM10
#defineTOA_BUF_LEN512 //定義TOA緩沖區(qū)的長度
floatfPRISpecA[HIST_BINS]; //PRI譜的幅度,為了方便繪圖,將這三個(gè)變量設(shè)為全局變量
intiAutoCorr[HIST_BINS]={0}; //自相關(guān)系數(shù)
floatfThr[HIST_BINS]; //合成門限
voidSignalSimu(intiTOA[TOA_BUF_LEN]) //產(chǎn)生由三個(gè)序列交織在一起的脈沖序列
{
inti,k;
intiInd;
intiTimeMin;
intiTmpTOA[RADAR_NUM];
i=k=0;
iTmpTOA[0]=rand()%PRI0;//產(chǎn)生第一個(gè)序列的第一個(gè)脈沖TOA
iTmpTOA[1]=rand()%PRI1;//產(chǎn)生第二個(gè)序列的第一個(gè)脈沖TOA
iTmpTOA[2]=rand()%PRI2;//產(chǎn)生第三個(gè)序列的第一個(gè)脈沖TOA
while(k<TOA_BUF_LEN)
{
iTimeMin=iTmpTOA[0];
iInd=0;
for(i=1;i<RADAR_NUM;i++)//選出時(shí)間上最靠前的TOA
{
if(iTmpTOA[i]<iTimeMin)
{
iTimeMin=iTmpTOA[i];
iInd=i;
}
}
iTOA[k]=iTmpTOA[iInd];//把這個(gè)時(shí)間最靠前的TOA保存到TOA緩沖區(qū)
switch(iInd)
{
case0:
iTmpTOA[0]+=PRI0;//產(chǎn)生第一個(gè)序列的下一個(gè)脈沖TOA
break;
case1:
iTmpTOA[1]+=PRI1;//產(chǎn)生第二個(gè)序列的下一個(gè)脈沖TOA
break;
case2:
iTmpTOA[2]+=PRI2; //產(chǎn)生第三個(gè)序列的下一個(gè)脈沖TOA
break;
default:
break;
}
k++;
}
return;
}
intPRITrans(intiTOA[TOA_BUF_LEN],intN,intiPRIPot[MAX_PRI_NUM])
{
registerinti,j;
registerintiDiff,iBin;
registerfloatfPhase;
intiPRIPotNum; //序列個(gè)數(shù)估計(jì)
floatfPRISpecRe[HIST_BINS]; //PRI譜實(shí)部
floatfPRISpecIm[HIST_BINS]; //PRI譜虛部
floatfNoiseLevel; //噪聲電平
fPRISpecRe[i]=0;
fPRISpecIm[i]=0;
}
for(j=1;j<N;j++) //PRI變換
{
for(i=j-1;i>0;i--)
{
iDiff=iTOA[j]-iTOA[i]; //脈沖序列的TOA差值
if(iDiff<MAX_PRI)
{
if(iDiff>0)
{
iBin=iDiff>>5;
fPhase=2*pi*iTOA[j]/iDiff;
fPRISpecRe[iBin]+=cos(fPhase);//計(jì)算PRI譜實(shí)部
fPRISpecIm[iBin]+=sin(fPhase);//計(jì)算PRI譜虛部
iAutoCorr[iBin]++; //計(jì)算自相關(guān)系數(shù)
}
}
else
{
break;
}
}
}
for(i=1;i<HIST_BINS;i++) //計(jì)算PRI譜的幅度
{
fPRISpecA[i]=sqrt(fPRISpecRe[i]*fPRISpecRe[i]+fPRISpecIm[i]*fPRISpecIm[i]);
}
fNoiseLevel=3.0*TOA_BUF_LEN*sqrt(32.0/iTOA[TOA_BUF_LEN-1]); //計(jì)算噪聲電平
for(i=0;i<HIST_BINS;i++) //取三種門限的最大值
{
fThr[i]=0.8*iTOA[TOA_BUF_LEN-1]/(float)((i<<5)+16); //計(jì)算觀測時(shí)間門限
if(fThr[i]<(iAutoCorr[i]*0.8))
{
fThr[i]=iAutoCorr[i]*0.8; //計(jì)算子諧波門限
}
if(fThr[i]<fNoiseLevel)
{
fThr[i]=fNoiseLevel;
}
}
iPRIPotNum=0;
for(i=1;i<HIST_BINS;i++) //與門限比較得出三個(gè)序列的PRI值
{
if(fPRISpecA[i]>fThr[i])
{
iPRIPot[iPRIPotNum]=(i<<5)+16;
iPRIPotNum++;
}
}
returniPRIPotNum;
}
intmain(intargc,char*argv[])
{
intiTOA[TOA_BUF_LEN];
intiRdNum;
intiPRI[MAX_PRI_NUM];
inti;
SignalSimu(iTOA); //產(chǎn)生由三個(gè)序列交織在一起的脈沖序列,結(jié)果放在iTOA數(shù)組中
iRdNum=PRITrans(iTOA,TOA_BUF_LEN,iPRI); //PRI變換,序列個(gè)數(shù)返回給
?//iRdNum,各PRI的值返回給iPRI數(shù)組
printf("Numberofsequences:%d\n",iRdNum); //打印序列個(gè)數(shù)的估計(jì)
for(i=0;i<iRdNum;i++)
{
printf("PRIofsequence%d:%d\n",i,iPRI[i]); //打印每個(gè)序列的PRI估計(jì)結(jié)果
}
}首先,程序中的SignalSimu()函數(shù)產(chǎn)生了一個(gè)由三個(gè)序列交織在一起的交織序列。然后,程序中PRITrans()進(jìn)行PRI變換,計(jì)算PRI譜。作為比較,首先把序列的自相關(guān)函數(shù)(對(duì)應(yīng)于全局?jǐn)?shù)組iAutoCorr[])繪制在圖9.2-3中,可以看到自相關(guān)函數(shù)會(huì)產(chǎn)生多個(gè)諧波;然后把PRI譜圖(對(duì)應(yīng)于全局?jǐn)?shù)組fPRISpecA[])繪制在圖9.2-4中,可以看到PRI變換后,PRI譜圖只會(huì)在真實(shí)PRI的地方有譜線,而不會(huì)產(chǎn)生諧波。圖中虛線為自適應(yīng)門限,對(duì)應(yīng)為全局?jǐn)?shù)組fThr[]。圖9.2-3脈沖序列的自相關(guān)系數(shù)圖9.2-4脈沖序列的PRI譜和門限程序運(yùn)行的最終結(jié)果如下:
Numberofsequences:3
PRIofsequence1:688
PRIofsequence2:912
PRIofsequence3:1296
可以看到算法最終估計(jì)出3個(gè)序列,并估計(jì)了每個(gè)序列的PRI值。但是,這些值與程序設(shè)置的真實(shí)值略有偏差,那是因?yàn)镻RI變換的格子寬度設(shè)置較大,使得分辨率受到限制。9.3通信信號(hào)監(jiān)測系統(tǒng)設(shè)計(jì)實(shí)例
9.3.1系統(tǒng)需求
1)頻率掃描
按照管理終端設(shè)定的參數(shù)進(jìn)行快速掃描,獲取掃描的各個(gè)頻率的場強(qiáng)值。頻率掃描按頻段掃描和頻率表掃描兩種方式進(jìn)行。監(jiān)測設(shè)備把各個(gè)頻率的場強(qiáng)值輸出到管理終端,由管理終端進(jìn)行統(tǒng)計(jì)處理,顯示頻段時(shí)間占用瀑布圖和頻道占用率等。
2)信號(hào)參數(shù)測量和頻譜分析
監(jiān)測設(shè)備具有對(duì)電磁頻譜進(jìn)行分析、對(duì)已知/未知信號(hào)進(jìn)行參數(shù)測試和分析的功能;提供對(duì)模擬調(diào)制信號(hào)電平、調(diào)制模式、頻譜特性(如中心頻率、帶寬)等參數(shù)的測量值;提供數(shù)字信號(hào)電平、調(diào)制特性(如調(diào)制類別、符號(hào)速率、頻移、調(diào)制星座圖)、頻譜特性(如中心頻率、帶寬)的測量值;對(duì)指定頻率和分析帶寬內(nèi)的信號(hào)進(jìn)行頻譜分析。監(jiān)測設(shè)備把各個(gè)信號(hào)參數(shù)的測量值輸出到管理終端,由管理終端進(jìn)行統(tǒng)計(jì)處理和顯示;同時(shí)根據(jù)管理終端的指令,輸出指定頻帶內(nèi)信號(hào)譜分析數(shù)據(jù)。
3)信號(hào)解調(diào)
監(jiān)測設(shè)備根據(jù)管理終端的指令,對(duì)指定信號(hào)進(jìn)行解調(diào),解調(diào)后的數(shù)據(jù)送管理終端進(jìn)行監(jiān)聽或者存儲(chǔ)。9.3.2設(shè)計(jì)思路
頻譜監(jiān)測系統(tǒng)由天線、監(jiān)測處理設(shè)備、網(wǎng)絡(luò)接口和控制單元、管理終端、電源等組成。
系統(tǒng)要求的監(jiān)測范圍為0.1MHz~18GHz,考慮到目前天線和微波器件的技術(shù)水平,將天線工作頻段劃分為4個(gè)頻段,如表9.3-1所示。整個(gè)系統(tǒng)分為2個(gè)射頻通道:一個(gè)通道為0.1~3000MHz,另一個(gè)為3~18GHz,其中0.1~30MHz、30~500MHz、0.5~3GHz共用一個(gè)射頻通道,通過天線轉(zhuǎn)換開關(guān)接入不同天線的信號(hào),兩個(gè)通道組合后共同覆蓋的工作頻率范圍為0.1MHz~18GHz。監(jiān)測設(shè)備的工作原理如下:天線完成對(duì)給定頻譜范圍的全頻段、全向接收,并將接收到的信號(hào)傳送給接收機(jī);監(jiān)測設(shè)備根據(jù)管理終端的指令,對(duì)指定頻段進(jìn)行頻率掃描,完成對(duì)所監(jiān)測的射頻信號(hào)的變頻和放大。監(jiān)測設(shè)備采用中頻數(shù)字接收機(jī)體制,對(duì)射頻通道輸出的中頻信號(hào)首先進(jìn)行A/D變換,進(jìn)行頻譜分析(FFT),得到信號(hào)頻譜分布情況。信號(hào)處理器采用并行處理技術(shù),完成對(duì)輸入信號(hào)的頻率、帶寬、功率、工作時(shí)間等參數(shù)的測量、分析處理,同時(shí)實(shí)現(xiàn)對(duì)特定信號(hào)的數(shù)字化解調(diào)。圖9.3-1天線及控制邏輯示意圖9.3.3系統(tǒng)硬件設(shè)計(jì)
考慮到系統(tǒng)的結(jié)構(gòu)及處理能力的要求,系統(tǒng)組成如下:
●電源模塊;
●采樣預(yù)處理單元;
●信號(hào)處理單元;
●網(wǎng)絡(luò)接口和控制單元。
系統(tǒng)的組成和信號(hào)流向如圖9.3-2所示。圖9.3-2監(jiān)測處理器模塊構(gòu)成下面根據(jù)具體的設(shè)計(jì)需求,首先給出電路的主要組成單元,然后給出器件選型。
監(jiān)測處理器由單塊板卡構(gòu)成,主要完成信號(hào)的采樣及預(yù)處理、信號(hào)處理、結(jié)果上傳等功能。
具體包括以下幾個(gè)功能:
(1)調(diào)理單元對(duì)中頻信號(hào)進(jìn)行調(diào)理,使之滿足A/D變換器件的電平要求。
(2)采樣單元利用A/D器件進(jìn)行模/數(shù)變換,將中頻信號(hào)變?yōu)閿?shù)字信號(hào),并在FPGA內(nèi)對(duì)信號(hào)進(jìn)行下變頻、低通濾波等預(yù)處理。
(3)信號(hào)處理單元利用DSP對(duì)信號(hào)進(jìn)行處理,完成頻譜分析、參數(shù)估計(jì)、解調(diào)等工作,并將處理結(jié)果上傳至管理單元。
(4)網(wǎng)絡(luò)接口和控制單元負(fù)責(zé)命令的下發(fā)及處理結(jié)果的上傳,以及天線和接收機(jī)的控制,協(xié)調(diào)整個(gè)系統(tǒng)的工作。
監(jiān)測處理板包含兩個(gè)通道,分別完成0.1~3000MHz和3~18GHz頻段的信號(hào)采樣和處理工作。下面對(duì)監(jiān)測處理板核心器件的選型做一介紹。
1)高速采樣單元
高速采樣由信號(hào)調(diào)理放大器、高速ADC等單元組成。信號(hào)調(diào)理單元的作用是實(shí)現(xiàn)對(duì)模擬輸入信號(hào)的放大、阻抗匹配和電平匹配,它是一個(gè)寬帶放大器。系統(tǒng)中頻頻率為70MHz,最大中頻帶寬為BW=20MHz。信號(hào)調(diào)理單元由寬帶差分放大器實(shí)現(xiàn),采用ADI公司的AD8138放大器,高速ADC采用ADI公司的高速ADC芯片AD9244。由于系統(tǒng)最大中頻帶寬為20MHz,故選擇采樣頻率為40MHz。
2)預(yù)處理單元
預(yù)處理單元利用高速FPGA實(shí)現(xiàn),通過DSP總線接口送給DSP處理器,主要完成下變頻、預(yù)濾波等處理。本單元集成在高速FPGA中,芯片為Altera公司的EP1C12Q208。選用該器件是因?yàn)樗鞯念A(yù)處理運(yùn)算量不大,且該系統(tǒng)的時(shí)鐘基本都由專用的鎖相環(huán)提供,所以不需要FPGA器件具有太高的性能。
3)?DSP信號(hào)處理單元
監(jiān)測信號(hào)處理器有兩個(gè)通道,每個(gè)通道由兩個(gè)DSP構(gòu)成信號(hào)處理器。監(jiān)測信號(hào)處理器完成對(duì)各種常見通信信號(hào)和各種非通信信號(hào)(如雷達(dá)信號(hào))的頻譜分析、頻率測量、電平測量、調(diào)制類型識(shí)別處理等任務(wù)。
通信信號(hào)的模擬調(diào)制方式主要有AM、FM、CW、USB、LSB、ISB等,數(shù)字調(diào)制方式主要有ASK、FSK、MSK、PSK、QPSK、QAM等,通過調(diào)制識(shí)別、測定各項(xiàng)調(diào)制參數(shù)后,引導(dǎo)數(shù)字化解調(diào)器,恢復(fù)模擬基帶信號(hào)。由于處理任務(wù)較為繁重,且通信信號(hào)的動(dòng)態(tài)范圍較大,因此有必要采用具有較高運(yùn)算速度的專用浮點(diǎn)處理器,而且整個(gè)系統(tǒng)是一個(gè)多處理器系統(tǒng),處理器之間要有高速、便捷的數(shù)據(jù)傳輸能力,而ADI公司的TS101對(duì)以上要求而言是一款理想的處理器。監(jiān)測處理板在每個(gè)FPGA后連接兩片DSP,完成信號(hào)處理工作,二者的連接通過DSP的總線完成,DSP之間則通過鏈路口互連。另外,為了使系統(tǒng)在掉電后仍能保留程序,需要外接存儲(chǔ)器件,用于程序的存儲(chǔ)和DSP的啟動(dòng)。這里選用Atmel公司的AT49BV322,其地址線寬度為21位,數(shù)據(jù)寬度為8/16可選,存儲(chǔ)容量為4MB,作為程序存儲(chǔ)器容量是足夠的。這里需要注意的是,BMS#信號(hào)和MS0#信號(hào)與Flash的連接,需要通過跳線帽或零歐姆電阻連接到Flash的片選,在MS0#連接到片選時(shí)可對(duì)Flash進(jìn)行擦除、讀寫操作,而在程序燒制完成后,要將BMS#連接到片選,再次上電時(shí),DSP將從Flash啟動(dòng),完成自動(dòng)加載。其中直接連接Flash的DSP采用從Flash加載的模式,而剩余三片DSP則采用鏈路口加載的模式。四片TS101S的具體連接關(guān)系如圖9.3-3所示。圖9.3-3四片TS101S的加載方式
4)網(wǎng)絡(luò)接口和管理控制單元
管理控制單元完成對(duì)整個(gè)處理系統(tǒng)的管理、命令下發(fā)、數(shù)據(jù)上傳等任務(wù),并要求有網(wǎng)絡(luò)接口,而該單元的主要任務(wù)集中在管理控制而非運(yùn)算上,因此選用ADI公司的BF537作為該部分的核心芯片。BF537內(nèi)部集成有MAC控制器,外接一個(gè)物理層芯片即可進(jìn)行網(wǎng)絡(luò)傳輸,物理層芯片采用SMSC公司的LAN83C185。
由于采用了網(wǎng)絡(luò)接口,需要在BF537內(nèi)加入網(wǎng)絡(luò)的驅(qū)動(dòng),因此需要利用ADI公司的VDK模塊。VDK是一個(gè)簡化的嵌入式操作系統(tǒng),支持多線程處理。但該模塊程序量較大,而BF537的內(nèi)存只有132KB,因此除需連接存儲(chǔ)程序用的Flash芯片以外,還需要給BF537連接SDRAM,為VDK的運(yùn)行提供足夠的空間。
5)時(shí)鐘接口
ADC、FPGA和DSP使用40MHz時(shí)鐘作為輸入,利用時(shí)鐘分配驅(qū)動(dòng)芯片CDCF2310輸出3路時(shí)鐘,其中兩路C40M-FPGA和C40M-DSP分別連接到FPGA和DSP的時(shí)鐘輸入,其余1路作為采樣時(shí)鐘連接ADC。
電路板中設(shè)置時(shí)鐘選擇開關(guān)(跳線),當(dāng)單板調(diào)試工作時(shí),使用內(nèi)部40MHz晶體振蕩器輸出;當(dāng)系統(tǒng)工作時(shí),使用外部40MHz輸入本振信號(hào)。此時(shí)跳線開關(guān)斷開晶振輸出和電源,將外部40MHz輸入本振信號(hào)送給CDCF2310。
6)電源模塊
電源模塊為機(jī)箱內(nèi)的板卡提供穩(wěn)定的供電,機(jī)箱的供電電源為24VDC。需要輸出的電源為:
●數(shù)字電源:+5V;
●數(shù)字電源:+3.3V;
●模擬電源:+5V;
●模擬電源:-5V。以上電源的輸出采用專用的DC-DC模塊實(shí)現(xiàn)電源的變換。注意,選用的模塊要能夠提供足夠的功率并具有一定裕量,以保證系統(tǒng)穩(wěn)定的工作及延長電源的工作壽命。板內(nèi)需要的其他電源利用各種電源轉(zhuǎn)換芯片完成,以TS101S的供電為例。TS101S需要的電源有兩種:3.3V的I/O電源和1.2V的內(nèi)核電源,分別采用TI公司的TPS75933和TPS78601進(jìn)行電源變換,為板內(nèi)的四片TS101供電。電源變換關(guān)系如圖9.3-4所示。圖9.3-4電源變換示意圖圖9.3-5系統(tǒng)構(gòu)成及信號(hào)流向圖整個(gè)系統(tǒng)的工作流程如下:
(1)由管理單元的BF537接收到上位機(jī)的命令后,利用工作模式字通知各個(gè)單元下一步要進(jìn)行的工作,用BF537的UART口發(fā)送要監(jiān)測的信號(hào)的中心頻率、帶寬,并用GPIO口發(fā)送用于天線切換的碼字。
(2)射頻信號(hào)通過天線到達(dá)接收機(jī),通過接收機(jī)將待監(jiān)測頻段的射頻信號(hào)轉(zhuǎn)化為70MHz的中頻信號(hào),中頻信號(hào)經(jīng)過信號(hào)調(diào)理放大器AD8138后,完成信號(hào)的放大、阻抗匹配和電平匹配。
(3)調(diào)理后的中頻信號(hào)進(jìn)入AD9244以后,進(jìn)行A/D變換,將模擬信號(hào)變?yōu)閿?shù)字信號(hào)。
(4)FPGA接收AD9244的數(shù)字信號(hào),進(jìn)行預(yù)處理,如下變頻、濾波、采樣率變換等處理,并將處理結(jié)果通過TS101的總線發(fā)送至TS101。
(5)第一片TS101通過32位寬的數(shù)據(jù)總線與FPGA連接,在系統(tǒng)時(shí)鐘為40MHz時(shí),數(shù)據(jù)的吞吐量最大可以達(dá)到40M?×?32bit。TS101接收到一次完整采樣數(shù)據(jù),如4096個(gè)采樣數(shù)據(jù)后,就可進(jìn)行FFT變換、求模等運(yùn)算,并將結(jié)果通過鏈路口傳至下一片TS101。
(6)第二片TS101通過鏈路口接收中間處理結(jié)果,進(jìn)行后續(xù)的處理,如調(diào)制類型識(shí)別、信號(hào)參數(shù)提取、信號(hào)解調(diào)等。整個(gè)處理完成后,通過總線將處理結(jié)果發(fā)送至雙口RAM,并通過與FLAG信號(hào)相連的GPIO口通知BF537該通道處理結(jié)果已送至雙口RAM。
(7)?BF537接到通知后通過總線讀取雙口RAM內(nèi)的處理結(jié)果,并按照協(xié)議打包后將處理結(jié)果通過以太網(wǎng)上傳至上位機(jī)。至此,一條命令執(zhí)行結(jié)束。
上述流程是典型的串行工作模式,為了提高工作效率,最大限度地利用系統(tǒng)的處理資源,通常采用流水線式的工作模式,具體可參考8.8.3節(jié)。9.3.4系統(tǒng)軟件設(shè)計(jì)
1.調(diào)幅信號(hào)解調(diào)
調(diào)幅信號(hào)的表達(dá)式為(9.3-1)其中:為信號(hào)振幅,m(t)為調(diào)制信號(hào),ma為調(diào)幅系數(shù)。采用的解調(diào)算法為平方法,首先對(duì)信號(hào)進(jìn)行平方,得到(9.3-2)經(jīng)過低通濾波濾除高頻分量,然后開方,就可輸出信號(hào)的包絡(luò)。
AM信號(hào)解調(diào)子程序:
AM_demodulation_m:
j10=Orig_sig;; //存放待解調(diào)數(shù)據(jù)
j11=j10+1;;
j13=AM_FM_mode+31;; //前面要補(bǔ)31個(gè)數(shù),以適應(yīng)低通濾波器子程序的要求
lc0=2048;;
_Loop_AM_mode:
xr0=[j10+=2];;yr0=[j11+=2];;
fr0=r0*r0;;
xr1=yr0;;
xfr2=r0+r1;;
[j13+=1]=xr2;;
ifnlc0e,jump_Loop_AM_mode(abs)(np);;
//低通濾波
j0=AM_FM_mode;;
j2=Fft_orig_mode;;
k1=k31+coeffs_am_LPF+(L1-2);;
kb1=k31+coeffs_am_LPF;;
callFir_lp(abs)(np);; //調(diào)用低通濾波器子程序
//將前一次后31個(gè)原始數(shù)據(jù)補(bǔ)在下一次的開頭
j0=AM_FM_mode+2048;;
j1=AM_FM_mode;;
lc0=31;;
_Loop_fir_fill_AM:
xr1=[j0+=1];;
[j1+=1]=xr1;;
ifnlc0e,jump_Loop_fir_fill_AM(abs)(np);;
//開方、乘放大系數(shù),調(diào)整輸出值至一合理值
xr1=AM_parametre;;
j1=Fft_orig_mode;;
j2=Fft_orig_mode;;
lc0=2048;;
_Loop_multi_AM_parametre:
xr2=[j1+=1];;
xfr3=RSQRTSr2;;
xfr2=r2*r3;;
xfr2=r2*r1;;
xsr2=fixxfr2;;
[j2+=1]=xr2;;
ifnlc0e,jump_Loop_multi_AM_parametre(abs)(np);;
2.調(diào)頻信號(hào)解調(diào)
調(diào)頻信號(hào)的一般表達(dá)式為(9.3-3)這里采用的算法是首先求出接收信號(hào)的相位信息,然后對(duì)相位進(jìn)行解纏繞處理,最后對(duì)解纏繞后的相位信息進(jìn)行差分,即可得到調(diào)制信息。
FM解調(diào)子程序:
FM_demodulation_m:
j10=Orig_sig;;
j11=Fft_lp_mode;;
j12=Fft_sig;;
j13=Fft_orig_mode;;
j14=Fft_lp_mode;;
xr21=pi;;
xfr22=r21+r21;;///2*pi
xr30=0.0;;//c(i)
xr31=0.0;;//c(i-1)
xr29=0.0;;//ip(i-1)
//解纏繞
lc0=2048;;
_Loop_atan2f:
xr5=[j10+=1];;//x
xr4=[j10+=1];;//y
call_atan2f(abs)(np);;//atan(y,x)
xr30=xr31;;///c(i)=c(i-1);
[j12+=1]=xr8;;
xfr10=r8-r29;;///ip(i)-ip(i-1)
xfcomp(r10,r21);;
ifnxale;do,xfr30=r31-r22;;
xfr10=r29-r8;;
xfcomp(r10,r21);;
ifnxale;do,xfr30=r31+r22;;
xr31=xr30;;
xr29=xr8;;
xfr8=r8+r31;;//d(i)
[j11+=1]=xr8;;
ifnlc0e,jump_Loop_atan2f(abs)(np);;
//計(jì)算解纏繞后的差分
j12=Fft_lp_mode;;
j13=j12+1;;
j14=AM_FM_mode+31;; //前面補(bǔ)了19(N1-1)個(gè)數(shù)
lc0=2047;;
_Loop_diff:
xr0=[j12+=1];;
xr1=[j13+=1];;
xfr1=r1-r0;;
[j14+=1]=xr1;;
ifnlc0e,jump_Loop_diff(abs)(np);;
[j14+0]=xr1;;
//低通濾波
j0=AM_FM_mode;;
j2=Fft_orig_mode;;
k1=k31+coeffs_am_LPF+(L1-2);;
kb1=k31+coeffs_am_LPF;;
callFir_lp(abs)(np);;
//將前一次后19個(gè)原始數(shù)據(jù)補(bǔ)在下一次的開頭
j0=AM_FM_mode+2048;;
j1=AM_FM_mode;;
lc0=31;;
_Loop_fir_fill:
xr1=[j0+=1];;
[j1+=1]=xr1;;
ifnlc0e,jump_Loop_fir_fill(abs)(np);;
//乘放大系數(shù)
xr1=FM_parametre;;
j1=Fft_orig_mode;;
j2=Fft_orig_mode;;
j3=Fft_mode;;
lc0=2048;;
_Loop_multi_FM_parametre:
xr2=[j1+=1];;
[j3+=1]=xr2;;
xfr2=r2*r1;;
xsr2=fixxfr2;;
[j2+=1]=xr2;;
ifnlc0e,jump_Loop_multi_FM_parametre(abs)(np);;9.4鏈路口耦合構(gòu)成多處理器系統(tǒng)
TS處理器片上有四個(gè)鏈路口,每個(gè)鏈路口都由8位雙向數(shù)據(jù)線和另外三根控制線構(gòu)成。DSP的鏈路口可以實(shí)現(xiàn)整個(gè)系統(tǒng)中多個(gè)DSP之間的點(diǎn)對(duì)點(diǎn)通信。這樣,除了外部總線外,系統(tǒng)中的DSP之間提供了另外一個(gè)通信通道。鏈路口也可以實(shí)現(xiàn)DSP與外圍其他設(shè)備的通信,如FPGA等,只要其通信協(xié)議與鏈路口的通信協(xié)議相同。通常認(rèn)為,采用鏈路口連接數(shù)據(jù)傳輸率較低,不太適合于高速信號(hào)處理機(jī)。但實(shí)際上,TS系列處理器提供的鏈路口傳輸數(shù)據(jù)率與外部總線的數(shù)據(jù)傳輸速率很高,足以滿足雷達(dá)信號(hào)處理機(jī)、聲納信號(hào)處理機(jī)等高速信號(hào)處理的要求。TS101S每個(gè)鏈路口的數(shù)據(jù)傳輸率可高達(dá)250MB/s(核時(shí)鐘為250MHz),四個(gè)鏈路口總的數(shù)據(jù)吞吐率可達(dá)1GB/s。采用鏈路口連接的多處理器系統(tǒng),大大降低了硬件設(shè)計(jì)的難度,PCB布線也更容易實(shí)現(xiàn)。采用鏈路口連接的多處理器系統(tǒng),其特點(diǎn)是:
(1)僅需鏈路口實(shí)現(xiàn)DSP片間通信。
(2)實(shí)現(xiàn)無縫連接。
(3)單鏈路口通道數(shù)據(jù)傳輸速率較共享總線方式低,總的傳輸速率高于共享總線方式。
(4)無總線仲裁問題,各DSP程序可以獨(dú)立設(shè)計(jì)。
(5)片間引線少,PCB板設(shè)計(jì)容易,PCB板層數(shù)可以大為減少。9.4.1處理器系統(tǒng)組成
下面以一個(gè)鏈路口耦合的多處理器雷達(dá)信號(hào)處理機(jī)作為實(shí)例,詳細(xì)說明鏈路口構(gòu)成的多處理器的設(shè)計(jì)過程。
系統(tǒng)硬件框圖如圖9.4-1所示。圖9.4-1
信號(hào)處理機(jī)硬件框圖為了簡化系統(tǒng)硬件,減少DSP片間連線,系統(tǒng)的6個(gè)DSP以松耦合的鏈路方式進(jìn)行連接。DSP1通過外部DMA方式讀入中頻解調(diào)后的I、Q兩路數(shù)據(jù),DSP1對(duì)讀入數(shù)據(jù)進(jìn)行脈沖壓縮(匹配濾波),脈沖壓縮后再進(jìn)行二次對(duì)消,消除固定雜波。DSP1將處理后的數(shù)據(jù)按距離單元通過鏈路口0、1分別發(fā)送給DSP2、DSP4。DSP2、DSP4進(jìn)行動(dòng)目標(biāo)檢測(MTD),采用滑窗加權(quán)FFT實(shí)現(xiàn)窄帶多譜勒濾波器組。DSP2、DSP4完成MTD后,將對(duì)應(yīng)每個(gè)距離單元的16個(gè)輸出數(shù)據(jù)通過鏈路口分別送到DSP3和DSP5。DSP3、DSP5先進(jìn)行求模運(yùn)算,再進(jìn)行恒虛警計(jì)算。DSP3、DSP5處理后的數(shù)據(jù)經(jīng)鏈路口傳輸?shù)紻SP6,DSP6先對(duì)距離單元內(nèi)的16個(gè)輸出進(jìn)行門限處理,選擇其中最小雜波剩余值作本單元的輸出。門限處理后,DSP6還應(yīng)完成視頻積累。視頻積累采用簡單累加求平均方式,以避免反饋積累的拖尾現(xiàn)象。視頻數(shù)據(jù)以DMA方式通過外部口送出,輸出到顯示單元進(jìn)行顯示。9.4.2脈沖壓縮和固定雜波對(duì)消處理
圖9.4-2脈沖壓縮濾波器算法框圖總距離單元數(shù)為1200,需要做2048點(diǎn)復(fù)數(shù)FFT。2048點(diǎn)復(fù)數(shù)FFT完成后,它必須和預(yù)先存儲(chǔ)好的匹配濾波器系數(shù)H(k)相乘,需要做2048個(gè)復(fù)數(shù)乘法,相乘結(jié)果還需做2048點(diǎn)復(fù)數(shù)IFFT以獲得脈壓結(jié)果。TS101S完成2048點(diǎn)復(fù)數(shù)FFT(IFFT)大約需要100
s(工作在250MHz)。我們可以充分利用TS101S的雙運(yùn)算模塊、單指令多數(shù)據(jù)(SIMD)的特點(diǎn),同時(shí)進(jìn)行兩個(gè)距離單元的復(fù)數(shù)乘法,完成2048個(gè)復(fù)數(shù)乘法僅需25
s。固定雜波對(duì)消采用二次對(duì)消器,其差分方程為y(n)?=?x(n)-2x(n-1)+x(n-2)(9.4-1)對(duì)每個(gè)距離單元,它需要取三個(gè)數(shù),做兩個(gè)減法、一個(gè)加法,存儲(chǔ)一個(gè)數(shù),完成1200個(gè)距離單元的二次對(duì)消大約需要25
s。故脈沖壓縮和固定雜波二次對(duì)消只需要一片DSP便可完成,且還有較多時(shí)間富裕。9.4.3動(dòng)目標(biāo)檢測(MTD)
用FFT實(shí)現(xiàn)窄帶多普勒濾波器組時(shí),為了降低旁瓣,系統(tǒng)采用滑窗加權(quán)FFT,權(quán)系數(shù)為海明權(quán),即(9.4-2)其中S(n)為雷達(dá)回波序列,(9.4-3)
TS101S完成16點(diǎn)加權(quán)復(fù)數(shù)FFT大約需要80個(gè)指令周期(0.32
s),距離單元數(shù)為1200,所以共需384
s。部分參考程序代碼如下:
//J0—數(shù)據(jù)起始地址,K3—窗函數(shù)首地址,K0—中間結(jié)果地址
//J1—蝶形系數(shù)地址,K2—最后FFT結(jié)果地址,K1—第三級(jí)蝶形運(yùn)算后最后6點(diǎn)首地址
#include"defts101.h"
#defineUsingTimer0//1=使用定時(shí)器,0=使用外部同步
#defineN32
#defineLENGTH2//距離單元間隔
//_____________________________________________
.sectiondata1;
.align4;
.VARDATAIN[64]="e:\DATAIN.DAT";
.VARTWINDES[20]="e:\twindes.dat";
//________________________________________________
.sectiondata2;
.VARINTERBUFF[32]; //FFT中間結(jié)果
.VARWINDOWS[16]="e:\windows.dat"; //窗系數(shù)
.VARRESULT[64]; //FFT最后結(jié)果
//________________________________________________
.sectionprogram;
//_____________________InitializeDSP_______________________
xr0=_RtiDirectly;;
ivdma0=xr0;; //SetDma0interruptvector=_SimDmaIrq.
ivdma1=xr0;; //SetDma1interruptvector=_SimDmaIrq.
ivdma4=xr0;; //SetDMAchannel4interruptvector=_SimDmaIrq.
ivdma9=xr0;; //SetDMAchannel9interruptvector=_SimDmaIrq.
ivsw=xr0;; //Setsoftwareexceptioninterruptvector=_RtiDirectly.
ivhw=xr0;; //Sethardwareerrorinterruptvector=_RtiDirectly.
ivbuslk=xr0;; //Setbuslockinterruptvector=_RtiDirectly.
virpt=xr0;; //Setvectorinterruptvector=_RtiDirectly.
ivtimer1hp=xr0;; //Settimer1high-priorityinterruptvector=_RtiDirectly.
ivtimer0hp=xr0;; //Settimer0high-priorityinterruptvector=_RtiDirectly.
ivirq3=xr0;; //Set/IRQ3interruptvector=_RtiDirectly.
ivirq2=xr0;; //Set/IRQ2interruptvector=_RtiDirectly.
ivirq1=xr0;; //Set/IRQ1interruptvector=_RtiDirectly.
ivirq0=xr0;; //Set/IRQ0interruptvector=_RtiDirectly.
ivdma2=xr0;; //SetDMAchannel2interruptvector=_RtiDirectly.
ivdma3=xr0;; //SetDMAchannel3interruptvector=_RtiDirectly.
ivdma5=xr0;; //SetDMAchannel5interruptvector=_RtiDirectly.
ivdma6=xr0;; //SetDMAchannel6interruptvector=_RtiDirectly.
ivdma7=xr0;; //SetDMAchannel7interruptvector=_RtiDirectly.
ivdma8=xr0;; //SetDMAchannel8interruptvector=_RtiDirectly.
ivdma10=xr0;; //SetDMAchannel10interruptvector=_RtiDirectly.
ivdma11=xr0;; //SetDMAchannel11interruptvector=_RtiDirectly.
ivdma12=xr0;; //SetDMAchannel12interruptvector=_RtiDirectly.
ivdma13=xr0;; //SetDMAchannel13interruptvector=_RtiDirectly.
ivlink0=xr0;; //Setlinkport0interruptvector=_RtiDirectly.
ivlink1=xr0;; //Setlinkport1interruptvector=_RtiDirectly.
ivlink2=xr0;; //Setlinkport2interruptvector=_RtiDirectly.
ivlink3=xr0;; //Setlinkport3interruptvector=_RtiDirectly.
ivtimer0lp=xr0;;//Settimer0low-priorityinterruptvector=_RtiDirectly.
ivtimer1lp=xr0;;//Settimer1low-priorityinterruptvector=_RtiDirectly.
//================主程序=================//
K30=1;; //清0標(biāo)志位
LC0=LENGTH;; //距離單元數(shù)
COMP(K30,1);; //判斷是否進(jìn)行清0操作
XR8=0X0;; //數(shù)據(jù)清0所用寄存器
XR9=0X0;; //數(shù)據(jù)清0所用寄存器
IFKEQ,JUMPCLEARPROCESS(abs);;
IDLE;;
MTDPROCESS:CALLFFT16;; //16點(diǎn)復(fù)數(shù)FFT
J0=J0+2;; //下一距離單元FFT首地址
IFNLC0E,JUMPMTDPROCESS;;
CLEARPROCESS:J0=J31+DATAIN;;
L[J0+2*LENGTH]=XR9:8;;L[J0+4*LENGTH]=XR9:8;;
L[J0+6*LENGTH]=XR9:8;;L[J0+8*LENGTH]=XR9:8;;
L[J0+10*LENGTH]=XR9:8;;L[J0+12*LENGTH]=XR9:8;;
L[J0+14*LENGTH]=XR9:8;;L[J0+16*LENGTH]=XR9:8;;
L[J0+18*LENGTH]=XR9:8;;L[J0+20*LENGTH]=XR9:8;;
L[J0+22*LENGTH]=XR9:8;;L[J0+24*LENGTH]=XR9:8;;
L[J0+26*LENGTH]=XR9:8;;L[J0+28*LENGTH]=XR9:8;;
L[J0+30*LENGTH]=XR9:8;;
CALLFFT16;;
J0=J0+2;; //下一距離單元FFT首地址
IFNLC0E,JUMPCLEARPROCESS;;
IDLE;;9.4.4恒虛警處理
圖9.4-3恒虛警算法框圖充分利用TS101S的雙運(yùn)算模塊,同時(shí)并行處理兩個(gè)距離單元的兩個(gè)通道,完成1200個(gè)距離單元的16個(gè)通道的恒虛警計(jì)算共需500
s,可由DSP3和DSP4并行處理完成。部分程序代碼如下:
J0=SOURCE;; //通道一數(shù)據(jù)源
J1=SOURCE1;; //通道二數(shù)據(jù)源
J2=J0;; J3=J0+1;;J4=J1;;J5=J1+1;;
K0=DESTINATION;; //通道一數(shù)據(jù)目的
K1=DESTINATION1;; //通道二數(shù)據(jù)目的
XYR0=0;; XYR1=0;; XYR2=0;; XYR3=0;;
XYR4=8.0;; XYR5=0.797885;; //系數(shù)
XYR6=0;; XYR7=0;; XYR8=8.0;; XYR9=1.0;;
XYR10=0;;XYR11=0;; XYR14=0; XYR15=0;;
XYR16=0;; XYR17=0;; XYR18=0; XYR19=0;;
XYR20=8.0;; XYR21=0.797885;;
XYR22=0;; XYR23=0;; XYR24=0;; XYR25=0;;
XR15:14=L[J2+=2];; YR15:14=L[J4+=2];;
XR3=[J2+(-1)];; YR3=[J4+(-1)];;
XR0=[J2+0];; YR0=[J4+0];;
XFR3=R3+R0;XR0=[J2+1];;
XFR6=R14*R4;YFR3=R3+R0;YR0=[J4+1];;
XFR3=R3+R0;XR0=[J2+2];YFR6=R14*R4;;
XFR8=R8+R9;YFR3=R3+R0;YR0=[J4+2];;
YFR8=R8+R9;XFR3=R3+R0;XR0=[J2+3];;
YFR3=R3+R0;YR0=[J4+3];; XFR3=R3+R0;XR0=[J2+4];;
YFR3=R3+R0;YR0=[J4+4];; XFR3=R3+R0;XR0=[J2+5];;
YFR3=R3+R0;YR0=[J4+5];; XFR3=R3+R0;XR0=[J2+6];;
YFR3=R3+R0;YR0=[J4+6];; XFR3=R3+R0;XR0=[J2+7];;
YFR3=R3+R0;YR0=[J4+7];;
//****通道一和通道二的第一和第二點(diǎn)****//
XFR19=R3+R0;XFR7=R3*R5;XR18=XR14;;
YFR19=R3+R0;YFR7=R3*R5;YR18=YR14;;
XFR19=R19-R15;XFR22=R15*R8;; YFR19=R19-R15;YFR22=R15*R8;;
XFR7=RECIPSR7;; XFR24=R19+R18;YFR7=RECIPSR7;;
XFR6=R6*R7;YFR24=R19+R18;;
XFR24=R24*R21;YFR6=R6*R7;XYFR8=R8+R9;;
XFR2=R14+R15;[K0+=1]
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度甲乙雙方云計(jì)算服務(wù)合同2篇
- 二零二五年度合同標(biāo)的金額調(diào)整補(bǔ)充協(xié)議3篇
- 2025年度版權(quán)許可使用合同(含影視音樂)2篇
- 二零二五年度在線教育平臺(tái)合作協(xié)議認(rèn)證3篇
- 二零二五年度建筑公司分包合同5篇
- 二零二五年度教育培訓(xùn)項(xiàng)目合作與授權(quán)合同3篇
- 羽毛球發(fā)球課程設(shè)計(jì)
- 二零二五年度房地產(chǎn)分銷與綠色能源項(xiàng)目合作協(xié)議3篇
- 二零二五年度影視制作場地租賃協(xié)議書2篇
- 2025年度新能源汽車電池技術(shù)研發(fā)與轉(zhuǎn)讓合同
- Exchange配置與規(guī)劃方案專項(xiàng)方案V
- 資本市場與財(cái)務(wù)管理
- 三年級(jí)上冊(cè)脫式計(jì)算練習(xí)200題及答案
- 新生兒腭裂護(hù)理查房課件
- 二年級(jí)下冊(cè)科學(xué)課程綱要
- 前交叉韌帶重建術(shù)后康復(fù)訓(xùn)練
- 河南近10年中考真題數(shù)學(xué)含答案(2023-2014)
- 八年級(jí)上學(xué)期期末家長會(huì)課件
- 2024年大學(xué)試題(宗教學(xué))-佛教文化歷年考試高頻考點(diǎn)試題附帶答案
- 軟件項(xiàng)目服務(wù)外包工作管理辦法
- 紅薯系列產(chǎn)品項(xiàng)目規(guī)劃設(shè)計(jì)方案
評(píng)論
0/150
提交評(píng)論