《TigerSHARC處理器技術(shù)及其應(yīng)用》課件第9章_第1頁
《TigerSHARC處理器技術(shù)及其應(yīng)用》課件第9章_第2頁
《TigerSHARC處理器技術(shù)及其應(yīng)用》課件第9章_第3頁
《TigerSHARC處理器技術(shù)及其應(yīng)用》課件第9章_第4頁
《TigerSHARC處理器技術(shù)及其應(yīng)用》課件第9章_第5頁
已閱讀5頁,還剩138頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論