基于FPGA的FIR數字濾波器的設計及仿真文-副本_第1頁
基于FPGA的FIR數字濾波器的設計及仿真文-副本_第2頁
基于FPGA的FIR數字濾波器的設計及仿真文-副本_第3頁
基于FPGA的FIR數字濾波器的設計及仿真文-副本_第4頁
基于FPGA的FIR數字濾波器的設計及仿真文-副本_第5頁
已閱讀5頁,還剩33頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 基于FPGA的FIR數字濾波器的設計及仿真1 緒論本章主要論述該課題的研究意義,目前在世界上的發展情況,以及我在這篇論文中所用到的主要的設計方法與設計工作。1.1 課題研究的意義 許多工程領域都涉及到如何能在強背景的噪聲信號和干擾信號中提取到真正的信號。如:遙感和遙測系統,通信系統,雷達系統,航天系統等,這就要求有信號的濾波。濾波器的帶寬等性能,處理速度的要求隨著現在對高速,寬帶,實時信號處理的要求越來越高,也隨之提高。系統的穩定性和后續信號的處理受濾波器的性能好壞程度影響常大。11.2 國內外研究動態1.2.1 數字信號處理的發展動態一般可以用兩類方法來實現FIR濾波器的設計。 一類通過軟

2、件來設計實現,使用常見的電腦語言如高層次的C / C + +跟 MATLAB語言。此方法用于教學或算法仿真。但是采用軟件的方法不能實現實時性。目前可以通過以下幾種方式在硬件中來實現,。一種是使用可編程的主要數學單位是一個乘法累加器(MAC)的通用DSP芯片編程。實時數字信號能夠實現高速的處理,是因為 MAC在一臺機器時鐘周期就能完成乘法累加操作,同時在硬件上還輔助與不同的流水結構和哈佛架構。然而,在應用時受到了限制,是由于硬件結構和流水結構是固定不變的。 一種是使用專用的ASIC數字信號處理芯片。這種方法是芯片尺寸小,高性能,保密性好。其缺點是一個單一功能的芯片,多是針對一定的功能而設計,靈活

3、性不夠。 另一種方法是使用可編程邏輯器件(FPGA / CPLD)。 FPGA所具有得可編程邏輯的靈活性突破了流水線結構和并行處理的局限性,可以很好的實現實時信號處理功能。研發過程中它的可移植性更好,可以縮短開發周期。211 1.2.2 FIR數字濾波器的FPGA實現 使用FPGA技術設計的FIR數字濾波器在目前通常采用的是乘法器結構和分布式算法結構。 乘法器結構,有乘累加結構與并行乘法器結構兩種形式。乘累加結構是最簡單的一種,占用資源少,缺點是處理速度慢;并行乘法器結構比較復雜,但是如果能夠加上流水結構,信號就能夠實現高速的處理,但是它還是會受到處理速度和數量的限制。分布式算法(DA)的,是

4、將固定系數乘法 - 累加運算轉換成了查找表的運算從而巧妙地利用了ROM查找表,避免了乘法的運算。巧妙運用查找表可以在很大程度上提高運算速度和插入流水結構。因為它只是一個簡單的加法運算。 分布式算法(DA),可以分為串行分布式算法,并行分布式算法,串行與并行結合的分布式算法。串行分布式算法,它占用的資源很少,結構也相對簡單,但就是還不能擁有很高的處理速度;并行的分布式并行算法擁有更加整齊的結構,主要用于需要高速處理的情況;串行與并行結合的分布式算法,占用資源大,也多用于對速度要求高的場合。在不同的情況下,各種算法的處理效果是不同的,要根據對處理速度的不同要求選擇不同的算法。 無論是采用哪種算法,

5、都會用到ROM做為查找表的器件。FIR濾波器的階數增加,就會使得ROM的數目不斷的增加,所占用的資源也不斷的增加,到目前為止沒有一個有效的方式,可以將ROM的數量跟ROM的規模減少。2111.3 本課題研究方法和主要工作首先介紹了數字濾波器的基本概念,然后介紹了FIR濾波器的相關理論。最后從實際應用設計出發提出一個FIR濾波器設計流程,包括濾波器結構的選擇、濾波器的系數計算、系數的量化等,按照此流程即能設計出滿足實際性能需求的數字濾波器。根據FIR濾波器的功能模塊的劃分,描述了各個功能模塊的具體設計,給出其仿真波形,并通過Quartus進行了仿真驗證。(1) 采用8輸入查找表進行分布式算法,設

