1. 程式人生 > >直接型FIR濾波器的fpga實現

直接型FIR濾波器的fpga實現

FIR濾波器根據輸入資料速率的不同可分為序列結構、半並行結構和全並行結構。序列結構的FIR濾波器是將並行資料序列輸入,所需的DSP資源較少,但是資料吞吐率較低;而全並行結構的FIR濾波器資料是並行輸入,濾波係數的個數就決定了所需DSP資源的個數,資源耗用較多,但是吞吐率可以做到很大。在大多數應用中,如無線數字中頻處理,所需資料吞吐率一般都較高,因此採用的是全並行結構的FIR濾波器。

  全並行FIR濾波器根據實現結構不同可分為:直接型(Transverse)、轉置型(Transpose)和脈動型(Systolic),這一節主要講解直接型FIR濾波器設計。

  (一)直接型

  直接型FIR濾波器在上一節中也有介紹,如圖1所示,資料x(n)移入並寄存,如果有11個抽頭,因此直接型FIR濾波器需要11個乘加模組。

  FIR

  圖1

  FPGA實現時,直接採用上圖中結構,不對中間資料寄存,則關鍵路徑是x(n)h(0)+x(n-1)h(1)…x(n-N+1)h(N-1),以階數10的FIR濾波器為例,如下為抽頭係數:

  coe_0 = -1241

  coe_1 = -650

  coe_2 = 1300

  coe_3 = 4739

  coe_4 = 8126

  coe_5 = 9544

  coe_6 = 8126

  coe_7 = 4739

  coe_8 = 1300

  coe_9 = -650

  coe_10 = -1241

  資料輸入時打了一拍,輸出時打了一拍。綜合後結果如下:

  Number of Slice Registers: 2

  Number of Slice LUTs: 19

  Number of DSP48E1s: 11

  關鍵路徑中資料路徑延時報告如圖2所示,資料路徑延時包括乘法器延時Tdspcko PCOUT AREG MULT (3.001ns)+ 10個級聯加法器延時Tdspdo PCIN PCOUT(1.219),資料路徑延時總共15.017ns,因此fmax最大不過66.273MHz。可以發現綜合器自動將乘法器和加法器在 DSP48E1中實現。

  FIR

  圖2

  加法樹實現:

  直接型FIR濾波器的一般實現方法關鍵路徑中有較多級的加法器,所有加法器延時累加後導致關鍵路徑延時較大,對整個FIR濾波器的效能造成了很大影響。為了解決加法器延時累加的問題,可採用加法樹結構,如圖3所示為採用了加法數的直接型FIR濾波器結構,這種層次化的樹型結構,使加法器邏輯由級聯結構轉化成並行結構,這樣整個路徑的延時減小。

  FIR

  圖3

  流水線實現:

  雖然直接型FIR濾波器採用加法樹結構後優化了關鍵路徑,但是時序還是不夠理想,因為關鍵路徑上至少有一個乘法器和一個加法器的延時,如果想竟可能的優化時序,可以分隔乘法器和加法器邏輯,中間加一級暫存器,即採用流水線實現。

  那如何有效地分割邏輯呢?可以在圖3中加法樹結構的基礎上分割,在原先的關鍵路徑上,乘法器延時3.001ns,加法器延時1.219ns,因此可以將邏輯分割成如下**:

  第1級:乘法器

  第2級:2級加法器

  第3級:3個數累加即2級加法器

  如圖4所示為流水線實現的FIR濾波器,邏輯分割後的關鍵路徑是乘法器那一級,理論分析得到的延時只有3.001ns,如果時鐘約束到250MHz可滿足時序要求。

  FIR

  圖4

  實際得到綜合結果如下:

  Number of Slice Registers: 105

  Number of Slice LUTs: 124

  Number of DSP48E1s: 11

  Minimum period: 3.037ns{1} (Maximum frequency: 329.272MHz)

  fmax能達到329.272MHz,延時基本與預期的差不多,FIR濾波器能達到這樣的效能基本能滿足大多數應用了。

  線性相位FIR濾波器:

  FIR濾波器有一特徵:線性相位,直接表現在抽頭係數上,抽頭係數為偶對稱或者奇對稱,在這節例項中,係數是偶對稱的,即 h(0)=h(10),h(1)=h(9),h(2)=h(8),h(3)=h(7),h(4)=h(6),直接型FIR結構優化後如圖5所示,輸入資料在與係數相乘之前,因係數對稱,可以先將相同係數對應的資料進行預加操作,然後再與係數相乘,如此做法的好處是是乘法器資源減少了近一半,此例中DSP資源由原先需要11個到現在只需6個。而且,在Xilinx FPGA中的DSP48E1資源專門為線性相位FIR濾波器應用提供了預加pre-adder結構,即預加和乘法都可以在1個DSP48E1中完成,這樣大大縮短了資料路徑的延時,有利於時序收斂。

  FIR

  圖5

  實際得到綜合結果如下:

  Number of Slice Registers: 184

  Number of Slice LUTs: 173

  Number of DSP48E1s: 6

  Minimum period: 2.854ns{1} (Maximum frequency: 350.385MHz)

  fmax能達到350.385MHz,由於採用了加法樹結構,避免了加法器級聯延時,並且分了3級流水線實現。關鍵路徑資料延時報告如圖6所示,路徑是從 DSP48E1輸出端到dout_d,但是光從程式碼中看DSP48E1端到dout_d中間應該還有一級加法器的寄存,原來這個加法器採用了 DSP48E1中的累加器實現了。

  FIR

  圖6


