周恒箴 曾祥希 余震
【摘要】 本文提出了一種采用查階躍響應(yīng)表方法實(shí)現(xiàn)的FIR數(shù)字濾波器設(shè)計方案,并以一個649階FIR濾波器的FPGA設(shè)計為例,與傳統(tǒng)的采用FPGA IPCORE實(shí)現(xiàn)方法進(jìn)行了對比,分析該設(shè)計方法在FPGA的資源利用和系統(tǒng)時鐘速率上的優(yōu)勢。通過實(shí)驗(yàn)數(shù)據(jù)驗(yàn)證,該方案可以解決現(xiàn)有技術(shù)中FIR濾波器需要大量乘法器和加法器的問題,達(dá)到了降低FPGA硬件資源使用、提高系統(tǒng)運(yùn)行效率的效果。
【關(guān)鍵詞】 FIR 數(shù)字濾波器 階躍響應(yīng) FPGA
一、引言
在數(shù)字信號處理系統(tǒng)中,數(shù)字濾波器被廣泛地應(yīng)用于干擾的濾除、有用信號的提取、信號的整形等各方面。數(shù)字濾波器根據(jù)其沖激響應(yīng)函數(shù)的時域特性,可分為兩種,即無限長沖激響應(yīng)(IIR)濾波器和有限長沖激響應(yīng)(FIR)濾波器。FIR濾波器的單位沖激響應(yīng)只能持續(xù)一段時間,由于它的線性相位特性和容易實(shí)現(xiàn)因此在工程上得到廣泛應(yīng)用。
FIR數(shù)字濾波器通過乘累加運(yùn)算來實(shí)現(xiàn),輸入信號x(n)經(jīng)過FIR濾波器過程是一個輸入信號與濾波器系數(shù)進(jìn)行線性卷積的過程,即:
為降低硬件資源的消耗,文獻(xiàn)[1]提出了一種分布式算法(Distributed Arithmetic,DA)的濾波器設(shè)計結(jié)構(gòu),它將傳統(tǒng)的乘、累加運(yùn)算轉(zhuǎn)化為加法和移位運(yùn)算,利用ROM查找表將固定系數(shù)的乘累加運(yùn)算轉(zhuǎn)換成查找表操作,可以較大程度地提高運(yùn)算速度。文獻(xiàn)[2]和文獻(xiàn)[3]也提出了改進(jìn)的分布式算法,采用濾波器的多相分解結(jié)構(gòu)對DA算法進(jìn)行改進(jìn),以降低硬件資源的使用,但是不論是DA算法或者改進(jìn)的DA算法,ROM查找表的大小會隨著濾波器階數(shù)N的增加而成指數(shù)增加,消耗更多的硬件資源,難以滿足數(shù)據(jù)處理領(lǐng)域的高速實(shí)時性要求。在一些某些的應(yīng)用場合,例如超高頻無源射頻識別閱讀器的前向波形成形濾波,其輸入波形為矩形波或者階梯波,為了達(dá)到較好的濾波效果需要使用高階的FIR濾波器,如果采用傳統(tǒng)的乘累加結(jié)構(gòu)或者分布式算法,會占用大量的硬件資源,增加設(shè)備的成本。
本文在FPGA上設(shè)計并實(shí)現(xiàn)了一種通過查階躍響應(yīng)表的方法實(shí)現(xiàn)FIR數(shù)字濾波器,當(dāng)輸入信號為矩形波或階梯波時,利用該方法,可以解決現(xiàn)有技術(shù)中FIR濾波器需要大量乘法器和加法器的問題,達(dá)到了降低FPGA資源使用、提高系統(tǒng)運(yùn)行速度的效果。
二、查階躍響應(yīng)法的方法
因此,我們可以將設(shè)計的FIR濾波器的單位階躍響應(yīng)存儲在一張表中;再對需要進(jìn)行FIR濾波的輸入信號進(jìn)行沿提取,提取出階躍信號;再將每個階躍信號的幅度和查表的數(shù)據(jù)相乘得到階躍響應(yīng);然后對所有的階躍響應(yīng)結(jié)果求和,此求和結(jié)果等價于原信號直接經(jīng)過FIR濾波器的濾波結(jié)果。
如果輸入信號變化的間隔時間大于FIR濾波器的階躍響應(yīng)時間長度,只需要一路處理模塊,模塊根據(jù)輸入階躍信號的幅度計算并輸出階躍響應(yīng),然后對所有的階躍響應(yīng)求和。如果輸入信號變化的間隔時間小于FIR濾波器的階躍響應(yīng)時間長度,則需要采用多路處理模塊,階躍信號依次分配給多個模塊,每個模塊輸出各自的階躍響應(yīng),最后,再對所有的模塊的輸出進(jìn)行求和。
三、FPGA實(shí)現(xiàn)
FIR濾波器查階躍響應(yīng)表法的FPGA的實(shí)現(xiàn)如圖1所示,由沿提取、沿分配器、階躍響應(yīng)池和加法器四個功能模塊組成。其中階躍響應(yīng)池中的每個階躍響應(yīng)模塊都是相同的,其結(jié)構(gòu)如圖2所示。
階躍響應(yīng)池由N個相同的階躍響應(yīng)模塊構(gòu)成,如圖2所示,每個階躍響應(yīng)模塊由沿檢測、階躍響應(yīng)表(步驟1生成)、乘法器、緩存器和加法器組成。
每個階躍響應(yīng)模塊的內(nèi)部處理過程如下:經(jīng)分配后的階躍信號送入檢測單元進(jìn)行檢測,檢測單元輸出三組信號:觸發(fā)信號、啟動信號和階躍信號的幅度。當(dāng)檢測到有階躍信號時,檢測單元輸出觸發(fā)信號對緩存器進(jìn)行刷新,將當(dāng)前模塊輸出結(jié)果通過緩存器保存下來作為輸出基準(zhǔn);與此同時,啟動信號啟動指針計數(shù)器進(jìn)行查表,通過指針依次取出階躍響應(yīng)表中的數(shù)據(jù);取表結(jié)果和階躍信號的幅度輸入到乘法器相乘;乘法器的輸出和基準(zhǔn)信號分別輸入到加法器,其相加結(jié)果作為該階躍響應(yīng)模塊的輸出。
步驟4:階躍相應(yīng)池輸出的N路階躍響應(yīng)信號S0S1 S2…. SN-1輸入給加法器進(jìn)行相加求和,其求和結(jié)果為該FIR濾波器的輸出。
在每個階躍響應(yīng)模塊中,由于有個加法器,可能會遇到加法器輸出結(jié)果溢出的情況,例如連續(xù)兩個上升沿的正階躍信號相加,結(jié)果溢出出現(xiàn)負(fù)數(shù)。出現(xiàn)這種情況時可以通過擴(kuò)展有效數(shù)據(jù)位數(shù)防止溢出;也可以通過滿下面2個條件,對溢出結(jié)果不用處理:(1)采用二進(jìn)制補(bǔ)碼運(yùn)算;(2)保證最后的加法器的輸出范圍能夠滿足輸入信號x(n)和單位階躍響應(yīng)乘積的最大值和最小值。
四、實(shí)驗(yàn)結(jié)果與性能分析
4.1 實(shí)驗(yàn)過程
以下是利用該方法在Altera FPGA器件上實(shí)現(xiàn)的一個649階FIR低通濾波器的實(shí)例。借助MATLAB的FDATool工具根據(jù)濾波器的指標(biāo)進(jìn)行濾波器設(shè)計。
4.2 與利用FIR IPcore方法實(shí)現(xiàn)的FIR模塊進(jìn)行功能對比
調(diào)用Altera的FIR IPcore生成FIR濾波器模塊,與上述方法進(jìn)行仿真對比,如圖8所示,I_qpsk_i和I_qpsk_q是16QAM調(diào)制后的I、Q兩路輸入信號,O_IPcore_i和O_IPcore_q是IQ輸入信號經(jīng)過Altera FIR IPcore濾波器輸出的結(jié)果,O_step_i和O_step_q是IQ輸入信號經(jīng)過查階躍響應(yīng)查表方法輸出的結(jié)果。將兩種方法生成的IQ數(shù)據(jù)對應(yīng)先減,結(jié)果(s_sub)為0,說明兩種方法的輸出數(shù)據(jù)一致。
4.3 FPGA資源和系統(tǒng)時鐘速度的對比
上述的查階躍響應(yīng)法的實(shí)例需要3個乘法器和4個加法器實(shí)現(xiàn),如果采用Altera Cyclone IV系列器件,型號為EP4CGX150(該器件具有149,760LEs(邏輯單元)和6,480Kbit嵌入式存儲器),編譯工程進(jìn)行對比,該方法需要使用498LEs和9個M9K;而采用Altera FIR IPcore實(shí)現(xiàn)該649階濾波器模塊,需要占用48846LEs和30個M9K??梢钥闯?,采用查階躍響應(yīng)法實(shí)現(xiàn)的濾波器,在節(jié)省FPGA資源上有顯著的優(yōu)勢。查階躍響應(yīng)法占用的資源和階躍響應(yīng)池中階躍響應(yīng)的個數(shù)關(guān)系密切,如果階躍響應(yīng)池中階躍響應(yīng)的個數(shù)一定,設(shè)計時占用的資源與濾波器的階數(shù)關(guān)系不大,階數(shù)變化主要是要修改指針計數(shù)器的地址。
從表1的數(shù)據(jù)可以看出,采用調(diào)IPcore的方法實(shí)現(xiàn)FIR濾波器模塊,當(dāng)濾波器階數(shù)越大時,占用的LE資源和嵌入式存儲器資源(M9K)也越多,由于邏輯資源的大量占用,導(dǎo)致FPGA布線的延時加長,從而影響到最大系統(tǒng)時鐘頻率(Fmax)。因此,在輸入波形為矩形波或者階梯波,而且輸入信號變化的間隔時間大于FIR濾波器的階躍響應(yīng)時間長度時,采用查階躍響應(yīng)法在FPGA上省了大量的LE資源,對比FIR IPcore生成的FIR濾波器模塊,可以提高最大系統(tǒng)時鐘速度。
五、結(jié)束語
從仿真和實(shí)驗(yàn)結(jié)果可以看出,當(dāng)輸入波形為階梯波或者矩形波時,采用這種查詢階躍響應(yīng)表的的方法能夠解決現(xiàn)有技術(shù)中FIR濾波器需要大量乘法器和加法器的問題,達(dá)到了降低資源使用、提高系統(tǒng)運(yùn)行速度的效果。
參 考 文 獻(xiàn)
[1] WHITE Stanley A. Application of distributed arithmetic to digital signal processing: a tutorial review[J]. IEEE ASSP Magazine,1989,7:4-18
[2] 于亞萍,劉源,衛(wèi)勇. 利用改進(jìn)DA算法FIR濾波器的仿真與實(shí)現(xiàn)[J]. 計算機(jī)工程與應(yīng)用,2011,47(27):77-79
[3] Yu Yaping, Liu Yuan,Wei Yong. Simulation and realization of FIR filter using modified distributed arithmetic architecture[J]. Computer Engineering and Applications[J]. 2011,47(27):77-79