一種基于FPGA的IIR數字濾波器的設計方法
【摘 要】無論是信號的獲取、傳輸,還是信號的處理和交換都離不開數字濾波,它對于信號安全有效的傳輸是至關重要的。 IIR(無限脈沖響應)濾波器被廣泛使用,它可以使用相對較低的階數來獲得較高的選擇性,FPGA(現場可編程門陣列)以其優越的實時性和設計靈活性成為了控制系統中不可或缺的一部分。故本設計采用了一種基于FPGA的IIR數字濾波器的設計方法,首先分析了IIR數字濾波器的原理及基本結構,然后通過quartusⅡ的設計平臺,將整個IIR數字濾波器分為三個功能模塊:延時、加法器,乘法器。分別進行了仿真和綜合。結果仿真表明,本課題所設計的IIR數字濾波器綜合來說運算速度較快,系數改變靈活,有很好的參考價值。
【關鍵詞】IIR數字濾波器;quartusⅡ的設計平臺;FPGA(現場可編程門陣列)
1 IIR數字濾波器的基本網絡結構
IIR(Infinite Impulse Response)數字濾波器,又名“無限脈沖響應數字濾波器”,或“遞歸濾波器”。遞歸濾波器,也就是IIR濾波器,顧名思義,具有反饋,一般認為具有無限的脈沖響應。
IIR的濾波器的傳遞函數在平面上有極點存在,其單位脈沖響應應延續到無限長,對于給定的傳遞函數或差分方程,其結構并不是唯一的,基本網絡結構有三種,即直接型、級聯型和并聯型。
直接型IIR網絡是利用加法器、乘法器和延時器等基本運算單位,以給定的形式直接實現差分方程。IIR數字濾波器的系統函數一般表示為:
級聯型一個N階的系統函數可以用它的零點與極點表示,IIR數字濾波器的級聯型結構有以下特點:
。1)簡化實現,用一個二階節,通過變換系數就可以實現整個系統;
。2)調整系數β1i和β2i能單獨的調整IIR數字濾波器的第k對零點,其它的零點不受影響。同樣,調整系數α1i和α2i能單獨地調整IIR數字濾波器的第k對極點,其他極點不會受到影響。即每個二階節系數單獨控制一對零點和一對極點;
。3)二階節的極,零點的搭配是可以互相換位置的,用合理的組合來減小運算中的誤差;
(4)前一級的輸出是后一級的輸入,前級的誤差會傳輸給后一級,使誤差越來越大。
2 FPGA的工作原理
FPGA是由存放在片內RAM中的程序來設置其工作狀態的,因此,工作時需要對片內的RAM進行編程。用戶可以根據不同的配置模式,采用不同的編程方式。
加電時,FPGA芯片將EPROM中數據讀入片內編程RAM中,配置完成后,FPGA進入工作狀態。掉電后,FPGA恢復成白片,內部邏輯關系消失,因此,FPGA能夠反復使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當需要修改FPGA功能時,只需換一片EPROM即可。這樣,同一片FPGA,不同的編程數據,可以產生不同的電路功能。因此,FPGA的使用非常靈活。
FPGA有多種配置模式:并行主模式為一片FPGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片FPGA;串行模式可以采用串行PROM編程FPGA;外設模式可以將FPGA作為微處理器的外設,由微處理器對其編程。
3 基于Quartus II的時序仿真
在FPGA的設計中,仿真是Z后一個重要的環節。對工程編譯通過后,必須對其功能和時序性質進行仿真測試,以了解設計結果是否滿足原設計要求。我們知道時序仿真與VHDL設計的程序有關,還與延時也有關。時序仿真更加要貼近生活與實際,是對VHDL設計的系統與硬件器件特性仿真。但功能仿真的仿真與系統硬件沒有關系,硬件延時不考慮。僅僅在理想情況下可對系統進行功能上的檢測。
其仿真流程的詳細步驟如下:
(1)打開波形編輯器;
。2)設置仿真時間區域;
。3)波形文件存盤;
。4)將工程的端口信號名選入波形編輯器中;
。5)編輯輸入波形(輸入激勵信號);
。6)總線數據格式設置;
。7)仿真器參數設置;
(8)啟動仿真器;
。9)觀察仿真結果。
4 IIR濾波器數字濾波器的單元電路設計
數字濾波器主要由加法器,乘法器和延時模塊三部分組成,我們可以通過硬件描述語言來設計所需要的模塊。這里研究的是延時模塊,乘法器,加法器與頂層模塊。
4.1 延時模塊的設計
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity delay is
port (clk:in std_logic;
res:in std_logic;
......
4.2 加法器的設計
加法器是數字系統中Z基本的運算電路,其他運算電路如減法器,乘法器等都可以利用加法器實現。
設計程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY adder4_beyond IS
PORT (a,b:IN std_logic_vector(3 downto 0);
cin:IN std_logic;
c:out std_logic_vector(3 downto 0); cout:out std_logic
。
END adder4_beyond;
ARCHITECTURE action OF adder4_beyond IS
SIGNAL m:std_logic_vector(2 downto 0);
......
4.3 乘法器的設計
設計程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_unsigned.ALL;
USE IEEE.STD_LOGIC_arith.ALL;
ENTITY mul_4 IS
PORT (multiplicand:IN STD_LOGIC_VECTOR(3 downto 0);
multiplier:IN STD_LOGIC_VECTOR(3 downto 0);
out_data:OUT STD_LOGIC_VECTOR(7 downto 0)
。
END mul_4;ARCHITECTURE bhv OF mul_4 IS
……
通過對IIR濾波器進行單位模塊的設計, Z終實現了IIR濾波器系統設計。 IIR數字濾波器可用相對來說較低的階數獲得較好的選擇性,FPGA具有體系結構和邏輯單元靈活、集成度高以及適用范圍廣等特點,兼容了PLD和通用門陣列的優點,可實現較大規模的電路,編程也很靈活。與門陣列等其它ASIC相比,它又具有設計開發周期短、設計制造成本低、開發工具先進、標準產品無需測試、質量穩定以及可��時在線檢驗等優點,因此被廣泛應用于產品的原型設計和產品生產之中。
【參考文獻】
[1]劉泉,列大順.數字信號處理與實現[M].北京:電子工業出版社,2005:2-12.
[2]林爭輝,林濤.基于可重構FPGA技術的自適應FIR濾波器的實現[J].電子工程師,2004(12):8-50.
[3]蘇金明,劉宏,劉波.MATLAB高級編程[M].北京:電子工業出版社,2005:331-337.
[責任編輯:楊玉潔]
下一篇:數顯表如何調節電流變比?視頻教程