FAE講堂:利用賽靈思FGPA實現(xiàn)降采樣FIR濾波器
過去半年有幾位客戶請我?guī)椭麄冊O(shè)計和實現(xiàn)數(shù)字下變頻器所用的降采樣(即“抽取”)濾波器,這種濾波器在軟件無線電與數(shù)據(jù)采集類應用中都很常見。這項工作即便對于經(jīng)驗豐富的設(shè)計師也不是一件小事。事實上,僅僅算出在FGPA中實現(xiàn)濾波器所需要的資源可能就是一個很大的問題。雖然MATLAB®(MathWorks 開發(fā))具有用于濾波器設(shè)計與分析 (FDA) 的絕妙工具箱,但是它提供太多濾波器設(shè)計方法,會讓新用戶無從下手。另外,您必須能夠根據(jù)DSP理論解釋MATLAB命令產(chǎn)生的結(jié)果,僅僅這一點就需要研究。
本文引用地址:http://www.ex-cimer.com/article/119299.htm拋開理論的細枝末節(jié),讓我們開始圍繞上述問題探討降采樣有限脈沖響應 (FIR) 濾波器的設(shè)計與實現(xiàn)。本輔導資料實際上旨在向您介紹一種簡便、易于理解的流程——從濾波器系數(shù)生成到FGPA目標器件中抽取濾波器的實現(xiàn)。所需工具只有MATLAB較新版本(本人仍在使用R2008a)及其FDA工具箱、以及ISE® 11.4套件提供的賽靈思CORE GeneratorTM工具。這些工具是設(shè)計多速率FIR濾波器的必備工具。
特別是我們將探討固定降采樣速率變化的兩個實例:整數(shù)值與有理值。您應當能夠把我們在本輔導資料介紹的MATLAB指令和CoreGen圖形用戶界面 (GUI) 設(shè)置應用到您的設(shè)計當中。為了說明公用邏輯塊 (CLB) Slice 、18KB內(nèi)存RAM塊(BRAM) 和DSP48乘法累加 (MAC) 單元等方面的資源占用情況,我們將采用 XC6VLX75T-2ff484 作為目標 FPGA 器件。
整數(shù)倍降采樣器假設(shè)基帶中進行解調(diào)后按250MHz速率傳輸帶寬只有2.5MHz的信號。我們必須過濾從2.5MHz到 250MHz 的所有頻率,因為它們不傳輸任何有用信息;這正是我們準備設(shè)計和實現(xiàn)的低通 FIR 濾波器的目的。根據(jù)尼奎斯特定理,輸出數(shù)據(jù)速率是信號帶寬的兩倍;因此,我們需要按照M=50的整數(shù)倍對其執(zhí)行降采樣。我將介紹兩種采用多級濾波方法的可行備選實現(xiàn)方案:第一種方法采用三個串聯(lián)的 FIR 抽取濾波器,而第二種方法則同時采用級聯(lián)積分梳狀 (CIC) 濾波器與FIR濾波器。
以下是用于設(shè)計理想濾波器的MATLAB代碼。我們假設(shè)通帶和阻帶頻率的衰減分別為0.1dB和100dB。
假設(shè)FPGA時鐘頻率Fclk=Fs_in,那么在Virtex®-6器件中我們需要多少個DSP48 MAC單元?它是用于按M進行降采樣的濾波器。根據(jù)FIR Complier 5.0數(shù)據(jù)手冊 (fir_compiler_ds534.pdf) 詳細闡述的理論,我們可以把DSP48 MAC分成M個相位,因此引入“多相”這一術(shù)語。由于每個相位都是按更低的輸出頻率 Fs_out 進行處理,因此可以按時分復用方式共享DSP48 MAC。以下理論計算表明,F(xiàn)IR-Compiler在通過多相分解方式實現(xiàn)濾波器時采用最小的22個MAC單元(total_num_MAC_ref )。濾波器長度是2100 (total_num_coeff),填寫0成為M的整數(shù)倍。請注意:此方案考慮系數(shù)對稱性。
在MATLAB中可以輕松按低通濾波建立抽取過程模型,然后按M降采樣,最終分別產(chǎn)生y與y_filt輸出信號。不過,在FPGA器件中,這種實現(xiàn)方式效率不高:它會很笨地計算隨后必須拋棄的值。相反,多相抽取器把輸入信號降采樣到M個wk通道,每個通道由其自身的子濾波器ph(k,:) 過濾。部分結(jié)果y_out(k,:) 然后匯總在一起組成最終輸出y_tot。把y_tot與本機MATLAB指令產(chǎn)生的基準 y 對比,結(jié)果表明最終輸出均處于數(shù)值精度3e-15范圍內(nèi)(由于不同運算階數(shù)而出現(xiàn)偏差)。
濾波器相關(guān)文章:濾波器原理
濾波器相關(guān)文章:濾波器原理
電源濾波器相關(guān)文章:電源濾波器原理
評論