6、計了一個輸入8位,輸出8位的256階線性相位FIR濾波器,簡化了傳統的MAC設計。(2) 各模塊參數獨立于濾波器的結構,有較強的通用性,適于模塊化設計。(3) 利用VHDL設計,可重復配置FPGA,系統易于維護和擴展。2 FPGA技術以及Xilinx Virtex IIFPGA芯片2.1 FPGA發展基本概況現場可編程門陣列FPGA是一種廣泛使用的高密度可編程邏輯器件。20世紀80年代賽靈思公司推出了第一個FPGA,除了賽靈思外,Actel,Altera公司,QuickLogic公司和其他公司也生產FPGA產品。FPGA布線由單位的可編程邏輯陣列構成,用可編程I / O單元陣列包圍,分隔的資源

7、構成了整個芯片。邏輯單元陣列布線通道連結在一起,以達到一定的邏輯功能。一個FPGA由豐富的快速邏輯門結構,寄存器和I / O組成。按照編程功能,有反熔絲的一次性可編程的靜態存儲器(SRAM)結構。賽靈思的FPGA基于靜態存儲單元,SRAM的查找表類型,在互連關系的模式下,也可以再次在設備中加載和修改。電源掉電后,存儲的程序可能會丟失,因此每次你都要把程序配置到芯片中去。 Actel的ACT系列和QuickLogic為一次性可編程熔絲類型的PASIC系列FPGA。自1985年以來,賽靈思公司推出了第一片現場可編程邏輯器件后的有近20多年的發展過程中,FPGA的集成技術已經取得了令人矚目的發展:現

8、場可編程邏輯器件從最初的可用的1200個門發展到25萬個,再在20世紀90年代發展到幾十萬,甚至數百萬的單FPGA芯片,現場可編程器件集成達到了一個新的水平。 2001年,賽靈思Virtex II,其容量可高達800萬個系統邏輯。賽靈思Virtex II系列FPGA的Virtex,Spartan的Virtex-E,在Spartan-2后的LUT(查找表)的高端平臺FPGA系列芯片,該芯片的選擇RAM塊的內部整合,采用18位x 18位乘法器和其他硬件資源。時鐘DLL控制DCM的技術,頻率高達420MHz。支持的LVDS,PCI,TTL,AGP,CMOS和其它IO接口標準。后續又推出了以IBM P

9、owerPC為基礎的Virtex II結構,低端的900納米工藝的Spartan-3,和即將推出的Virtex-4系列的具有嵌入式DSP功能的Virtex II Pro。12.2 Virtex II系列FPGA結構及特點2.2.1 Virtex-II系列FPGA概述 Virtex II FPGA是第一個基于FPGA,具有 IP浸入式結構的平臺。它具有400008000000個系統邏輯門而且它的I / O帶寬高達840Mb / s,它的內部時鐘高達420MHz。設計人員可以更加容易地集成軟件和硬件IP核;Virtex-II器件包含多達12個時鐘管理器(數字時鐘管理器DCM),可以在允許范圍內的任

10、何頻率的時鐘信號產生,并提高時鐘邊沿配置(時鐘邊沿位置)的準確性,因此,下降到百分之一的錯誤。此外,高性能時鐘管理電路,每個Virtex-II器件有16個預先設計的低偏移時鐘網絡(低偏移時鐘網絡),省去了復雜的高性能設計的時鐘樹分析的需要。此外,賽靈思可控阻抗技術(XCITE)使用兩個外部參考電阻保持數百個I / O引腳的輸入和輸出阻抗匹配,不僅可以減少電路板上的電阻數量,大大降低了系統成本,還能減少的概率電路板重新繞組(重不同自旋),簡化電路板布局,提高了系統的穩定性。Virtex-II還支持片上和片外時鐘同步,并維持精確的50/50占空比。DCI技術的應用,可避免不同的驅動力,溫度,電壓波

