新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 用FPGA實現(xiàn)FIR濾波器

用FPGA實現(xiàn)FIR濾波器

作者: 時間:2017-06-06 來源:網絡 收藏
  你接到要求用實現(xiàn)的任務時,也許會想起在學校里所學的FIR基礎知識,但是下一步該做什么呢?哪些參數是重要的?做這個設計的最佳方法是什么?還有這個設計應該怎樣在中實現(xiàn)?現(xiàn)在有大量的低成本IP核和工具來幫助你進行設計,因為FIR是用實現(xiàn)的最普通的功能。

  基礎和主要參數

  也許你在聽課時不夠專注。這里做一個快速的復習,最簡單的形式是, FIR 濾波器的輸出 y(n)是求采樣數據x(n) 的N個輸入的平均值。 存儲的每個采樣稱為抽頭。 當然大多數設計都比這個復雜, 要提供優(yōu)化的濾波器 特性,要用系數乘 每個抽頭, 或者對 h(i) 進行加權。

本文引用地址:http://butianyuan.cn/article/201706/349407.htm
   圖1 典型的結構(完全并行)

  用于FIR濾波器的主要參數是通帶、阻帶、阻帶衰減和通帶波紋。對于某些應用,阻帶波紋也許是重要的和規(guī)定的。然而對大多數應用,阻帶衰減是適當的。還有輸入采樣率,以及與輸入數據分辨率一起的所要求的輸出采樣率。

  圖2 低通濾波器規(guī)范

  你也許只是接受任務,而由你自己選擇設計規(guī)范。當然應用項目定義了許多規(guī)范。這里有一些指導意見,幫助你縮小各種可能性,評估權衡設計。

  通常通帶越接近阻帶,設計就越具挑戰(zhàn)性。同樣,指定通帶很低的波紋,或者很高的阻帶衰減增加了設計的復雜性。必須牢記,指定波紋和衰減為數據的分辨率,你必須滿足設計要求。指定衰減的要點是小于輸入數據的最低位。同樣在滿標度中指定小于1位的通帶波紋是不必要的。如同其它的濾波器,F(xiàn)IR濾波器可構成低通、高通和帶通濾波器。

  表1 數據寬度相對于阻帶衰減和通帶波紋

  輸入至輸出的采樣率也會影響你的設計。在簡單的設計中,輸入速率和輸出速率是相等的。然而,在許多低通濾波器設計中,輸出以輸入的速率運行是不經濟的,因為傳輸信息不要求高的輸出率。取十分之一速率的FIR是合適的。其它要求較高輸出率的設計,則采樣內插FIR。


  進行設計

  選擇FIR濾波器的系數有兩種方法。Parks-McClellan方法(執(zhí)行Remez算法)和進行沖擊響應的窗口操作。窗口方法依賴于一個事實,要求頻率響應的離散Fourier反變換代表FIR濾波器的系數。理想的頻率響應用作起始點,于是應用窗功能減少系數的數目,成形頻率響應。通用的窗功能包括矩形、三角、Hanning、Hamming、Kaiser 和Blackman。

  沒有必要對數學進行深究,有許多免費的低成本工具幫助你進行設計。如果使用MATLAB,MathWorks有各種工具可用于FIR設計。如果你不用這些包,用Internet搜索“FIR濾波器設計工具”將展現(xiàn)一些免費的低成本工具。

  首先應做出采用哪種設計方法的決策。大多數設計者采用Park-McClellan 方法,因為設計輸入是濾波器的要求,這個方法通常滿足具有最少抽頭的濾波器要求。假設采用這個方法,你可以簡便地把要求輸入至所選的工具中。大多數設計工具會給出頻率響應、沖擊響應和濾波器系數。如果選擇窗口方法,只要做些實驗。要輸入截止頻率、窗口方法和抽頭數目至設計工具。于是設計工具會給出頻率響應。如果頻率響應不是你所要的,你可以改變輸入參數和迭代過程。

  因此,你已經用設計工具產生了系數,檢驗了頻率響應。那么現(xiàn)在是否可以移開這個工具,而在FPGA中實現(xiàn)這個設計呢?并非如此,還要考慮一些事情。首先要確定頻率響應,數據不是無限精確的。大多數設計工具讓你定義一個量化級別并觀察結果。倘若級別的精度是合理的,那就不需要做改動。然而,最好是現(xiàn)在發(fā)現(xiàn)這些問題而不是在實驗室。下一步是研究其它的濾波器設計,諸如Lth帶(或者Nyquist)濾波器,這些濾波器大約有一半的系數設置為0,因此減少了數學上的復雜性。

  在FPGA中實現(xiàn)設計

  你設置了系數之后,現(xiàn)在打算在FPGA中實現(xiàn)這個設計。再次要做出若干決定。首先是選擇實現(xiàn)乘法器單元的方法,決定它們能運行多快。通常有兩個選擇:用在FPGA內實現(xiàn)邏輯的查找表()來實現(xiàn)乘法器,或者用FPGA內的專用的單元。為了說明這些選擇,考慮LatticeECP2 FPGA系列,在這個FPGA內用sys塊實現(xiàn)一個18x18乘法器不占用,運行速度高于400MHz。用完成相同的功能其性能大約是100MHz,并要占用許多LUT。專門的塊擁有高速并使用少的LUT,通常選擇這個方法,除非你保留DSP塊準備留作它用。

  圖4 LatticeECP2 sysDSP塊

  接下來要做的事是決定使用多少個乘法器。對于最快的速度,乘法器的數目等于FIR濾波器中抽頭的數目。這種類型的濾波器完全用并行形式來實現(xiàn)。然而在許多情況下,并不需要性能的級別,允許乘法器時間共享。一種快速計算揭示了使用的乘法器的數目。首先做一個簡化,以采樣率除速度,你認為適中的復雜設計可以運行于所選的FPGA,然后對這個數進行四舍五入至最接近的整數。通過這個計算因子,可以減少乘法器的數目。作為一個例子,假設要在LatticeECP2 FPGA中實現(xiàn)12個抽頭,75MSPS,12位的濾波器。用這個器件,300MHz的濾波器比較容易實現(xiàn),減少因子為4,需要3個乘法器。

  在做出最后決定之前,要考慮最終的實現(xiàn)。例如,使用Lattice提供的FIR產生器,這個工具用sysDSP塊內的加法樹實現(xiàn)FIR濾波器。因為這個加法樹的范圍是4個乘法器,沒有有效的資源與指定的3個乘法器聯(lián)系在一起。此外,如果指定了4個乘法器,設計要求的工作速度會略有降低。

  表2 最大采樣率對比用于12個抽頭濾波器的乘法器

  現(xiàn)在有了系數,乘法器實現(xiàn)的方法,以及知道需要多少個乘法器。許多供應商,包括Lattice提供自動產生FIR的工具。最后一步是把系數輸入工具,指定乘法器的數目。產生濾波器之后要進行時序分析,確定是否假設的速度是正確的。在使用的例子中,工具報告了350MHz的最大速度,高于假設的300MHz。如果速度非常接近,你應該進行調整并再試。



關鍵詞: FIR濾波器 DSP LUT FPGA

評論


相關推薦

技術專區(qū)

關閉