在數(shù)字信號(hào)處理領(lǐng)域,濾波器無疑是個(gè)非常重要的環(huán)節(jié)。而在數(shù)字濾波器中,有限脈沖響應(yīng)(FIR)濾波器因?yàn)槠渚€性相位的特點(diǎn),應(yīng)用尤為廣泛。實(shí)際應(yīng)用中FIR濾波器分為常系數(shù)FIR濾波器和變系數(shù)FIR濾波器。常系數(shù)FIR濾波器的系數(shù)固定不變,可根據(jù)其特點(diǎn)采用分布式算法進(jìn)行設(shè)計(jì),故實(shí)現(xiàn)起來速度快,消耗的資源少。變系數(shù)FIR濾波器的系數(shù)是不斷變化的。當(dāng)前含有變系數(shù)FIR濾波環(huán)節(jié)的芯片普遍存在速度與處理級(jí)數(shù)的矛盾,有效解決此問題具有重要的現(xiàn)實(shí)意義。
隨著片上系統(tǒng)(SOC)時(shí)代的到來,可編程邏輯器件不僅為FIR濾波器的設(shè)計(jì)提供了一條可行而高效的方法,而且更被廣泛地使用于數(shù)字信號(hào)處理的各個(gè)領(lǐng)域。采用INMOS公司的IMS A100級(jí)聯(lián)型信號(hào)處理器為模板,以FIR濾波器設(shè)計(jì)為核心,用FPGA技術(shù)開發(fā)設(shè)計(jì)級(jí)聯(lián)型信號(hào)處理器,能夠應(yīng)用于數(shù)字FIR濾波、高速自適應(yīng)濾波、相關(guān)和卷積、離散傅里葉變換、脈沖壓縮、線性預(yù)測(cè)編碼語音處理、高速定點(diǎn)矩陣乘法等,有較好的應(yīng)用前景和發(fā)展空間。
1 FIR濾波器結(jié)構(gòu)設(shè)計(jì)
傳統(tǒng)的FIR濾波器橫向結(jié)構(gòu)如圖1(a)所示,為提高系統(tǒng)處理速度,求和單元∑可采用流水線結(jié)構(gòu)。圖中的N階濾波器從系統(tǒng)開始工作到第一個(gè)輸出數(shù)據(jù)有效,需經(jīng)過N個(gè)周期,系統(tǒng)最大速度是由一次乘法和N個(gè)乘法結(jié)果求和運(yùn)算消耗的時(shí)間決定,因而運(yùn)算速度很低。采用流水線結(jié)構(gòu)后,運(yùn)算速度則由一次乘法運(yùn)算決定,運(yùn)算速度得到提高。為了系統(tǒng)結(jié)構(gòu)的有效設(shè)計(jì),根據(jù)FIR濾波器結(jié)構(gòu)的可逆性,可采用圖1(b)所示的轉(zhuǎn)置結(jié)構(gòu)。
在橫向?yàn)V波器的轉(zhuǎn)置結(jié)構(gòu)中,N個(gè)相同的處理單元級(jí)聯(lián)就組成了濾波器,因此系統(tǒng)能在保證計(jì)算結(jié)果不溢出的前提下,只改變級(jí)聯(lián)處理單元的數(shù)目就能方便地調(diào)整濾波器的級(jí)數(shù)。在t=KT時(shí),濾波器的輸出為:
實(shí)際應(yīng)用中常常會(huì)用到高階FIR濾波器,但一塊芯片的資源和容量畢竟有限,不能很好地滿足設(shè)計(jì)要求。從圖1(b)所示的結(jié)構(gòu)可以看出,多片F(xiàn)IR濾波器可以級(jí)聯(lián)起來,構(gòu)成高階FIR濾波器,無需任何附加邏輯,也不會(huì)降低運(yùn)算速度,同時(shí)保持運(yùn)算精度,故對(duì)比后優(yōu)先選擇圖1(b)的濾波器轉(zhuǎn)置結(jié)構(gòu)。
考慮到FIR濾波器系數(shù)的對(duì)稱性,在橫向?yàn)V波器的轉(zhuǎn)置結(jié)構(gòu)中再加入一條反向相加、延時(shí)支路,把單片F(xiàn)IR濾波器的級(jí)數(shù)由N擴(kuò)展到2N,適合于階數(shù)M為N<M≤2N的濾波器使用。系統(tǒng)只需用一個(gè)信號(hào)便可實(shí)現(xiàn)對(duì)芯片級(jí)聯(lián)使用或單片使用的控制,具體實(shí)現(xiàn)結(jié)構(gòu)如圖2所示。
為了讓設(shè)計(jì)的信號(hào)處理器能用于自適應(yīng)信號(hào)處理、快速傅里葉變換等領(lǐng)域,還必須使系統(tǒng)能根據(jù)用戶的要求實(shí)時(shí)改變當(dāng)前系數(shù)。一般有兩種方案可以實(shí)現(xiàn):一是通過一個(gè)寫入端口直接修改當(dāng)前系數(shù);二是準(zhǔn)備多組備用系數(shù),并可以在與系統(tǒng)工作時(shí)鐘異步的情況下對(duì)這些備用系數(shù)進(jìn)行修改。方案一可以節(jié)省一定的系統(tǒng)資源,但對(duì)一組當(dāng)前系數(shù)的修改需要較長時(shí)間,且此段時(shí)間內(nèi)系統(tǒng)無法正常工作,故實(shí)時(shí)性較差;方案二雖然消耗了較多的系統(tǒng)資源,但系統(tǒng)能在準(zhǔn)備系數(shù)(即修改備用系數(shù))時(shí)正常工作,修改當(dāng)前系數(shù)只需將當(dāng)前系數(shù)和備用系數(shù)交換,交換系數(shù)的過程只需一個(gè)時(shí)鐘節(jié)拍即可完成。綜合考慮各方面因素,方案二具備更好的系統(tǒng)性能,故優(yōu)先選擇方案二。
2 系統(tǒng)設(shè)計(jì)與FPGA實(shí)現(xiàn)
圖2的FIR濾波器結(jié)構(gòu)是高速、高精度的數(shù)字式橫向?yàn)V波器結(jié)構(gòu),在數(shù)字信號(hào)處理應(yīng)用中可作為功能塊,完成高速離散傅里葉變換、卷積和相關(guān),以及濾波功能。級(jí)聯(lián)型信號(hào)處理器的設(shè)計(jì)正是基于此結(jié)構(gòu),其FPGA實(shí)現(xiàn)的總體結(jié)構(gòu)如圖3所示。
此級(jí)聯(lián)型信號(hào)處理器的外部輸入數(shù)據(jù)Din字長16位,系數(shù)字長16位,輸入數(shù)據(jù)和系數(shù)均采用二進(jìn)制補(bǔ)碼方式。內(nèi)部有A,B兩組系數(shù)寄存器,一個(gè)存儲(chǔ)當(dāng)前系數(shù),另一個(gè)存儲(chǔ)修改系數(shù),用戶可通過數(shù)據(jù)線D在與系統(tǒng)時(shí)鐘異步的情況下對(duì)系數(shù)進(jìn)行修改,也可使A,B兩組系數(shù)在系統(tǒng)工作的過程中相互“交換”。系統(tǒng)具有用戶控制切換和系統(tǒng)自動(dòng)切換兩種系數(shù)切換方式。為了保持完整的數(shù)據(jù)精度,對(duì)于延時(shí)、乘法和相加鏈的中間結(jié)果是以滿精度進(jìn)行運(yùn)算的,若N=2K,則系統(tǒng)的滿精度為31+K位,考慮到單片使用時(shí)N級(jí)可擴(kuò)展到2N級(jí),所以應(yīng)選用的滿精度為32+K位,本系統(tǒng)采用32階濾波器設(shè)計(jì),故滿精度為37位。在延時(shí)、乘法和相加鏈的輸出端,設(shè)計(jì)一個(gè)可編程的桶形移位器(即數(shù)據(jù)選擇單元),它可從四組24位數(shù)據(jù)字段[7~30],[11~34],[15~38]和[20~43]字段中任選一種,這四組字段從FIR濾波器輸出的37位結(jié)果[0~36]中得到,所選的24位在輸出前需進(jìn)行舍入或符號(hào)擴(kuò)展,至于如何選擇,則根據(jù)實(shí)際應(yīng)用而定。另外,本系統(tǒng)還為用戶提供了系統(tǒng)復(fù)位(reset)、工作許可(go)、狀態(tài)監(jiān)測(cè)(error,out-ready)等常用握手信號(hào)。用戶可以讀寫控制邏輯中的狀態(tài)控制寄存器來切換當(dāng)前系數(shù),選擇輸出字段和設(shè)置系統(tǒng)工作模式(單片或級(jí)聯(lián),當(dāng)系統(tǒng)課用于級(jí)聯(lián)時(shí),Cin為級(jí)聯(lián)輸入),其內(nèi)部寄存器的詳細(xì)描述見表1。
用戶還可以通過數(shù)據(jù)線D、地址信號(hào)address、讀寫控制信號(hào)W、系統(tǒng)使能信號(hào)Ce、片選信號(hào)Cs等對(duì)系數(shù)寄存器A,B以及狀態(tài)控制寄存器進(jìn)行讀寫。
3 FPGA仿真
系統(tǒng)利用FPGA實(shí)現(xiàn)了一個(gè)32階的級(jí)聯(lián)型信號(hào)處理器,選用的FPGA芯片是XILINX公司的集成了18×18位硬件乘法器的VirtexⅡ系列的XC2V1000-5-FG256,其資源消耗情況如表2所示。
為了方便仿真和結(jié)果觀察,選用固定值輸入,圖4(a)和圖4(b)分別是系統(tǒng)級(jí)聯(lián)型工作模式及系數(shù)切換仿真和系統(tǒng)單片工作模式仿真結(jié)果。
從圖4(a)和圖4(b)可以看出,系數(shù)寄存器和內(nèi)部控制寄存器可以正確讀寫,當(dāng)輸入系數(shù)切換指令后,系數(shù)正常交換,整個(gè)系統(tǒng)工作正常。
4 性能分析
系統(tǒng)的輸入數(shù)據(jù)和系數(shù)都是16位的二進(jìn)制補(bǔ)碼,所以中間結(jié)果的[0~30]字段對(duì)應(yīng)著-1~+1。而系統(tǒng)的中間結(jié)果是以滿精度運(yùn)算的,所以系統(tǒng)輸出的誤差產(chǎn)生于數(shù)據(jù)選擇單元,四組字段會(huì)產(chǎn)生不同的誤差。
對(duì)[7~30]字段,按四舍五入原則產(chǎn)生的最大舍入誤差為:
系統(tǒng)的仿真結(jié)果和性能分析都表明,系統(tǒng)可正常工作,且最高工作時(shí)鐘可達(dá)到50 MHz。
5 結(jié)語
討論了級(jí)聯(lián)型信號(hào)處理器的FPGA高效實(shí)現(xiàn),通過系統(tǒng)論證、仿真和硬件調(diào)試證明,設(shè)計(jì)方法正確有效,系統(tǒng)功能實(shí)現(xiàn)正常且穩(wěn)定,為FIR濾波、快速傅里葉變換、自適應(yīng)濾波等應(yīng)用提供了一條可行之路,其性能可以隨著可編程邏輯器件的發(fā)展而不斷提高。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21954瀏覽量
613881 -
濾波器
+關(guān)注
關(guān)注
162文章
8065瀏覽量
180931 -
soc
+關(guān)注
關(guān)注
38文章
4329瀏覽量
221598
發(fā)布評(píng)論請(qǐng)先 登錄
DSP in FPGA:FIR濾波器(一)
DSP in FPGA:FIR濾波器(二)
基于FPGA的FIR濾波器設(shè)計(jì)與實(shí)現(xiàn)
串行結(jié)構(gòu)的FIR濾波器設(shè)計(jì)(含文檔 代碼資料)
如何利用FPGA實(shí)現(xiàn)級(jí)聯(lián)信號(hào)處理器?
并行FIR濾波器Verilog設(shè)計(jì)
請(qǐng)問怎樣去設(shè)計(jì)級(jí)聯(lián)型信號(hào)處理器?
怎么利用FPGA實(shí)現(xiàn)FIR濾波器?
基于FPGA對(duì)稱型FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)
基于FPGA設(shè)計(jì)的FIR濾波器的實(shí)現(xiàn)與對(duì)比
基于FPGA的FIR濾波器設(shè)計(jì)與實(shí)現(xiàn)
串行結(jié)構(gòu)的FIR濾波器設(shè)計(jì) (含有代碼 文檔資料)
基于FPGA的硬件加速器的FIR流水結(jié)構(gòu)濾波器實(shí)現(xiàn)、設(shè)計(jì)及驗(yàn)證

如何使用FPGA實(shí)現(xiàn)FIR抽取濾波器的設(shè)計(jì)

評(píng)論