11、動造成的差異,仍然保持一個穩定的阻抗。有加密功能,以充分保護的安全設計。應用安全三重數據加密標準(DES)算法編碼加密密鑰加密算法,此功能,可以提高安全性的設計,以避免設計被竊取。靈活的邏輯資源。高性能的外部存儲器接口,支持CAM,QDR RAM,FCRAM,SDR / DDR等存儲方式。有168個專用的18位x 18位乘法器和快速進位邏輯鏈。支持多輸入功能,有一個內部三態總線,擁有的SelectIO技術,支持多種IO標準,支持多種編程模型。支持并口,串口。具有靈活的開發環境。211 2.2.2的Virtex-IIFPGA結構各種可編程的單位,主要用于高密度和高性能的邏輯設計,Virtex-I

12、I系列FPGA可編程邏輯塊(可配置邏輯塊CLB)的組成,如圖3-1所示,由SelectRAM塊,乘法器,全局時鐘緩沖器和一個可編程的IOB組成。圖2-1 Virtex II系列FPGA結構圖2.2.2.1 Virtex-II FPGA的可編程邏輯模塊CLB每一個可編程邏輯塊由四片三態緩沖器組成。每片包含多個算術邏輯門,2個存儲單元,兩個函數發生器(FG公司),超快速前進位鏈。函數發生器(FG公司)為一個十六位分布式SelectRAM存儲器編程,或四輸入查找表或十六位的移位寄存器。兩個存儲單元可以編程為電平觸發鎖存或邊沿觸發的D觸發器。基本結構如圖2-2所示。圖2-2 CLB內部結構圖2.2.2

13、.2 Virtex II FPGA的時鐘資源Virtex II FPGA具有十六個時鐘輸入引腳,底部有八個,另外八個在位于中間的邏輯陣列芯片上的頂部。適當的配備與之相對應的十六個全局時鐘復用器緩沖區。分配給每個全局時鐘緩沖器時鐘引腳時鐘信號,可由全局時鐘緩沖器來支持差分對驅動程序,直接驅動到每個設備。與此同時,也可由DCM的驅動器分配到每個設備的時鐘信號。具體如下圖所示:圖2-3 時鐘分配結構圖數字時鐘管理器有一個強大的功能叫時鐘管理功能,具有頻率合成器,相移等特性。無偏的相位輸出時鐘和輸入時鐘信號,可以消除時鐘分配延遲。頻率合成器,可以得到高精度相移輸出的相移。2112.3 本章小結本章詳細

14、的說明了Virtex II系列FPGA的結構和特點,并簡要介紹了FPGA技術的發展。通過對本章知識的掌握,對基于FPGA技術的下一個過濾器設計奠定了堅實的基礎。3 FIR數字濾波器設計3.1 FIR數字濾波器概述信號中一般都包含噪聲或者說其中有很多能量在感興趣的最高頻率之外,因此我們要用濾波電路將感興趣的帶寬之外的信號和噪聲移去。數字濾波器是數字信號處理中使用最廣泛的一種線性系統環節,圖3.1給出了一個具有模擬輸入信號和輸出信號的實時數字濾波器的簡化框圖。這個模擬信號被周期地抽樣,且轉化成一系列數字x(n)(n=0,1,)。數字濾波器依據濾波器的計算算法,執行濾波運算、把輸入系列x(n)映射到

15、輸出系列y(n)。DAC把數字濾波后的輸出轉化成模擬值,這些模擬值接著被模擬濾波器平滑,并且消去不需要的高頻分量。圖3.1實時數字濾波器的簡化框圖在信號處理中,為了防止采樣過程中的混疊現象,必須在A/D轉換之前使用低通濾波器,把1/2采樣頻率以上的信號衰減掉。如圖3.2 所示,在A/D轉換前,加入一個低通濾波器,這樣,經過戶A/D轉換之后,有效地避免了混疊現象的發生,從而保證了后續數字處理的正常進行。圖3.2 抗混疊濾波器的作用3.2 FIR數字濾波器理論FIR濾波器的數學表達式可用K階卷積來表示: ( 31)其中:K:FIR濾波器的抽頭數;:第k級抽頭系數(單位脈沖響應);:延時k個抽頭的輸

