在信號采集與處理中,常只關(guān)心具有較窄帶寬和較強(qiáng)周期特征的信號,這時(shí)寬帶噪聲成為必須濾除的有害成分。信號的頻譜攜帶著信源最本質(zhì)的特征,但是實(shí)際采集的信號不可避免地受到寬帶噪聲或?qū)拵Ц蓴_的影響,如何快速、高效地消除這些噪聲和干擾,增強(qiáng)目標(biāo)譜線在信號處理領(lǐng)域具有重要的意義。ALE利用窄帶信號的周期性和寬帶噪聲的弱相關(guān)性,能夠在信號特征未知的條件下自適應(yīng)地將信號從噪聲中提取出來,廣泛應(yīng)用于目標(biāo)識別和特征提取中。FPGA因具有高度的設(shè)計(jì)靈活性、高速的數(shù)據(jù)處理能力、豐富的片內(nèi)資源而在數(shù)字信號處理領(lǐng)域占用重要的地位。在此利用FPGA作為數(shù)字信號處理的核心部分。流水線結(jié)構(gòu)和分布式算法即是充分利用FPGA高速處理能力,實(shí)現(xiàn)復(fù)雜數(shù)字信號處理算法的有效途徑。ALE核心部分構(gòu)造了利用LMS(Least Mean Square LMS)算法實(shí)現(xiàn)自適應(yīng)譜線增強(qiáng)以及硬件實(shí)現(xiàn)的FPGA流水線結(jié)構(gòu)。
1自適應(yīng)濾波原理
自適應(yīng)濾波是相對固定濾波器而言的.固定濾波器濾波頻率是固定的,自適應(yīng)濾波器濾波的頻率自動(dòng)適應(yīng)輸入信號而變化的,所以其適用范圍更加廣泛。自適應(yīng)濾波器是滿足某種準(zhǔn)則的最佳濾波器,這種濾波器能夠在不需要任何關(guān)于信號和噪聲先驗(yàn)統(tǒng)計(jì)知識的情況下,自動(dòng)地根據(jù)輸入信號的變化更新自身的權(quán)系數(shù),來滿足最佳濾波的需要。自適應(yīng)濾波器不僅能夠處理平穩(wěn)隨機(jī)信號而且能處理非平穩(wěn)隨機(jī)信號。這些特點(diǎn)使得自適應(yīng)濾波器在干擾消除、預(yù)測、反演、辨識等信號處理領(lǐng)域得到廣泛應(yīng)用。
自適應(yīng)濾波原理包含兩方面的內(nèi)容:一是調(diào)整濾波器系數(shù)的自適應(yīng)算法,二是濾波器結(jié)構(gòu)。自適應(yīng)濾波算法是設(shè)定某種準(zhǔn)則,使濾波后的輸出信號與參考信號的差在此準(zhǔn)則下最小。維納準(zhǔn)則廣泛應(yīng)用于自適應(yīng)濾波,它的解為維納解。濾波器結(jié)構(gòu)是具體實(shí)現(xiàn)自適應(yīng)算法的途徑,尋求高效的濾波器結(jié)構(gòu)一直是自適應(yīng)濾波的研究重點(diǎn)。FIR橫向結(jié)構(gòu)是最常見的濾波器結(jié)構(gòu)。為橫向結(jié)構(gòu)濾波器設(shè)計(jì)硬件的流水線是在FPGA中實(shí)現(xiàn)高速自適應(yīng)濾波的有效途徑,因此該設(shè)計(jì)中采用流水線實(shí)現(xiàn)ALE的自適應(yīng)濾波器。自適應(yīng)濾波器原理如圖1所示。其中,x(n)為輸入信號,y(n)為輸出信號,d(n)為參考信號,e(n)為誤差信號。
LMS算法是一種易于實(shí)現(xiàn)、性能穩(wěn)健、應(yīng)用廣泛的算法。它采用負(fù)誤差能量梯度更新濾波器的權(quán)系數(shù),它的穩(wěn)態(tài)解仍為維納解,算法遞推公式如下:
其中:Xj是輸入信號;Wj是自適應(yīng)濾波器的權(quán)系數(shù);dj是參考信號;ej是誤差;μ是一個(gè)用于控制自適應(yīng)速度和穩(wěn)定性的增益常數(shù)。
2.1 ALE原理
ALE屬于自適應(yīng)濾波的范疇,但是在譜線增強(qiáng)的自適應(yīng)濾波器設(shè)計(jì)中,沒有外部參考信號可以利用。此時(shí),利用窄帶信號周期性明顯而寬帶噪聲周期性差,延遲一段時(shí)間后窄帶信號的相關(guān)函數(shù)會顯著地強(qiáng)于寬帶噪聲這一特征,將原始輸入信號接入具有固定延遲的延遲線作為參考信號。只要選取的延遲△足夠長,參考信號的寬帶噪聲和原始輸入的寬帶噪聲相關(guān)性就會迅速減弱,而窄帶周期信號的相關(guān)性不會受到影響。根據(jù)自適應(yīng)濾波理論可知,ALE濾波會有一個(gè)學(xué)習(xí)過程,學(xué)習(xí)過程就是誤差信號趨于不斷減小的過程。當(dāng)學(xué)習(xí)過程進(jìn)入穩(wěn)態(tài)后,濾波器輸出是源窄帶周期信號和一個(gè)隨機(jī)的誤差,其誤差可以通過選取合適的步長因子而達(dá)到很小的振幅。ALE原理圖如圖2所示。
2.2 ALE的Matlab仿真
Matlab是數(shù)字信號處理和仿真的有效工具,設(shè)計(jì)之初使用Matlab進(jìn)行仿真,可以有效地*估設(shè)計(jì)的最終效果,為整個(gè)設(shè)計(jì)過程提供強(qiáng)有力的理論支持。首先用Matlab仿真以LMS算法實(shí)現(xiàn)的ALE,從仿真結(jié)果的時(shí)域波形和處理時(shí)間兩方面證明算法在ALE系統(tǒng)中的有效性。將正弦波混合高斯白噪聲作為譜線增強(qiáng)濾波的輸入信號,圖3是用Matlab對算法的部分仿真結(jié)果??梢钥闯龈鶕?jù)混有噪聲的輸入信號根本無法判斷原始周期信號,經(jīng)過0~100時(shí)間長度的學(xué)習(xí)過程后濾波器輸出信號已經(jīng)具有明顯的周期性,寬帶噪聲得到有效的濾除,窄帶信號得以濾出。而這段時(shí)間在高速FPGA中只需要μs級的處理時(shí)間,滿足實(shí)時(shí)性要求。
3 系統(tǒng)結(jié)構(gòu)
ALE系統(tǒng)總體包括:模/數(shù)轉(zhuǎn)換、FPGA核心處理、片外RAM、電源等。前端采用TLC5510完成模擬信號的采集,并以數(shù)字信號的形式傳遞給FPGA。FPGA部分是整個(gè)系統(tǒng)的核心,其實(shí)現(xiàn)模/數(shù)轉(zhuǎn)換器時(shí)序控制、內(nèi)部數(shù)據(jù)緩存FIFO、片內(nèi)時(shí)鐘合成、譜線增強(qiáng)算法以及片外RAM控制。經(jīng)過譜線增強(qiáng)后的數(shù)據(jù)存入片外RAM芯片CY7C1021V。電源提供整個(gè)系統(tǒng)需要的3.3 V和5 V以及TLC5510的參考電壓。系統(tǒng)結(jié)構(gòu)如圖4所示。
TLC5510是TI公司的高速模/數(shù)轉(zhuǎn)換器,可以用于視頻處理、高速數(shù)據(jù)轉(zhuǎn)換等領(lǐng)域,它的轉(zhuǎn)換速率達(dá)到20 Mb/s,采用高速AD芯片是為了與FPGA的高速處理能力相匹配。EP2C8F256C6是Altera公司的生產(chǎn)的CycloneⅡ系列的FPGA,片內(nèi)具有162 Kb的片內(nèi)存儲器和36個(gè)18×18 b片內(nèi)乘法器,可以用于實(shí)現(xiàn)復(fù)雜數(shù)字信號算法。片內(nèi)存儲器基于流行的M4K存儲器塊,可以支持廣泛的配置方式,包括RAM,ROM、先入先出(FIFO)緩沖器以及單端口和雙端口模式等。片內(nèi)乘法器是低成本數(shù)字信號處理(DSP)應(yīng)用的理想方案。這些乘法器可用于實(shí)現(xiàn)通用DSP功能,如有限沖擊響應(yīng)(FIR)濾波器、快速傅里葉變換、相關(guān)器、編/解碼器以及數(shù)控振蕩器(NCO)。EP2C8F256C6提供高級外部存儲器接口支持,允許開發(fā)人員集成外部單倍數(shù)據(jù)速率(SDR)、雙倍數(shù)據(jù)速率(DDR)、DDR2 SDRAM器件以及第2代4倍數(shù)據(jù)速率(QDRⅡ)SRAM器件。片內(nèi)具有時(shí)鐘管理模塊,利用PLL實(shí)現(xiàn)片內(nèi)時(shí)鐘合成,使數(shù)據(jù)處理速率遠(yuǎn)高于信號采集速率,以滿足實(shí)時(shí)性要求。在FPGA內(nèi)部首先實(shí)現(xiàn)TLC5510的采樣控制,采樣信號先要存人片內(nèi)FIFO,當(dāng)每次ALE算法迭代完成后,取出FIFO中的數(shù)據(jù),更新處理數(shù)據(jù)。需要處理的數(shù)據(jù)經(jīng)過信號延遲處理和LMS自適應(yīng)濾波算法后得到譜線增強(qiáng)的信號。片內(nèi)時(shí)鐘合成模塊為系統(tǒng)提供時(shí)鐘信號,利用片內(nèi)PLL對晶振時(shí)鐘倍頻和分頻,為片內(nèi)提供600 MHz時(shí)鐘和片外TLC5510以及RAM提供10 MHz時(shí)鐘。為了保證數(shù)據(jù)精度。經(jīng)過ALE處理后的數(shù)據(jù)以16位二進(jìn)制數(shù)字信號輸出。片外存儲器選用64K×16 b靜態(tài)RAM芯片CY7C1021V,它的讀/寫控制時(shí)序也由FPGA實(shí)現(xiàn)。
3.1 TLC5510的控制
TLC5510是8位高速模數(shù)轉(zhuǎn)換器,以流水線的工作方式進(jìn)行采樣,在每一個(gè)時(shí)鐘周期啟動(dòng)1次采樣、完成1次采樣,采樣在時(shí)鐘下降沿進(jìn)行,經(jīng)過2.5個(gè)時(shí)鐘周期后輸出轉(zhuǎn)換結(jié)果。設(shè)計(jì)中根據(jù)采樣時(shí)序,用狀態(tài)機(jī)來描述采樣控制過程,實(shí)現(xiàn)了采樣的控制。實(shí)現(xiàn)狀態(tài)交替的VHDL代碼如下:
3.2 采樣信號延遲
為了實(shí)現(xiàn)延時(shí),F(xiàn)PGA片內(nèi)開辟了3個(gè)緩沖區(qū),分別是輸入、時(shí)延、權(quán)值緩沖區(qū)。采樣后的數(shù)據(jù)首先存入片內(nèi)數(shù)據(jù)緩存FIFO,進(jìn)入待命狀態(tài)。時(shí)延緩沖區(qū)實(shí)現(xiàn)△長度的時(shí)延,權(quán)值緩沖區(qū)儲存權(quán)值。其中,時(shí)延緩沖區(qū)和輸入緩沖區(qū)地址是連續(xù)的。時(shí)延緩沖區(qū)的長度由延遲△決定,輸入緩沖區(qū)和權(quán)值緩沖區(qū)的長度由權(quán)值的維數(shù)決定。緩沖區(qū)的實(shí)現(xiàn)是在VHDL語言編寫的程序中定義存儲數(shù)據(jù)的向量,這些數(shù)據(jù)向量的數(shù)據(jù)類型定義如下:
其中:ARRAY_N1BIF定義的是濾波器參數(shù)向量的數(shù)據(jù)類型;ARRAY_N1BIYX定義的延遲后信號向量的數(shù)據(jù)類型;ARRAY_N1BIT定義的是輸入信號向量的數(shù)據(jù)類型;ARRAY_N2BIT定義的是譜線增強(qiáng)后信號向量的數(shù)據(jù)類型;W1是采樣數(shù)據(jù)的寬度,這里為8;Delay是延時(shí)長度;L是濾波器階數(shù)。
3.3 LMS算法核心模塊
這是設(shè)計(jì)的核心部分也是設(shè)計(jì)中的難點(diǎn)。用FPGA實(shí)現(xiàn)復(fù)雜數(shù)字信號處理并不像DSP中那樣簡單,需要考慮時(shí)序同步、數(shù)據(jù)寬度以及如何舍入。該設(shè)計(jì)采用16階自適應(yīng)濾波器實(shí)現(xiàn)ALE,濾波器初始權(quán)值全部為0,按照式(3)的算法進(jìn)行迭代更新,算法實(shí)現(xiàn)中用到大量乘法運(yùn)算。調(diào)用芯片內(nèi)部嵌入的乘法器宏功能模塊lpm_mult使實(shí)現(xiàn)這些乘法運(yùn)算更加快速、高效的方案。lpm_mult模塊輸入采樣的8位數(shù)據(jù),因?yàn)樵诔朔ㄟ\(yùn)算中2個(gè)8位二進(jìn)制數(shù)相乘得到的結(jié)果是1個(gè)16位二進(jìn)制數(shù),所以設(shè)計(jì)中將處理結(jié)果輸出為16位二進(jìn)制數(shù)。為了提高自適應(yīng)濾波速度,設(shè)計(jì)中采用流水線的濾波器結(jié)構(gòu)。流水線結(jié)構(gòu)能夠顯著地提高處理的速度,但是要消耗更多的硬件資源,特別是硬件乘法器,如果LMS FIR濾波器的長的為L則需要2L個(gè)通用乘法器。設(shè)計(jì)中L=16,片內(nèi)有36個(gè)片內(nèi)乘法器可以勝任處理要求。編譯結(jié)果顯示片內(nèi)應(yīng)用于LMS核心算法的其他資源消耗全部小于或等于總消耗的6%,其余資源可以用于片內(nèi)的采樣、輸出等時(shí)序控制。LMS算法硬件實(shí)現(xiàn)的流水線結(jié)構(gòu)框圖如圖5所示。
流水線結(jié)構(gòu)中調(diào)用乘法器的VHDL代碼如下:
4 仿真結(jié)果分析
VHDL程序在QuartusⅡ軟件上部分仿真結(jié)果如圖6所示,圖中仿真數(shù)據(jù)以十進(jìn)制表示。因?yàn)榉抡娼Y(jié)果不便于繪制類似Matlab中的圖形,將仿真結(jié)果的數(shù)據(jù)與Matlab仿真結(jié)果進(jìn)行對比。通過行比較,發(fā)現(xiàn)處理結(jié)果在大體上與Matlab相一致,但是在幅度上整體有些衰減,這是由于FPGA中將處理結(jié)果的低位進(jìn)行截尾處理,而Matlab仿真環(huán)境使用浮點(diǎn)形式、數(shù)據(jù)位數(shù)長,處理精度遠(yuǎn)高于FPGA,F(xiàn)PGA設(shè)計(jì)中存在較大的截尾誤差。該仿真結(jié)果表明,基于:FPGA實(shí)現(xiàn)ALE是切實(shí)可行的。
5 結(jié) 語
系統(tǒng)采用FPGA芯片加上少量的外圍電路,完成了信號的自適應(yīng)譜線增強(qiáng)。通過調(diào)用FPGA片內(nèi)乘法器和片內(nèi)存儲器,完成了LMS算法的自適應(yīng)譜線增強(qiáng),仿真結(jié)果與理論相符合?,F(xiàn)代數(shù)字信號處理算法大多要進(jìn)行大量的乘法運(yùn)算,調(diào)用FPGA片內(nèi)乘法器是實(shí)現(xiàn)這些算法的快速高效而又經(jīng)濟(jì)的手段,這使得復(fù)雜信號處理算法在FPGA上實(shí)現(xiàn)成為可能。流水線結(jié)構(gòu)是硬件設(shè)計(jì)中犧牲資源以提高速度的有效手段,有效地利用流水線可以顯著地提高資源利用率和處理速度。該設(shè)計(jì)可以實(shí)現(xiàn)高速、準(zhǔn)確地譜線增強(qiáng),在需要濾除寬帶噪聲提取單根譜線的領(lǐng)域具有一定的現(xiàn)實(shí)意義。
-
FPGA
+關(guān)注
關(guān)注
1625文章
21620瀏覽量
601238 -
濾波器
+關(guān)注
關(guān)注
160文章
7703瀏覽量
177479 -
仿真
+關(guān)注
關(guān)注
50文章
4023瀏覽量
133336
發(fā)布評論請先 登錄
相關(guān)推薦
評論