中文字幕无码日韩视频无码三区

用于fpga的高速高階fir濾波器的頻域實現方法

文(wen)檔序號:9250815閱讀:571來源:國知(zhi)局
用于fpga的高速高階fir濾波器的頻域實現方法
【技術領域】
[0001] 本發明涉及離散信號處理技術領域,特別涉及一種用于FPGA的高速高階FIR濾波 器的頻域實現方法。
【背景技術】
[0002] 在數字信號處理系統中,FIR(Finite Impulse Response)濾波器是最基本的單 元。由于其嚴格的線性相頻特性和穩定的系統,FIR成為許多領域處理數據的主要手段。隨 著電子技術的發展,信號采樣頻率不斷提高,在高速采樣下,基于乘法器結構的FIR濾波器 和基于分布式算法的FIR濾波器在FPGA中雖然能進行快速的流水線實時處理,但像脈沖壓 縮技術類似FIR濾波器,其階數成千上萬,對FPGA資源消耗太大。
[0003] 快速傅立葉變換(FFT)是一種能實現這種高階FIR濾波器且消耗資源相對較小的 方法。傅立葉變換方法設計原理如下:
[0004] FIR濾波器的本質就是有限長序列與無限長序列的線性卷積,線性卷積頻域表達 式為:
[0005] y(n) =x(n)*h(n)=IFFT{FFT[x(n)]XFFT[h (n)]}
[0006] 其中,*代表離散線性卷積關系,y(n)為輸出序列,x(n)為輸入序列,h(n)為濾波 器沖擊響應。FFT方法實現卷積流程圖如圖1 :為長度N的輸入序列和長度M的沖擊響應分 別補M-I個0和N-I個0,將長度均補成L=M+N-1,從而與卷積輸出序列等長(長度為M 和N的序列卷積輸出的序列長度為M+N-1)。然后對補零后長度均為L的輸入序列和沖擊響 應分別做FFT運算轉到頻域,接著將輸入序列和沖擊響應的頻譜相乘,再做IFFT運算(逆 變換)便可得到長為L的卷積結果。在實際應用中,序列x(n)長度很長,做FFT和IFFT需 要很大的點數,而硬件資源有限,不能對過長的數據進行FFT。所以一般將數據X(n)分段成 多個長度為N的有限長子序列集Xm (k),那么x(n)可以表示為:

[0014] 其中,ym(k)ihJkhx-GO。所求的線性卷積分成了無限個長度均為N+M-1的短 長度線性卷積的和,ym(k)和ym+1(k)之間會有一個范圍為mN<n<mN+M-2的M-I個樣本 重疊。
[0015] 顯然,基于上述原理的FFT方法可以顯著降低FPGA資源的消耗。但是,補零部分 一方面耗費時間,降低處理速度,另一方面形成延時間隔,造成數據無法實時處理。這使得 降低資源消耗和提高處理速度難以兼得。

【發明內容】

