基于FPGA的分布式算法FIR濾波器的設計實現(xiàn)-設計應用_第1頁
基于FPGA的分布式算法FIR濾波器的設計實現(xiàn)-設計應用_第2頁
基于FPGA的分布式算法FIR濾波器的設計實現(xiàn)-設計應用_第3頁
基于FPGA的分布式算法FIR濾波器的設計實現(xiàn)-設計應用_第4頁
基于FPGA的分布式算法FIR濾波器的設計實現(xiàn)-設計應用_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

精品文檔-下載后可編輯基于FPGA的分布式算法FIR濾波器的設計實現(xiàn)-設計應用基于FPGA的分布式算法FIR濾波器的設計實現(xiàn)中南大學信息與控制工程學院王學梅吳敏FIR介紹

在許多信息處理過程中,如對信號的過濾、檢測、預測等,都要廣泛地用到濾波器,數(shù)字濾波器是數(shù)字信號處理中使用廣泛的一種方法,實現(xiàn)方法主要有IIR濾波器(無限沖激響應數(shù)字濾波器)和FIR濾波器(有限沖激響應數(shù)字濾波器)兩種,其中,IIR濾波器需要執(zhí)行無限數(shù)量卷積,能得到較好的幅度特性,其相位特性是非線性的;而FIR濾波器由有限個采樣值組成,具有嚴格的線性相位特性。由于在數(shù)據(jù)通訊、語音信號處理、圖像處理等傳輸過程中不能有明顯的相位失真,而FIR濾波器在滿足一定對稱條件下可以實現(xiàn)IIR濾波器難以實現(xiàn)的線性相位,因而得到廣泛應用。FIR濾波器的數(shù)學表達式可用K階內(nèi)積來表示:

公式(略)

其中:

K:FIR濾波器的抽頭數(shù);

h(k):第k級抽頭系數(shù)(單位脈沖響應);

x(n-k):延時k個抽頭的輸入信號。

FIR濾波器的單位脈沖響應h(k)均為實數(shù),在幅度上只要滿足下列兩個條件之一,就能構成線性相位FIR濾波器。式(2)稱為類線性相位的幅度條件(偶對稱),式(3)稱為第二類線性相位的幅度條件(奇對稱)。

(k)=h(K-1-k)(2)

h(k)=-h(K-1-k)(3)

FIR濾波器基本的結構是直接型,如圖1所示??梢钥闯?,F(xiàn)IR濾波器是由一個"抽頭延遲線"的加法器和乘法器的集合構成,每個乘法器的操作數(shù)就是一個FIR系數(shù)。對每次采樣y(n)都要進行K次連續(xù)的乘法和(K-1)次加法操作,能夠提供這種算法性能的高性能硬件平臺對大多數(shù)信號處理設計者來說都有很大的吸引力。

在濾波運算中,目前實現(xiàn)可采用兩種方法:軟件實現(xiàn)和硬件實現(xiàn)。軟件實現(xiàn)是利用計算機把濾波器所要完成的運算編成程序通過計算機來執(zhí)行。國內(nèi)外的研究機構、公司已經(jīng)推出了不同語言的信號處理軟件包。但軟件實現(xiàn)方法較慢,難以實時處理,主要用于教學和科研。硬件主要采用MCU(單片機)、DSP(數(shù)字信號處理器)和ASIC(專用集成電路)來實現(xiàn)。其中,單片機速度較慢;ASIC雖然性能良好,但靈活性差,只能實現(xiàn)一些特殊的功能;軟件編程的DSP是一個典型的執(zhí)行連續(xù)數(shù)學運算處理的可配置的信號處理硬件,目前應用較廣。但是,DSP的串行指令執(zhí)行方式,使其工作速度和效率大打折扣。因此,在一些高速應用中,系統(tǒng)性能不斷增長,而DSP性能的提高卻落后于需求的增長,從而產(chǎn)生了對新的數(shù)字信號處理實現(xiàn)方式的需求。

