IIR數(shù)字濾波器的Matlab和FPGA實現(xiàn)
2 IIR數(shù)字濾波器的FPGA實現(xiàn)
2.1 總體設(shè)計方案
根據(jù)上述參數(shù)計算可知,需要設(shè)計的IIR濾波器為2個二階節(jié)的系統(tǒng)級聯(lián)形式,其二階節(jié)系統(tǒng)函數(shù)的差分方程均為:
可以看出,一個二階節(jié)的實現(xiàn),需要五次乘法運算、四次加法運算(采用二進制補碼將減法運算變?yōu)榧臃ㄟ\算),兩個二階節(jié)共需要10次乘法運算,所有乘法運算均為無符號數(shù)的乘法運算,所以使用時需要先將兩個補碼乘數(shù)轉(zhuǎn)換為無符號數(shù)相乘后,再將乘積轉(zhuǎn)換為補碼乘積輸出,送入累加器求和。根據(jù)以上設(shè)計思想可知,一個二階節(jié)系統(tǒng)均由控制模塊、移位模塊、求補模塊、乘法模塊和累加器模塊等模塊組成,其系統(tǒng)電路框圖如圖2所示。
由于IIR濾波器的兩個節(jié)系統(tǒng)電路結(jié)構(gòu)完全相同,只是系數(shù)不同,故另一個二階節(jié)的設(shè)計與此類似。
2.2 主要功能模塊的設(shè)計
控制模塊主要用來產(chǎn)生對其他模塊的時序控制。
累加模塊的功能是將10位×1位乘法器的5個輸出數(shù)據(jù)在10個時鐘周期內(nèi)累加后,并將結(jié)果輸出。
移位模塊主要完成數(shù)據(jù)交換功能,將輸入數(shù)據(jù)送入輸入寄存器x(n)中,同時將x(n)寄存器上一時刻的數(shù)據(jù)送入x(n-1)寄存器,同時又將x(n-1)寄存器上一時刻的數(shù)據(jù)送入x(n-2)寄存器。同理有y(n)→y(n-1)→y(n-2)。
求補模塊主要根據(jù)每路乘法器2個輸入數(shù)據(jù)的補碼,判斷輸入數(shù)據(jù)的正負,設(shè)置該路乘積結(jié)果正負標志位,并對輸入的負數(shù)進行求補運算,保證乘積是在2個無符號數(shù)之間進行,再根據(jù)該路乘積結(jié)果正負標志位,對乘積結(jié)果進行求補運算,保證送入累加器的數(shù)據(jù)為補碼。
將設(shè)計好的各模塊按照二階節(jié)系統(tǒng)電路框圖銜接,即可完成IIR濾波器其中一個二階節(jié)系統(tǒng)的設(shè)計。只要修改差分方程的系數(shù)就可完成另一個二階節(jié)系統(tǒng)的設(shè)計。
2.3 仿真結(jié)果
各功能模塊設(shè)計、調(diào)測完成之后,按照總體設(shè)計方案完成IIR濾波器的實現(xiàn),并下載到Altera公司的EP1C6Q240C8器件上驗證,QuartusⅡ中的仿真結(jié)果如圖3所示。
圖3中:xn為輸入信號,采用單極性方波周期信號;頻率為100 kHz,在采樣頻率為2 MHz時,每個周期采樣20個點,換算成數(shù)字域頻率為0.1π;二次諧波的數(shù)字頻率為0.2π;yn為濾波輸出。觀察仿真波形可知,所設(shè)計的IIR濾波器符合設(shè)計要求。為了更直觀地觀察IIR濾波器濾波后的輸出結(jié)果,可將仿真波形文件轉(zhuǎn)換為*.tbl文件,在Matlab中描繪波形。
3 結(jié)語
數(shù)字濾波器的應用十分廣泛,實現(xiàn)方法很多,運用Matlab語言,能很容易地設(shè)計出具有嚴格指標要求的數(shù)字濾波器。采用FPGA器件實現(xiàn)數(shù)字濾波器的方法,大大縮短了設(shè)計周期,降低了成本,提高了設(shè)計的可靠性、靈活性,為數(shù)字濾波器的設(shè)計與實現(xiàn)提供了一種有效的方法。
電源濾波器相關(guān)文章:電源濾波器原理
數(shù)字濾波器相關(guān)文章:數(shù)字濾波器原理
評論