專利名稱:數(shù)字信號(hào)處理方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字信號(hào)處理技術(shù),特別是涉及利用濾波器的數(shù)字信號(hào)處理技術(shù)。
背景技術(shù):
在現(xiàn)有技術(shù)中,很多使用因果FIR(有限沖擊響應(yīng))濾波器的數(shù)字信號(hào)處理都會(huì)使用如下形式的卷積求和運(yùn)算,得到濾波結(jié)果YY=Σi=0MXi*Hi---(1)]]>Xi為第i路輸入信號(hào),Hi表示作用于第i路信號(hào)的FIR濾波器的沖擊響應(yīng),表示為Hi,k=0,k<0hi,k,0≤k<Li0,k≥Li---(2)]]>即多個(gè)輸入信號(hào)X1,X2,...,XM分別經(jīng)過多個(gè)不同的濾波器濾波之后相加并輸出,式中Hi,k表示Hi在時(shí)間點(diǎn)k上的值。
圖1是卷積求和運(yùn)算的示意圖。X1,X2,...,XM是多個(gè)輸入信號(hào),每個(gè)信號(hào)X1,X2,...,XM分別通過相應(yīng)的濾波器濾波,輸出已濾波的信號(hào),各個(gè)濾波器的輸出由加法器進(jìn)行相加,得到一個(gè)濾波結(jié)果Y1,完成一次卷積求和運(yùn)算。然后,進(jìn)行計(jì)算第二個(gè)濾波結(jié)果Y2,依此類推,通過M次計(jì)算,可以得到M個(gè)濾波結(jié)果Y1-YM。利用方程(1)計(jì)算信號(hào)的處理結(jié)果。
假設(shè)各濾波器的沖響應(yīng)分別為H1,H2,...,HM,階數(shù)分別為L(zhǎng)1,...Li,LM,平均長(zhǎng)度為L(zhǎng),則針對(duì)這種形式的運(yùn)算,一般的計(jì)算方法有兩種1.根據(jù)方程(1)直接進(jìn)行時(shí)域計(jì)算。這樣計(jì)算單個(gè)濾波結(jié)果Y(n)所需要的計(jì)算復(fù)雜度為O(L×M)次乘加運(yùn)算。
2.使用快速卷積算法Yi=Xi*Hi得到每個(gè)濾波器的濾波結(jié)果Yi,然后再根據(jù)以下公式計(jì)算和,Y=Σi=1MYi.]]>圖2表示一種快速卷積算法的流程圖。N點(diǎn)的輸入信號(hào)Xi進(jìn)行補(bǔ)零,形成P點(diǎn)的輸入信號(hào),P≥N+Li-1,P一般為2的整數(shù)次方。該輸入信號(hào)進(jìn)行FFT變換,輸出P點(diǎn)的DET系數(shù)Xi,系數(shù)Xi和濾波器Hi的P點(diǎn)DFT系數(shù)進(jìn)行乘法運(yùn)算,輸出P點(diǎn)IFFT結(jié)果,前Li-1點(diǎn)的IFFT結(jié)果和LAP緩沖器(重疊緩沖器)中存儲(chǔ)的值相加,把第N+1至N+Li-1點(diǎn)的IFFT結(jié)果存儲(chǔ)到LAP緩沖器,最后輸出P點(diǎn)IFFT結(jié)果的前N個(gè)點(diǎn)IFFT結(jié)果。
假設(shè)平均濾波器長(zhǎng)度L<<B。P≈B,則P點(diǎn)快速傅立葉變換(FFT)的運(yùn)算量為O(Blog(B))。B為FFT計(jì)算的平均長(zhǎng)度,P為快速卷積運(yùn)算中平均的輸入塊長(zhǎng)。假設(shè)濾波器Hi在整個(gè)濾波過程中的值不變,其離散傅立葉變換(DFT)系數(shù)可以保留在緩沖器中,那么整個(gè)快速卷積過程需要1個(gè)FFT和1個(gè)快速傅立葉反變換(IFFT),DFT相乘需要2B次乘加運(yùn)算,這樣每次濾波器卷積運(yùn)算的復(fù)雜度為O(Blog(B))。計(jì)算B個(gè)Y值輸出需要M次濾波計(jì)算,復(fù)雜度為O(M(Nlog(N))),計(jì)算每個(gè)Y值所需的復(fù)雜度為MO(log(B))。
在上述快速卷積算法中,計(jì)算最終輸出Y值時(shí),總共用了M次IFFT運(yùn)算得到每個(gè)濾波器的輸出值Yi,然后把M個(gè)Yi,進(jìn)行時(shí)域相加??紤]到FFT運(yùn)算為線性的,F(xiàn)FT運(yùn)算和IFFT運(yùn)算可以表示為FFT(Σi=1MSi)=Σi=1MFFT(Si)---(3)]]>IFFT(Σi=1MFSi)=Σi=1MIFFT(FSi)]]>公式(3)中Si為第i路時(shí)域信號(hào),F(xiàn)Si為第i路信號(hào)的FFT系數(shù)。
對(duì)于M路的信號(hào)輸入,一般的算法每次進(jìn)行一個(gè)塊的計(jì)算需要M次的IFFT計(jì)算,另外還需要M次的重疊相加操作,計(jì)算復(fù)雜度較高。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)存在的問題,提供一種數(shù)字信號(hào)處理方法和裝置,使得信號(hào)處理的運(yùn)算復(fù)雜度明顯降低。
本發(fā)明提供一種數(shù)字信號(hào)處理裝置,該裝置包括輸入數(shù)據(jù)存儲(chǔ)邏輯單元,用于存儲(chǔ)輸入的各路信號(hào)數(shù)據(jù)與濾波器數(shù)據(jù),根據(jù)參數(shù)與地址控制端送來的補(bǔ)零個(gè)數(shù)對(duì)輸入數(shù)據(jù)進(jìn)行補(bǔ)零操作;FFT/IFFT運(yùn)算邏輯單元,根據(jù)輸入數(shù)據(jù)存儲(chǔ)邏輯單元提供的數(shù)據(jù)和參數(shù)與地址控制器提供的命令對(duì)輸入數(shù)據(jù)進(jìn)行FFT運(yùn)算,然后把運(yùn)算結(jié)果送到FFT系數(shù)存儲(chǔ)邏輯單元;FFT系數(shù)存儲(chǔ)邏輯單元,在該參數(shù)與地址控制器的控制下把FFT系數(shù)存儲(chǔ)在內(nèi)存中;乘加運(yùn)算器,從FFT系數(shù)存儲(chǔ)邏輯單元中取出各個(gè)輸入數(shù)據(jù)的FFT系數(shù)以及各個(gè)濾波器的FFT系數(shù),把相應(yīng)的濾波器FFT系數(shù)和輸入數(shù)據(jù)的FFT系數(shù)點(diǎn)乘,把各個(gè)點(diǎn)乘的結(jié)果矢量相加,最后的結(jié)果送回FFT系數(shù)存儲(chǔ)邏輯單元;所述FFT/IFFT運(yùn)算邏輯單元,根據(jù)該參數(shù)與地址控制器發(fā)來的命令,對(duì)FFT系數(shù)存儲(chǔ)邏輯單元保留的乘加運(yùn)算結(jié)果進(jìn)行IFFT運(yùn)算,IFFT運(yùn)算的結(jié)果由FFT運(yùn)算存儲(chǔ)邏輯進(jìn)行保存;重疊緩沖器,以每次IFFT運(yùn)算結(jié)果的部分值更新其保存的值;參數(shù)與地址控制器,控制輸入數(shù)據(jù)存儲(chǔ)邏輯單元、FFT/FFT運(yùn)算邏輯單元和乘加運(yùn)算器的操作。
所述乘加運(yùn)算器把IFFT運(yùn)算的部分結(jié)果和重疊緩沖器中保留的上一次運(yùn)算的結(jié)果相加,并且保存回原來的位置。
本發(fā)明還提供一種數(shù)字信號(hào)處理方法,包括步驟循環(huán)計(jì)數(shù)器的計(jì)數(shù)J置0,重疊緩沖器清零;選定FFT計(jì)算的平均長(zhǎng)度N和運(yùn)算長(zhǎng)度FL;判斷循環(huán)計(jì)數(shù)器的計(jì)數(shù)J和各濾波器沖擊響應(yīng)Hi值,如果判斷循環(huán)計(jì)數(shù)器的計(jì)數(shù)J=0或者濾波器沖擊響應(yīng)Hi的值發(fā)生變化,把濾波器沖擊響應(yīng)Hi往后補(bǔ)零成為長(zhǎng)度為FL的向量,并且對(duì)各個(gè)濾波器沖擊響應(yīng)Hi進(jìn)行FFT運(yùn)算,得到其FFT系數(shù)[hi,0,hi,1,...hi,F(xiàn)L-1]并保留在濾波器沖擊響應(yīng)的緩沖器中;如果判斷J≠0或者濾波器沖擊響應(yīng)Hi的值沒有發(fā)生變化,則進(jìn)入下一步驟;對(duì)各路輸入信號(hào)Xi按時(shí)間輸入N個(gè)值,往后補(bǔ)零成為運(yùn)算長(zhǎng)度FL,并且對(duì)各路輸入信號(hào)Xi進(jìn)行FL點(diǎn)的FFT運(yùn)算,得到其FFT系數(shù)[xi,0,xi,1,...xi,F(xiàn)L-1],i=1,2,...M;將各個(gè)濾波器沖擊響應(yīng)Hi的FFT系數(shù)[hi,0,hi,1,...hi,F(xiàn)L-1]和各路輸入信號(hào)X的FFT系數(shù)[xi,0,xi,1,...xi,F(xiàn)L-1]點(diǎn)乘;
由乘加運(yùn)算器把M個(gè)點(diǎn)乘的結(jié)果[hi,0xi,0,hi,1xi,1,...hi,F(xiàn)L-1xi,F(xiàn)L-1]進(jìn)行矢量相加;對(duì)矢量相加的結(jié)果進(jìn)行IFFT運(yùn)算得到時(shí)域的FL點(diǎn)輸出Tj;該輸出Tj中的第0點(diǎn)到第Lmax-2點(diǎn)的值加上重疊緩沖器中第0點(diǎn)到第Lmax-2點(diǎn)的值,Lmax是濾波器的最大階數(shù);將該輸出Tj中的第0到第N-1點(diǎn)的值輸出,并將該輸出Tj中的第N點(diǎn)到第N+Lmax-2點(diǎn)的值分別存儲(chǔ)在重疊緩沖器中的0點(diǎn)到第Lmax-2點(diǎn)的位置;回到上述判斷循環(huán)計(jì)數(shù)器的計(jì)數(shù)J和各濾波器沖擊響應(yīng)Hi值的步驟,然后重復(fù)進(jìn)行以后的各個(gè)步驟,直到完成對(duì)所有的輸入信號(hào)的處理。
本發(fā)明的算法和以往的快速卷積算法相比,IFFT運(yùn)算減少了M-1次,減少了N-1次的時(shí)域加法,減少了M-1次的重疊緩沖器操作,只增加了(M-1)*FL次的復(fù)數(shù)加法,因此,計(jì)算復(fù)雜度明顯降低。
圖1是卷積求和運(yùn)算的示意圖;圖2是快速卷積算法的流程圖;圖3是根據(jù)本發(fā)明的信號(hào)處理方法的流程圖;圖4是根據(jù)本發(fā)明的信號(hào)處理裝置的結(jié)構(gòu)方框圖。
具體實(shí)施例方式
考慮在頻域進(jìn)行M個(gè)DFT系數(shù)的相加得到Y(jié)對(duì)應(yīng)的DFT系數(shù),然后只進(jìn)行一次IFFT運(yùn)算得到時(shí)域Y信號(hào)。這樣就要求所有單個(gè)濾波操作(DFT系數(shù)相乘)后的DTF系數(shù)長(zhǎng)度必須相等,即所有快速卷積中的FFT運(yùn)算長(zhǎng)度必須相等。
每個(gè)濾波器的輸入都可以表示為矩形加窗之后的信號(hào)之和,R(i)=1,0≤i<N0,i<00,i≥N]]>Xi=Σj=-∞∞XiR(i-jN)]]>(4)式中i,j是整數(shù)序號(hào),N是矩形窗長(zhǎng)。這樣,由于卷積運(yùn)算為線性運(yùn)算,輸出Y可以表示為Y=Σj=-∞∞Σi=0M[XiR(i-jN)]*Hi---(5)]]>設(shè)定Tj=Σi=0M[XiR(i-jN)]*Hi]]>那么,方程式(5)可簡(jiǎn)化為Y=Σj=-∞∞Tj---(6)]]>我們只需要計(jì)算各個(gè)時(shí)段的輸出Tj,然后在時(shí)域上疊加各個(gè)Tj,就可以得到最終的輸出Y??紤]Tj的計(jì)算,由于Hi為因果FIR濾波器的沖擊響應(yīng),而各輸入XiR(i-jN)在時(shí)間jN之前全部為0,因此Tjk=0,k<jN(7)假設(shè)濾波器Hi的最大長(zhǎng)度為L(zhǎng)max,那么Tjk=0,k≥jN+N+Lmax-1 (8)因此Tj在區(qū)間jN≤k<jN+N+Lmax-1內(nèi)的輸出值可能不為0,區(qū)間的長(zhǎng)度為N+Lmax-1。各Tj之間重疊的部分為L(zhǎng)max-1。
考慮Tj的計(jì)算Tj=Σi=0M[XiR(i-jN)]*Hi]]>1)[XiR(i-jN)]*Hi的計(jì)算可以使用快速卷積算法,其快速卷積中FFT的長(zhǎng)度必須大于等于N+Li-1。
2)考慮到各個(gè)快速卷積運(yùn)算中FFT運(yùn)算長(zhǎng)度必須一致,所選的長(zhǎng)度必須大于等于N+Lmax-1。而且為了FFT運(yùn)算的方便,選擇一個(gè)大于等于N+Lmax-1的2的整數(shù)次方的一個(gè)數(shù)作為FFT的運(yùn)算長(zhǎng)度FL,即FL≥N+Lmax-1FL=2k,k為整數(shù)。
(9)3)為了節(jié)省計(jì)算量,把計(jì)算Tj時(shí)的時(shí)域加法轉(zhuǎn)換為頻域的加法;4)因?yàn)門j與Tj+1之間有Lmax-1的重疊,必須把Tj的FL點(diǎn)輸出(其中第N+Lmax-1到第FL-1點(diǎn)數(shù)值為0)中的第N點(diǎn)到第N+Lmax-2點(diǎn)保存在緩沖器中,以便和Tj+1的值相加得到正確輸出。為了避免Tj和Tj+2之間的重疊,可以設(shè)定FFT計(jì)算的平均長(zhǎng)度N>Lmax-2 (10)下面結(jié)合圖3說明信號(hào)處理的步驟。
假定有M個(gè)輸入信號(hào)X1至XM。
1.置J=0,重疊緩沖器清零,J是循環(huán)計(jì)數(shù)器的計(jì)數(shù);2.根據(jù)表示式(10)FFT計(jì)算的平均長(zhǎng)度N>Lmax-2,根據(jù)運(yùn)用中實(shí)時(shí)性的要求、緩沖器大小等情況確定FFT計(jì)算的平均長(zhǎng)度B的大小;3.根據(jù)表示式(9),運(yùn)算長(zhǎng)度FL≥N+Lmax-1和運(yùn)算長(zhǎng)度FL必須為2的整數(shù)次方確定FFT的運(yùn)算長(zhǎng)度FL。
4.對(duì)各濾波器沖擊響應(yīng)Hi,如果判斷J=0或者濾波器沖擊響應(yīng)Hi的值發(fā)生變化,把濾波器沖擊響應(yīng)Hi往后補(bǔ)零成為長(zhǎng)度為FL的向量,并且對(duì)各個(gè)濾波器沖擊響應(yīng)Hi進(jìn)行FFT運(yùn)算,得到其FFT系數(shù)[hi,0,hi,1,...hi,F(xiàn)L-1]并保留在濾波器沖擊響應(yīng)的緩沖器中;如果判斷J≠0或者濾波器沖擊響應(yīng)Hi的值沒有發(fā)生變化,則進(jìn)入下一步驟。
5.對(duì)各個(gè)輸入信號(hào)Xi按時(shí)間輸入N個(gè)值,往后補(bǔ)零成為長(zhǎng)度為FL的向量,并且對(duì)Xi進(jìn)行FL點(diǎn)的FFT運(yùn)算,得到其FFT系數(shù)[xi,0,xi,1,...xi,F(xiàn)L-1]。
6.對(duì)各個(gè)濾波器沖擊響應(yīng)Hi的FFT系數(shù)[hi,0,hi,1,...hi,F(xiàn)L-1]和各個(gè)輸入信號(hào)Xi的FFT系數(shù)[xi,0,xi,1,...xi,F(xiàn)L-1]點(diǎn)乘,得到點(diǎn)乘結(jié)果[hi,0xi,0,hi,1xi,1,...hi,F(xiàn)L-1xi,F(xiàn)L-1]。此運(yùn)算需要FL次復(fù)數(shù)乘法,但假如濾波器沖擊響應(yīng)Hi和輸入信號(hào)Xi都為實(shí)數(shù),根據(jù)DFT系數(shù)的對(duì)稱性,則只需要進(jìn)行FL/2+1次復(fù)數(shù)乘法運(yùn)算。
7.把M個(gè)點(diǎn)乘結(jié)果[hi,0xi,0,hi,1xi,1,...hi,F(xiàn)L-1xi,F(xiàn)L-1]進(jìn)行矢量相加,得到p=[Σi=1Mhi,0xi,0,...Σi=1Mhi,FL-1xi,Fl-1].]]>此運(yùn)算需要(M-1)*FL次復(fù)數(shù)加法,但是對(duì)于濾波器沖擊響應(yīng)Hi和輸入信號(hào)Xi都為實(shí)數(shù)的情況,需要進(jìn)行(M-1)*(FL/2+1)次復(fù)數(shù)加法。
8.對(duì)p進(jìn)行IFFT運(yùn)算得到時(shí)域的FL點(diǎn)輸出Tj,Tj的第B+Lmax-1到第FL-1點(diǎn)的值為零。
9.Tj的第0點(diǎn)到第Lmax-2點(diǎn)的值加上重疊緩沖器中第0點(diǎn)到第Lmax-2點(diǎn)的值。
10.Tj的第N點(diǎn)到第N+Lmax-2點(diǎn)分別存儲(chǔ)在重疊緩沖器中的0點(diǎn)到第Lmax-2點(diǎn)。
11.輸出Tj的第0到第N-1點(diǎn)。
12.循環(huán)計(jì)數(shù)器的計(jì)數(shù)J遞增1,即J=J+1,回到步驟4,重復(fù)以后的各個(gè)步驟,直到對(duì)M個(gè)輸入信號(hào)的上述處理完成。
下面以具體的例子進(jìn)行說明信號(hào)處理的過程。
假設(shè)共有3路輸入信號(hào)X1,X2,X3,H1為34階FIR濾波器,H2為99階FIR濾波器,H3為59階FIR濾波器,即Lmax=99,,計(jì)算濾波結(jié)果Y=X1*H1+X2*H2+X3*H3,在計(jì)算過程種,H1,H2,H3的數(shù)值恒定。
首先,根據(jù)(10)式和(9)式選定FFT計(jì)算的平均長(zhǎng)度N=128,運(yùn)算長(zhǎng)度FL=256,N和FL的數(shù)值由控制信號(hào)輸入端進(jìn)入?yún)?shù)與地址控制器確定,重疊緩沖器的大小不小于Lmax-1=98,初始值為0。數(shù)據(jù)信號(hào)分別由輸入端輸入h1的濾波器系數(shù),輸入數(shù)據(jù)存儲(chǔ)邏輯根據(jù)控制器送來的補(bǔ)零數(shù)分別把系數(shù)補(bǔ)零成256位,F(xiàn)FT/IFFT運(yùn)算邏輯單元從數(shù)據(jù)存儲(chǔ)邏輯取數(shù)后進(jìn)行FFT運(yùn)算,由FFT系數(shù)存儲(chǔ)邏輯單元存儲(chǔ)其FFT系數(shù);分別對(duì)h2,h3進(jìn)行類似的運(yùn)算,h1,h2,h3的FFT系數(shù)分別記為FH1,F(xiàn)H2,F(xiàn)H3。輸入128位信號(hào)X1的值,補(bǔ)零成256位之后,由FFT/IFFT運(yùn)算邏輯單元進(jìn)行FFT運(yùn)算之后,由FFT系數(shù)存儲(chǔ)邏輯單元存放其FFT系數(shù)值。對(duì)信號(hào)X2,X3進(jìn)行相應(yīng)的操作,信號(hào)X1,X2,X3的FFT系數(shù)分別記為FX1,F(xiàn)X2,F(xiàn)X3。由乘加運(yùn)算器計(jì)算FFT系數(shù)的乘加結(jié)果FS=FX1*FH2+FX2*FH2+FX3*FH3,由FFT系數(shù)存儲(chǔ)邏輯單元存儲(chǔ)運(yùn)算結(jié)果FS(256位復(fù)系數(shù))。FFT/IFFT運(yùn)算邏輯對(duì)FS進(jìn)行IFFT運(yùn)算,由FFT系數(shù)存儲(chǔ)邏輯對(duì)結(jié)果S進(jìn)行保存。通過乘加運(yùn)算器把結(jié)果S的第0個(gè)值到第97個(gè)值與重疊緩沖器中的第0個(gè)值到第97個(gè)值相加,結(jié)果保存在結(jié)果S的相應(yīng)位置,即S
=S
+重疊緩沖器
,...,S[97]=S[97]+重疊緩沖器[97]。S
,...,S[127]位計(jì)算結(jié)果進(jìn)行輸出。把S[128],...,S[128+(98-1)]保存到重疊緩沖器中的重疊緩沖器
到重疊緩沖器[97]的位置。然后回到對(duì)各個(gè)濾波器沖擊響應(yīng)Hi和各路輸入信號(hào)Xi補(bǔ)零以及FFT運(yùn)算的步驟,并重復(fù)進(jìn)行以后的各個(gè)步驟,直到信號(hào)X1,X2,X3的輸入結(jié)束為止。
圖4是根據(jù)本發(fā)明的信號(hào)處理裝置的結(jié)構(gòu)方框圖。
輸入數(shù)據(jù)存儲(chǔ)邏輯單元存儲(chǔ)輸入的各路信號(hào)數(shù)據(jù)與濾波器數(shù)據(jù),根據(jù)參數(shù)與地址控制端送來的補(bǔ)零個(gè)數(shù)對(duì)輸入數(shù)據(jù)進(jìn)行補(bǔ)零操作。FFT/IFFT運(yùn)算邏輯單元,根據(jù)輸入數(shù)據(jù)存儲(chǔ)邏輯單元提供的數(shù)據(jù)和參數(shù)與地址控制器提供的命令對(duì)輸入數(shù)據(jù)進(jìn)行FFT運(yùn)算,然后把運(yùn)算結(jié)果送到FFT系數(shù)存儲(chǔ)邏輯單元。FFT存儲(chǔ)邏輯單元在參數(shù)與地址控制器的控制下把FFT系數(shù)存儲(chǔ)到內(nèi)存的某個(gè)位置。當(dāng)各個(gè)輸入數(shù)據(jù)的FFT運(yùn)算及存儲(chǔ)完成時(shí),由乘加運(yùn)算器從FFT系數(shù)存儲(chǔ)邏輯單元中取出各個(gè)輸入數(shù)據(jù)的FFT系數(shù)以及各個(gè)濾波器的FFT系數(shù),把相應(yīng)的濾波器FFT系數(shù)和輸入數(shù)據(jù)的FFT系數(shù)點(diǎn)乘,把各個(gè)點(diǎn)乘的結(jié)果矢量相加,最后的結(jié)果送回FFT系數(shù)存儲(chǔ)邏輯單元。此后,F(xiàn)FT/IFFT運(yùn)算邏輯單元根據(jù)參數(shù)與地址控制器的命令對(duì)FFT系數(shù)存儲(chǔ)邏輯單元保留的乘加運(yùn)算結(jié)果進(jìn)行IFFT運(yùn)算,IFFT運(yùn)算的結(jié)果由FFT運(yùn)算存儲(chǔ)邏輯單元進(jìn)行保存。最后乘加運(yùn)算器把IFFT運(yùn)算的部分結(jié)果和重疊緩沖器中保留的上一次運(yùn)算的結(jié)果相加,并且保存在回原來的位置。重疊緩沖器的值更新為IFFT運(yùn)算結(jié)果的部分值。輸出的運(yùn)算結(jié)果為IFFT運(yùn)算結(jié)果的一部分值。這里沒有對(duì)硬件執(zhí)行此種計(jì)算的各個(gè)步驟進(jìn)行詳細(xì)說明,因?yàn)橛布牟襟E和前面已經(jīng)詳述的算法步驟是一一對(duì)應(yīng)的。
本發(fā)明以具體的實(shí)施例結(jié)合附圖進(jìn)行了說明,但是具體的實(shí)施例不是用來限定本發(fā)明,本領(lǐng)域的技術(shù)人員可以在不脫離本發(fā)明的精神和范圍的情況下進(jìn)行修改、變更或替換。
權(quán)利要求
1.一種信號(hào)處理方法,包括以下步驟循環(huán)計(jì)數(shù)器的計(jì)數(shù)J置0,重疊緩沖器清零;選定FFT計(jì)算的平均長(zhǎng)度N和運(yùn)算長(zhǎng)度FL;判斷循環(huán)計(jì)數(shù)器的計(jì)數(shù)J和各濾波器沖擊響應(yīng)Hi值,如果判斷循環(huán)計(jì)數(shù)器的計(jì)數(shù)J=0或者濾波器沖擊響應(yīng)Hi的值發(fā)生變化,把濾波器沖擊響應(yīng)Hi往后補(bǔ)零成為長(zhǎng)度為FL的向量,并且對(duì)各個(gè)濾波器沖擊響應(yīng)Hi進(jìn)行FFT運(yùn)算,得到其FFT系數(shù)[hi,0,hi,1,...hj,F(xiàn)L-1]并保留在濾波器沖擊響應(yīng)的緩沖器中;如果判斷J≠0或者濾波器沖擊響應(yīng)Hi的值沒有發(fā)生變化,則進(jìn)入下一步驟;對(duì)各路輸入信號(hào)Xi按時(shí)間輸入N個(gè)值,往后補(bǔ)零成為運(yùn)算長(zhǎng)度FL,并且對(duì)各路輸入信號(hào)Xi進(jìn)行FL點(diǎn)的FFT運(yùn)算,得到其FFT系數(shù)[xi,0,xi,1,...xi,F(xiàn)L-1],i=1,2,...M;將各個(gè)濾波器沖擊響應(yīng)Hi的FFT系數(shù)[hi,0,hi,1,...hi,F(xiàn)L-1]和各路輸入信號(hào)X的FFT系數(shù)[xi,0,xi,1,...xi,F(xiàn)L-1]點(diǎn)乘;由乘加運(yùn)算器把M個(gè)點(diǎn)乘的結(jié)果[hi,0xi,0,hi,1xi,1,...hi,F(xiàn)L-1xi,F(xiàn)L-1]進(jìn)行矢量相加;對(duì)矢量相加的結(jié)果進(jìn)行IFFT運(yùn)算得到時(shí)域的FL點(diǎn)輸出Tj;該輸出Tj中的第0點(diǎn)到第Lmax-2點(diǎn)的值加上重疊緩沖器中第0點(diǎn)到第Lmax-2點(diǎn)的值,Lmax是濾波器的最大階數(shù);將該輸出Tj中的第0到第N-1點(diǎn)的值輸出,并將該輸出Tj中的第N點(diǎn)到第N+Lmax-2點(diǎn)的值分別存儲(chǔ)在重疊緩沖器中的0點(diǎn)到第Lmax-2點(diǎn)的位置;回到上述判斷循環(huán)計(jì)數(shù)器的計(jì)數(shù)J和各濾波器沖擊響應(yīng)Hi值的步驟,然后重復(fù)進(jìn)行以后的各個(gè)步驟,直到完成對(duì)所有的輸入信號(hào)的處理。
2.根據(jù)權(quán)利要求1的信號(hào)處理方法,其中所述選定FFT計(jì)算的平均長(zhǎng)度是根據(jù)下式確定的N>Lmax-2和運(yùn)算長(zhǎng)度根據(jù)以下公式確定FL≥N+Lmax-1,F(xiàn)L=2k,k為整數(shù),Lmax是濾波器的最大階數(shù)。
3.根據(jù)權(quán)利要求1的信號(hào)處理方法,其中所述各路輸入信號(hào)Xi的FFT系數(shù)與濾波器沖擊響應(yīng)Hi的FFT系數(shù)的點(diǎn)乘步驟進(jìn)行FL次;其中所述矢量相加運(yùn)算步驟需要進(jìn)行(M-1)*FL次。
4.根據(jù)權(quán)利要求3的信號(hào)處理方法,其中在濾波器沖擊響應(yīng)Hi的FFT系數(shù)和所述各路輸入信號(hào)Xi的FFT系數(shù)都是實(shí)數(shù)的情況下,需要進(jìn)行FL/2+1次復(fù)數(shù)乘法運(yùn)算和(M-1)*(FL/2+1)次復(fù)數(shù)加法運(yùn)算。
5.一種信號(hào)處理裝置,包括輸入數(shù)據(jù)存儲(chǔ)邏輯單元,用于存儲(chǔ)輸入的各路信號(hào)數(shù)據(jù)與濾波器數(shù)據(jù),根據(jù)參數(shù)與地址控制端送來的補(bǔ)零個(gè)數(shù)對(duì)輸入數(shù)據(jù)進(jìn)行補(bǔ)零操作;FFT/IFFT運(yùn)算邏輯單元,根據(jù)輸入數(shù)據(jù)存儲(chǔ)邏輯單元提供的數(shù)據(jù)和參數(shù)與地址控制器提供的命令對(duì)輸入數(shù)據(jù)進(jìn)行FFT運(yùn)算,然后把運(yùn)算結(jié)果送到FFT系數(shù)存儲(chǔ)邏輯單元;FFT系數(shù)存儲(chǔ)邏輯單元,在該參數(shù)與地址控制器的控制下把FFT系數(shù)存儲(chǔ)在內(nèi)存中;乘加運(yùn)算器,從FFT系數(shù)存儲(chǔ)邏輯單元中取出各個(gè)輸入數(shù)據(jù)的FFT系數(shù)以及各個(gè)濾波器的FFT系數(shù),把相應(yīng)的濾波器沖擊響應(yīng)的FFT系數(shù)和輸入數(shù)據(jù)的FFT系數(shù)點(diǎn)乘,把各個(gè)點(diǎn)乘的結(jié)果矢量相加,最后的結(jié)果送回FFT系數(shù)存儲(chǔ)邏輯單元;所述FFT/IFFT運(yùn)算邏輯單元,根據(jù)該參數(shù)與地址控制器發(fā)來的命令,對(duì)FFT系數(shù)存儲(chǔ)邏輯單元保留的乘加運(yùn)算結(jié)果進(jìn)行IFFT運(yùn)算,IFFT運(yùn)算的結(jié)果由FFT運(yùn)算存儲(chǔ)邏輯進(jìn)行保存;重疊緩沖器,以每次IFFT運(yùn)算結(jié)果的部分值更新其保存的值;參數(shù)與地址控制器,控制輸入數(shù)據(jù)存儲(chǔ)邏輯單元、FFT/FFT運(yùn)算邏輯單元和乘加運(yùn)算器的操作。
6.根據(jù)權(quán)利要求5的信號(hào)處理裝置,其特征在于所述乘加運(yùn)算器把IFFT運(yùn)算的部分結(jié)果和重疊緩沖器中保留的上一次運(yùn)算的結(jié)果相加,并且保存回原來的位置。
7.根據(jù)權(quán)利要求5的信號(hào)處理裝置,其特征在于所述FFT/IFFT運(yùn)算邏輯單元對(duì)由乘加運(yùn)算器進(jìn)行矢量相加的結(jié)果進(jìn)行IFFT運(yùn)算,所述矢量相加的結(jié)果是將各個(gè)濾波器沖擊響應(yīng)的FFT系數(shù)和各路輸入信號(hào)的FFT系數(shù)點(diǎn)乘的各個(gè)點(diǎn)乘結(jié)果進(jìn)行矢量相加得到的。
全文摘要
本發(fā)明的信號(hào)處理裝置包括輸入數(shù)據(jù)存儲(chǔ)邏輯單元;FFT/FFT運(yùn)算邏輯單元;FFT系數(shù)存儲(chǔ)邏輯單元;乘加運(yùn)算器;重疊緩沖器和參數(shù)與地址控制器。本發(fā)明的信號(hào)處理方法包括步驟循環(huán)計(jì)數(shù)器的計(jì)數(shù)J置0,重疊緩沖器清零;選定FFT計(jì)算的平均長(zhǎng)度N和運(yùn)算長(zhǎng)度FL;判斷循環(huán)計(jì)數(shù)器的計(jì)數(shù)J和各濾波器沖擊響應(yīng)H
文檔編號(hào)H03H17/00GK1688104SQ20051007758
公開日2005年10月26日 申請(qǐng)日期2005年6月20日 優(yōu)先權(quán)日2005年6月20日
發(fā)明者林中松 申請(qǐng)人:北京中星微電子有限公司