直接型FIR濾波器的fpga實現
FIR濾波器根據輸入資料速率的不同可分為序列結構、半並行結構和全並行結構。序列結構的FIR濾波器是將並行資料序列輸入,所需的DSP資源較少,但是資料吞吐率較低;而全並行結構的FIR濾波器資料是並行輸入,濾波係數的個數就決定了所需DSP資源的個數,資源耗用較多,但是吞吐率可以做到很大。在大多數應用中,如無線數字中頻處理,所需資料吞吐率一般都較高,因此採用的是全並行結構的FIR濾波器。
全並行FIR濾波器根據實現結構不同可分為:直接型(Transverse)、轉置型(Transpose)和脈動型(Systolic),這一節主要講解直接型FIR濾波器設計。
(一)直接型
直接型FIR濾波器在上一節中也有介紹,如圖1所示,資料x(n)移入並寄存,如果有11個抽頭,因此直接型FIR濾波器需要11個乘加模組。
圖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中實現。
圖2
加法樹實現:
直接型FIR濾波器的一般實現方法關鍵路徑中有較多級的加法器,所有加法器延時累加後導致關鍵路徑延時較大,對整個FIR濾波器的效能造成了很大影響。為了解決加法器延時累加的問題,可採用加法樹結構,如圖3所示為採用了加法數的直接型FIR濾波器結構,這種層次化的樹型結構,使加法器邏輯由級聯結構轉化成並行結構,這樣整個路徑的延時減小。
圖3
流水線實現:
雖然直接型FIR濾波器採用加法樹結構後優化了關鍵路徑,但是時序還是不夠理想,因為關鍵路徑上至少有一個乘法器和一個加法器的延時,如果想竟可能的優化時序,可以分隔乘法器和加法器邏輯,中間加一級暫存器,即採用流水線實現。
那如何有效地分割邏輯呢?可以在圖3中加法樹結構的基礎上分割,在原先的關鍵路徑上,乘法器延時3.001ns,加法器延時1.219ns,因此可以將邏輯分割成如下**:
第1級:乘法器
第2級:2級加法器
第3級:3個數累加即2級加法器
如圖4所示為流水線實現的FIR濾波器,邏輯分割後的關鍵路徑是乘法器那一級,理論分析得到的延時只有3.001ns,如果時鐘約束到250MHz可滿足時序要求。
圖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中完成,這樣大大縮短了資料路徑的延時,有利於時序收斂。
圖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中的累加器實現了。
圖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個係數描述,通常需
【 FPGA 】FIR濾波器的取樣速率與系統時鐘速率不同時的資源消耗分析
目錄 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濾波器,下面是我的任
【 FPGA 】FIR 濾波器之濾波器的係數資料(Filter Coefficient Data)
Filter Coefficient Data 濾波器係數使用副檔名為.coe的係數檔案提供給FIR編譯器。 這是一個ASCII文字檔案,帶有單行標題,用於定義用於係數資料的數字表示的基數,後跟係數值本身。 對於N抽頭濾波器,如圖3-36所示。 濾波器係數可以以整數的
【 FPGA 】FIR 濾波器之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.
【 FPGA 】FIR 濾波器之 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
【 FPGA 】FIR 濾波器之 Hilbert Transform 的係數資料(Filter Coefficient Data)
Hilbert Transform The impulse response for a 10-term approximation to a Hilbert transformer is show
【 FPGA 】FIR 濾波器之 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
【 FPGA 】FIR濾波器之 多個係數集問題以及 使用非整數實數的係數規範問題
多個係數集 對於多係數過濾器,單個.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−1anz−n(1) 從(1)式中,可以看出,H(z)H(z)
教程——基於HLS實現FIR濾波器
注:本博文所需工程下載連結:http://download.csdn.net/detail/lzy272942518/8863107 1.FIR濾波器簡介 FIR(Finite Impulse Response)濾波器:有限長單位衝激響應濾波器,又稱為非遞迴型濾波器,是數字