天天看點

【 FPGA 】FIR 濾波器之多相插值器(Polyphase Interpolator)

多相插值濾波器将一組 N 個原濾波器系數 

【 FPGA 】FIR 濾波器之多相插值器(Polyphase Interpolator)

,映射為P個多相子濾波器

【 FPGA 】FIR 濾波器之多相插值器(Polyphase Interpolator)

,轉換的公式上上篇博文:多相抽取器使用的公式一緻,如下:

【 FPGA 】FIR 濾波器之多相插值器(Polyphase Interpolator)
【 FPGA 】FIR 濾波器之多相插值器(Polyphase Interpolator)

i從0到 P-1.

圖3-27顯示了多相插值濾波器結構,該選項實作了計算效率高的1-to-P插值濾波器。

【 FPGA 】FIR 濾波器之多相插值器(Polyphase Interpolator)

每個新的輸入采樣x(n)同時并行送入P個多相子濾波器,同時得到P個輸出采樣,每個多相子濾波器輸出一個采樣送到濾波器輸出端口,輸出端口從第一個多相子濾波器開始依次選擇多相子濾波器的輸出。由于輸入采樣是同時并行送入每個多相子濾波器的,是以多相插值濾波器的輸出采樣速率是輸入資料采樣速率的P倍。相對于較高的輸出采樣速率,多相子濾波器工作在比較低的頻率上(對于輸入采樣速率),同樣,在每個輸出點上有N個操作。

公式就懶着打了,給出英文描述:

【 FPGA 】FIR 濾波器之多相插值器(Polyphase Interpolator)

(a) 利用對稱性實作多相插值器

當應SMAC(見博文:【 FPGA 】FIR 濾波器的架構解釋了SMAC為實作FIR濾波器的一種架構)實作插值濾波器時,可以用對稱性技術實作系數對稱處理。具體方法是通過在子濾波器系數的基礎上加上和減去兩個響應的非對稱相位來得到包含對稱系數的兩個新相位。

不好了解,下面用例子說明:

假設在一個抽頭數為15的濾波器,濾波器系數如下,對該濾波器進行3倍插值,得到3個子濾波器,系數分别為:

【 FPGA 】FIR 濾波器之多相插值器(Polyphase Interpolator)

可見,第一個和第三個子濾波器是不對稱的,應用對稱性技術,經過簡單的加法和減法運算對兩個濾波器系數進行處理得到:

【 FPGA 】FIR 濾波器之多相插值器(Polyphase Interpolator)

這樣,h0為對稱,而h2為負對稱的。經過這樣處理之後,實作這些子濾波器時就可以利用其對稱性來節省資源。在輸出端,第一個子濾波器的輸出和第3個子濾波器的輸出經過相加和相減運算後再乘以0.5就得到了原始濾波器的輸出,如下圖:

【 FPGA 】FIR 濾波器之多相插值器(Polyphase Interpolator)

注:當用奇數個對稱系數插值為2時,由于得到的多相子濾波器是對稱的,是以不需要這種技術。

(b) 系數填充

關于系數填充的話題在博文中:【 FPGA 】FIR 濾波器結構和優化(二)也曾講到過,那是對于使用MAC架構設計對稱系數濾波器時提出的一種優化方案。這裡的系數填充大同小異,隻不過是應用到了具體的情況而已。

在對稱濾波器基礎上進行插值,如果速率和濾波器抽頭數的組合導緻子濾波器的系數個數不一緻,則濾波器系數的重新組織将可能使濾波器的相位響應發生變化,即結果得到的沖激響應移位了若幹個輸出采樣。

例如:對抽頭數為14的濾波器進行4倍插值,則需要有16個抽頭才合理,這樣的話,我們就需要在系數矢量的前面補充一個零,在系數矢量的後面也補充一個零系數,進而保證子濾波器系數的對稱性,但結果是濾波器的相位響應發生了變化。避免出現相位響應變化的方法是要麼強制濾波器以非對稱的結構實作,要麼用能支援所選實作結構的額外系數來實作。下面給出了一些擴充到較大濾波器的例子:

繼續閱讀