相關推薦

直接FIR濾波器fpga實現

FIR濾波器根據輸入資料速率的不同可分為序列結構、半並行結構和全並行結構。序列結構的FIR濾波器是將並行資料序列輸入,所需的DSP資源較少,但是資料吞吐率較低;而全並行結構的FIR濾波器資料是並行輸入,濾波係數的個數就決定了所需DSP資源的個數,資源耗用較多,但是吞吐率可

T加速演算法fpga實現思想研究

用加法器實現T型曲線的理論分析   //  2017年12月28日     建立 by cofin   T型加速曲線公式:如下所示:   Vt = v0+at     

FPGA 】SMAC(脈動乘累加結構)FIR濾波器總結

先貼出來傳統的FIR濾波器實現結構作為後面的對比: 傳統的FIR濾波器的實現結構: (【 FPGA 】FIR濾波器開篇之傳統抽頭延遲線FIR濾波器實現介紹)                 &nbs

濾波器開篇,線性相位FIR濾波器FPGA實現

         可以看到,經濾波器濾波後,頻率為400hz的訊號被保留,時域訊號是完整的正弦波,有些朋友可能會說,怎麼會有失真呢?失真可能是有點,但是還是由於我們的取樣頻率不夠高,都是還原的波形不夠圓滑。還有人可能會說,根據時域取樣定理,不是取樣頻率大於2倍的訊號頻率就可以被還原成原始訊號嗎?但是我們這裡並

FIR數字濾波器FPGA實現(二)-序列FIR濾波器設計(1)

(二)FIR數字濾波器的FPGA實現-序列FIR濾波器設計 文章目錄 (二)FIR數字濾波器的FPGA實現-序列FIR濾波器設計 0 序列FIR濾波器基本原理 1 基於移位暫存器的序列 FIR 濾波器 1.1 基本理論

FPGA實現FIR濾波器

1、FIR濾波器總體設計 本設計是基於FPGA實現一個8階的FIR數字低通濾波器。本次設計首先利用MATLAB中的FDAtool工具設計出一個取樣頻率為5KHZ、截止頻率為1KHZ的FIR低通濾波器,通過FDAtool匯出8點係數,然後將係數進行放大、取整,以便於在FPGA

FIR濾波器FPGA實現

  在時域中,FIR濾波器的輸入/輸出就是一個輸入訊號與單位脈衝相應的卷積。離散方程為y(n)=x(n)*h(n)=∑x(k)h(n-k)=∑h(k)x(n-k),其中y(n)為濾波輸出,x(n)為取樣資料,h(n)為濾波抽頭係數.設計FIR濾波器就是要找到N個係數。N-1階濾波器通常需要N個係數描述,通常需

FPGAFIR濾波器的取樣速率與系統時鐘速率不同時的資源消耗分析

