一種基于FPGA的FIR數(shù)字濾波器設(shè)計(jì)與實(shí)現(xiàn)
摘要:有限沖擊響應(yīng)(FIR)濾波器是數(shù)字通信系統(tǒng)中常用的基本模塊。文章設(shè)計(jì)了一種流水結(jié)構(gòu)的FIR濾波器,通過(guò)FPGA對(duì)其進(jìn)行硬什加速控制。仿真結(jié)果驗(yàn)證了所設(shè)計(jì)的FIR流水結(jié)構(gòu)濾波器功能的正確性。
本文引用地址:http://www.ex-cimer.com/article/201610/308484.htm0 引言
隨著數(shù)字通信技術(shù)的快速發(fā)展,高質(zhì)量的信息處理對(duì)濾波器的性能和資源占有量提出了更高的要求。有限沖擊響應(yīng)(FIR)數(shù)字有限沖激響應(yīng)濾波器在語(yǔ)音、譜分析等數(shù)字信號(hào)處理領(lǐng)域有著廣泛的應(yīng)用,是信號(hào)處理系統(tǒng)中重要的組成部分,其性能往往對(duì)整個(gè)系統(tǒng)的性能和功耗產(chǎn)生至關(guān)重要的影響。因此,如何最大程度地優(yōu)化FIR濾波器的性能成了電路實(shí)現(xiàn)中需要特別關(guān)注的問(wèn)題。
現(xiàn)代應(yīng)用程序的核心計(jì)算函數(shù)一般通過(guò)軟件編程在處理機(jī)上執(zhí)行,處理速度慢,當(dāng)核心函數(shù)較復(fù)雜時(shí),需要較長(zhǎng)處理時(shí)間,采用硬件處理,能夠減少處理器占用時(shí)間,提高處理器的利用率,從而提高系統(tǒng)的性能?,F(xiàn)代數(shù)字系統(tǒng)中廣泛使用現(xiàn)場(chǎng)可編程邏輯器件(FPGA)作為實(shí)現(xiàn)平臺(tái),本文提出一種基于FPGA的FIR濾波器設(shè)計(jì),充分利用硬件電路固有的快速特性,替代傳統(tǒng)的軟件算法,減少占用處理機(jī)的資源,提高了FIR濾波器的性能。
1 FIR濾波器流水結(jié)構(gòu)設(shè)計(jì)
FIR濾波器具有有限沖擊響應(yīng)系統(tǒng)穩(wěn)定收斂、線(xiàn)性相位的優(yōu)越特性,不會(huì)產(chǎn)生相位失真。FIR數(shù)字濾波器有直接型結(jié)構(gòu)和轉(zhuǎn)置型結(jié)構(gòu)(如圖1所示)等多種實(shí)現(xiàn)結(jié)構(gòu),為提高電路的執(zhí)行效率、簡(jiǎn)化電路,本文采用分布式算法結(jié)構(gòu)或者轉(zhuǎn)置結(jié)構(gòu)的FIR濾波器加以實(shí)現(xiàn)。與基本結(jié)構(gòu)FIR濾波器不同,采樣數(shù)據(jù)同時(shí)進(jìn)入乘法器,先計(jì)算乘積和,再進(jìn)行延遲,通過(guò)流水線(xiàn)的加法器鏈將乘積結(jié)果流水相加,最終得到濾波輸出,優(yōu)化后其硬件邏輯基本單元結(jié)構(gòu)如圖2所示。
設(shè)FIR濾波器單位脈沖響應(yīng)h(n)長(zhǎng)度為N,其輸入序列和輸出序列的差分方程為:
其中,ωp為歸一化通帶截止角頻率,ωs為歸一化阻帶截止角頻率,δp為峰值通帶紋波,δs為峰值阻帶紋波。由于FIR濾波器階數(shù)N必須為整數(shù),以N=8為例,可得到FIR濾波器的系數(shù)h(n)。如表1所示。
2 FPGA自動(dòng)控制設(shè)計(jì)
FIR自動(dòng)化控制過(guò)程見(jiàn)圖3所示。為了解決內(nèi)外時(shí)鐘不同速率問(wèn)題,采用異步FIFO作為緩沖的存儲(chǔ)器。當(dāng)外部數(shù)據(jù)開(kāi)始進(jìn)入時(shí),數(shù)據(jù)依次進(jìn)入異步FIFO;當(dāng)異步FIFO狀態(tài)為滿(mǎn)時(shí),則FPGA開(kāi)始工作,控制異步FIFO中的數(shù)據(jù)依次進(jìn)入FIR流水結(jié)構(gòu)進(jìn)行運(yùn)算,并將計(jì)算結(jié)果依次按順序輸出至后級(jí)同步FIFO中,等待CPU進(jìn)行讀取工作。整個(gè)數(shù)據(jù)處理過(guò)程主要由異步FIFO深度進(jìn)行控制,當(dāng)其狀態(tài)為空且前一幀數(shù)據(jù)處理完全結(jié)束后,整個(gè)系統(tǒng)將保持現(xiàn)有狀態(tài),進(jìn)入休眠過(guò)程,等待下一個(gè)數(shù)據(jù)的進(jìn)入才開(kāi)始喚醒工作。
3 實(shí)驗(yàn)結(jié)果及分析
利用Matlab進(jìn)行仿真,假定輸入序列采樣為
即50Hz、370HZ、430Hz信號(hào)的混合信號(hào),其中n=1,2,3…100。設(shè)計(jì)N=8的低通FIR濾波器,截止頻率為100HZ。圖4為輸入序列,圖5為輸出濾波結(jié)果。
用Modelsim進(jìn)行邏輯仿真,F(xiàn)PGA控制信號(hào)時(shí)序如圖6所示。
FIR流水線(xiàn)結(jié)構(gòu)運(yùn)算輸出及運(yùn)算結(jié)果FIFO存儲(chǔ)過(guò)程仿真圖如圖7所示。
圖中為FIR流水結(jié)構(gòu)中各級(jí)寄存器狀態(tài)仿真圖,將其提取,并建立仿真表如表2所示。
將FIR輸出序列邏輯值與仿真結(jié)果通過(guò)表2比較可知,仿真運(yùn)算結(jié)果一致。綜合上述一系列仿真圖與仿真表可知,F(xiàn)IR流水結(jié)構(gòu)功能正確,實(shí)現(xiàn)了FPGA控制的FIR濾波器設(shè)計(jì)。
4 結(jié)論
本文設(shè)計(jì)了一種基于FPGA的硬件加速器,實(shí)現(xiàn)了大量減少邏輯運(yùn)算單元的流水線(xiàn)的運(yùn)算方式,并通過(guò)Matlab與Modelsim的仿真,驗(yàn)證了所設(shè)計(jì)的FIR流水結(jié)構(gòu)濾波器功能的正確性。
評(píng)論