16、入信號。卷積是DSP使用最頻繁的一種運算,描述系統的輸入如何與系統相互作用產生輸出,通常來說,系統的輸出將是輸入的延遲、衰減或者放大。上圖描述的兩個序列卷積的例子。其中,x(n)是輸入序列,h(n)是單位脈沖響應,y(n)是系統對輸入序列x(n)的響應,卷積的數值即y(n)只可以由式只算得到。3.3 FIR數字濾波器的具體設計內容濾波器的實現主要包括兩方面的內容,首先選擇一個合理的結構,然后利用有限精度的數值來實現它。之所以要利用有限精度數值實現濾波器,是因為實際的濾波器系數只能用有限的二進制位數來表示,就涉及到系數的字長問題。3.3.1濾波器的結構FIR濾波器的單位脈沖響應h(k)均為實數,

17、在幅度上只要滿足下列兩個條件之一,就能構成線性相位FIR濾波器。式( 32)稱為第一類線性相位的幅度條件(偶對稱),式( 33)稱為第二類線性相位的幅度條件(奇對稱)。 ( 32) ( 33)FIR濾波器最基本的結構是直接型,如圖3.3所示。可以看出,FIR濾波器是由一個“抽頭延遲線”的加法器和乘法器的集合構成,每個乘法器的操作數就是一個FIR系數。對于每次采樣,只y(n)都要進行K次連續的乘法和(K-1)次加法操作。圖3.3直接型FIR濾波器結構圖由于FIR濾波器具有線性相位的對稱屬性,因此可以只采用一半的系數降低所需要乘法器的數量,如圖3.4所示(圖(a)為偶對稱,圖(b)為偶對稱)。可以

18、看出“對稱”結構的乘法器是直接結構(圖3.3)的一半(K/2),得到了優化,但加法器的數量保持不變,還是(K-1)個。圖3.4(a)簡化乘法器數量的線性相位偶對稱FIR濾波器結構圖圖3.4(b)簡化乘法器數量的線性相位奇對稱FIR濾波器結構圖此外,FIR濾波器的結構還有級聯型和格型,這兩種結構可以獲得較高的靈敏度,但較少采用,主要原因是:第一,對大多數線性相位FIR濾波器來說,由于零點在Z平面內或多或少是均勻鋪開的,從而使濾波器對系數量化誤差的靈敏度很低;第二,無論系數量化誤差多大,采用直接型結構都能獲得準確的線性相位。因此,本設計選用直接型結構,這種結構實現簡單,要求的器件少,數據存儲不復雜

19、,且充分利用FIR濾波器的脈沖響應系數對稱性的優點來降低濾波器實現的計算復雜性。3.3.2 濾波器系數的計算目前,FIR濾波器的主要設計方法是建立在對理想濾波器頻率特性做某種近似的基礎上的,這些近似方法有窗函數法、頻率抽樣法和最佳一致法。其中,窗函數法是一種基本的設計方法,其設計方法較為成熟,本設計即采用窗函數法,下面先簡要介紹其設計思想。窗函數設計的基本原理是:從所要求的理想濾波器的頻率響應Hd(ejw)出發,經過反傅立葉變換導出hd(n) ( 34)由于hd(n)的無限長,所以要對其進行加窗處理,以得到滿足要求的單位脈沖響應h(n) ( 35)已經認可并發表的窗函數的數量非常多,最常用的窗

20、函數(用w(n)表示)基本參數如表3.1所示10。表 3.1四種窗函數基本參數名稱窗函數過渡帶寬最小阻帶衰減(db)矩形窗14/N-21三角窗2n/N8/N-25漢寧窗8/N-44海明窗8/N-53從表 3.1可以看出,一旦窗函數選定,過渡帶寬和最小阻帶衰減也隨著確定,不可改變,究竟選擇哪一種窗函數來實現本設計呢?本人參考了以下選擇原則:(1)具有較低的旁瓣幅度,尤其是第一旁瓣幅度;(2)旁瓣幅度下降速度要大,以利增加阻帶衰減;通常以上兩點很難同時滿足。當選擇主瓣寬度較窄時,雖然得到較陡的過渡帶,但通帶和阻帶的波動明顯增加;當選用最小的旁瓣幅度時,雖能得到均勻光滑的幅度響應和較小阻帶波動,但過

