基于FPGA的IIR濾波器設計.doc_第1頁
基于FPGA的IIR濾波器設計.doc_第2頁
基于FPGA的IIR濾波器設計.doc_第3頁
基于FPGA的IIR濾波器設計.doc_第4頁
基于FPGA的IIR濾波器設計.doc_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于FPGA的IIR濾波器設計摘 要:數字信號處理在科學和工程技術許多領域中得到廣泛的應用,與FIR數字濾波器相比,IIR數字濾波器可以用較低的階數獲得較高的選擇性,故本課題采用一種基于FPGA的IIR數字濾波器的設計方案,首先分析了IIR數字濾波器的原理及設計方法,然后通過MAX+PLUS的設計平臺,采用自頂向下的模塊化設計思想將整個IIR數字濾波器分為:時序控制、延時、補碼乘加和累加四個功能模塊。分別對各模塊采用VHDL進行描述后,進行了仿真和綜合。仿真結果表明,本課題所設計的IIR數字濾波器運算速度較快,系數改變靈活,有較好的參考價值。關鍵詞:電子設計自動化,IIR數字濾波器,現(xiàn)場可編程門陣列,硬件描述語言第42頁 共38頁The design for IIR digital filter based on FPGAAbstract: Digital signal processing is widely used in lots of fields, such as in science and project technique. Compared with FIR digital filter, IIR digital filter can get high selectivity with low factorial. A kind of IIR digital filter design method was introduced in the paper, which is based on FPGA. By used the design plant of MAX+PLUS, we adopt blocking method named “Top-down ” and divide the entire IIR digital filter into four blocks, which are Clock control, Time delay, Multiply-addition and Progression. After described with VHDL, we do emulate and synthesis to each block. The result shows that, the introduced IIR digital filter runs fast, and the coefficient changes agility. It has high worth for consulting.Key words: Electronic Design Automation, IIR Digital Filter, Field Programmable Gate Array, very High Speed Integrated Circuit Hardware Description Language (VHDL)目 錄序言1第1章 IIR數字濾波器及其硬件實現(xiàn)方法21.1 IIR數字濾波器概念21.1.1 IIR數字濾波器的原理21.1.2 IIR數字濾波器的基本結構21.1.3 IIR數字濾波器的設計方法31.2 IIR數字濾波器的硬件實現(xiàn)方案4第2章 EDA技術和可編程邏輯器件82.1 電子設計自動化EDA技術82.2 可編程邏輯器件82.2.1 可編程邏輯器件簡介82.2.2 使用FPGA器件進行開發(fā)的優(yōu)點92.2.3 FPGA設計的開發(fā)流程92.3 硬件描述語言VHDL及數字系統(tǒng)設計方法102.3.1 硬件描述語言VHDL簡介102.3.2 利用VHDL設計數字系統(tǒng)10第3章 IIR數字濾波器的設計與仿真結果分析113.1 IIR數字濾波器各模塊的設計與仿真結果分析113.1.1 時序控制模塊的設計與仿真結果分析113.1.2 延時模塊的設計與仿真結果分析123.1.3 補碼乘加模塊的設計與仿真結果分析123.1.4 累加模塊的設計與仿真結果分析143.1.5 頂層模塊設計143.2 IIR數字濾波器的仿真與結果分析153.2.1 IIR數字濾波器的系統(tǒng)設計153.2.2 IIR數字濾波器的系統(tǒng)仿真與結果分析163.2.3 高階IIR數字濾波器的實現(xiàn)17結束語19參考文獻20致 謝21附錄1 各模塊VHDL程序22附錄2 英文翻譯29 基于FPGA的IIR濾波器設計序 言隨著EDA技術的發(fā)展和應用領域的擴大和深入,EDA技術在電子信息、通信、自動控制及計算機應用等領域的重要性日益突出。這些技術的使用使得現(xiàn)代電子產品的體積減小、性能增強、集成化程度提高,與此同時其可編程能力也得以提高。在使用EDA進行電子設計時,設計人員可按照“自頂向下”的設計方法,對整個系統(tǒng)進行方案設計和功能劃分,采用硬件描述語言(DHL)完成系統(tǒng)行為級設計,最后通過綜合器和適配器生成最終的目標器件。VHDL語言是EDA設計中常用的一種IEEE標準語言,其具有覆蓋面廣、描述能力強、可讀性好、支持大規(guī)模設計及邏輯單元利用等優(yōu)點,因此受到越來越多的電子工程師的青睞1。本次設計采用EDA技術中的模塊化設計思想,就IIR數字濾波器中的一些關鍵電路進行設計,主要內容包括:時序控制模塊、延時模塊、補碼乘加模塊、累加模塊和IIR數字濾波器的頂層設計。分別對各模塊采用VHDL進行描述后,進行了仿真和綜合,取得了較好的設計效果。實驗結果表明,本課題所設計的IIR數字濾波器具有運算速度快,系數改變靈活方便等特點。第1章 IIR數字濾波器及其硬件實現(xiàn)方法1.1 IIR數字濾波器概念數字濾波器是完成信號濾波處理功能的,用有限精度算法實現(xiàn)的離散時間線性非時變系統(tǒng)2。輸入一組數字量,通過運算輸出的是另一組數字量。數字濾波器具有穩(wěn)定性好、精度高、靈活性大等突出優(yōu)點。隨著數字技術的發(fā)展,用數字技術設計濾波器的功能越來越受到人們的注意和廣泛的應用。1.1.1 IIR數字濾波器的原理一個數字濾波器的系統(tǒng)函數可以表示為2:= (1.1.1)直接由得出表示輸入輸出關系的常系數線性差分方程為: (1.1.2)式中、為濾波系數,當均為零時,該濾波器為FIR數字濾波器,當不均為零時,則為IIR數字濾波器。與FIR數字濾波器相比,IIR數字濾波器可以用較低的階數獲得高的選擇性,所用的存儲單元少,成本低、信號延遲小,并且IIR數字濾波器可以借助于模擬濾波器的設計成果,設計工作量相對較小,為此,本文就IIR數字濾波器進行相關討論。 1.1.2 IIR數字濾波器的基本結構IIR數字濾波器有直接型、級聯(lián)型和并聯(lián)型三種基本結構2。由IIR數字濾波器的階差分方程(1.1.2)式可知,設=2,則網絡結構如圖1-1所示。x(n)a0b1a2b0a1y(n)z-1z-1圖1-1 直接型結構 1.1.3 IIR數字濾波器的設計方法IIR數字濾波器的設計方法通常有模擬轉換法、零極點累試法和優(yōu)化設計法2。1. IIR數字濾波器的模擬轉換設計法利用模擬濾波器成熟的理論和設計方法來設計IIR數字濾波器是經常使用的方法。設計過程是:按照技術要求設計一個模擬濾波器,得到濾波器的傳輸函數,再按一定的轉換關系將轉換成數字濾波器的系統(tǒng)函數。將傳輸函數從s平面轉移到z平面的方法有多種,但工程上常用的是脈沖響應不變法和雙線性變換法。2. IIR數字濾波器的零極點累試法上述介紹的模擬轉換設計法實際上是數字濾波器的一種間接設計方法,而且幅度特性受到所選模擬濾波器特性的限制。例如巴特沃斯低通幅度特性是單調下降,而切比雪夫低通特性帶內或帶外有上、下波動等,對于要求任意幅度特性的濾波器,則不適合采用這種方法。下述介紹的在數字域直接設計IIR數字濾波器的設計方法,其特點是適合設計任意幅度特性的濾波器。在IIR數字濾波器的直接設計法中零極點累試法較為常用,設單位脈沖響應的零極點表達式為2: (1.1.3)按照(1.1.3)式,系統(tǒng)特性取決于系統(tǒng)零極點的分布,通過分析,我們知道系統(tǒng)極點位置主要影響系統(tǒng)幅度特性峰值位置及其尖銳程度,零點位置主要影響系統(tǒng)幅度特性的谷值位置及其凹下的程度;且通過零極點分析的幾何作圖法可以定性地畫出其幅度特性。上面的結論及方法提供了一種直接設計濾波器的方法。這種設計方法是根據其幅度特性先確定零極點位置,再按照確定的零極點寫出其系統(tǒng)函數,畫出其幅度特性,并與希望的進行比較,如不滿足要求??赏ㄟ^移動零極點位置或增加(減少)零極點,進行修正。3.優(yōu)化設計法IIR 數字濾波器除模擬轉換設計法和零極點累試法外,還有一種直接在頻域或者時域中進行設計,聯(lián)立方程后需要計算機作輔助運算的方法,即所謂的優(yōu)化設計法。1.2 IIR數字濾波器的硬件實現(xiàn)方案濾波器的實現(xiàn)主要包括兩大類:DSPTMS320系列芯片的實現(xiàn)和ISP器件的實現(xiàn)(主要包括FPGA和CPLD)。其中利用DSPTMS320系列芯片實現(xiàn)濾波時速度較慢,而利用ISP器件實現(xiàn)時,其運算速度比DSP器件要快好多倍。FPGA的實現(xiàn)包括其自帶的核的實現(xiàn)方法和自編程實現(xiàn)方法。核的實現(xiàn)方法雖然好用并且結構縝密,但一般情況下使用的權限都會受到注冊購買的限制,因此基于FPGA的自編程實現(xiàn)方法成了濾波器實現(xiàn)的首選3。以下簡要介紹IIR數字濾波器的設計方案和基于FPGA的實現(xiàn)方法4。1.方案一:直接相乘累加式對于二階的IIR數字濾波器,其傳遞函數為: (1.2.1)濾波器信號流圖見圖1-1,在第n時刻,是當時的輸入樣本; 是n時刻的IIR濾波器的輸出: (1.2.2)因此,可以用硬件乘法器和硬件加法器來實現(xiàn)乘法和加法。由式(1.2.2)可以看出,按照這種設計方法,要用到5個乘法器和6個加法器。對于FPGA的設計來說,這種方法的缺點是比較耗費資源。2.方案二:基于ROM查表法的VHDL結構化設計采用ROM查表的方法,主要是為了避免使用硬件乘法器。二階IIR的一般表示形式為: (1.2.3)其中是輸入序列,是輸出序列,和是系數。假設輸入序列為位2的補碼,并以定點表示,并1,對于可以表示為: (1.2.4)式中:表示的第位,上標為0的是符號位,因此可以定義一個5bit為變量的函數為: (1.2.5)由此可以得到:- (1.2.6)由于函數僅有32種可能取值,因此可以設計一個32*b位的ROM構成的如圖1-3描述的基于ROM的實現(xiàn)結構。數據輸入串行移入SR1和SR2,由抽頭處得到,每計算出一個值后,便并行加載到SR3中,然后串行移入SR4,并在抽頭處得到和。ROM的輸入地址由組成。按此方法設計的優(yōu)點是避免了占主要運算量的乘法運算,節(jié)省了FPGA的硬件資源,缺點與FIR濾波器利用ROM方法設計相同,即使用不夠靈活。當系數發(fā)生變化時,更改ROM內的數據十分不便,特別是當階數比較大時,ROM內的數據較多,程序外的運算量也很大,修改數據更為不便。 圖1-2 ROM查表法實現(xiàn)框圖3.方案三:基于ROM查表法的改進型設計此方法結合了直接相乘累加式和ROM查表法的優(yōu)點,使得設計靈活,設計周期短,節(jié)省資源。二階IIR的一般表示形式為: (1.2.6)這里是輸入序列,是輸出序列,和是系數。設輸入序列為位2的補碼,并以定點表示,并1,對于可以表示為: (1.2.7)式中:表示的第位,上標為0的是符號位,因此可以定義一個5bit為變量的函數為: (1.2.8)同理可得: (1.2.9)由此可以得到: (1.2.10)令,可以推出: (1.2.11)從式(1.2.11)中可以看出,可以用一個五路8位*1位乘法器在8個時鐘周期內實現(xiàn)上述算式。其加法可以直接調用軟件的庫實現(xiàn)。本方案實現(xiàn)結構如圖1-3所示。X(n)X(n-1)X(n-2)X(n-1)X(n-2)輸入b0kb1ka0ka2ka1k輸出Y(n)累 加 器 圖1-3 改進型實現(xiàn)框圖圖1-3中的作為FPGA接口上的A/D器件的轉換數據輸入寄存器,各寄存器內的數據與各自的系數的最高位相乘后,送入累加器相加,并且其和向左移一位,以實現(xiàn)乘2運算。下一個時鐘,寄存器內數據與其系數的次高位相乘,再送入累加器與其數據相加,再左移一位。接下的6個時鐘進行類似的操作。第8個時鐘后,累加器將其數據輸出,即,并對累加器清零,同時將寄存器數據送入寄存器,將寄存器數據送入寄存器,同理,。接著再進行下一次運算。對上述三種方法相比較而言,方案三實現(xiàn)較為方便簡潔,在節(jié)省了FPGA硬件資源的同時,使得設計靈活,設計周期大為縮短,故本設計在方案三為基礎上作改進后,來實現(xiàn)IIR數字濾波器的。第2章 EDA技術和可編程邏輯器件2. 1 電子設計自動化EDA技術EDA是Electronic Design Automation的縮寫,意為電子設計自動化,即利用計算機自動完成電子系統(tǒng)的設計?;仡櫧?0年的電子設計技術的發(fā)展歷程,可將EDA技術分為三個階段4:七十年代為CAD(Computer Aide Design)階段。這個階段主要分別研制了一個個單獨的軟件工具,主要有電路模擬、邏輯模擬、版圖編輯、PCB布局布線等,通過計算機的使用,從而可以把設計人員從大量繁瑣、重復的計算和繪圖工作中解脫出來。八十年代為CAE階段。這個階段在集成電路與電子系統(tǒng)方法學,以及設計工具集成方面取得了眾多成果,與CAD相比,除了純粹的圖形繪制功能外,又增加了電路功能設計和結構設計,并且通過電氣連接網絡表將兩者結合在一起,實現(xiàn)了工程設計。九十年代為EDA階段,盡管CAD/CAE技術取得了巨大的成功,但在整個設計過程中,自動化和智能化程度還不高,各種EDA軟件界面千差萬別,學習實用困難直接影響到設計環(huán)節(jié)間的銜接?;谝陨喜蛔?,人們開始追求貫穿整個設計過程的自動化,即電子系統(tǒng)設計自動化。2. 2可編程邏輯器件2.2.1可編程邏輯器件簡介可編程陣列邏輯器件PAL(Programmable Array Logic)和通用陣列邏輯器件GAL(Generic Array Logic)都屬于簡單PLD。隨著技術的發(fā)展,簡單PLD在集成度和性能方面的局限性也暴露出來。其寄存器、I/O引腳、時鐘資源的數目有限,沒有內部互連,因此包括復雜可編程邏輯器件CPLD(Complex PLD)和現(xiàn)場可編程門陣列器件FPGA(Field Programmable Gate Array)在內的復雜PLD迅速發(fā)展起來,并向著高密度、高速度、低功耗以及結構體系更靈活、適用范圍更廣闊的方向發(fā)展。FPGA具備陣列型PLD的特點,結構又類似掩膜可編程門陣列,因而具有更高的集成度和更強大的邏輯實現(xiàn)功能,使設計變得更加靈活和易實現(xiàn)。相對于 CPLD,它還可以將配置數據存儲在片外的EPROM或者計算機上,設計人員可以控制加載過程,在現(xiàn)場修改器件的邏輯功能,即所謂的現(xiàn)場可編程。所以FPGA得到了更普遍的應用。2.2.2使用FPGA器件進行開發(fā)的優(yōu)點使用FPGA器件設計數字電路,不僅可以簡化設計過程,而且可以降低整個系統(tǒng)的體積和成本,增加系統(tǒng)的可靠性。使用FPGA器件設計數字系統(tǒng)電路的主要優(yōu)點如下:1.增大功能密集度功能密集度是指在給定的空間能集成的邏輯功能數量??删幊踢壿嬓酒瑑鹊慕M件門數高,一片F(xiàn)PGA可代替幾十片乃至上百片中小規(guī)模的數字集成電路芯片。用FPGA實現(xiàn)數字系統(tǒng)時用的芯片數量少,從而減少印刷板面積和數目,最終導致系統(tǒng)規(guī)模的減小。2.縮短設計周期由于FPGA器件集成度高,使用時印刷線路板電路布局布線簡單。FPGA器件的可編程性和靈活性,決定了用它設計一個系統(tǒng)所需時間比傳統(tǒng)方法大為縮短。3.工作速度快FPGA/CPLD器件的工作速度快,一般可以達到幾百兆赫茲,遠遠大于DSP器件。使用FPGA器件后實現(xiàn)系統(tǒng)所需要的電路級數少,因而整個系統(tǒng)的工作速度會得到提高。2.2.3 FPGA設計的開發(fā)流程設計開始需利用EDA工具的文本或圖形編輯器將設計者的設計意圖用文本方式(如VHDL程序)或圖形方式(原理圖、狀態(tài)圖等)表達出來。完成設計描述后即可通過編譯器進行排錯編譯,變成特定的文本格式,為下一步的綜合做準備。編譯形成標準VHDL文件后,在綜合前即可以對所描述的內容進行功能仿真,又可稱為前仿真。由于此時的仿真只是根據VHDL的語義進行的,與具體電路沒有關系,仿真過程不涉及具體器件的硬件特性,如延遲特性。設計的第三步是綜合,將軟件設計與硬件的可實現(xiàn)性掛鉤,這是軟件化為硬電路的關鍵步驟。綜合后,可生成VHDL網表文件,利用網表文件進行綜合后仿真。綜合通過后必須利用FPGA布局/布線適配器將綜合后的網表文件針對某一具體的目標器件進行邏輯映射操作,這個過程叫做實現(xiàn)過程。布局布線后應進行時序仿真。時序仿真中應將布局布線后的時延文件反標到設計中,使仿真既包含門時延,又包含線時延的信息。與前面各種仿真相比,這種仿真包含的時延信息最為全面、準確,能較好地反映芯片的實際工作情況。如果以上的所有過程,都沒有發(fā)現(xiàn)問題,即滿足原設計要求,就可以將適配器產生的配置/下載文件通過編程器或下載電纜載入目標芯片中。2.3 硬件描述語言VHDL及數字系統(tǒng)設計方法2.3.1 硬件描述語言VHDL簡介硬件描述語言(Very High Speed Integrated Circuit Hardware Description Language, VHDL)是一種用于設計硬件電子系統(tǒng)的計算機語言,包括系統(tǒng)行為級、寄存器傳輸級和邏輯門級多個設計層次,支持結構、數據流、行為三種描述形式的混合描述,因此VHDL幾乎覆蓋了以往各種硬件描述語言的功能。它主要用于描述數字系統(tǒng)的結構、行為、功能和接口,非常適用于可編程邏輯芯片的應用設計。與其它的HDL相比,VHDL具有更強大的行為描述能力,從而決定了它成為系統(tǒng)設計領域最佳的硬件描述語言。2.3.2利用VHDL設計數字系統(tǒng)利用VHDL語言設計數字系統(tǒng)硬件電路,與傳統(tǒng)的設計方法相比,具有以下優(yōu)點:1.采用自頂向下(TOP-DOWN)的設計方法。自頂向下是指從系統(tǒng)總體要求出發(fā),在頂層進行功能方框圖的劃分和結構設計。由于設計的主要仿真和調試過程在高層次上完成,這一方面有利于提高了設計的效率。2.降低了硬件電路的設計難度。在使用VHDL語言設計硬件電路時,可以免除編寫邏輯表達式或真值表的過程,使得設計難度大大下降,從而也縮短了設計周期。3.主要設計文件是用VHDL語言編寫的源程序。在傳統(tǒng)的硬件電路設計中,最后形成的主要文件是電路原理圖,而采用VHDL語言設計系統(tǒng)硬件電路時主要的設計文件是VHDL語言編寫的源程序。4.方便ASIC移植。VHDL語言的效率之一,就是如果你的設計是被綜合到一個FPGA或CPLD的話,則可以使你設計的產品以最快的速度上市。當產品的產量達到相當的數量時,采用VHDL進行的設計很容易轉換成專用集成電路來實現(xiàn)。所以本次設計采用利用VHDL語言的數字系統(tǒng)設計方法。第3章IIR數字濾波器的設計與仿真結果分析3.1 各模塊的設計與仿真結果分析本課題在實現(xiàn)方案三的基礎上,結合參考文獻4-6將IIR濾波器的硬件系統(tǒng)分為四個模塊:時序控制、延時、補碼乘加和累加模塊。以下就各個模塊的實現(xiàn)及仿真作簡要的分析。3.1.1 時序控制模塊的設計與仿真結果分析時序控制模塊主要用來產生對其它模塊的時序控制信號。模塊的符號如圖3-1(a)所示,輸入信號CLK是時鐘信號,RES是復位信號,CLK_REG及CLK_REGBT是輸出信號。圖3-1(a) 時序控制模塊圖圖3-1(b) 時序控制模塊仿真圖時序控制模塊仿真如圖3-2(b)所示,其中counter為程序內部計數信號,在clk的上升延到來時,counter以6個時鐘為周期開始進行計數,clk_regbt每隔6個時鐘輸出一個低電平,clk_reg則每隔6個時鐘后輸出一個高電平。輸出的兩個時鐘信號正好控制延時模塊、補碼乘加模塊和累加模塊的模塊的運行。符合設計要求。時序控制模塊程序見附錄1。3.1.2 延時模塊的設計與仿真結果分析延時模塊的符號如圖3-2(a)所示,其主要作用是在clk時鐘作用下將差分方程的各、值延遲一個時鐘,以實現(xiàn)一次延時運算,即當輸入為xn和yn時,經過一次延時后其輸出分別為x(n-1)和y(n-1).其中yout是反饋輸入信號,xn是輸入信號。程序見附錄二。圖3-2(a) 延時模塊圖圖3-2(b) 延時模塊仿真圖延時模塊仿真圖如圖3-2(b)所示,由圖3-4可以看出當輸入的xn、yout都為時,在時鐘信號上升沿的作用下產生延時,經第一個時鐘后x0、x1、x2、y0、y1的值分別為1,0,0,1,0。經第二個時鐘后x0、x1、x2、y0、y1的值分別為2,1,0,2,1。經第三個時鐘后x0、x1、x2、y0、y1的值分別為3,2,1,3,2。經第四個時鐘后由此可見該模塊仿真值正確。延時模塊程序見附錄1。3.1.3 補碼乘加模塊的設計與仿真結果分析補碼乘加模塊主要用來實現(xiàn)輸入序列、與系數、分別相乘后再相加的過程。即實現(xiàn)的算法。為了避免過多地使用乘法器,本設計中乘加單元(MAC)的乘法器采用陣列乘法器,以提高運算速度。由于Maxplus的LPM庫中乘法運算為無符號數的陣列乘法,所以使用時需要先將兩個補碼乘數轉換為無符號數相乘后,再將乘積轉換為補碼乘積輸出5。每個二階節(jié)完成一次運算共需要6個時鐘周期,而且需采用各自獨立的MAC實現(xiàn)兩級流水線結構,即每個數據經過兩個二階節(jié)輸出只需要6個時鐘周期。模塊的符號如圖3-3(a)所示。圖3-3(a) 補碼乘加模塊圖圖3-3(b) 補碼乘加模塊仿真圖補碼乘加模塊仿真圖如圖3-5所示,clk_regbt及clk_reg為輸入時鐘,由時序控制模塊提供。、為系數,x0、x1、x2、y0、y1為輸入信號,yout為輸出信號,圖3-3(b)中75為x0、x1、x2、y0、y1的值15和系數、相乘后再相加的結果,完成了補碼乘加的功能。補碼乘加模塊程序見附錄1。3.1.4 累加模塊的設計與仿真結果分析補碼乘加模塊所輸出的信號送入累加器后,與寄存于累加器中的上一步計算的中間結果相加,最后將此步的計算結果經由輸出引腳輸出,所得信號即為最終結果。 即該模塊主要實現(xiàn)youtput=yout+youtput(n-1)的算法,模塊的符號如圖3-4(a)所示。圖3-4(a) 累加模塊圖圖3-4(b) 累加模塊仿真圖累加模塊仿真圖如圖3-4(b),其中res為復位信號,clk為時鐘信號,yout為輸入信號,由補碼乘加模塊的輸出信號yout提供,由圖中可以看出當輸入信號為yout=,輸出為youtput=,實現(xiàn)了累加的功能。符合設計要求。累加模塊程序見附錄1。3.1.5 頂層模塊設計頂層模塊設計采用了原理圖輸入方法,原理圖輸入方式非常直觀,便于信號觀察和電路的調節(jié)。圖3-5 頂層模塊圖本課題設計的頂層文件名為iir.gdf,設計生成的邏輯符號如圖3-5所示。頂層模塊設計程序見附錄1。3.2 IIR數字濾波器的仿真與結果分析3.2.1 IIR數字濾波器的系統(tǒng)設計IIR數字濾波器頂層原理圖如圖3-6所示。為了便于理解整個系統(tǒng)的設計,現(xiàn)將系統(tǒng)的運行過程進行說明:圖3-6 IIR數字濾波器頂層原理圖系統(tǒng)先開始處于初始狀態(tài),當清零信號為“1”時,對整個系統(tǒng)進行清零。在清零信號為“0”的前提,時序控制模塊在時鐘clk上升沿的作用下產生兩個信號CLK_REG及CLK_REGBT,其中CLK_REG信號用來作為延時模塊、補碼乘加模塊和累加模塊的輸入時鐘,CLK_REGBT每隔6個時鐘產生一個高電平作為這三個模塊的復位信號。延時模塊在接收到CLK_REG高電平信號時清零輸出端,接收到低電平時,在CLK_REGBT上升沿的作用下對輸入信號進行延時,以實現(xiàn)一次延時運算,而后將延時信號輸出,送給補碼乘加模塊。補碼乘加模塊在接收延時信號的同時也接收讀者輸入的系數信號,在CLK_REGBT上升沿的作用下實現(xiàn)系數和延時信號的補碼乘加運算,而此步驟需要6個時鐘來完成,正好與時序控制模塊的輸出信號CLK_REGBT相一致。補碼乘加模塊的輸出一部分送入延時模塊以實現(xiàn)信號的反饋,另一部分則送入到累加模塊,在累加模塊中進行結果累加后輸出,得到最終結果。3.2.2 IIR數字濾波器的系統(tǒng)仿真與結果分析在各模塊編譯通過后將各模塊進行了綜合,針對不同的輸入信號和不同的輸入系數對IIR數字濾波器進行了仿真,仿真波形如圖3-7所示。并將仿真值和計算值進行了比較,如表3.2.1中所示。(a)(b)(c)圖3-7 IIR數字濾波器仿真圖表3.2.1 濾波后輸出的數據輸入數據Xn=0,1,2,3,4,5;a0=a1=a2=b0=b1=1計算值01411244780仿真值01411254369輸入數據Xn=0,1,0,1,0,1;a0=a1=a2=b0=b1=1計算值012581524仿真值012591523輸入數據Xn=0,1,0,1,0,1;a0=2,a1=a2=b0=b1=1計算值0238142234仿真值0249172741由表3.2.1可見,仿真值結果正確,只是與真值之間存在一定的誤差,仿真值越大時誤差越大,這是由于有限精度算法所引起的誤差,經累加器累加后使得誤差變得越來越大,要解決這一問題可以通過增加二進制位數來提高系統(tǒng)的運算精度5。3.2.3 高階IIR數字濾波器的實現(xiàn)要實現(xiàn)一個高階IIR數字濾波器,如果采用直接型結構實現(xiàn),需用的乘法器和延遲單元相對較多,而且分子和分母的系數相差較大,需要較多的二進制位數才能實現(xiàn)相應的精度要求。如果采用二階節(jié)級聯(lián)實現(xiàn),一方面各基本節(jié)的零點、極點可以很方便地單獨進行調整,另一方面可以降低對二進制數位數的要求。以實現(xiàn)一個四階IIR數字濾波器為例,可以通過兩個二階IIR數字濾波器級聯(lián)的方式來實現(xiàn)較為簡潔。圖3-8給出了一個四階IIR數字濾波器實現(xiàn)的原理圖5,具體的工作原理與二階IIR數字濾波器類似,在此本節(jié)即不再細述。圖3-8 四階IIR數字濾波器的頂層原理當然,更高階的IIR數字濾波器的實現(xiàn)方法與四階濾波器的實現(xiàn)方法類似,只需將多個二階IIR數字濾波器進行級聯(lián),即可實現(xiàn)。結 束 語為期三個月的畢業(yè)設計即將結束,在這期間我經歷了從查資料、分析課題到學習軟件、設計程序、調試、總結經驗教訓及書寫畢業(yè)論文的過程。本課題采用一種基于FPGA的IIR數字濾波器的設計方案,首先分析了IIR數字濾波器的原理及設計方法,然后通過MAX+PLUS的設計平臺,采用模塊化、層次化的設計思想將整個IIR數字濾波器分為四個功能模塊:時序控制模塊、延時模塊、補碼乘加模塊、累加模塊。分別對各模塊采用語言VHDL進行描述后,進行了仿真和綜合。仿真結果表明,本課題所設計的IIR數字濾波器運算速度較快。但由于有限精度算法問題致使仿真結果存在一定的誤差,針對這一問題可以通過增加二進制位數來提高系統(tǒng)的運算精度。由于畢業(yè)設計即將結束,沒有時間繼續(xù)完善本課題所實現(xiàn)的IIR數字濾波器的性能,在這一方面,濾波器的性能有待提高。參考文獻1 劉凌,胡永生譯數字信號處理的FPGA實現(xiàn)M北京:清華大學出版社20032 丁玉美,高西全數字信號處理M西安:西安電子科技大學出版社20043 潘松,黃繼業(yè)EDA技術實用教程M北京:科學出版社20004 潘松,王國棟VHDL實用教程M成都:電子科技大學出版社20015 倪向東基于FPGA的四階IIR數字濾波器J電子技術應用,20036 王衛(wèi)兵高階IIR數字濾波器的FPGA描述J電子元器件,2005,16期:pp3-47 黃任VHDL入門解惑經典實例經驗總結M北京:北京航空航天出版社20058 北京理工大學ASIC研究所VHDL語言100例詳解M北京:清華大學出版社19999 Joseph B. Evans, Efficient F1R Filter Architectures Suitable for FPGA ImplementationM IEEE Trans, Circuits and System,July 199410Javier Valls, Marcos M. Peiro, Trini Sansaloni, Eduardo Boemo, A Study About FPGA-BasedDigital FiltersJ, IEEE SIPS, pp191-201,October 1998致 謝本文是在導師朱幼蓮教授的精心指導和嚴格要求下完成的。從選題到論文的完成,都凝聚著朱幼蓮老師的辛勞和汗水。她在我這三個月的畢業(yè)設計期間給了我很多無微不至的關懷,從IIR數字濾波器的理論知識到濾波器的實現(xiàn)方法都有朱老師孜孜不倦的教誨,在朱老師的幫助下本次畢業(yè)設計才能得意順利完成。朱老師淵博的知識、嚴謹科學的治學態(tài)度和工作作風將給我以后的學習和工作起著模范和激勵的作用,在此對朱幼蓮老師表示深深的敬意和衷心的感謝!此外,我在畢業(yè)設計期間還得到許多老師、同學、朋友的幫助,在此亦表示衷心的感謝!附錄1 各模塊VHDL程序時序控制模塊程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity control is port( clk,res:in std_logic; clk_reg,clk_regbt:out std_logic );end;architecture bhv of control is signal counter,count_bt:integer ; signal clk_en:std_logic; beginclk_regbt=not clk and clk_en;clk_reg=not clk and not clk_en; process(clk,res) begin if(res=1)then counter=0; count_bt=0; elsif(clkevent and clk=1)then if( counter6)then clk_en=1; counter=counter+1; count_bt=count_bt-1; else counter=0; count_bt=0;clk_en=0; end if; end if; end process;end bhv;延時模塊程序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; xn:in std_logic_vector(4 downto 0); yout:in std_logic_vector(8 downto 0); x0,x1,x2:out std_logic_vector(4 downto 0); y0,y1:out std_logic_vector(8 downto 0);end delay;architecture bhv of delay issignal reg_x0,reg_x1,reg_x2:std_logic_vector(4 downto 0);signal reg_y0,reg_y1:std_logic_vector(8 downto 0);beginprocess(res,clk)beginif (res=1) then reg_x0=00000;reg_x1=00000;reg_x2=00000;reg_y0=000000000;reg_y1=000000000;elsif (clkevent and clk=1) then reg_x2=reg_x1;reg_x1=reg_x0;reg_x0=xn;reg_y1=reg_y0;reg_y0=yout; -實現(xiàn)延時end if;x0=reg_x0;x1=reg_x1;x2=reg_x2;y0=reg_y0;y1=reg_y1; end process;end bhv;補碼乘加模塊程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity smultadd1 is port (clk_regbt,clk_reg:in std_logic;a0,a1,a2,b0,b1,x0,x1,x2:in std_logic_vector(4 downto 0);y0,y1:in std_logic_vector(8 downto 0);yout:out std_logic_vector(8 downto 0);end smultadd1;architecture bhv of smultadd1 issignal tan,tbn,tp2n:std_logic;signal cnt:std_logic_vector(2 downto 0);signal ta,tb,taa,tbb:std_logic_vector(3 downto 0);signal tmpa,tmpb:std_logic_vector(4 downto 0);signal tp,tpp,tppp:std_logic_vector(7 downto 0);signal ytmp,p:std_logic_vector(8 downto 0);begin tmpa0);tmpb0);ta=tmpa(3 downto 0);tb=tmpb(3 downto 0);tan=tmpa(4);tbn=tmpb(4);taa=not ta +1 when (tan=1) else ta; -將輸入轉換為補碼tbb=not tb +1 when (tbn=1) else tb;tp2n=tan xor tbn;tp=taa*tbb; -完成補碼相乘運算tpp=not tp +1 when (tp2n=1) else tp;p0) w

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論