目錄   MATLAB操作 Vivado操作 MATLAB操作 在matlab中命令視窗中輸入:filterDesigner,設計如下引數的帶通濾波器; 在左側第三個功能設定:Set quantization parameters,選擇Filter

Vivado HLS實現FIR濾波器(2)——Vivado呼叫HLS生成的FIR IP核

系統框圖 器件xq7a50tfg484-2I,兩個DDS,輸入時鐘100MHz,輸出分別為8MHz和12MHz,位寬為16位,相乘後輸出位寬32位,三角函式積化和差得4MHz訊號和20MHz訊號,濾波器設計採用Filter Solutions 2015,截止頻率10MHz,取樣率10

Vivado HLS實現FIR濾波器(1)——使用官方C程式碼實現FIR

使用官方C程式碼實現FIR 參考資料: 不同點說明 程式結構 C語言程式碼 模擬綜合 參考資料: 教程——基於HLS實現FIR濾波器https://blog.csdn.net/LZY27

基於HLS實現FIR濾波器--轉載我之前的blog的內容

  受人之拖要做個HLS的高階綜合,找了半天,一開始打算做一個FFT,但是一同操作下來,發現難度太大了,回來做一個簡單的硬體的矩陣相乘,發現難度太低,老師不答應做,於是挑了一個FIR濾波器,於是有開始拾起本科時學的濾波器原理,發現好多都忘記了因此接來下就做一個FIR濾波器,下面是我的任

FPGAFIR 濾波器濾波器的係數資料(Filter Coefficient Data)

Filter Coefficient Data 濾波器係數使用副檔名為.coe的係數檔案提供給FIR編譯器。 這是一個ASCII文字檔案,帶有單行標題,用於定義用於係數資料的數字表示的基數,後跟係數值本身。 對於N抽頭濾波器,如圖3-36所示。 濾波器係數可以以整數的

FPGAFIR 濾波器之Single-rate FIR濾波器的係數資料(Filter Coefficient Data)

首先要明確什麼是單速率 FIR 濾波器? The basic FIR filter core is a single-rate (input sample rate = output sample rate) finite impulse response filter.

FPGAFIR 濾波器之 Half-band Filter 的係數資料(Filter Coefficient Data)

Half-band Filter As previously described, every second filter coefficient for a half-band filter with an odd number of terms is zero. Whe

FPGAFIR 濾波器之 Hilbert Transform 的係數資料(Filter Coefficient Data)

Hilbert Transform The impulse response for a 10-term approximation to a Hilbert transformer is show

FPGAFIR 濾波器之 Interpolated Filter 的係數資料(Filter Coefficient Data)

Interpolated Filter  A previous section explained that an IFIR filter is similar to a conventional FIR, but with the unit delay operator

FPGAFIR濾波器之 多個係數集問題以及 使用非整數實數的係數規範問題

多個係數集 對於多係數過濾器,單個.coe檔案用於指定係數集。 每個係數集應附加到前一組係數。 例如,如果設計了一個2係數集,10抽頭對稱濾波器, 係數集#0為:coefdata = -1,-2,-3,4,5,5,4,-3,-2 ,-1; 和係數集#1是: coef

CIC濾波器FPGA實現

CIC濾波器 CIC濾波器是用不同抽樣頻率進行數字訊號處理的一種FIR濾波器。主要用於數字訊號的抽取和內插。 CIC濾波器由一對或多對積分-梳狀濾波器組成,在抽取CIC中,輸入訊號依次經過積分、降取樣,以及與積分環節數目相同的梳狀濾波器。在內插CIC中,輸入訊號

FIR濾波器實現全通特性的充要條件——理論推導

對於FIR數字濾波器,可設其系統函式為 (1)H(z)=∑n=0N−1anz−n H(z)=\sum_{n=0}^{N-1} a_n z^{-n} \quad \tag{1} H(z)=n=0∑N−1​an​z−n(1) 從(1)式中,可以看出,H(z)H(z)

教程——基於HLS實現FIR濾波器

注:本博文所需工程下載連結:http://download.csdn.net/detail/lzy272942518/8863107 1.FIR濾波器簡介 FIR(Finite Impulse Response)濾波器:有限長單位衝激響應濾波器,又稱為非遞迴型濾波器,是數字