21、渡帶加寬。因此,實際選用的窗函數往往是它們的折中。在保證主瓣寬度達到一定要求的條件下,適當犧牲主瓣寬度來換取旁瓣波動的減少。本設計采用的設計方案是:設計一個輸入8位,輸出8位的256階線性相位FIR濾波器,Fs為44kHz,Fc為10.4kHz,采用直接型、奇對稱結構方式,選擇海明窗完成,其輸入信號范圍為:±99,0,0,0, ±70,0,0,0, ±99,0,0,0, ±70,利用MATLAB設計計算濾波器系數如下:FIR濾波器參數設置,因為是256階,所以Specify order處填255,h(0)=0,如圖3.5所示。圖3.5 FIR濾波器參數設

22、置FIR濾波器系數如下圖3.6所示。圖3.6FIR濾波器系數經過計算,得到附錄圖B(a)為脈沖響應波形圖,圖附錄圖B(b)為其幅頻特性曲線,圖附錄圖B(c)為相頻特性曲線。從幅頻特性曲線中可以看出該濾波器的性能參數達到了要求;從相頻特性曲線來看,曲線通過原點處為一條直線,說明具有線性相位特性。3.3.3濾波器系數量化本系統將采用FPGA實現,但FPGA只適合處理二進制的整數,因此就存在一個將小數轉換為有限位二進制整數的問題,即有限字長問題,用有限字長來表示輸入和輸出信號、濾波器系數以及算術運算的結果。在這種情況下,需要分析量化對濾波器性能的影響。本系統為硬件實現,僅分析量化后單位脈沖響應系數的

23、有限字長對性能的影響。用直接形式設計的低通FIR濾波器,采用四舍五入量化系數使之整數化如圖3.7。圖3.7 濾波器系數量化量化后可得FIR濾波器的參數為:-12 -18 13 29 -13 -52 14 162 242 162 14 -52 -13 29 13 -18 -123.3.4 設計步驟根據以上分析,濾波器的理論設計部分可以概括為以下5個步驟,用圖2.5加以總結說明:(1)規范設計要求這一步驟包括濾波器類型(如低通濾波器)的確定,期望的幅度和相位響應和可接受的容差,以及確定抽樣頻率和輸入數據的字長。(2)濾波器系數的計算采用matlba等輔助工具,確定滿足第一步所要求技術規范的傳遞函數

24、H(z)的系數。(3)實現結構的選擇用一個適當的結構(直接型、格型和級聯型)來表示濾波器的實現結構。(4)有限字長效應分析分析濾波器系數和輸入數據量化的影響,以及用固定字長執行濾波的運算對濾波器性能的影響,最后確定滿足性能要求的系數和輸入數據的字長。(5)用軟件/硬件來實現包括選擇硬件和編寫程序并執行該濾波,然后進行實際系統的測試以驗證其是否達到設計要求。圖3.8 數字濾波器的設計步驟3.4本章小結這一章首先介紹了數字濾波器的基本概念,然后介紹了FIR濾波器的相關理論。最后從實際應用設計出發提出一個FIR濾波器設計流程,包括濾波器結構的選擇、濾波器的系數計算、系數的量化等,按照此流程即能設計出

25、滿足實際性能需求的數字濾波器。4 FIR數字濾波器的FPGA設計及仿真 本章采用VHDL語言,利用FPGA的查找表結構,完成了一個基于分布式算法的256階FIR低通數字濾波器的程序設計。在設計中采用模塊化、參數化設計方法,簡化了設計過程,并將設計結果進行了仿真驗證。4.1 FIR數字濾波器分布式算法的基本原理分布式算法(Distributed Arithmetic, DA)是1973年由Crosier提出來的,后來Peled和Liu進行了推廣工作,直到現場可編程門陣列(FPGA)的查找表(Look Up Table LUT)結構的出現,這種方法才受到重視,其主要原理如下。為了分析簡單起見,將F

26、IR濾波器的表達式改寫為: (41)設,其中Xkb表示Xk中的第b位,xk即x的第k次采樣,則y可以表示為: (42)重新分別求和,其結果可表示成如下形式: (43)可以看出,分布式算法是一種以實現乘加運算為目的的運算方法,與傳統的乘累加不同在于執行部分積運算的先后順序不同,這個過程可用圖4.1的結構來實現,可以看出,該算法可以利用一個查找表(LUT)實現映射,即2K字寬(即2K行),預先編好程序的LUT接受一個k位輸入量xb=x0b·x1b···x(k-1)b的映射,經查找表的查找后直接輸出部分積,算法中的乘法以位權2b可以通過圖中的寄存器和累加器完成

