基于FPGA的FIR數(shù)字濾波器的設(shè)計及仿真畢業(yè)設(shè)計論文.doc_第1頁
基于FPGA的FIR數(shù)字濾波器的設(shè)計及仿真畢業(yè)設(shè)計論文.doc_第2頁
基于FPGA的FIR數(shù)字濾波器的設(shè)計及仿真畢業(yè)設(shè)計論文.doc_第3頁
基于FPGA的FIR數(shù)字濾波器的設(shè)計及仿真畢業(yè)設(shè)計論文.doc_第4頁
基于FPGA的FIR數(shù)字濾波器的設(shè)計及仿真畢業(yè)設(shè)計論文.doc_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于fpga的fir數(shù)字濾波器的設(shè)計及仿真1 緒論本章主要論述該課題的研究意義,目前在世界上的發(fā)展情況,以及我在這篇論文中所用到的主要的設(shè)計方法與設(shè)計工作。1.1 課題研究的意義 許多工程領(lǐng)域都涉及到如何能在強(qiáng)背景的噪聲信號和干擾信號中提取到真正的信號。如:遙感和遙測系統(tǒng),通信系統(tǒng),雷達(dá)系統(tǒng),航天系統(tǒng)等,這就要求有信號的濾波。濾波器的帶寬等性能,處理速度的要求隨著現(xiàn)在對高速,寬帶,實時信號處理的要求越來越高,也隨之提高。系統(tǒng)的穩(wěn)定性和后續(xù)信號的處理受濾波器的性能好壞程度影響常大。11.2 國內(nèi)外研究動態(tài)1.2.1 數(shù)字信號處理的發(fā)展動態(tài)一般可以用兩類方法來實現(xiàn)fir濾波器的設(shè)計。 一類通過軟件來設(shè)計實現(xiàn),使用常見的電腦語言如高層次的c / c + +跟 matlab語言。此方法用于教學(xué)或算法仿真。但是采用軟件的方法不能實現(xiàn)實時性。目前可以通過以下幾種方式在硬件中來實現(xiàn),。一種是使用可編程的主要數(shù)學(xué)單位是一個乘法累加器(mac)的通用dsp芯片編程。實時數(shù)字信號能夠?qū)崿F(xiàn)高速的處理,是因為 mac在一臺機(jī)器時鐘周期就能完成乘法累加操作,同時在硬件上還輔助與不同的流水結(jié)構(gòu)和哈佛架構(gòu)。然而,在應(yīng)用時受到了限制,是由于硬件結(jié)構(gòu)和流水結(jié)構(gòu)是固定不變的。 一種是使用專用的asic數(shù)字信號處理芯片。這種方法是芯片尺寸小,高性能,保密性好。其缺點是一個單一功能的芯片,多是針對一定的功能而設(shè)計,靈活性不夠。 另一種方法是使用可編程邏輯器件(fpga / cpld)。 fpga所具有得可編程邏輯的靈活性突破了流水線結(jié)構(gòu)和并行處理的局限性,可以很好的實現(xiàn)實時信號處理功能。研發(fā)過程中它的可移植性更好,可以縮短開發(fā)周期。211 1.2.2 fir數(shù)字濾波器的fpga實現(xiàn) 使用fpga技術(shù)設(shè)計的fir數(shù)字濾波器在目前通常采用的是乘法器結(jié)構(gòu)和分布式算法結(jié)構(gòu)。 乘法器結(jié)構(gòu),有乘累加結(jié)構(gòu)與并行乘法器結(jié)構(gòu)兩種形式。乘累加結(jié)構(gòu)是最簡單的一種,占用資源少,缺點是處理速度慢;并行乘法器結(jié)構(gòu)比較復(fù)雜,但是如果能夠加上流水結(jié)構(gòu),信號就能夠?qū)崿F(xiàn)高速的處理,但是它還是會受到處理速度和數(shù)量的限制。分布式算法(da)的,是將固定系數(shù)乘法 - 累加運(yùn)算轉(zhuǎn)換成了查找表的運(yùn)算從而巧妙地利用了rom查找表,避免了乘法的運(yùn)算。巧妙運(yùn)用查找表可以在很大程度上提高運(yùn)算速度和插入流水結(jié)構(gòu)。因為它只是一個簡單的加法運(yùn)算。 分布式算法(da),可以分為串行分布式算法,并行分布式算法,串行與并行結(jié)合的分布式算法。串行分布式算法,它占用的資源很少,結(jié)構(gòu)也相對簡單,但就是還不能擁有很高的處理速度;并行的分布式并行算法擁有更加整齊的結(jié)構(gòu),主要用于需要高速處理的情況;串行與并行結(jié)合的分布式算法,占用資源大,也多用于對速度要求高的場合。在不同的情況下,各種算法的處理效果是不同的,要根據(jù)對處理速度的不同要求選擇不同的算法。 無論是采用哪種算法,都會用到rom做為查找表的器件。fir濾波器的階數(shù)增加,就會使得rom的數(shù)目不斷的增加,所占用的資源也不斷的增加,到目前為止沒有一個有效的方式,可以將rom的數(shù)量跟rom的規(guī)模減少。2111.3 本課題研究方法和主要工作首先介紹了數(shù)字濾波器的基本概念,然后介紹了fir濾波器的相關(guān)理論。最后從實際應(yīng)用設(shè)計出發(fā)提出一個fir濾波器設(shè)計流程,包括濾波器結(jié)構(gòu)的選擇、濾波器的系數(shù)計算、系數(shù)的量化等,按照此流程即能設(shè)計出滿足實際性能需求的數(shù)字濾波器。根據(jù)fir濾波器的功能模塊的劃分,描述了各個功能模塊的具體設(shè)計,給出其仿真波形,并通過quartus進(jìn)行了仿真驗證。(1) 采用8輸入查找表進(jìn)行分布式算法,設(shè)計了一個輸入8位,輸出8位的256階線性相位fir濾波器,簡化了傳統(tǒng)的mac設(shè)計。(2) 各模塊參數(shù)獨立于濾波器的結(jié)構(gòu),有較強(qiáng)的通用性,適于模塊化設(shè)計。(3) 利用vhdl設(shè)計,可重復(fù)配置fpga,系統(tǒng)易于維護(hù)和擴(kuò)展。2 fpga技術(shù)以及xilinx virtex iifpga芯片2.1 fpga發(fā)展基本概況現(xiàn)場可編程門陣列fpga是一種廣泛使用的高密度可編程邏輯器件。20世紀(jì)80年代賽靈思公司推出了第一個fpga,除了賽靈思外,actel,altera公司,quicklogic公司和其他公司也生產(chǎn)fpga產(chǎn)品。fpga布線由單位的可編程邏輯陣列構(gòu)成,用可編程i / o單元陣列包圍,分隔的資源構(gòu)成了整個芯片。邏輯單元陣列布線通道連結(jié)在一起,以達(dá)到一定的邏輯功能。一個fpga由豐富的快速邏輯門結(jié)構(gòu),寄存器和i / o組成。按照編程功能,有反熔絲的一次性可編程的靜態(tài)存儲器(sram)結(jié)構(gòu)。賽靈思的fpga基于靜態(tài)存儲單元,sram的查找表類型,在互連關(guān)系的模式下,也可以再次在設(shè)備中加載和修改。電源掉電后,存儲的程序可能會丟失,因此每次你都要把程序配置到芯片中去。 actel的act系列和quicklogic為一次性可編程熔絲類型的pasic系列fpga。自1985年以來,賽靈思公司推出了第一片現(xiàn)場可編程邏輯器件后的有近20多年的發(fā)展過程中,fpga的集成技術(shù)已經(jīng)取得了令人矚目的發(fā)展:現(xiàn)場可編程邏輯器件從最初的可用的1200個門發(fā)展到25萬個,再在20世紀(jì)90年代發(fā)展到幾十萬,甚至數(shù)百萬的單fpga芯片,現(xiàn)場可編程器件集成達(dá)到了一個新的水平。 2001年,賽靈思virtex ii,其容量可高達(dá)800萬個系統(tǒng)邏輯。賽靈思virtex ii系列fpga的virtex,spartan的virtex-e,在spartan-2后的lut(查找表)的高端平臺fpga系列芯片,該芯片的選擇ram塊的內(nèi)部整合,采用18位x 18位乘法器和其他硬件資源。時鐘dll控制dcm的技術(shù),頻率高達(dá)420mhz。支持的lvds,pci,ttl,agp,cmos和其它io接口標(biāo)準(zhǔn)。后續(xù)又推出了以ibm powerpc為基礎(chǔ)的virtex ii結(jié)構(gòu),低端的900納米工藝的spartan-3,和即將推出的virtex-4系列的具有嵌入式dsp功能的virtex ii pro。12.2 virtex ii系列fpga結(jié)構(gòu)及特點2.2.1 virtex-ii系列fpga概述 virtex ii fpga是第一個基于fpga,具有 ip浸入式結(jié)構(gòu)的平臺。它具有400008000000個系統(tǒng)邏輯門而且它的i / o帶寬高達(dá)840mb / s,它的內(nèi)部時鐘高達(dá)420mhz。設(shè)計人員可以更加容易地集成軟件和硬件ip核;virtex-ii器件包含多達(dá)12個時鐘管理器(數(shù)字時鐘管理器dcm),可以在允許范圍內(nèi)的任何頻率的時鐘信號產(chǎn)生,并提高時鐘邊沿配置(時鐘邊沿位置)的準(zhǔn)確性,因此,下降到百分之一的錯誤。此外,高性能時鐘管理電路,每個virtex-ii器件有16個預(yù)先設(shè)計的低偏移時鐘網(wǎng)絡(luò)(低偏移時鐘網(wǎng)絡(luò)),省去了復(fù)雜的高性能設(shè)計的時鐘樹分析的需要。此外,賽靈思可控阻抗技術(shù)(xcite)使用兩個外部參考電阻保持?jǐn)?shù)百個i / o引腳的輸入和輸出阻抗匹配,不僅可以減少電路板上的電阻數(shù)量,大大降低了系統(tǒng)成本,還能減少的概率電路板重新繞組(重不同自旋),簡化電路板布局,提高了系統(tǒng)的穩(wěn)定性。virtex-ii還支持片上和片外時鐘同步,并維持精確的50/50占空比。dci技術(shù)的應(yīng)用,可避免不同的驅(qū)動力,溫度,電壓波動造成的差異,仍然保持一個穩(wěn)定的阻抗。有加密功能,以充分保護(hù)的安全設(shè)計。應(yīng)用安全三重數(shù)據(jù)加密標(biāo)準(zhǔn)(des)算法編碼加密密鑰加密算法,此功能,可以提高安全性的設(shè)計,以避免設(shè)計被竊取。靈活的邏輯資源。高性能的外部存儲器接口,支持cam,qdr ram,fcram,sdr / ddr等存儲方式。有168個專用的18位x 18位乘法器和快速進(jìn)位邏輯鏈。支持多輸入功能,有一個內(nèi)部三態(tài)總線,擁有的selectio技術(shù),支持多種io標(biāo)準(zhǔn),支持多種編程模型。支持并口,串口。具有靈活的開發(fā)環(huán)境。211 2.2.2的virtex-iifpga結(jié)構(gòu)各種可編程的單位,主要用于高密度和高性能的邏輯設(shè)計,virtex-ii系列fpga可編程邏輯塊(可配置邏輯塊clb)的組成,如圖3-1所示,由selectram塊,乘法器,全局時鐘緩沖器和一個可編程的iob組成。圖2-1 virtex ii系列fpga結(jié)構(gòu)圖2.2.2.1 virtex-ii fpga的可編程邏輯模塊clb每一個可編程邏輯塊由四片三態(tài)緩沖器組成。每片包含多個算術(shù)邏輯門,2個存儲單元,兩個函數(shù)發(fā)生器(fg公司),超快速前進(jìn)位鏈。函數(shù)發(fā)生器(fg公司)為一個十六位分布式selectram存儲器編程,或四輸入查找表或十六位的移位寄存器。兩個存儲單元可以編程為電平觸發(fā)鎖存或邊沿觸發(fā)的d觸發(fā)器?;窘Y(jié)構(gòu)如圖2-2所示。圖2-2 clb內(nèi)部結(jié)構(gòu)圖2.2.2.2 virtex ii fpga的時鐘資源virtex ii fpga具有十六個時鐘輸入引腳,底部有八個,另外八個在位于中間的邏輯陣列芯片上的頂部。適當(dāng)?shù)呐鋫渑c之相對應(yīng)的十六個全局時鐘復(fù)用器緩沖區(qū)。分配給每個全局時鐘緩沖器時鐘引腳時鐘信號,可由全局時鐘緩沖器來支持差分對驅(qū)動程序,直接驅(qū)動到每個設(shè)備。與此同時,也可由dcm的驅(qū)動器分配到每個設(shè)備的時鐘信號。具體如下圖所示:圖2-3 時鐘分配結(jié)構(gòu)圖數(shù)字時鐘管理器有一個強(qiáng)大的功能叫時鐘管理功能,具有頻率合成器,相移等特性。無偏的相位輸出時鐘和輸入時鐘信號,可以消除時鐘分配延遲。頻率合成器,可以得到高精度相移輸出的相移。2112.3 本章小結(jié)本章詳細(xì)的說明了virtex ii系列fpga的結(jié)構(gòu)和特點,并簡要介紹了fpga技術(shù)的發(fā)展。通過對本章知識的掌握,對基于fpga技術(shù)的下一個過濾器設(shè)計奠定了堅實的基礎(chǔ)。3 fir數(shù)字濾波器設(shè)計3.1 fir數(shù)字濾波器概述信號中一般都包含噪聲或者說其中有很多能量在感興趣的最高頻率之外,因此我們要用濾波電路將感興趣的帶寬之外的信號和噪聲移去。數(shù)字濾波器是數(shù)字信號處理中使用最廣泛的一種線性系統(tǒng)環(huán)節(jié),圖3.1給出了一個具有模擬輸入信號和輸出信號的實時數(shù)字濾波器的簡化框圖。這個模擬信號被周期地抽樣,且轉(zhuǎn)化成一系列數(shù)字x(n)(n=0,1,)。數(shù)字濾波器依據(jù)濾波器的計算算法,執(zhí)行濾波運(yùn)算、把輸入系列x(n)映射到輸出系列y(n)。dac把數(shù)字濾波后的輸出轉(zhuǎn)化成模擬值,這些模擬值接著被模擬濾波器平滑,并且消去不需要的高頻分量。圖3.1實時數(shù)字濾波器的簡化框圖在信號處理中,為了防止采樣過程中的混疊現(xiàn)象,必須在a/d轉(zhuǎn)換之前使用低通濾波器,把1/2采樣頻率以上的信號衰減掉。如圖3.2 所示,在a/d轉(zhuǎn)換前,加入一個低通濾波器,這樣,經(jīng)過戶a/d轉(zhuǎn)換之后,有效地避免了混疊現(xiàn)象的發(fā)生,從而保證了后續(xù)數(shù)字處理的正常進(jìn)行。圖3.2 抗混疊濾波器的作用3.2 fir數(shù)字濾波器理論fir濾波器的數(shù)學(xué)表達(dá)式可用k階卷積來表示: ( 31)其中:k:fir濾波器的抽頭數(shù);:第k級抽頭系數(shù)(單位脈沖響應(yīng));:延時k個抽頭的輸入信號。卷積是dsp使用最頻繁的一種運(yùn)算,描述系統(tǒng)的輸入如何與系統(tǒng)相互作用產(chǎn)生輸出,通常來說,系統(tǒng)的輸出將是輸入的延遲、衰減或者放大。上圖描述的兩個序列卷積的例子。其中,x(n)是輸入序列,h(n)是單位脈沖響應(yīng),y(n)是系統(tǒng)對輸入序列x(n)的響應(yīng),卷積的數(shù)值即y(n)只可以由式只算得到。3.3 fir數(shù)字濾波器的具體設(shè)計內(nèi)容濾波器的實現(xiàn)主要包括兩方面的內(nèi)容,首先選擇一個合理的結(jié)構(gòu),然后利用有限精度的數(shù)值來實現(xiàn)它。之所以要利用有限精度數(shù)值實現(xiàn)濾波器,是因為實際的濾波器系數(shù)只能用有限的二進(jìn)制位數(shù)來表示,就涉及到系數(shù)的字長問題。3.3.1濾波器的結(jié)構(gòu)fir濾波器的單位脈沖響應(yīng)h(k)均為實數(shù),在幅度上只要滿足下列兩個條件之一,就能構(gòu)成線性相位fir濾波器。式( 32)稱為第一類線性相位的幅度條件(偶對稱),式( 33)稱為第二類線性相位的幅度條件(奇對稱)。 ( 32) ( 33)fir濾波器最基本的結(jié)構(gòu)是直接型,如圖3.3所示??梢钥闯?,fir濾波器是由一個“抽頭延遲線”的加法器和乘法器的集合構(gòu)成,每個乘法器的操作數(shù)就是一個fir系數(shù)。對于每次采樣,只y(n)都要進(jìn)行k次連續(xù)的乘法和(k-1)次加法操作。圖3.3直接型fir濾波器結(jié)構(gòu)圖由于fir濾波器具有線性相位的對稱屬性,因此可以只采用一半的系數(shù)降低所需要乘法器的數(shù)量,如圖3.4所示(圖(a)為偶對稱,圖(b)為偶對稱)??梢钥闯觥皩ΨQ”結(jié)構(gòu)的乘法器是直接結(jié)構(gòu)(圖3.3)的一半(k/2),得到了優(yōu)化,但加法器的數(shù)量保持不變,還是(k-1)個。圖3.4(a)簡化乘法器數(shù)量的線性相位偶對稱fir濾波器結(jié)構(gòu)圖圖3.4(b)簡化乘法器數(shù)量的線性相位奇對稱fir濾波器結(jié)構(gòu)圖此外,fir濾波器的結(jié)構(gòu)還有級聯(lián)型和格型,這兩種結(jié)構(gòu)可以獲得較高的靈敏度,但較少采用,主要原因是:第一,對大多數(shù)線性相位fir濾波器來說,由于零點在z平面內(nèi)或多或少是均勻鋪開的,從而使濾波器對系數(shù)量化誤差的靈敏度很低;第二,無論系數(shù)量化誤差多大,采用直接型結(jié)構(gòu)都能獲得準(zhǔn)確的線性相位。因此,本設(shè)計選用直接型結(jié)構(gòu),這種結(jié)構(gòu)實現(xiàn)簡單,要求的器件少,數(shù)據(jù)存儲不復(fù)雜,且充分利用fir濾波器的脈沖響應(yīng)系數(shù)對稱性的優(yōu)點來降低濾波器實現(xiàn)的計算復(fù)雜性。3.3.2 濾波器系數(shù)的計算目前,fir濾波器的主要設(shè)計方法是建立在對理想濾波器頻率特性做某種近似的基礎(chǔ)上的,這些近似方法有窗函數(shù)法、頻率抽樣法和最佳一致法。其中,窗函數(shù)法是一種基本的設(shè)計方法,其設(shè)計方法較為成熟,本設(shè)計即采用窗函數(shù)法,下面先簡要介紹其設(shè)計思想。窗函數(shù)設(shè)計的基本原理是:從所要求的理想濾波器的頻率響應(yīng)hd(ejw)出發(fā),經(jīng)過反傅立葉變換導(dǎo)出hd(n) ( 34)由于hd(n)的無限長,所以要對其進(jìn)行加窗處理,以得到滿足要求的單位脈沖響應(yīng)h(n) ( 35)已經(jīng)認(rèn)可并發(fā)表的窗函數(shù)的數(shù)量非常多,最常用的窗函數(shù)(用w(n)表示)基本參數(shù)如表3.1所示10。表 3.1四種窗函數(shù)基本參數(shù)名稱窗函數(shù)過渡帶寬最小阻帶衰減(db)矩形窗14/n-21三角窗2n/n8/n-25漢寧窗8/n-44海明窗8/n-53從表 3.1可以看出,一旦窗函數(shù)選定,過渡帶寬和最小阻帶衰減也隨著確定,不可改變,究竟選擇哪一種窗函數(shù)來實現(xiàn)本設(shè)計呢?本人參考了以下選擇原則:(1)具有較低的旁瓣幅度,尤其是第一旁瓣幅度;(2)旁瓣幅度下降速度要大,以利增加阻帶衰減;通常以上兩點很難同時滿足。當(dāng)選擇主瓣寬度較窄時,雖然得到較陡的過渡帶,但通帶和阻帶的波動明顯增加;當(dāng)選用最小的旁瓣幅度時,雖能得到均勻光滑的幅度響應(yīng)和較小阻帶波動,但過渡帶加寬。因此,實際選用的窗函數(shù)往往是它們的折中。在保證主瓣寬度達(dá)到一定要求的條件下,適當(dāng)犧牲主瓣寬度來換取旁瓣波動的減少。本設(shè)計采用的設(shè)計方案是:設(shè)計一個輸入8位,輸出8位的256階線性相位fir濾波器,fs為44khz,fc為10.4khz,采用直接型、奇對稱結(jié)構(gòu)方式,選擇海明窗完成,其輸入信號范圍為:99,0,0,0, 70,0,0,0, 99,0,0,0, 70,利用matlab設(shè)計計算濾波器系數(shù)如下:fir濾波器參數(shù)設(shè)置,因為是256階,所以specify order處填255,h(0)=0,如圖3.5所示。圖3.5 fir濾波器參數(shù)設(shè)置fir濾波器系數(shù)如下圖3.6所示。圖3.6fir濾波器系數(shù)經(jīng)過計算,得到附錄圖b(a)為脈沖響應(yīng)波形圖,圖附錄圖b(b)為其幅頻特性曲線,圖附錄圖b(c)為相頻特性曲線。從幅頻特性曲線中可以看出該濾波器的性能參數(shù)達(dá)到了要求;從相頻特性曲線來看,曲線通過原點處為一條直線,說明具有線性相位特性。3.3.3濾波器系數(shù)量化本系統(tǒng)將采用fpga實現(xiàn),但fpga只適合處理二進(jìn)制的整數(shù),因此就存在一個將小數(shù)轉(zhuǎn)換為有限位二進(jìn)制整數(shù)的問題,即有限字長問題,用有限字長來表示輸入和輸出信號、濾波器系數(shù)以及算術(shù)運(yùn)算的結(jié)果。在這種情況下,需要分析量化對濾波器性能的影響。本系統(tǒng)為硬件實現(xiàn),僅分析量化后單位脈沖響應(yīng)系數(shù)的有限字長對性能的影響。用直接形式設(shè)計的低通fir濾波器,采用四舍五入量化系數(shù)使之整數(shù)化如圖3.7。圖3.7 濾波器系數(shù)量化量化后可得fir濾波器的參數(shù)為:-12 -18 13 29 -13 -52 14 162 242 162 14 -52 -13 29 13 -18 -123.3.4 設(shè)計步驟根據(jù)以上分析,濾波器的理論設(shè)計部分可以概括為以下5個步驟,用圖2.5加以總結(jié)說明:(1)規(guī)范設(shè)計要求這一步驟包括濾波器類型(如低通濾波器)的確定,期望的幅度和相位響應(yīng)和可接受的容差,以及確定抽樣頻率和輸入數(shù)據(jù)的字長。(2)濾波器系數(shù)的計算采用matlba等輔助工具,確定滿足第一步所要求技術(shù)規(guī)范的傳遞函數(shù)h(z)的系數(shù)。(3)實現(xiàn)結(jié)構(gòu)的選擇用一個適當(dāng)?shù)慕Y(jié)構(gòu)(直接型、格型和級聯(lián)型)來表示濾波器的實現(xiàn)結(jié)構(gòu)。(4)有限字長效應(yīng)分析分析濾波器系數(shù)和輸入數(shù)據(jù)量化的影響,以及用固定字長執(zhí)行濾波的運(yùn)算對濾波器性能的影響,最后確定滿足性能要求的系數(shù)和輸入數(shù)據(jù)的字長。(5)用軟件/硬件來實現(xiàn)包括選擇硬件和編寫程序并執(zhí)行該濾波,然后進(jìn)行實際系統(tǒng)的測試以驗證其是否達(dá)到設(shè)計要求。圖3.8 數(shù)字濾波器的設(shè)計步驟3.4本章小結(jié)這一章首先介紹了數(shù)字濾波器的基本概念,然后介紹了fir濾波器的相關(guān)理論。最后從實際應(yīng)用設(shè)計出發(fā)提出一個fir濾波器設(shè)計流程,包括濾波器結(jié)構(gòu)的選擇、濾波器的系數(shù)計算、系數(shù)的量化等,按照此流程即能設(shè)計出滿足實際性能需求的數(shù)字濾波器。4 fir數(shù)字濾波器的fpga設(shè)計及仿真 本章采用vhdl語言,利用fpga的查找表結(jié)構(gòu),完成了一個基于分布式算法的256階fir低通數(shù)字濾波器的程序設(shè)計。在設(shè)計中采用模塊化、參數(shù)化設(shè)計方法,簡化了設(shè)計過程,并將設(shè)計結(jié)果進(jìn)行了仿真驗證。4.1 fir數(shù)字濾波器分布式算法的基本原理分布式算法(distributed arithmetic, da)是1973年由crosier提出來的,后來peled和liu進(jìn)行了推廣工作,直到現(xiàn)場可編程門陣列(fpga)的查找表(look up table lut)結(jié)構(gòu)的出現(xiàn),這種方法才受到重視,其主要原理如下。為了分析簡單起見,將fir濾波器的表達(dá)式改寫為: (41)設(shè),其中xkb表示xk中的第b位,xk即x的第k次采樣,則y可以表示為: (42)重新分別求和,其結(jié)果可表示成如下形式: (43)可以看出,分布式算法是一種以實現(xiàn)乘加運(yùn)算為目的的運(yùn)算方法,與傳統(tǒng)的乘累加不同在于執(zhí)行部分積運(yùn)算的先后順序不同,這個過程可用圖4.1的結(jié)構(gòu)來實現(xiàn),可以看出,該算法可以利用一個查找表(lut)實現(xiàn)映射,即2k字寬(即2k行),預(yù)先編好程序的lut接受一個k位輸入量xb=x0bx1bx(k-1)b的映射,經(jīng)查找表的查找后直接輸出部分積,算法中的乘法以位權(quán)2b可以通過圖中的寄存器和累加器完成,在k次循環(huán)后完成計算結(jié)束。這個過程共進(jìn)行了b次查找和b次累加15。 ( 44)圖4.1 da算法結(jié)構(gòu)圖4.2 fpga設(shè)計流程確定了濾波器的實現(xiàn)方案后,就可以借助fpga來設(shè)計了。fpga設(shè)計是指利用eda軟件(altera公司的max+plus、quartus等)和編程工具對器件進(jìn)行開發(fā)的過程。本設(shè)計是在quartus開發(fā)平臺上進(jìn)行的,fpga的設(shè)計流程如圖4.2所示。設(shè)計準(zhǔn)備設(shè) 計 輸 入原理圖/硬件描述設(shè)計處理優(yōu)化器件編程功能仿真時序仿真圖4.2 fpga設(shè)計流程1. 設(shè)計準(zhǔn)備按照設(shè)計需求,進(jìn)行方案確定和器件選擇工作。在第三章已經(jīng)確定了fir濾波器的實現(xiàn)方案,鑒于實現(xiàn)這一方案要用到查找表結(jié)構(gòu),所以選擇了具備查找表結(jié)構(gòu)的flex 10k元器件。2. 設(shè)計輸入設(shè)計者將所設(shè)計的系統(tǒng)或電路以開發(fā)軟件要求的某種形式表現(xiàn)出來,并送入計算機(jī)的過程稱為設(shè)計輸入。設(shè)計輸入通常有原理圖輸入方式、硬件描述語言輸入方式和波形輸入方式三種方式,在本設(shè)計中采用硬件描述語言輸入方式,即vhdl輸入方式。3. 設(shè)計處理這是器件設(shè)計中的核心環(huán)節(jié)。在設(shè)計處理過程中,編譯軟件將對設(shè)計輸入文件進(jìn)行邏輯化簡、綜合和優(yōu)化,并適當(dāng)?shù)赜靡黄蚨嗥骷詣舆M(jìn)行適配,最后產(chǎn)生編程用的編程文件。設(shè)計處理包括語法檢查和設(shè)計規(guī)則檢查、邏輯優(yōu)化和綜合、適配和分割、布局和布線及生成編程數(shù)據(jù)文件等七個步驟。4. 器件編程對fpga來說是將位流數(shù)據(jù)文件“配置”到fpga中去,這樣,配置的芯片就能夠執(zhí)行所設(shè)計的系統(tǒng)的功能。4.3 fir濾波器各功能模塊的具體實現(xiàn)fpga有著規(guī)整的內(nèi)部邏輯陣列和豐富的連線資源,特別適合于數(shù)字信號處理任務(wù),相對于串行運(yùn)算為主導(dǎo)的通用dsp芯片來說,其并行性和可擴(kuò)展性更好,更適合fir濾波器的設(shè)計。4.3.1 fir濾波器的總體結(jié)構(gòu)設(shè)計的fir濾波器可以分為以下三種模塊:寄存器模塊、加法器模塊、乘法器模塊。4.3.2寄存器模塊對模塊進(jìn)行邏輯設(shè)計時,采用了vhdl文本輸入方式。vhdl語言的一個基本設(shè)計單元是由實體說明(entity declaration)和構(gòu)造體說明(architecture body)兩部分構(gòu)成,對端口的定義以及對參數(shù)的說明都包含在實體(entity)部分,設(shè)計時將移位寄存器命名為dff8。寄存器用于寄存一組二值代碼,對寄存器的觸發(fā)器只要求它們具有置1、置0的功能即可,在cp正跳沿前接受輸入信號,正跳沿時觸發(fā)翻轉(zhuǎn),正跳沿后輸入即被封鎖。此模塊程序如下:library ieee;use ieee.std_logic_1164.all;entity dff8 is generic (width_1:integer:=7; width_2:integer:=7;port( clk : in std_logic; clear : in std_logic; din : in std_logic_vector(width_1 downto 0); dout : out std_logic_vector(width_2 downto 0) ); end dff8; architecture a of dff8 is begin process(clk,clear) begin if clear=1 then dout=00000000; elsif clear=0 then if(clkevent and clk=1) then dout = din; end if; end if; end process; end a;程序中的前兩句是庫和包集合說明,語句ieee是程序中要用到的庫。從語句“entity dff8 is”開始到“end dff8”為止是實體說明語句,在實體說明中定義了3個輸入端口和1個輸出端口,這個輸入分別是時鐘信號clk、清零信號clear、輸入信號din、;輸出信號dout。std_logic、std_logic_vector是ieee定制的標(biāo)準(zhǔn)化數(shù)據(jù)類型。在dff8模塊的實體說明中又定義了2個參數(shù),width_1是輸入信號的寬度,width_2是輸出信號的寬度;2個參數(shù)的數(shù)據(jù)類型均為整數(shù)類型,后面的數(shù)據(jù)是對參數(shù)賦予的值,改變這個值就修改了參數(shù)。從語句“architecture a of dff8 is”到“end a”是對構(gòu)造體的描述,它對模塊內(nèi)部的功能進(jìn)行了說明。設(shè)計的dff8模塊的邏輯符號如圖4.3所示。圖4.3 dff8模塊的邏輯符號寄存器的波形仿真如圖4.4所示。圖4.4寄存器的波形仿真在cp正跳沿前接受輸入信號,正跳沿時觸發(fā)翻轉(zhuǎn),正跳沿后輸入即被封鎖,仿真結(jié)果表明dff8模塊的功能完全正確。4.3.3 加法器模塊在將兩個多位二進(jìn)制數(shù)相加時,除了最低位以外,每一位都應(yīng)該考慮來自低位的進(jìn)位,即將兩個對應(yīng)位的加數(shù)和來自低位的進(jìn)位3個數(shù)相加。這種運(yùn)算稱為全加,所用的電路稱為全加器。多位加法器的構(gòu)成有兩種方式:并行進(jìn)位和串行進(jìn)位。并行進(jìn)位加法器設(shè)有進(jìn)位產(chǎn)生邏輯,預(yù)算速度較快;串行進(jìn)位方式是將全加器級聯(lián)構(gòu)成多位加法器。并行進(jìn)位加法器通常比串行級聯(lián)加法器占用更多的資源。隨著為數(shù)的增加,相同位數(shù)的并行加法器與串行加法器的資源占用差距也越來越大,因此,在工程中使用加法器時,要在速度和容量之間尋找平衡點。本次設(shè)計采用的是并行加法器方式。實現(xiàn)兩個二進(jìn)制數(shù)字的相加運(yùn)算。當(dāng)?shù)竭_(dá)時鐘上升沿時,將兩數(shù)輸入,運(yùn)算,輸出結(jié)果。此模塊程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity add121616 isgeneric ( add_1:integer:=11; add_2:integer:=15; add_3:integer:=15;port(clk : in std_logic; din1 :in signed (add_1 downto 0); din2 :in signed (add_2 downto 0); dout:out signed (add_3 downto 0);end add121616;architecture a of add121616 issignal s1: signed(add_3 downto 0);begin s1=(din1(add_1)&din1(add_1)&din1(add_1)&din1(add_1)&din1);process(din1,din2,clk)beginif clkevent and clk =1 thendout=s1+din2;end if;end process;end a;程序中的前三句是庫和包集合說明,語句ieee是程序中要用到的庫。從語句“entity add121616 is”開始到“end add121616”為止是實體說明語句,在add121616模塊功能的實體說明程序段中定義了4個端口, 4個端口中包含1個時鐘信號,2個信號輸入端口,1個信號輸出端口。add_1是輸入信號din1的寬度,shift_2是輸入信號din2的寬度,add_3是輸出信號dout的寬度;3個參數(shù)的數(shù)據(jù)類型均為整數(shù)類型,后面的數(shù)據(jù)是對參數(shù)賦予的值,改變這個值就修改了參數(shù)。從語句“architecture a of add121616 is”到“end a”是對構(gòu)造體的描述,它對模塊內(nèi)部的功能進(jìn)行了說明。設(shè)計的add121616的邏輯符號如下圖4.5所示。圖4.5寄存器的邏輯符號模塊仿真波形如下圖4.6所示。圖4.6寄存器的波形仿真當(dāng)?shù)竭_(dá)時鐘上升沿時,將兩數(shù)輸入,運(yùn)算,輸出結(jié)果,仿真結(jié)果完全符合設(shè)計要求。4.3.4乘法器模塊從資源和速度考慮,常系數(shù)乘法運(yùn)算可用移位相加來實現(xiàn)。將常系數(shù)分解成幾個2的冪的和形式。下例為乘18電路設(shè)計,算法:18=16+2,實現(xiàn)輸入帶符號數(shù)據(jù)與固定數(shù)據(jù)兩個二進(jìn)制數(shù)的乘法運(yùn)算。當(dāng)?shù)竭_(dá)時鐘上升沿時,將兩數(shù)輸入,運(yùn)算,輸出結(jié)果。此模塊程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity mult18 isgeneric ( mult_1:=8; mult_2:=12; mult_3:=9; mult_4:=12); port( clk : in std_logic; din : in signed (mult_1 downto 0); dout : out signed (mult_2 downto 0);end mult18;architecture a of mult18 issignal s1 : signed (mult_1 downto 0);signal s2 : signed (mult_3 downto 0);signal s3 : signed (mult_4 downto 0);beginp1:process(din)begins1(mult_1 downto 4)=din;s1( 3 downto 0)=0000;s2(mult_3 downto 1)=din;s2(0)=0;if din(8)=0 then s3=(0&s1(mult_4 downto 1)+(0000&s2(mult_3 downto 1);else s3=(1&s1(mult_4 downto 1)+(1111&s2(mult_3 downto 1);end if;end process;p2: process(clk)beginif clkevent and clk=1 thendout=s3;end if;end process;end a;程序中的前三句是庫和包集合說明,語句ieee是程序中要用到的庫。從語句“entity mult18 is”開始到“end mult18”為止是實體說明語句,在mult18模塊功能的實體說明程序段中定義了3個端口, 3個端口中包含1個時鐘信號,1個信號輸入端口,1個信號輸出端口。mult_1是輸入信號din的寬度,mult_2是輸出信號dout的寬度, 2個參數(shù)的數(shù)據(jù)類型均為整數(shù)類型,后面的數(shù)據(jù)是對參數(shù)賦予的值,改變這個值就修改了參數(shù)。從語句“architecture a of f_mult18 is”到“end a”是對構(gòu)造體的描述,它對模塊內(nèi)部的功能進(jìn)行了說明。本模塊實現(xiàn)輸入帶符號數(shù)據(jù)與固定數(shù)據(jù)兩個二進(jìn)制數(shù)的乘法運(yùn)算。設(shè)計的mult18邏輯符號圖4.7所示。圖4.7乘法模塊mult18邏輯符號乘法器模塊的波形仿真如圖4.8所示。圖4.8乘法模塊仿真波形當(dāng)?shù)竭_(dá)時鐘上升沿時,將兩數(shù)輸入,運(yùn)算,輸出結(jié)果,仿真結(jié)果完全符合設(shè)計要求。4.4 fir濾波器整體電路1)設(shè)定輸入信號根據(jù)設(shè)計要求,輸入信號范圍是:99,0,0,0, 70,0,0,0, 99,0,0,0, 70,我們?nèi)我庠O(shè)定輸入信號為:x99,0,0,0,70,0,0,0,99,0,0,0,70,0,0,0,99,0,0,0,70,0,0,0,99,0,0,0,70,0,0,02)輸出信號理論值由fir數(shù)字濾波器的公式fir濾波器整體電路仿真結(jié)果如圖4.9所示。圖4.9 fir濾波器整體電路仿真波形仿真結(jié)果與輸出信號理論值的比較如下:輸出結(jié)果yn理論值仿真結(jié)果matlab卷積值/512經(jīng)仿真器仿真-2.3203-3-3.4805-42.513725.60745-4.1543-5-12.516-134.4844435.2893542.6954120.734207.1348717.7011726.4182615.24158.9121824.69924y038.59837y124.69924y28.91218y315.2415y424.77724y515.2415y68.91218y724.69924y838.59837y924.69924y108.91218y1115.2415y1224.77724y1315.2415y148.91218y1524.69924y1638.59837y1724.69924由上面仿真波形可以讀出結(jié)果經(jīng)比較,仿真結(jié)果與輸出信號理論值完全吻合。且波形基本沒有毛刺,設(shè)計完全符合設(shè)計要求。4.5 本章小結(jié)fir濾波器的功能模塊的劃分,描述了各個功能模塊的具體設(shè)計,并給出其仿真波形。通過quartus的仿真驗證,可以得到以下結(jié)論:(1) 采用8輸入查找表進(jìn)行分布式算法,設(shè)計了一個輸入8位,輸出8位的256階線性相位fir濾波器,簡化了傳統(tǒng)的mac設(shè)計。(2) 各模塊參數(shù)獨立于濾波器的結(jié)構(gòu),有較強(qiáng)的通用性,適于模塊化設(shè)計。(3) 利用vhdl設(shè)計,可重復(fù)配置fpga,系統(tǒng)易于維護(hù)和擴(kuò)展。5結(jié)論 隨著科學(xué)技術(shù)的發(fā)展,以fpga為代表的新型可編程邏輯器件,具有靈活性、高速、高可靠性的特點,采用fpga來實現(xiàn)fir濾波器具有一定的先進(jìn)性。fpga的dsp解決方案為數(shù)字信號處理開創(chuàng)了新的領(lǐng)域,使得構(gòu)造的數(shù)字信號處理系統(tǒng)能夠保持基于軟件解決方案的靈活性又能接近asic的性能,為設(shè)計人員開辟了廣闊、自由的發(fā)展空間,具有很好的應(yīng)用前景16-17。本文的主要工作如下:(1) 闡述了選題背景、研究的目的和意義與國內(nèi)外研究狀況,以fir濾波器的基本理論為依據(jù),探討適應(yīng)工程實際的數(shù)字濾波器的設(shè)計方法。(2) 對分布式算法進(jìn)行了一些的討論,在闡述算法原理的基礎(chǔ)上,分析了利用fpga特有的查找表結(jié)構(gòu)完成這一運(yùn)算的方法,解決了常系數(shù)乘法運(yùn)算硬件實現(xiàn)問題。(3) 設(shè)計了一個fir低通濾波器,說明fir數(shù)字濾波器的具體實現(xiàn)方法,采用模塊化、參數(shù)化的設(shè)計思想,對整個fir濾波器的功能模塊進(jìn)行了劃分,以及各個功能模塊的具體設(shè)計與波形仿真。本文的主要結(jié)論如下:(1) 數(shù)字濾波器具有穩(wěn)定性好、精度高、工作頻率范圍廣、體積小、功耗低等的優(yōu)點,有限沖激響應(yīng)(fir)數(shù)字濾波器因其具有嚴(yán)格的線性相位特性而得到廣泛應(yīng)用。(2) 分布式算法是實現(xiàn)常系數(shù)乘累加運(yùn)算的高效方法,利用fpga的查找表結(jié)構(gòu),能綜合考慮系統(tǒng)的運(yùn)行速度的要求。(3) 可編程門陣列發(fā)展日新月異,除了運(yùn)行速度大大提高,采用嵌入式處理器核(如aletar的nios軟核和arm硬核),高達(dá)10m字節(jié)的片上存儲器,千兆位級的串行收發(fā)器、硬連線的乘法器(如viertxll嵌入的18位乘法器能提供高達(dá)六千億次的乘法累加次數(shù))等。通過在大規(guī)??删幊唐骷星度敫咝阅芴幚砥?、存儲器和高速fo,fpga很快就進(jìn)化為可編程系統(tǒng)器件。本人認(rèn)真進(jìn)行了本課題的研究并完成了本論文,由于時間和水平有限,沒有制作出實際電路來進(jìn)行濾波效果測試,而且論文中可能出現(xiàn)錯誤和不足之處,敬請大家批評指正。參考文獻(xiàn)1 李文剛. 基于fpga的高速高階fir濾波器設(shè)計d. 電子科技大學(xué)碩士學(xué)位論文,2005.2 李彬. fir數(shù)字濾波器的fpga實現(xiàn)技術(shù)研究d. 西南交通大學(xué)碩士學(xué)位論文,2007.3 武曉春. fir數(shù)字濾波器的matlab設(shè)計 j. 甘肅科技縱橫, 2005,34(1): 2122.4 雷學(xué)堂, 徐火希. 基于matlab的fir數(shù)字高通濾波器分析和設(shè)計 j. 長春大學(xué)學(xué)報, 2006,16(5):3437.5 賈宇然, 李紅霞, 應(yīng)建華, 鄒雪城. 一種用于光盤伺服控制系統(tǒng)的通用濾波器的設(shè)計j. 電子技術(shù)應(yīng)用, 2003,29(4):4246.6 冉茂華. 基于dsp的fir數(shù)字濾波器的設(shè)計d. 武漢理工大學(xué)碩士學(xué)位論文, 2006.7 任愛鋒,初秀琴,常存,等基于fpga的嵌入式系統(tǒng)設(shè)計m,西安:西安電子科技大學(xué)出版社,20048 張維良,郭興渡,潘長勇高速fir濾波器的流水線結(jié)構(gòu)電視技術(shù),2002。(2):5760.9 王新剛,楊家瑋. 李建東,基于fpga高效實現(xiàn)fir濾波器的研究j,西安電子科技大學(xué)信息科學(xué)研究所,2006.10 趙金憲,吳三,王乃飛.基于fpga并行分布式算法的fir濾波器的實現(xiàn)m,(黑龍江科技學(xué)院電氣與信息工程學(xué)院,哈爾濱,2007.611 潘松,黃繼業(yè),王國棟現(xiàn)代dsp技術(shù)西安:西安電子科技大學(xué)出版社,2003:16318612 hartley rsub expression sharing in filters using canonic signed digital multiplierj,ieee transactions on circuits and systems ii,1996,30(10):6778813 goodman d j,carry m jnine digital filters for decimation and interpolationjieee transactions on acoustics。speech and signal processing,1997,25(2):12112614 dempster a,macleod muse of minimumadder multiplier blocks in fir digital filtersj,ieee transactions on circuits and systems ii,1995,42:569-57715 dempster a,macleod m comments on minimum number of adders for implementing a multiplier and its adplication to the design of multipliedess digital filters jieee transactions on circuits and systems ii,1998,45:2424316 dejan v. tosic, miroslav d. lutovac and brian l. evans. advanced continuous-time filter design in matlab. proc. 22nd international conf. microelectronics (miel2000), vol. 2, nis, serbia, pp. 14-17, may, 2000.17 he shousheng。torkleson mfpga implementation of fir filters using pipelined bit-serial canonical signed digit muhiplierfijieee custom integrated circuits conference199418 meyer-baese udigital signal processing with field programmable gate arraysmspringer-verlag2001致 謝本學(xué)位論文是在長沙理工大學(xué)電氣與信息工程學(xué)院劉橋老師的指導(dǎo)下完成的,從論文選題到

溫馨提示

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

評論

0/150

提交評論