[0016] 為了解決上述問題,本發明的目的在于提供一種用于FPGA的高速高階FIR濾波器 的頻域實現方法,對現有的FFT方法進行改進,以解決降低FPGA資源消耗和提高處理速度 難以兼得的問題,即:一方面降低高階高速情況下對FPGA資源的消耗,另一方面提高處理 速度以實現實時處理。
[0017] 上述目的是通過如下技術方案實現的:
[0018] 一種用于FPGA的高速高階FIR濾波器的頻域實現方法,所述方法包括:
[0019] 步驟A:確定FIR濾波器的沖擊響應h(n)長度為M,將輸入FIR濾波器的數據序列x(n)分段成多個長度為N的分段序列,設定沖擊響應h(n)和分段序列進行FFT的點數為 2N,其中,N= 21,i為正整數;使M=N+1,如M長度不足用零補足;
[0020] 步驟B:對沖擊響應h(n)進行點數為2N的FFT運算得到沖擊響應頻譜H(k),將分 段序列劃分為奇數段和偶數段,利用乒乓操作將奇數段分段序列和偶數段分段序列分別補 N個零后輸入兩個FFTIP核進行點數為2N的FFT運算,得到時序相差N個時鐘、長度為2N 的奇數段分段序列頻譜和偶數段分段序列頻譜,然后分別將奇數段分段序列頻譜和偶數段 分段序列頻譜與沖擊響應頻譜H(k)相乘;
[0021] 步驟C:將奇數段分段序列頻譜和偶數段分段序列頻譜與沖擊響應頻譜H(k)的乘 積分別輸入到兩個IFFTIP核,分別獲得長度為2N的奇數段卷積和偶數段卷積;
[0022] 步驟D:將奇數段卷積結果和偶數段卷積結果相加,得到FIR濾波器的輸出信號。
[0023]FFT和IFFT運算的點數為每個序列分段長度N的兩倍,階數為N+1;如果階數不滿 足,需要將階數添零到N+1個。
[0024] 進一步地,所述步驟B中,先將沖擊響應h(n)補零至2N長度,再進行點數為2N的 FFT運算。
[0025] 進一步地,所述步驟B中,點數為2N的FFT運算結果存入到RAM中,RAM使用寫優 先模式。由于沖擊響應先進入FFT模塊,所以輸出的數據先進入兩個RAM中,RAM使用寫模 式,進入的數據無需傳完便可讀取。
[0026] 進一步地,所述步驟B中,按第1、3、5……個分段序列依次進入第一個FFTIP核進 行點數為2N的FFT運算,按第2、4、6……個分段序列依次進入第二個FFTIP核進行點數為 2N的FFT運算;第1個(長度為N的)分段序列輸入進第一個FFTIP后補N個0,補零同 時,第2個(長度為N的)分段序列開始輸入進第二個FFTIP,輸入后補N個0,補零同時, 第3個長度為N的分段序列再輸入進第一個FFTIP并補N個0,如此依次將奇數段分段序 列和偶數段分段序列輸入,相鄰兩分段序列相差的時鐘周期始終為N。
[0027] 本發明的有益效果:
[0028] (1)本發明提供的用于FPGA的高速高階FIR濾波器的頻域實現方法不僅能降低 FPGA資源消耗,還能夠消除現有技術中的補零延遲現象,提高了處理速度,能實現實時處 理。
[0029] (2)本發明提供的FIR濾波器的頻域實現方案解決了高階情況下高速處理的資源 消耗的問題,優化硬件結構,且FIR濾波器的系數可配置。
【附圖說明】
[0030] 圖1:現有技術頻域實現兩個序列的線性卷積流程圖;
[0031] 圖2 :本發明提供的在FPGA中設計FIR濾波器的結構圖;
[0032]圖3:本發明提供的是輸入信號的具體時序圖;
[0033] 圖4:本發明提供的分段卷積之后的輸出信號的時序圖;
[0034]圖5:本發明所使用的FFTIP核模塊示意圖。
【具體實施方式】
[0035] 為使本發明的目的、技術方案和優點更加清楚,下面將結合實施例和附圖對本發 明實時方案進一步的詳細描述。
[0036] 本發明提供一種用于FPGA的高速高階FIR濾波器的頻域實現方法,該方法對利用 頻域處理卷積運算時,由于補零耗時造成的數據無法實時處理這一問題進行了改進,將原 來利用一個FFTIP處理序列的常規方案改為利用兩個FFTIP對輸入的數據進行運算,序列 時序如圖3所示。該方法適用于系數為實整數或復整數的系統,適用于超高階系統,適用于 脈沖壓縮系統,適用于系數可配置的系統。
[0037] 下面以XILINX公司FPGA作為平臺來闡述本發明所述的技術方案。
[0038]FIR濾波器的本質就是有限長序列與無限長序列的線性卷積,即:
[0039]y(n) =x(n)*h(n) =IFFT{FFT[x(n) ]XFFT[h(n) ]}
[0040] 對無限長序列的卷積,將x(n)分段成多個長度為N的有限長子序列集xm(n)在頻 域上卷積,其中,沖擊響應h(n)長度為M=N+l;x
當前第1頁1 2 
網友詢問留言(yan) 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1