27、,在K次循環后完成計算結束。這個過程共進行了B次查找和B次累加15。 ( 44)圖4.1 DA算法結構圖4.2 FPGA設計流程確定了濾波器的實現方案后,就可以借助FPGA來設計了。FPGA設計是指利用EDA軟件(Altera公司的Max+plus、Quartus等)和編程工具對器件進行開發的過程。本設計是在Quartus開發平臺上進行的,FPGA的設計流程如圖4.2所示。設計準備設 計 輸 入原理圖/硬件描述設計處理優化器件編程功能仿真時序仿真圖4.2 FPGA設計流程1. 設計準備按照設計需求,進行方案確定和器件選擇工作。在第三章已經確定了FIR濾波器的實現方案,鑒于實現這一方案要用到查找

28、表結構,所以選擇了具備查找表結構的FLEX 10K元器件。2. 設計輸入設計者將所設計的系統或電路以開發軟件要求的某種形式表現出來,并送入計算機的過程稱為設計輸入。設計輸入通常有原理圖輸入方式、硬件描述語言輸入方式和波形輸入方式三種方式,在本設計中采用硬件描述語言輸入方式,即VHDL輸入方式。3. 設計處理這是器件設計中的核心環節。在設計處理過程中,編譯軟件將對設計輸入文件進行邏輯化簡、綜合和優化,并適當地用一片或多片器件自動進行適配,最后產生編程用的編程文件。設計處理包括語法檢查和設計規則檢查、邏輯優化和綜合、適配和分割、布局和布線及生成編程數據文件等七個步驟。4. 器件編程對FPGA來說是

29、將位流數據文件“配置”到FPGA中去,這樣,配置的芯片就能夠執行所設計的系統的功能。4.3 FIR濾波器各功能模塊的具體實現FPGA有著規整的內部邏輯陣列和豐富的連線資源,特別適合于數字信號處理任務,相對于串行運算為主導的通用DSP芯片來說,其并行性和可擴展性更好,更適合FIR濾波器的設計。4.3.1 FIR濾波器的總體結構設計的FIR濾波器可以分為以下三種模塊:寄存器模塊、加法器模塊、乘法器模塊。4.3.2寄存器模塊對模塊進行邏輯設計時,采用了VHDL文本輸入方式。VHDL語言的一個基本設計單元是由實體說明(ENTITY Declaration)和構造體說明(ARCHITECTURE Bod

30、y)兩部分構成,對端口的定義以及對參數的說明都包含在實體(ENTITY)部分,設計時將移位寄存器命名為dff8。寄存器用于寄存一組二值代碼,對寄存器的觸發器只要求它們具有置1、置0的功能即可,在CP正跳沿前接受輸入信號,正跳沿時觸發翻轉,正跳沿后輸入即被封鎖。此模塊程序如下: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 S