DA算法介紹

分布式算法(DistributedArithmetic,DA)早在1973年就已經(jīng)被Croisier提出來,由Peled和Liu進行了推廣工作。直到現(xiàn)場可編程門陣列(FieldProgrammableGateArray,FPGA)的查找表(LookUpTable,LUT)結構的出現(xiàn),這種算法才重新受到重視,其主要原理如下。

為了分析簡單起見,將FIR濾波器的表達式(1)改寫為:

公式(略)

公式(略)

其中,x_{ab}表示x_{k}的第b位,x_{k}即x的第k次采樣,則y可表示為:

公式(略)

改變式(6)的求和次序,結果可表示為:

公式(略)

可以看出,分布式算法是一種以實現(xiàn)乘加運算為目的的運算方法,與傳統(tǒng)的乘累加運算不同在于執(zhí)行部分積運算的先后順序不同,這個過程可用圖2的結構來實現(xiàn)。該算法可以利用一個查找表(LUT)實現(xiàn)映射,即用一個2K字寬(即2K行)、預先編好程序的LUT接受一個K位輸入向量xb=[x0b,x1b,…,x(K-1)b]的映射,經(jīng)查找表的查找后直接輸出部分積table_out(b)=\sum_{k=0}^{K-1}h_{k}x_{kb}。算法中的乘以位權2b可以通過圖中的寄存器和累加器完成。這個過程可以用遞規(guī)表達式表示成式(8),在執(zhí)行了B次查找和B次累加后輸出結果。

公式(略)

上面所介紹的是輸入序列為無符號數(shù)的DA算法,在實際使用中,對于有符號數(shù),一般用補碼來表示,有效位是符號位用來區(qū)分正數(shù)和負數(shù)的。只要將圖2中的累加器修改為帶有加減控制的累加器即可,當符號位是“0”時,位進行加運算,反之進行減運算。

DA算法的FPGA實現(xiàn)

FPGA的特點

DA算法的計算需要一系列的查表、加減法運算,F(xiàn)PGA是物理級編程結構的可編程邏輯器件,其基本結構由4輸入的查找表構成,如Altera公司的FLEX10K器件中的基本邏輯單元(LogicElement,LE)包含一個4輸入查找表,而且它的嵌入式陣列塊(EmbeddedArrayBlock,EAB)是一個2048位的可配置RAM,可將其配置成只讀模式,生成一個更大的查找表,相對于串行運算為主導的通用DSP芯片來說,F(xiàn)PGA的并行度和可擴展性都很好,逐漸成為構造可編程的高性能算法結構的新選擇。

設計實現(xiàn)

下面以Altera公司的FLEX10K為例說明分布式算法FIR濾波器的設計方法。

設計指標及參數(shù)提取

設計指標

設計一個16階的FIR濾波器,采樣頻率fS=2.5MHz,通帶截止頻率fC=200KHz,輸入數(shù)據(jù)寬度8位,濾波器系數(shù)寬度16位,輸出數(shù)據(jù)寬度20位。參數(shù)提取

采用漢明窗(Hamming)設計,用Matlab仿真計算其單位取樣響應

h(k),并將其放大216倍,即乘65536后得到用二進制補碼表示的h(k)

h(0)=h(15)=(-143)10=(FF71)16,h(1)=h(14)=(-53)10=(FFCB)16,

h(2)=h(13)=(353)10=(0161)16,h(3)=h(12)=(1548)10=(060C)16,

h(4)=h(11)=(3751)10=(0EA7)16,h(5)=h(10)=(6658)10=(1A02)16,

h(6)=h(9)=(9461)10=(24F5)16,h(7)=h(8)=(11191)10=(2BB7)16,

表分割法查找表的構成

