文/胡青
為了能實現多速率輸出和降低硬件的開銷,可在確定抽取倍數的情況下,通過級聯組合的方式來完成不同階數SINC 濾波器的組合,進而完成多速率SINS 濾波器的設計同時,為了使輸出信號能將采樣間隔的多樣性體現出來,減少計算量,本文會在SINC 數字濾波器架構中設定3 為其的抽取系數。其中,SINC級聯的個數取決于抽取系數,SINC 級聯個數越多,那么輸出信號的采樣間隔就會呈現出更為突出的多樣性特點,通過只對這一種模式考慮來降低實際開發的難度,減少開發的成本及時間。
上文已對多倍率SINC 濾波器的結構設計進行了簡單的概述,點明了SINC 級聯的個數會受到抽取系數不同的影響,通過設定不同的抽取系數來賦予輸出信號采樣間隔多樣性的特點。此處,本文給出了SINC 濾波器的算法設計流程,如圖1所示。SINC 級聯數的選取需要經過三個步驟來完成:
(1)明確抽取系數值;
(2)在條件一的前提下,對寄存器Mode_R 進行設置;
(3)選擇SINC 的級聯數,通過此流程才能達到SINC 數字濾波器多速率輸出多樣性的特點,才能達到相應的設計標準。
針對上述的SINC 算法流程,本文給出了相應的實現電路簡圖,具體如圖2所示。與上文相同,此處設定2 為SINC 每個模塊的抽取系數,那么2N就為SINC 總的抽取系數,其中,N 表示的是SINC 的級聯個數,可控的開關模塊由圖中的Q1、Q2、Q3、Q4、Q5 表示,并且由數字2 和3 分別表示控制信號的導通與斷開。

表1:SINC 的級聯狀態及Q 的設定

圖1:SINC 濾波器的算法流程

圖2:SINC 算法對應的電路簡圖
同時,SINC 的級聯狀態會受到設置值的干擾,如Q1、Q2、Q3、Q4、Q5 的設置值均為2時,SINC的級聯狀態為SINC1→SINC6,再如Q1、Q2、Q3、Q4 的設置值均為2,Q5 的設置值為3 時,那么SINC 的級聯狀態就會轉化為SINC1 →SINC5 →SINC6,具體如表1所示。簡單來說,SINC 的級聯狀態取決于K 不同的設置值,即通過K 不同的設置值來獲取系統不同的抽取系數,滿足多速率SINC 濾波器在數據處理系統中的要求。

圖3:SINC 濾波器對應的輸出頻譜

圖4:FIR1 濾波器對應的輸出頻譜

圖5:FIR2 濾波器對應的輸出頻譜
為了檢測算法設計的準確性,本文在Q1、Q2、Q3、Q4 均 為2,Q5 為3 時,通 過邏輯分析儀對FPGA 設計中的SINC 濾波器模塊進行了硬件仿真,此次仿真實驗是在SINC抽取系數為8 的情況下進行的。仿真結果表明,SINC 濾波器輸出數據的頻率周期可由仿真實驗中的最小單元表示,且與第8 步頻率周期相比,測得的頻率周期是SINC 輸出數據頻率周期的兩倍,即SINC 輸出數據頻率與輸入的數據頻率分別為16KHz 與128KHz,那么對應的抽取系數則為8。再回到表1中可以看出,Q1、Q2、Q3、Q4 均 為2,Q5 為3 時 對應的抽取系數亦為8,與之相互吻合,驗證了算法設計的準確性。同時在Q1、Q2、Q3 均為1,Q4 和Q5 為0 時,且SINC 抽取系數為16 的情況下進行了第二次仿真實驗,得到的仿真結果表明,SINC 濾波器輸出數據的頻率周期可由仿真實驗中的最小單元表示,且與第四步的頻率周期相比,SINC 輸出數據頻率周期是仿真得到的二分之一,即得到的SINC 輸出數據頻率與輸入的數據頻率分別為8KHz 與128KHz,對應的抽取系數則為16,與表1中的Q1、Q2、Q3 均為2,Q4 和Q5 為3 時的抽取系數吻合,在此驗證了算法設計的準確性,能夠達到較為理想的設計預期。
本文以系統總抽取系數128 為例,在FPGA 上進行SINC 濾波器的功能實現,即對FPGA 性能進行測試時,SINC 的抽取系數為16,FIR1 和FIR2 的抽取系數分別為4 和2,同時此次測試設計的1bit 數據流和信號分別為128KHz 和63Hz、-12dB,具體測試如下所示。
SINC 在經過16:1 抽取后測試得到的采樣頻率等于8KHz,具體如圖3所示。
FIR1 濾波器在經過4:1 抽取后測試得到的輸出頻譜情況由圖4所示。可以看出,雖然在0-500Hz 這段頻譜中出現了一定的混疊現象,但混疊的幅度并不大,且通帶相應也較為合理。
FIR2 濾波器在經過2:1 抽取后測試得到的輸出頻譜由圖5所示。可以看出,雖然在0-400Hz 這段頻譜中出現了一定的混疊現象,但混疊的幅度并不大,且通帶相應也較為合理。
綜上所述,本文首先對多倍速率SINC 濾波器的結構及算法進行了設計,并給出了對應的算法流程;其次對多速率SINC 濾波器的FPGA 實現進行了分析,點出了SINC 濾波器算法設計的可行性及準確性;最后借助FPGA檢驗對SINC、FIR1 以及FIR2 這三個模塊,對多速率SINC 算法設計的準確性再次進行檢驗,從性能測試結果來看,基本上符合本文所需設計的指標及預期要求,再次驗證了多速率SINC 算法設計的準確性。