31、TD_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(clk'EVENT AND clk='1') THEN Dout <= Din; END I

32、F; END IF; END PROCESS; END a;程序中的前兩句是庫和包集合說明,語句IEEE是程序中要用到的庫。從語句“ENTITY dff8 IS”開始到“END dff8”為止是實體說明語句,在實體說明中定義了3個輸入端口和1個輸出端口,這個輸入分別是時鐘信號clk、清零信號clear、輸入信號Din、;輸出信號Dout。std_logic、std_logic_vector是IEEE定制的標準化數據類型。在dff8模塊的實體說明中又定義了2個參數,width_1是輸入信號的寬度,width_2是輸出信號的寬度;2個參數的數據類型均為整數類型,后面的數據是對參數賦予的值,改變這個

33、值就修改了參數。從語句“ARCHITECTURE a OF dff8 IS”到“END a”是對構造體的描述,它對模塊內部的功能進行了說明。設計的dff8模塊的邏輯符號如圖4.3所示。圖4.3 dff8模塊的邏輯符號寄存器的波形仿真如圖4.4所示。圖4.4寄存器的波形仿真在CP正跳沿前接受輸入信號,正跳沿時觸發翻轉,正跳沿后輸入即被封鎖,仿真結果表明dff8模塊的功能完全正確。4.3.3 加法器模塊在將兩個多位二進制數相加時,除了最低位以外,每一位都應該考慮來自低位的進位,即將兩個對應位的加數和來自低位的進位3個數相加。這種運算稱為全加,所用的電路稱為全加器。多位加法器的構成有兩種方式:并行進

34、位和串行進位。并行進位加法器設有進位產生邏輯,預算速度較快;串行進位方式是將全加器級聯構成多位加法器。并行進位加法器通常比串行級聯加法器占用更多的資源。隨著為數的增加,相同位數的并行加法器與串行加法器的資源占用差距也越來越大,因此,在工程中使用加法器時,要在速度和容量之間尋找平衡點。本次設計采用的是并行加法器方式。實現兩個二進制數字的相加運算。當到達時鐘上升沿時,將兩數輸入,運算,輸出結果。此模塊程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;ENTITY add121616 isGENERI

35、C ( 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(a

36、dd_1)&Din1(add_1)&Din1(add_1)&Din1);PROCESS(Din1,Din2,clk)BEGINif clk'event and clk ='1' thenDout<=s1+Din2;end if;end process;end a;程序中的前三句是庫和包集合說明,語句IEEE是程序中要用到的庫。從語句“ENTITY add121616 IS”開始到“END add121616”為止是實體說明語句,在add121616模塊功能的實體說明程序段中定義了4個端口, 4個端口中包含1個時鐘信號,2個信號輸入端口,1個

37、信號輸出端口。add_1是輸入信號Din1的寬度,shift_2是輸入信號Din2的寬度,add_3是輸出信號Dout的寬度;3個參數的數據類型均為整數類型,后面的數據是對參數賦予的值,改變這個值就修改了參數。從語句“ARCHITECTURE a OF add121616 IS”到“END a”是對構造體的描述,它對模塊內部的功能進行了說明。設計的add121616的邏輯符號如下圖4.5所示。圖4.5寄存器的邏輯符號模塊仿真波形如下圖4.6所示。圖4.6寄存器的波形仿真當到達時鐘上升沿時,將兩數輸入,運算,輸出結果,仿真結果完全符合設計要求。4.3.4乘法器模塊從資源和速度考慮,常系數乘法運算

38、可用移位相加來實現。將常系數分解成幾個2的冪的和形式。下例為乘18電路設計,算法:18=16+2,實現輸入帶符號數據與固定數據兩個二進制數的乘法運算。當到達時鐘上升沿時,將兩數輸入,運算,輸出結果。此模塊程序如下: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

39、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 DOWNT

40、O 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 clk'event and c

41、lk='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個參數的數據類型均為整數類型,后面的數據是對參數賦予的值,改變這個值就修改了參數。從語句“ARCHITECTURE a OF f_m

42、ult18 IS”到“END a”是對構造體的描述,它對模塊內部的功能進行了說明。本模塊實現輸入帶符號數據與固定數據兩個二進制數的乘法運算。設計的mult18邏輯符號圖4.7所示。圖4.7乘法模塊mult18邏輯符號乘法器模塊的波形仿真如圖4.8所示。圖4.8乘法模塊仿真波形當到達時鐘上升沿時,將兩數輸入,運算,輸出結果,仿真結果完全符合設計要求。4.4 FIR濾波器整體電路1)設定輸入信號根據設計要求,輸入信號范圍是:±99,0,0,0, ±70,0,0,0, ±99,0,0,0, ±70,我們任意設定輸入信號為:X99,0,0,0,70,0,0,0,

43、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數字濾波器的公式FIR濾波器整體電路仿真結果如圖4.9所示。圖4.9 FIR濾波器整體電路仿真波形仿真結果與輸出信號理論值的比較如下:輸出結果yn理論值仿真結果MATLAB卷積值/512經仿真器仿真-2.3203-3-3.4805-42.513725.60745-4.1543-5-12.516-134.4844435.2893542.6954120.734207.1348717.7011726.4182615.24158.9121824.69924y038.598