如果濾波器的抽頭數(shù)過多,那么查找表字寬為2K,查找表的規(guī)模隨抽頭數(shù)的增加成指數(shù)級增長,因此抽頭數(shù)較多時用單個查找表是不能執(zhí)行全字運算的,要想辦法進行查找表的分割。本設計中,由于濾波器具有偶對稱結構,可以將16階降為8階,但仍需構成8輸入的查找表(字寬為28=256)。我們可以從兩個方面考慮進行查找表分割,一是減小查找表的規(guī)模;一是提高DA算法的速度。

為了縮小查找表的規(guī)模,可以將大LUT分割為一些小的LUT,由于FIR濾波器是線性濾波器,因此低階濾波器輸出可以相加,并且由此定義一個高階濾波器的輸出。我們可以把8輸入的查找表分割成兩個并行的4輸入查找表,圖3所示。依此類推,可以將更大LUT分割為多個小LUT,如果加上流水線,這一結構的改變并不會降低速度,卻可以大大減小設計規(guī)模,本設計采用這種方法。

另外,也可以采用另一種方法提高計算速度,就是將輸入字段分割成K個子字段,然后并行處理這些子字段,這種完全流水的并行結構如圖4所示。計算速度將隨著表的分割多少而翻多少番,但這一方法需要K倍的查找表,從而導致存儲需求大和成本的直線上升。在實際中可以將這兩種方法結合起來,兼顧系統(tǒng)的資源和性能,以達到。

總體結構

根據(jù)系統(tǒng)性能指標,設計該系統(tǒng)的總體結構如圖5,其中:x(n)是輸入序列,y(n)是輸出序列,clk0是采樣時鐘,clk是算法時鐘,reset是復位信號。

各模塊的主要功能是:

移位寄存器:將輸入序列x(n)通過移位寄存器改為并行輸入;

優(yōu)化模塊:根據(jù)FIR濾波器h(n)的對稱特性將濾波器降階,完成輸入求和x(k)+x(K-1-k),對于本例中的16抽頭濾波器,即完成x(0)+x(15),x(1)+x(14),……,x(7)+x(8);

乘法模塊:用查找表的方法實現(xiàn)乘法運算。將8輸入查找表分割成兩個并行的4輸入查找表分別運算,減小查找表的規(guī)模;

加法器:將2個DA算法的結果相加,得到輸出y(n)。

設計結果

本文設計的濾波器采用EPF10K30RC240-3器件,在QuartusII下進行仿真,設輸入序列為無符號數(shù)x(n)=[0,2,0,0,4,1,0,3,2,1,1,4,0,1,1,2],仿真輸出依次為y(n)=[-286,-106,706,2524,……,-286],波形如圖6所示。圖中,F(xiàn)FEE2為-286的二進制補碼,其他數(shù)據(jù)相同。表1是輸出序列y(n)仿真結果與Matlab計算值的對比(數(shù)據(jù)放大了65536倍),結果誤差4‰,主要是由于有限精度算法引起的。通過驗證,系統(tǒng)運行速度53.76MHz,采樣頻率達3MHz,占用LC:617個,占全部資源的35%,達到了設計要求。

表1:系統(tǒng)仿真結果與同Matlab計算值對照

結束語

分布式算法是一種利用查找表將固定系數(shù)的乘累加轉(zhuǎn)換為查表操作,本設計的FIR濾波器通過了電路驗證,符合設計要求,現(xiàn)總結如下:

①采用4輸入查找表進行分布式算法的設計,簡化了傳統(tǒng)的MAC設計;

②采用表分割法進行LUT分割,縮小了LUT規(guī)模,當實現(xiàn)更高階的FIR時,可綜合采用兩種分割方法;

③LUT的參數(shù)獨立于濾波器的結構,有較強的通用性,適于模塊化設計;

④利用VHDL設計,可重復配置FPGA,降低成本,開發(fā)周期較短,系統(tǒng)易于維護和擴展。

長期以來,F(xiàn)PGA一直被用于邏輯或時序控制上,很少用于信號處理方面,主要原因是FPGA中沒有直接的硬

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論