對于系數(shù)固定的FIR、IIR濾波器所具有的特性是確定的,對于輸入信號可根據(jù)這個濾波器產(chǎn)生相應的輸出,即先有了濾波器系數(shù),然后決定相應的輸出值。但有些實際應用往往是反過來要求的,即對濾波器輸出的要求是明確的,而濾波器的特性卻無法事先知道。如在通信系統(tǒng)中,信號通過信道傳輸,由于信道頻率特性的影響,接收信號失真畸變而引發(fā)碼間干擾,這將嚴重影響通信質(zhì)量,為此,需要在系統(tǒng)中插入一種可調(diào)的濾波器以減小碼間干擾,這種系數(shù)可調(diào)的濾波器即為自適應濾波器。其參數(shù)可以自動地按照某種準則調(diào)整到最佳濾波。自適應濾波器已廣泛應用于系統(tǒng)模式識別,通信信道的自適應均衡,雷達與聲納的波束形成,減少或消除心電圖中的周期干擾,噪聲中信號的檢測、跟蹤、增強和信號預測等。
1 自適應濾波器的原理
自適應濾波器的原理如圖1所示。
圖中x(n)稱為輸入信號,y(n)是輸出信號,d(n)稱為期望信號,或稱參考信號、訓練信號,e(π)是誤差信號,e(n)=d(n)-y(n)。
自適應濾波器H(z)的系數(shù)根據(jù)誤差信號,通過一定的自適應算法,不斷地進行改變,使輸出信號y(n)最接近期望信號d(n)。
本文以自適應處理器為例說明自適應濾波器的設(shè)計。
2 自適應濾波器的設(shè)計
2.1 TMS320C6701的主要特點
TMS320C6701是一種通用浮點超高速DSP,與TMS320C6201管腳兼容,主頻167 MHz,共8個運算單元,其中6個為浮點單元,也采用8*32 b=256 b的超長指令字,分置運算能力為1 GFLOPS或1 336 MIPS,結(jié)構(gòu)上與C6201類似,不同之處在于:
(1)4個浮點/定點ALU;
(2)2個定點ALU;
(3)2個浮點/定點乘法器,乘法器接受32 b定點數(shù),產(chǎn)生64 b結(jié)果;
(4)支持32/64 b的IEEE浮點格式;
(5)峰值運算能力為:1 GFLOPS(32 b單精度),256 MFLOPS(64 b雙精度),乘法并行操作688 MFLOPS。
2.2 自適應處理器的實現(xiàn)
在自適應信號處理中,DSP要根據(jù)一定的算法,從實測數(shù)據(jù)中估算出權(quán)值,然后DSP把這種自適應權(quán)與數(shù)據(jù)合成,得到期望的輸出。圖2是一個自適應對消原理圖,在3路數(shù)據(jù)中都含有期望的信號和要抑制的干擾,其中各路的干擾是相關(guān)的,而信號的相關(guān)性很弱,信號與干擾不相關(guān)。自適應算法就是從3路數(shù)據(jù)中取來一批數(shù)據(jù)作為樣本,按最小二乘法則,將3路數(shù)據(jù)合成,使得合成輸出中干擾基本上被消除,而信號仍較強。為了使信號不隨干擾一起被對消掉,希望在求全樣本中無信號。
可采用DSP對3路輸入支路進行自適應合成,每路數(shù)據(jù)為復數(shù)據(jù),I,Q串行,即先實部后虛部的次序,數(shù)據(jù)速率為1.5 MHz,根據(jù)復數(shù)的合成公式為:
y=x0-w1xl-w2x2
wn,xn,y均為復數(shù)。每輸出一個復數(shù)數(shù)據(jù),需要8次實數(shù)乘法和8次實數(shù)加法,要求DSP始終保持24 MFLOPS的運算速度。主頻60 MHz的TMS320C6701峰值運算速度為60 MFLOPS,數(shù)據(jù)輸入/輸出速度也能滿足要求。
自適應權(quán)值的運算和系統(tǒng)的一些控制功能由另一片TMS320C6701完成,此C6701定期從3路信號中取得一批數(shù)據(jù)作為樣本,樣本中僅含干擾而沒有信號成分,然后按照如下公式計算出自適應權(quán)w=[w1,w2]T:
其中E表示求數(shù)學期望,在此用N次平均值近似取代,N定為16,各元素均為復數(shù)。[!--empirenews.page--]
2.3 硬件結(jié)構(gòu)與原理
本電路采用2片C6701,電路結(jié)構(gòu)如圖3所示,3路信號為10位定點數(shù)據(jù)格式,拼成30位并行數(shù)據(jù)送到C6701的總線上,C6701將其讀到片內(nèi)RAM,利用移位指令分解為3個定點數(shù)。求權(quán)C6701必須把數(shù)據(jù)轉(zhuǎn)換成浮點數(shù),才能以較高的精度快速求出自適應權(quán)。求權(quán)運算中要用到除法操作,浮點DSP進行除法運算很方便。求權(quán)C6701將求得的權(quán)轉(zhuǎn)換為16位定點格式,寫到兩片C6701共用的RAM中,加權(quán)C6701按定點方式用自適應權(quán)對3路數(shù)據(jù)加權(quán),對結(jié)果取16位,通過FIFO后送出。
系統(tǒng)時鐘為3 MHz,此時鐘將3路共30位數(shù)據(jù)以及I,Q標志位共6701位數(shù)據(jù)送向C6701,兩片C6701利用互鎖信號XF0、XF1確保正確地從總線上讀取數(shù)據(jù),既不丟失,也不重復讀取,并根據(jù)數(shù)據(jù)的I,Q標志區(qū)分復數(shù)據(jù)的實部和虛部,兩片C6701的操作如下:
(1)求權(quán)C6701用XF1和互鎖指令定期讀取一批數(shù)據(jù)作為樣本,求得自適應權(quán),并化為16位定點數(shù)。
(2)求權(quán)C6701利用配置成通用輸出管腳的TCLK0、TCLK1向加權(quán)C6701先后提出INT0請求、HOLD請求。
(3)求權(quán)C6701取得兩片C6701的公共總線控制權(quán),利用地址線、數(shù)據(jù)線、讀寫R/W和STRB向公共RAM寫入自適應權(quán),然后撤銷HOLD請求。
(4)加權(quán)C6701取得總線控制權(quán),從公共RAM中讀自適應權(quán)。
(5)加權(quán)C6701進行3路數(shù)據(jù)合成,把16位結(jié)果和I,Q標志寫入FIFO;系統(tǒng)按數(shù)據(jù)時鐘從FIFO中取走數(shù)據(jù)。加權(quán)C6701一直進行這樣的合成、寫FIFO操作,直到求權(quán)C6701下一次提出中斷、HOLD請求。
(6)在兩片C6701訪問公共RAM,以及加權(quán)C6701向FIFO寫數(shù)時,輸入緩沖器74F245上的三態(tài)使能是關(guān)閉的。
2.4 時序要求
C6701利用互鎖操作從數(shù)據(jù)線上正確讀數(shù)是關(guān)鍵,數(shù)據(jù)時鐘的占空比是50%,將它與C6701的XF1(設(shè)定為輸入)相連,C6701通過互鎖指令保證讀數(shù)操作與數(shù)據(jù)時鐘準確同步,同時加權(quán)C6701還要完成多次乘加運算和FIFO寫數(shù)操作,這要求在硬件時序給定的情況下,C6701利用軟件指令的優(yōu)化排列來保證處理的正確性和高效性,其同步和運算、讀寫流程如圖4所示,當C6701讀數(shù)、寫FIFO的時序與數(shù)據(jù)時鐘不合拍時,可以執(zhí)行指令執(zhí)行順序或增減空操作(NOP)指令。
3 軟硬件調(diào)試
將PC機通過仿真卡、電纜與C6701電路板上的仿真口接好,給電路板加電,運行仿真軟件,觀察C6701的寄存器、程序、數(shù)據(jù)內(nèi)容,因為有兩片C6701,用兩個仿真器調(diào)試更方便。軟硬件調(diào)試的工作主要是C6701與其他設(shè)備的握手、通信問題。求權(quán)C6701的主要調(diào)試過程是:
(1)調(diào)試互鎖讀數(shù)指令,若有信號源,即前端送來3路數(shù)據(jù)和相應的時鐘且3路信號值已知或已測出的話,則令C6701全速運行讀取一段數(shù)據(jù),然后讓C6701停下來,觀察讀到的數(shù)據(jù)與送來的數(shù)據(jù)是否完全一致,若不一致,則逐步檢查;若沒有信號源,則利用示波器或邏輯分析儀來分析波形,C6701進行互鎖讀時,就會將XF0置低,觀察XF0與XF1(數(shù)據(jù)時鐘)以及STRB信號的波形,可以看出同步互鎖的時序配合,若達不到要求,則要修改C6701程序,還應注意C6701讀數(shù)時刻(STRB上升沿)是否臨近數(shù)據(jù)轉(zhuǎn)換沿。
(2)向RAM寫自適應權(quán):利用仿真器直接察看RAM中內(nèi)容是否正確寫入,或者將寫入的權(quán)再從RAM讀回后比較,以次驗證存儲器總線操作。
4 程序固化
軟硬件調(diào)試符合要求后,就可以將程序固化到RAM中。求權(quán)C6701的程序代碼固化在EPROM地址1000H開始的區(qū)間,加權(quán)C6701的程序代碼固化在EPROM地址8000H開始的區(qū)間,求權(quán)C6701是標準的8位ROM引導方式,而加權(quán)C6701是串行口引導方式,其程序頭與求權(quán)C6701代碼的程序頭一樣,加權(quán)C6701的32位代碼事先按先低字節(jié),后高字節(jié)的順序轉(zhuǎn)換成8位代碼。
求權(quán)C6701的代碼在上電復位后自動裝入片內(nèi)RAM,求權(quán)C6701引導成功后要通過串口向加權(quán)C6701發(fā)送加權(quán)C6701的代碼,求權(quán)C6701總共向加權(quán)C6701發(fā)送N+2個32字。
在程序固化后,再檢驗電路板的工作是否正確,可通過C6701的IACK等管腳連到的發(fā)光二極管閃爍來表明DSP程序已經(jīng)正確引導并正常運行,在C6701的程序中應加入IACK指令,C6701全速工作時定期在IACK管腳上輸出一個負脈沖。
5 結(jié) 語
DSP器件已經(jīng)應用于很多領(lǐng)域,用其構(gòu)成的自適應濾波器,也得到了廣泛應用,本文提出的這種特殊結(jié)構(gòu)的自適應濾波器,由于有較好的實時性和濾波效果,應該有較好的應用前景。