44、37y124.69924y28.91218y315.2415y424.77724y515.2415y68.91218y724.69924y838.59837y924.69924y108.91218y1115.2415y1224.77724y1315.2415y148.91218y1524.69924y1638.59837y1724.69924由上面仿真波形可以讀出結果經比較,仿真結果與輸出信號理論值完全吻合。且波形基本沒有毛刺,設計完全符合設計要求。4.5 本章小結FIR濾波器的功能模塊的劃分,描述了各個功能模塊的具體設計,并給出其仿真波形。通過Quartus的仿真驗證,可以得到以下結論:(1

45、) 采用8輸入查找表進行分布式算法,設計了一個輸入8位,輸出8位的256階線性相位FIR濾波器,簡化了傳統的MAC設計。(2) 各模塊參數獨立于濾波器的結構,有較強的通用性,適于模塊化設計。(3) 利用VHDL設計,可重復配置FPGA,系統易于維護和擴展。5結論 隨著科學技術的發展,以FPGA為代表的新型可編程邏輯器件,具有靈活性、高速、高可靠性的特點,采用FPGA來實現FIR濾波器具有一定的先進性。FPGA的DSP解決方案為數字信號處理開創了新的領域,使得構造的數字信號處理系統能夠保持基于軟件解決方案的靈活性又能接近ASIC的性能,為設計人員開辟了廣闊、自由的發展空間,具有很好的應用前景16

46、-17。本文的主要工作如下:(1) 闡述了選題背景、研究的目的和意義與國內外研究狀況,以FIR濾波器的基本理論為依據,探討適應工程實際的數字濾波器的設計方法。(2) 對分布式算法進行了一些的討論,在闡述算法原理的基礎上,分析了利用FPGA特有的查找表結構完成這一運算的方法,解決了常系數乘法運算硬件實現問題。(3) 設計了一個FIR低通濾波器,說明FIR數字濾波器的具體實現方法,采用模塊化、參數化的設計思想,對整個FIR濾波器的功能模塊進行了劃分,以及各個功能模塊的具體設計與波形仿真。本文的主要結論如下:(1) 數字濾波器具有穩定性好、精度高、工作頻率范圍廣、體積小、功耗低等的優點,有限沖激響應

47、(FIR)數字濾波器因其具有嚴格的線性相位特性而得到廣泛應用。(2) 分布式算法是實現常系數乘累加運算的高效方法,利用FPGA的查找表結構,能綜合考慮系統的運行速度的要求。(3) 可編程門陣列發展日新月異,除了運行速度大大提高,采用嵌入式處理器核(如aletar的nios軟核和ARM硬核),高達10M字節的片上存儲器,千兆位級的串行收發器、硬連線的乘法器(如Viertxll嵌入的18位乘法器能提供高達六千億次的乘法累加次數)等。通過在大規模可編程器件中嵌入高性能處理器、存儲器和高速FO,FPGA很快就進化為可編程系統器件。本人認真進行了本課題的研究并完成了本論文,由于時間和水平有限,沒有制作出

48、實際電路來進行濾波效果測試,而且論文中可能出現錯誤和不足之處,敬請大家批評指正。參考文獻1 李文剛. 基于FPGA的高速高階FIR濾波器設計D. 電子科技大學碩士學位論文,2005.2 李彬. FIR數字濾波器的FPGA實現技術研究D. 西南交通大學碩士學位論文,2007.3 武曉春. FIR數字濾波器的MATLAB設計 J. 甘肅科技縱橫, 2005,34(1): 2122.4 雷學堂, 徐火希. 基于MATLAB的FIR數字高通濾波器分析和設計 J. 長春大學學報, 2006,16(5):3437.5 賈宇然, 李紅霞, 應建華, 鄒雪城. 一種用于光盤伺服控制系統的通用濾波器的設計J.

49、電子技術應用, 2003,29(4):4246.6 冉茂華. 基于DSP的FIR數字濾波器的設計D. 武漢理工大學碩士學位論文, 2006.7 任愛鋒,初秀琴,常存,等基于FPGA的嵌入式系統設計M,西安:西安電子科技大學出版社,20048 張維良,郭興渡,潘長勇高速FIR濾波器的流水線結構電視技術,2002。(2):5760.9 王新剛,楊家瑋. 李建東,基于FPGA高效實現FIR濾波器的研究J,西安電子科技大學信息科學研究所,2006.10 趙金憲,吳三,王乃飛.基于FPGA并行分布式算法的FIR濾波器的實現M,(黑龍江科技學院電氣與信息工程學院,哈爾濱,2007.611 潘松,黃繼業,王國棟現代DSP技術西安:西安電子科技大學出版社,2003:16318612 Hartley RSub expression Sharing in Filters Using Canonic Signed Digital

溫馨提示

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

評論

0/150

提交評論