基于FPGA的信號(hào)小波實(shí)時(shí)處理方法
小波變換能夠同時(shí)在時(shí)域和頻域進(jìn)行局部分析,在對(duì)時(shí)變信號(hào)進(jìn)行分析時(shí)具有明顯的優(yōu)勢(shì)。小波算法在進(jìn)行信號(hào)處理時(shí),由于具有濾波效果好、信號(hào)細(xì)節(jié)損失少的優(yōu)點(diǎn),從而引起了廣泛的關(guān)注和應(yīng)用。目前常用于高速實(shí)時(shí)信號(hào)處理的硬件芯片分為兩大類(lèi):基于大規(guī)??删幊碳呻娐?a class="contentlabel" href="http://cafeforensic.com/news/listbylabel/label/FPGA">FPGA的純硬件實(shí)現(xiàn)方案和基于高速通用DSP的軟件實(shí)現(xiàn)方案。采用FPGA的硬件實(shí)現(xiàn)方案硬件接口設(shè)計(jì)靈活,可以和任意數(shù)字外圍電路直接使用,且其具有高度的集成度和高速的處理速度;而基于高速通用DSP的軟件實(shí)現(xiàn)方案代碼設(shè)計(jì)靈活,可以快速修改和調(diào)試程序[6]。小波算法運(yùn)算量較大,如果采用DSP方案由軟件來(lái)實(shí)現(xiàn)該算法就很難滿(mǎn)足系統(tǒng)實(shí)時(shí)性的要求?;谝陨显虮疚奶岢隽瞬捎?a class="contentlabel" href="http://cafeforensic.com/news/listbylabel/label/FPGA">FPGA方案實(shí)現(xiàn)小波算法。該方案對(duì)一維信號(hào)具有良好的去噪效果,同時(shí)也能滿(mǎn)足系統(tǒng)的實(shí)時(shí)性要求。
1 小波去噪的基本原理
對(duì)于小波算法,應(yīng)用最廣泛的是信號(hào)處理和圖像處理,而在這兩個(gè)領(lǐng)域中應(yīng)用最多的就是信號(hào)及圖像的去噪和壓縮。由于在正交小波中,正交基的選取比傳統(tǒng)方法更接近實(shí)際信號(hào)本身,所以通過(guò)小波變換可以更容易地分離出噪聲,因此,相對(duì)于傳統(tǒng)方法,小波分析在去噪和壓縮方面有著無(wú)可比擬的優(yōu)勢(shì)[5]。
小波分析用于去噪的過(guò)程如下:
(1)分解過(guò)程:選定一種小波,對(duì)含噪信號(hào)進(jìn)行N層小波分解,得到各層分解的小波系數(shù)。
(2)閾值處理過(guò)程:將通過(guò)分解得出的各層高頻小波系數(shù)進(jìn)行閾值處理,在進(jìn)行到最后一層時(shí),要同時(shí)對(duì)該層的高、低頻系數(shù)進(jìn)行閾值處理。
(3)重構(gòu)過(guò)程:將經(jīng)過(guò)閾值處理后的小波系數(shù)通過(guò)小波逆變換重構(gòu)出去噪后的信號(hào)。
閾值降噪法是一種實(shí)現(xiàn)簡(jiǎn)單、效果較好的小波降噪方法。小波變換具有很強(qiáng)的去數(shù)據(jù)相關(guān)性,它能將信號(hào)的能量集中在小波域一些大的小波系數(shù)中,而噪聲的能量卻分布于整個(gè)小波域內(nèi),因此經(jīng)小波分解后信號(hào)的小波系數(shù)比噪聲的大。于是,采用閾值的辦法可以把信號(hào)的小波系數(shù)保留,而使絕大部分噪聲小波系數(shù)置零[2]。目前,常用的閾值函數(shù)有硬閾值函數(shù)和軟閾值函數(shù)。硬閾值法處理的結(jié)果可以很好地保留信號(hào)邊緣等局部特征,軟閾值法處理的結(jié)果要相對(duì)平滑,但是比較容易造成模糊等失真現(xiàn)象。
2 硬件實(shí)現(xiàn)
系統(tǒng)框圖如圖1所示。根據(jù)相關(guān)分析,設(shè)計(jì)采用了XILINX公司生產(chǎn)的超大規(guī)模 FPGA器件Virtex 5 XC5VSX50T。系統(tǒng)接口采用RS422串口,相對(duì)于RS232,通過(guò)RS422能夠以更快的波特率來(lái)收發(fā)數(shù)據(jù),同時(shí)其通信距離也比RS232更遠(yuǎn)。在進(jìn)行小波變換之前需要預(yù)存一定長(zhǎng)度的數(shù)據(jù),因此在接口和小波變換模塊之間需要設(shè)置一個(gè)FIFO。FPGA通過(guò)接口模塊將收到的含噪信號(hào)數(shù)據(jù)存入FIFO模塊中,預(yù)存32個(gè)數(shù)據(jù)。
為保證一定的濾波效果又不使算法的運(yùn)算量過(guò)大,本文將小波變換模塊的分解、重構(gòu)層數(shù)設(shè)為5層。小波變換模塊主要包括前向小波變換模塊、閾值處理和逆向小波變換模塊。前向小波變換模塊完成對(duì)含噪信號(hào)的多層分解,將含噪信號(hào)分解為低頻分量和高頻分量。閾值處理模塊去除經(jīng)過(guò)多層小波分解出來(lái)的各層高頻噪聲,在前4層閾值處理過(guò)程中需將處理后的高頻分量存儲(chǔ)到相應(yīng)的RAM中。逆向小波變換模塊完成信號(hào)的多層重構(gòu),得出去噪后的信號(hào)。逆向小波變換模塊重構(gòu)信號(hào)的順序和前向模塊相反,是按最后一層到第一層的順序重構(gòu)信號(hào),在進(jìn)行到相應(yīng)層次時(shí)將存放在相應(yīng)RAM中經(jīng)閾值處理后的高頻分量取出與該層低頻分量進(jìn)行重構(gòu),完成5層逆向小波變換之后即可得到去噪后的信號(hào)。小波變換模塊的FPGA結(jié)構(gòu)圖如圖2所示。
本設(shè)計(jì)選用DB4小波對(duì)含噪信號(hào)進(jìn)行提升小波變換,DBN系列的小波擴(kuò)張性比較好,可以靈活地權(quán)衡增加支集長(zhǎng)度(為了提高能量的集中度)帶來(lái)的邊界問(wèn)題,且DB4小波濾波器長(zhǎng)度較短,能夠提高運(yùn)算速度,也能夠滿(mǎn)足一定的濾波效果。
在MATLAB平臺(tái)中通過(guò)執(zhí)行語(yǔ)句“lsdb4=liftwave('db4');displs(lsdb4);”就能得到db4提升小波的方案信息。其方案信息如下:
lsdb4={ [-0.32227589] [-1.11712361 -0.30014226]
[-0.01880835 0.11764809] [2.13181671 0.63642827]
[-0.46908348 0.14003924 -0.02479124] [0.73412453]
[1.36216672] };
由提升小波算法可知,該算法主要由加、減、乘運(yùn)算組成,對(duì)于FPGA實(shí)現(xiàn)來(lái)說(shuō),加減運(yùn)算可以調(diào)用FPGA的加法器IP核,而浮點(diǎn)系數(shù)的乘運(yùn)算可以通過(guò)移位相加來(lái)實(shí)現(xiàn)。以浮點(diǎn)系數(shù)-0.32227589為例,-0.32227589=-((1/4)+(1/16)+(1/128)),所以要實(shí)現(xiàn)數(shù)據(jù)與系數(shù)-0.32227589相乘,可以通過(guò)右移相加的方法來(lái)實(shí)現(xiàn),這樣做可以減少對(duì)乘法器的調(diào)用,從而減少了該部分設(shè)計(jì)時(shí)所需的面積,提高了芯片的處理速度。其具體實(shí)現(xiàn)框圖如圖3所示。
3 仿真結(jié)果及分析
本設(shè)計(jì)使用ISE 10.1軟件完成了硬件電路的Verilog設(shè)計(jì)、綜合,使用Modelsim 6.0D完成時(shí)序仿真,F(xiàn)PGA系統(tǒng)時(shí)鐘為39 MHz,輸入的信號(hào)采樣率為5 kHz,輸入的采樣信號(hào)為某型號(hào)光纖陀螺的零漂信號(hào),并添加幅值為1 V的偽隨機(jī)噪聲。
如圖4所示,第二個(gè)信號(hào)indata是含噪聲的信號(hào),第三個(gè)信號(hào)outdata是經(jīng)過(guò)提升小波變換后的去噪信號(hào)。由圖4可以看出,光纖陀螺零漂信號(hào)已經(jīng)完全淹沒(méi)在噪聲之中,在信噪比很低的情況下,經(jīng)過(guò)小波去噪之后能夠很好地濾除噪聲信號(hào)。由圖5和圖6可以看出,F(xiàn)PGA的小波變換模塊從接收到處理完一個(gè)數(shù)據(jù)點(diǎn)所需的時(shí)間約為6402632628 ps-6388706228 ps=13.93 μs,完全可以滿(mǎn)足一般系統(tǒng)對(duì)信號(hào)處理實(shí)時(shí)性的要求。
算法用DSP(TI TMS320C6713)實(shí)現(xiàn)時(shí),對(duì)C代碼進(jìn)行優(yōu)化,處理一個(gè)數(shù)據(jù)點(diǎn)所需要的時(shí)間約為66μs,采用C和匯編混合編程對(duì)關(guān)鍵循環(huán)進(jìn)行進(jìn)行匯編優(yōu)化,處理一個(gè)數(shù)據(jù)點(diǎn)所需要的時(shí)間約為40 μs。從實(shí)時(shí)性的角度來(lái)說(shuō),用FPGA實(shí)現(xiàn)該算法比用DSP更符合信號(hào)處理系統(tǒng)對(duì)實(shí)時(shí)性的要求。
本文提出了一套利用FPGA實(shí)現(xiàn)小波變換的方案。同傳統(tǒng)濾波方法相比,小波變換法能更好地濾除噪聲,在選好相應(yīng)的小波后也能滿(mǎn)足實(shí)時(shí)性的要求,是非常理想的信號(hào)處理方案。與用DSP處理器的方法相比,采用FPGA實(shí)現(xiàn)小波變換具有速度快、數(shù)據(jù)寬度可任意設(shè)置的特點(diǎn),能更好地滿(mǎn)足信號(hào)處理實(shí)時(shí)性的要求,并且Verilog語(yǔ)言具有可移植性的特點(diǎn),具有更強(qiáng)的通用性。該方法可以應(yīng)用在光電跟蹤信號(hào)去噪及語(yǔ)音去噪等一維信號(hào)實(shí)時(shí)處理系統(tǒng)中,它在較為有效地消除噪聲的同時(shí)又能基本滿(mǎn)足系統(tǒng)的實(shí)時(shí)性。
評(píng)論