




已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
基于FPGA的IIR濾波器設計摘 要:數(shù)字信號處理在科學和工程技術許多領域中得到廣泛的應用,與FIR數(shù)字濾波器相比,IIR數(shù)字濾波器可以用較低的階數(shù)獲得較高的選擇性,故本課題采用一種基于FPGA的IIR數(shù)字濾波器的設計方案,首先分析了IIR數(shù)字濾波器的原理及設計方法,然后通過MAX+PLUS的設計平臺,采用自頂向下的模塊化設計思想將整個IIR數(shù)字濾波器分為:時序控制、延時、補碼乘加和累加四個功能模塊。分別對各模塊采用VHDL進行描述后,進行了仿真和綜合。仿真結果表明,本課題所設計的IIR數(shù)字濾波器運算速度較快,系數(shù)改變靈活,有較好的參考價值。關鍵詞:電子設計自動化,IIR數(shù)字濾波器,現(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數(shù)字濾波器及其硬件實現(xiàn)方法21.1 IIR數(shù)字濾波器概念21.1.1 IIR數(shù)字濾波器的原理21.1.2 IIR數(shù)字濾波器的基本結構21.1.3 IIR數(shù)字濾波器的設計方法31.2 IIR數(shù)字濾波器的硬件實現(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及數(shù)字系統(tǒng)設計方法102.3.1 硬件描述語言VHDL簡介102.3.2 利用VHDL設計數(shù)字系統(tǒng)10第3章 IIR數(shù)字濾波器的設計與仿真結果分析113.1 IIR數(shù)字濾波器各模塊的設計與仿真結果分析113.1.1 時序控制模塊的設計與仿真結果分析113.1.2 延時模塊的設計與仿真結果分析123.1.3 補碼乘加模塊的設計與仿真結果分析123.1.4 累加模塊的設計與仿真結果分析143.1.5 頂層模塊設計143.2 IIR數(shù)字濾波器的仿真與結果分析153.2.1 IIR數(shù)字濾波器的系統(tǒng)設計153.2.2 IIR數(shù)字濾波器的系統(tǒng)仿真與結果分析163.2.3 高階IIR數(shù)字濾波器的實現(xiàn)17結束語19參考文獻20致 謝21附錄1 各模塊VHDL程序22附錄2 英文翻譯29 基于FPGA的IIR濾波器設計序 言隨著EDA技術的發(fā)展和應用領域的擴大和深入,EDA技術在電子信息、通信、自動控制及計算機應用等領域的重要性日益突出。這些技術的使用使得現(xiàn)代電子產(chǎn)品的體積減小、性能增強、集成化程度提高,與此同時其可編程能力也得以提高。在使用EDA進行電子設計時,設計人員可按照“自頂向下”的設計方法,對整個系統(tǒng)進行方案設計和功能劃分,采用硬件描述語言(DHL)完成系統(tǒng)行為級設計,最后通過綜合器和適配器生成最終的目標器件。VHDL語言是EDA設計中常用的一種IEEE標準語言,其具有覆蓋面廣、描述能力強、可讀性好、支持大規(guī)模設計及邏輯單元利用等優(yōu)點,因此受到越來越多的電子工程師的青睞1。本次設計采用EDA技術中的模塊化設計思想,就IIR數(shù)字濾波器中的一些關鍵電路進行設計,主要內(nèi)容包括:時序控制模塊、延時模塊、補碼乘加模塊、累加模塊和IIR數(shù)字濾波器的頂層設計。分別對各模塊采用VHDL進行描述后,進行了仿真和綜合,取得了較好的設計效果。實驗結果表明,本課題所設計的IIR數(shù)字濾波器具有運算速度快,系數(shù)改變靈活方便等特點。第1章 IIR數(shù)字濾波器及其硬件實現(xiàn)方法1.1 IIR數(shù)字濾波器概念數(shù)字濾波器是完成信號濾波處理功能的,用有限精度算法實現(xiàn)的離散時間線性非時變系統(tǒng)2。輸入一組數(shù)字量,通過運算輸出的是另一組數(shù)字量。數(shù)字濾波器具有穩(wěn)定性好、精度高、靈活性大等突出優(yōu)點。隨著數(shù)字技術的發(fā)展,用數(shù)字技術設計濾波器的功能越來越受到人們的注意和廣泛的應用。1.1.1 IIR數(shù)字濾波器的原理一個數(shù)字濾波器的系統(tǒng)函數(shù)可以表示為2:= (1.1.1)直接由得出表示輸入輸出關系的常系數(shù)線性差分方程為: (1.1.2)式中、為濾波系數(shù),當均為零時,該濾波器為FIR數(shù)字濾波器,當不均為零時,則為IIR數(shù)字濾波器。與FIR數(shù)字濾波器相比,IIR數(shù)字濾波器可以用較低的階數(shù)獲得高的選擇性,所用的存儲單元少,成本低、信號延遲小,并且IIR數(shù)字濾波器可以借助于模擬濾波器的設計成果,設計工作量相對較小,為此,本文就IIR數(shù)字濾波器進行相關討論。 1.1.2 IIR數(shù)字濾波器的基本結構IIR數(shù)字濾波器有直接型、級聯(lián)型和并聯(lián)型三種基本結構2。由IIR數(shù)字濾波器的階差分方程(1.1.2)式可知,設=2,則網(wǎng)絡結構如圖1-1所示。x(n)a0b1a2b0a1y(n)z-1z-1圖1-1 直接型結構 1.1.3 IIR數(shù)字濾波器的設計方法IIR數(shù)字濾波器的設計方法通常有模擬轉(zhuǎn)換法、零極點累試法和優(yōu)化設計法2。1. IIR數(shù)字濾波器的模擬轉(zhuǎn)換設計法利用模擬濾波器成熟的理論和設計方法來設計IIR數(shù)字濾波器是經(jīng)常使用的方法。設計過程是:按照技術要求設計一個模擬濾波器,得到濾波器的傳輸函數(shù),再按一定的轉(zhuǎn)換關系將轉(zhuǎn)換成數(shù)字濾波器的系統(tǒng)函數(shù)。將傳輸函數(shù)從s平面轉(zhuǎn)移到z平面的方法有多種,但工程上常用的是脈沖響應不變法和雙線性變換法。2. IIR數(shù)字濾波器的零極點累試法上述介紹的模擬轉(zhuǎn)換設計法實際上是數(shù)字濾波器的一種間接設計方法,而且幅度特性受到所選模擬濾波器特性的限制。例如巴特沃斯低通幅度特性是單調(diào)下降,而切比雪夫低通特性帶內(nèi)或帶外有上、下波動等,對于要求任意幅度特性的濾波器,則不適合采用這種方法。下述介紹的在數(shù)字域直接設計IIR數(shù)字濾波器的設計方法,其特點是適合設計任意幅度特性的濾波器。在IIR數(shù)字濾波器的直接設計法中零極點累試法較為常用,設單位脈沖響應的零極點表達式為2: (1.1.3)按照(1.1.3)式,系統(tǒng)特性取決于系統(tǒng)零極點的分布,通過分析,我們知道系統(tǒng)極點位置主要影響系統(tǒng)幅度特性峰值位置及其尖銳程度,零點位置主要影響系統(tǒng)幅度特性的谷值位置及其凹下的程度;且通過零極點分析的幾何作圖法可以定性地畫出其幅度特性。上面的結論及方法提供了一種直接設計濾波器的方法。這種設計方法是根據(jù)其幅度特性先確定零極點位置,再按照確定的零極點寫出其系統(tǒng)函數(shù),畫出其幅度特性,并與希望的進行比較,如不滿足要求??赏ㄟ^移動零極點位置或增加(減少)零極點,進行修正。3.優(yōu)化設計法IIR 數(shù)字濾波器除模擬轉(zhuǎn)換設計法和零極點累試法外,還有一種直接在頻域或者時域中進行設計,聯(lián)立方程后需要計算機作輔助運算的方法,即所謂的優(yōu)化設計法。1.2 IIR數(shù)字濾波器的硬件實現(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數(shù)字濾波器的設計方案和基于FPGA的實現(xiàn)方法4。1.方案一:直接相乘累加式對于二階的IIR數(shù)字濾波器,其傳遞函數(shù)為: (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)其中是輸入序列,是輸出序列,和是系數(shù)。假設輸入序列為位2的補碼,并以定點表示,并1,對于可以表示為: (1.2.4)式中:表示的第位,上標為0的是符號位,因此可以定義一個5bit為變量的函數(shù)為: (1.2.5)由此可以得到:- (1.2.6)由于函數(shù)僅有32種可能取值,因此可以設計一個32*b位的ROM構成的如圖1-3描述的基于ROM的實現(xiàn)結構。數(shù)據(jù)輸入串行移入SR1和SR2,由抽頭處得到,每計算出一個值后,便并行加載到SR3中,然后串行移入SR4,并在抽頭處得到和。ROM的輸入地址由組成。按此方法設計的優(yōu)點是避免了占主要運算量的乘法運算,節(jié)省了FPGA的硬件資源,缺點與FIR濾波器利用ROM方法設計相同,即使用不夠靈活。當系數(shù)發(fā)生變化時,更改ROM內(nèi)的數(shù)據(jù)十分不便,特別是當階數(shù)比較大時,ROM內(nèi)的數(shù)據(jù)較多,程序外的運算量也很大,修改數(shù)據(jù)更為不便。 圖1-2 ROM查表法實現(xiàn)框圖3.方案三:基于ROM查表法的改進型設計此方法結合了直接相乘累加式和ROM查表法的優(yōu)點,使得設計靈活,設計周期短,節(jié)省資源。二階IIR的一般表示形式為: (1.2.6)這里是輸入序列,是輸出序列,和是系數(shù)。設輸入序列為位2的補碼,并以定點表示,并1,對于可以表示為: (1.2.7)式中:表示的第位,上標為0的是符號位,因此可以定義一個5bit為變量的函數(shù)為: (1.2.8)同理可得: (1.2.9)由此可以得到: (1.2.10)令,可以推出: (1.2.11)從式(1.2.11)中可以看出,可以用一個五路8位*1位乘法器在8個時鐘周期內(nèi)實現(xiàn)上述算式。其加法可以直接調(diào)用軟件的庫實現(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器件的轉(zhuǎn)換數(shù)據(jù)輸入寄存器,各寄存器內(nèi)的數(shù)據(jù)與各自的系數(shù)的最高位相乘后,送入累加器相加,并且其和向左移一位,以實現(xiàn)乘2運算。下一個時鐘,寄存器內(nèi)數(shù)據(jù)與其系數(shù)的次高位相乘,再送入累加器與其數(shù)據(jù)相加,再左移一位。接下的6個時鐘進行類似的操作。第8個時鐘后,累加器將其數(shù)據(jù)輸出,即,并對累加器清零,同時將寄存器數(shù)據(jù)送入寄存器,將寄存器數(shù)據(jù)送入寄存器,同理,。接著再進行下一次運算。對上述三種方法相比較而言,方案三實現(xiàn)較為方便簡潔,在節(jié)省了FPGA硬件資源的同時,使得設計靈活,設計周期大為縮短,故本設計在方案三為基礎上作改進后,來實現(xiàn)IIR數(shù)字濾波器的。第2章 EDA技術和可編程邏輯器件2. 1 電子設計自動化EDA技術EDA是Electronic Design Automation的縮寫,意為電子設計自動化,即利用計算機自動完成電子系統(tǒng)的設計?;仡櫧?0年的電子設計技術的發(fā)展歷程,可將EDA技術分為三個階段4:七十年代為CAD(Computer Aide Design)階段。這個階段主要分別研制了一個個單獨的軟件工具,主要有電路模擬、邏輯模擬、版圖編輯、PCB布局布線等,通過計算機的使用,從而可以把設計人員從大量繁瑣、重復的計算和繪圖工作中解脫出來。八十年代為CAE階段。這個階段在集成電路與電子系統(tǒng)方法學,以及設計工具集成方面取得了眾多成果,與CAD相比,除了純粹的圖形繪制功能外,又增加了電路功能設計和結構設計,并且通過電氣連接網(wǎng)絡表將兩者結合在一起,實現(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引腳、時鐘資源的數(shù)目有限,沒有內(nèi)部互連,因此包括復雜可編程邏輯器件CPLD(Complex PLD)和現(xiàn)場可編程門陣列器件FPGA(Field Programmable Gate Array)在內(nèi)的復雜PLD迅速發(fā)展起來,并向著高密度、高速度、低功耗以及結構體系更靈活、適用范圍更廣闊的方向發(fā)展。FPGA具備陣列型PLD的特點,結構又類似掩膜可編程門陣列,因而具有更高的集成度和更強大的邏輯實現(xiàn)功能,使設計變得更加靈活和易實現(xiàn)。相對于 CPLD,它還可以將配置數(shù)據(jù)存儲在片外的EPROM或者計算機上,設計人員可以控制加載過程,在現(xiàn)場修改器件的邏輯功能,即所謂的現(xiàn)場可編程。所以FPGA得到了更普遍的應用。2.2.2使用FPGA器件進行開發(fā)的優(yōu)點使用FPGA器件設計數(shù)字電路,不僅可以簡化設計過程,而且可以降低整個系統(tǒng)的體積和成本,增加系統(tǒng)的可靠性。使用FPGA器件設計數(shù)字系統(tǒng)電路的主要優(yōu)點如下:1.增大功能密集度功能密集度是指在給定的空間能集成的邏輯功能數(shù)量。可編程邏輯芯片內(nèi)的組件門數(shù)高,一片F(xiàn)PGA可代替幾十片乃至上百片中小規(guī)模的數(shù)字集成電路芯片。用FPGA實現(xiàn)數(shù)字系統(tǒng)時用的芯片數(shù)量少,從而減少印刷板面積和數(shù)目,最終導致系統(tǒng)規(guī)模的減小。2.縮短設計周期由于FPGA器件集成度高,使用時印刷線路板電路布局布線簡單。FPGA器件的可編程性和靈活性,決定了用它設計一個系統(tǒng)所需時間比傳統(tǒng)方法大為縮短。3.工作速度快FPGA/CPLD器件的工作速度快,一般可以達到幾百兆赫茲,遠遠大于DSP器件。使用FPGA器件后實現(xiàn)系統(tǒng)所需要的電路級數(shù)少,因而整個系統(tǒng)的工作速度會得到提高。2.2.3 FPGA設計的開發(fā)流程設計開始需利用EDA工具的文本或圖形編輯器將設計者的設計意圖用文本方式(如VHDL程序)或圖形方式(原理圖、狀態(tài)圖等)表達出來。完成設計描述后即可通過編譯器進行排錯編譯,變成特定的文本格式,為下一步的綜合做準備。編譯形成標準VHDL文件后,在綜合前即可以對所描述的內(nèi)容進行功能仿真,又可稱為前仿真。由于此時的仿真只是根據(jù)VHDL的語義進行的,與具體電路沒有關系,仿真過程不涉及具體器件的硬件特性,如延遲特性。設計的第三步是綜合,將軟件設計與硬件的可實現(xiàn)性掛鉤,這是軟件化為硬電路的關鍵步驟。綜合后,可生成VHDL網(wǎng)表文件,利用網(wǎng)表文件進行綜合后仿真。綜合通過后必須利用FPGA布局/布線適配器將綜合后的網(wǎng)表文件針對某一具體的目標器件進行邏輯映射操作,這個過程叫做實現(xiàn)過程。布局布線后應進行時序仿真。時序仿真中應將布局布線后的時延文件反標到設計中,使仿真既包含門時延,又包含線時延的信息。與前面各種仿真相比,這種仿真包含的時延信息最為全面、準確,能較好地反映芯片的實際工作情況。如果以上的所有過程,都沒有發(fā)現(xiàn)問題,即滿足原設計要求,就可以將適配器產(chǎn)生的配置/下載文件通過編程器或下載電纜載入目標芯片中。2.3 硬件描述語言VHDL及數(shù)字系統(tǒng)設計方法2.3.1 硬件描述語言VHDL簡介硬件描述語言(Very High Speed Integrated Circuit Hardware Description Language, VHDL)是一種用于設計硬件電子系統(tǒng)的計算機語言,包括系統(tǒng)行為級、寄存器傳輸級和邏輯門級多個設計層次,支持結構、數(shù)據(jù)流、行為三種描述形式的混合描述,因此VHDL幾乎覆蓋了以往各種硬件描述語言的功能。它主要用于描述數(shù)字系統(tǒng)的結構、行為、功能和接口,非常適用于可編程邏輯芯片的應用設計。與其它的HDL相比,VHDL具有更強大的行為描述能力,從而決定了它成為系統(tǒng)設計領域最佳的硬件描述語言。2.3.2利用VHDL設計數(shù)字系統(tǒng)利用VHDL語言設計數(shù)字系統(tǒng)硬件電路,與傳統(tǒng)的設計方法相比,具有以下優(yōu)點:1.采用自頂向下(TOP-DOWN)的設計方法。自頂向下是指從系統(tǒng)總體要求出發(fā),在頂層進行功能方框圖的劃分和結構設計。由于設計的主要仿真和調(diào)試過程在高層次上完成,這一方面有利于提高了設計的效率。2.降低了硬件電路的設計難度。在使用VHDL語言設計硬件電路時,可以免除編寫邏輯表達式或真值表的過程,使得設計難度大大下降,從而也縮短了設計周期。3.主要設計文件是用VHDL語言編寫的源程序。在傳統(tǒng)的硬件電路設計中,最后形成的主要文件是電路原理圖,而采用VHDL語言設計系統(tǒng)硬件電路時主要的設計文件是VHDL語言編寫的源程序。4.方便ASIC移植。VHDL語言的效率之一,就是如果你的設計是被綜合到一個FPGA或CPLD的話,則可以使你設計的產(chǎn)品以最快的速度上市。當產(chǎn)品的產(chǎn)量達到相當?shù)臄?shù)量時,采用VHDL進行的設計很容易轉(zhuǎn)換成專用集成電路來實現(xiàn)。所以本次設計采用利用VHDL語言的數(shù)字系統(tǒng)設計方法。第3章IIR數(shù)字濾波器的設計與仿真結果分析3.1 各模塊的設計與仿真結果分析本課題在實現(xiàn)方案三的基礎上,結合參考文獻4-6將IIR濾波器的硬件系統(tǒng)分為四個模塊:時序控制、延時、補碼乘加和累加模塊。以下就各個模塊的實現(xiàn)及仿真作簡要的分析。3.1.1 時序控制模塊的設計與仿真結果分析時序控制模塊主要用來產(chǎn)生對其它模塊的時序控制信號。模塊的符號如圖3-1(a)所示,輸入信號CLK是時鐘信號,RES是復位信號,CLK_REG及CLK_REGBT是輸出信號。圖3-1(a) 時序控制模塊圖圖3-1(b) 時序控制模塊仿真圖時序控制模塊仿真如圖3-2(b)所示,其中counter為程序內(nèi)部計數(shù)信號,在clk的上升延到來時,counter以6個時鐘為周期開始進行計數(shù),clk_regbt每隔6個時鐘輸出一個低電平,clk_reg則每隔6個時鐘后輸出一個高電平。輸出的兩個時鐘信號正好控制延時模塊、補碼乘加模塊和累加模塊的模塊的運行。符合設計要求。時序控制模塊程序見附錄1。3.1.2 延時模塊的設計與仿真結果分析延時模塊的符號如圖3-2(a)所示,其主要作用是在clk時鐘作用下將差分方程的各、值延遲一個時鐘,以實現(xiàn)一次延時運算,即當輸入為xn和yn時,經(jīng)過一次延時后其輸出分別為x(n-1)和y(n-1).其中yout是反饋輸入信號,xn是輸入信號。程序見附錄二。圖3-2(a) 延時模塊圖圖3-2(b) 延時模塊仿真圖延時模塊仿真圖如圖3-2(b)所示,由圖3-4可以看出當輸入的xn、yout都為時,在時鐘信號上升沿的作用下產(chǎn)生延時,經(jīng)第一個時鐘后x0、x1、x2、y0、y1的值分別為1,0,0,1,0。經(jīng)第二個時鐘后x0、x1、x2、y0、y1的值分別為2,1,0,2,1。經(jīng)第三個時鐘后x0、x1、x2、y0、y1的值分別為3,2,1,3,2。經(jīng)第四個時鐘后由此可見該模塊仿真值正確。延時模塊程序見附錄1。3.1.3 補碼乘加模塊的設計與仿真結果分析補碼乘加模塊主要用來實現(xiàn)輸入序列、與系數(shù)、分別相乘后再相加的過程。即實現(xiàn)的算法。為了避免過多地使用乘法器,本設計中乘加單元(MAC)的乘法器采用陣列乘法器,以提高運算速度。由于Maxplus的LPM庫中乘法運算為無符號數(shù)的陣列乘法,所以使用時需要先將兩個補碼乘數(shù)轉(zhuǎn)換為無符號數(shù)相乘后,再將乘積轉(zhuǎn)換為補碼乘積輸出5。每個二階節(jié)完成一次運算共需要6個時鐘周期,而且需采用各自獨立的MAC實現(xiàn)兩級流水線結構,即每個數(shù)據(jù)經(jīng)過兩個二階節(jié)輸出只需要6個時鐘周期。模塊的符號如圖3-3(a)所示。圖3-3(a) 補碼乘加模塊圖圖3-3(b) 補碼乘加模塊仿真圖補碼乘加模塊仿真圖如圖3-5所示,clk_regbt及clk_reg為輸入時鐘,由時序控制模塊提供。、為系數(shù),x0、x1、x2、y0、y1為輸入信號,yout為輸出信號,圖3-3(b)中75為x0、x1、x2、y0、y1的值15和系數(shù)、相乘后再相加的結果,完成了補碼乘加的功能。補碼乘加模塊程序見附錄1。3.1.4 累加模塊的設計與仿真結果分析補碼乘加模塊所輸出的信號送入累加器后,與寄存于累加器中的上一步計算的中間結果相加,最后將此步的計算結果經(jīng)由輸出引腳輸出,所得信號即為最終結果。 即該模塊主要實現(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 頂層模塊設計頂層模塊設計采用了原理圖輸入方法,原理圖輸入方式非常直觀,便于信號觀察和電路的調(diào)節(jié)。圖3-5 頂層模塊圖本課題設計的頂層文件名為iir.gdf,設計生成的邏輯符號如圖3-5所示。頂層模塊設計程序見附錄1。3.2 IIR數(shù)字濾波器的仿真與結果分析3.2.1 IIR數(shù)字濾波器的系統(tǒng)設計IIR數(shù)字濾波器頂層原理圖如圖3-6所示。為了便于理解整個系統(tǒng)的設計,現(xiàn)將系統(tǒng)的運行過程進行說明:圖3-6 IIR數(shù)字濾波器頂層原理圖系統(tǒng)先開始處于初始狀態(tài),當清零信號為“1”時,對整個系統(tǒng)進行清零。在清零信號為“0”的前提,時序控制模塊在時鐘clk上升沿的作用下產(chǎn)生兩個信號CLK_REG及CLK_REGBT,其中CLK_REG信號用來作為延時模塊、補碼乘加模塊和累加模塊的輸入時鐘,CLK_REGBT每隔6個時鐘產(chǎn)生一個高電平作為這三個模塊的復位信號。延時模塊在接收到CLK_REG高電平信號時清零輸出端,接收到低電平時,在CLK_REGBT上升沿的作用下對輸入信號進行延時,以實現(xiàn)一次延時運算,而后將延時信號輸出,送給補碼乘加模塊。補碼乘加模塊在接收延時信號的同時也接收讀者輸入的系數(shù)信號,在CLK_REGBT上升沿的作用下實現(xiàn)系數(shù)和延時信號的補碼乘加運算,而此步驟需要6個時鐘來完成,正好與時序控制模塊的輸出信號CLK_REGBT相一致。補碼乘加模塊的輸出一部分送入延時模塊以實現(xiàn)信號的反饋,另一部分則送入到累加模塊,在累加模塊中進行結果累加后輸出,得到最終結果。3.2.2 IIR數(shù)字濾波器的系統(tǒng)仿真與結果分析在各模塊編譯通過后將各模塊進行了綜合,針對不同的輸入信號和不同的輸入系數(shù)對IIR數(shù)字濾波器進行了仿真,仿真波形如圖3-7所示。并將仿真值和計算值進行了比較,如表3.2.1中所示。(a)(b)(c)圖3-7 IIR數(shù)字濾波器仿真圖表3.2.1 濾波后輸出的數(shù)據(jù)輸入數(shù)據(jù)Xn=0,1,2,3,4,5;a0=a1=a2=b0=b1=1計算值01411244780仿真值01411254369輸入數(shù)據(jù)Xn=0,1,0,1,0,1;a0=a1=a2=b0=b1=1計算值012581524仿真值012591523輸入數(shù)據(jù)Xn=0,1,0,1,0,1;a0=2,a1=a2=b0=b1=1計算值0238142234仿真值0249172741由表3.2.1可見,仿真值結果正確,只是與真值之間存在一定的誤差,仿真值越大時誤差越大,這是由于有限精度算法所引起的誤差,經(jīng)累加器累加后使得誤差變得越來越大,要解決這一問題可以通過增加二進制位數(shù)來提高系統(tǒng)的運算精度5。3.2.3 高階IIR數(shù)字濾波器的實現(xiàn)要實現(xiàn)一個高階IIR數(shù)字濾波器,如果采用直接型結構實現(xiàn),需用的乘法器和延遲單元相對較多,而且分子和分母的系數(shù)相差較大,需要較多的二進制位數(shù)才能實現(xiàn)相應的精度要求。如果采用二階節(jié)級聯(lián)實現(xiàn),一方面各基本節(jié)的零點、極點可以很方便地單獨進行調(diào)整,另一方面可以降低對二進制數(shù)位數(shù)的要求。以實現(xiàn)一個四階IIR數(shù)字濾波器為例,可以通過兩個二階IIR數(shù)字濾波器級聯(lián)的方式來實現(xiàn)較為簡潔。圖3-8給出了一個四階IIR數(shù)字濾波器實現(xiàn)的原理圖5,具體的工作原理與二階IIR數(shù)字濾波器類似,在此本節(jié)即不再細述。圖3-8 四階IIR數(shù)字濾波器的頂層原理當然,更高階的IIR數(shù)字濾波器的實現(xiàn)方法與四階濾波器的實現(xiàn)方法類似,只需將多個二階IIR數(shù)字濾波器進行級聯(lián),即可實現(xiàn)。結 束 語為期三個月的畢業(yè)設計即將結束,在這期間我經(jīng)歷了從查資料、分析課題到學習軟件、設計程序、調(diào)試、總結經(jīng)驗教訓及書寫畢業(yè)論文的過程。本課題采用一種基于FPGA的IIR數(shù)字濾波器的設計方案,首先分析了IIR數(shù)字濾波器的原理及設計方法,然后通過MAX+PLUS的設計平臺,采用模塊化、層次化的設計思想將整個IIR數(shù)字濾波器分為四個功能模塊:時序控制模塊、延時模塊、補碼乘加模塊、累加模塊。分別對各模塊采用語言VHDL進行描述后,進行了仿真和綜合。仿真結果表明,本課題所設計的IIR數(shù)字濾波器運算速度較快。但由于有限精度算法問題致使仿真結果存在一定的誤差,針對這一問題可以通過增加二進制位數(shù)來提高系統(tǒng)的運算精度。由于畢業(yè)設計即將結束,沒有時間繼續(xù)完善本課題所實現(xiàn)的IIR數(shù)字濾波器的性能,在這一方面,濾波器的性能有待提高。參考文獻1 劉凌,胡永生譯數(shù)字信號處理的FPGA實現(xiàn)M北京:清華大學出版社20032 丁玉美,高西全數(shù)字信號處理M西安:西安電子科技大學出版社20043 潘松,黃繼業(yè)EDA技術實用教程M北京:科學出版社20004 潘松,王國棟VHDL實用教程M成都:電子科技大學出版社20015 倪向東基于FPGA的四階IIR數(shù)字濾波器J電子技術應用,20036 王衛(wèi)兵高階IIR數(shù)字濾波器的FPGA描述J電子元器件,2005,16期:pp3-47 黃任VHDL入門解惑經(jīng)典實例經(jīng)驗總結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數(shù)字濾波器的理論知識到濾波器的實現(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; -將輸入轉(zhuǎn)換為補碼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壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高效文檔歸檔系統(tǒng)行業(yè)跨境出海戰(zhàn)略研究報告
- 生態(tài)濕地旅游企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 文化旅游綜合體建筑設計企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 不同區(qū)域尺度下的地物信息提取方法及應用研究
- 竹材刨花板企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 港交所企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 專用面粉批發(fā)企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 高速公路養(yǎng)護服務企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 精密箱體系統(tǒng)相關項目投資計劃書范本
- 腸道菌群通過丁酸介導的組蛋白丁酰化修飾致肥胖相關高血壓的機制研究
- 統(tǒng)計法律知識培訓課件
- 活動三《垃圾“流浪”記》(教學設計)-2023-2024學年三年級下冊綜合實踐活動滬科黔科版
- 2025年2月廣東省深圳市羅湖區(qū)聯(lián)考初三年級質(zhì)量檢測英語試卷(含答案)
- 政治-廣西壯族自治區(qū)考閱評·2025屆(年)2月高三畢業(yè)班聯(lián)合調(diào)研測試試題和答案
- 2025年合伙協(xié)議模板
- 2025年南京鐵道職業(yè)技術學院單招職業(yè)適應性測試題庫及答案一套
- 對外漢語綜合課教案集成
- 北京市朝陽區(qū)2024-2025學年高一上學期期末質(zhì)量檢測數(shù)學試題【含答案解析】
- 2025年南京科技職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 信息系統(tǒng)監(jiān)理師教程筆記版
- 龍門吊拆除合同
評論
0/150
提交評論