基于FPGA的DDC濾波器設(shè)計(jì)與仿真
近年來,軟件無線電已經(jīng)成為通信領(lǐng)域一個(gè)新的發(fā)展方向,數(shù)字下變頻技術(shù)(Digital Down Converter-DDC)是軟件無線電的核心技術(shù)之一,也是計(jì)算量最大的部分。基于FPGA的DDC設(shè)計(jì)一般采用CIC、HB、FIR級(jí)聯(lián)的形式組成。同時(shí),由于CIC濾波器的通帶性能實(shí)在太差,所以中間還要加上一級(jí)PFIR濾波器以平滑濾波器的通帶性能。而眾所周知用FPGA從事算法的開發(fā)是一件難度比較大的工作,而Xilinx公司開發(fā)的System Generator工具為算法的快速開發(fā)及仿真帶來了巨大的方便。本文首先對(duì)CIC、HB、FIR濾波器的原理及設(shè)計(jì)作了簡(jiǎn)單的說明,最后用Matlab結(jié)合System generator對(duì)本文所設(shè)計(jì)的DDC濾波器作了一個(gè)仿真。
1 總體結(jié)構(gòu)設(shè)計(jì)
數(shù)字下變頻技術(shù)作為數(shù)字信號(hào)處理中的一個(gè)關(guān)鍵技術(shù),它通常由以下兒部分組成。首先,CIC濾波器,它實(shí)現(xiàn)簡(jiǎn)單而且能實(shí)現(xiàn)較大的下抽率。其次,由于CIC濾波器帶內(nèi)平坦性能太差,因此在CIC濾波器之后一般要加上PFIR來平滑帶內(nèi)平坦度。最后,由于CIC濾波器的抽取因子小宜取得過大,岡此還要用HB濾波器的級(jí)聯(lián)來進(jìn)一步增加抽取率。下面本文以如何設(shè)計(jì)一個(gè)原信號(hào)采樣率為72 MHz的、有效信號(hào)帶寬為2.05 MHz的、下抽率為14的、主旁瓣衰減80 dB以上的、通帶平坦度小于0.2 dB的下抽濾波器為例說明下抽濾波器的設(shè)計(jì)。
實(shí)際中常用的DDC的實(shí)現(xiàn)框圖如圖1所示。
2 CIC濾波器設(shè)計(jì)
CIC濾波器是近年來在下變頻中用得最多的一種技術(shù),CIC濾波器在多速率信號(hào)處理中具有特別重要的位置,它可以充當(dāng)內(nèi)插濾波器,也可以充當(dāng)抽取濾波器,主要取決于積分器和梳狀濾波器的連接順序。由于CIC(級(jí)聯(lián)積分梳狀)濾波器不需要乘法運(yùn)算和存儲(chǔ)系數(shù),因此實(shí)現(xiàn)非常簡(jiǎn)單,在采樣率變換過程中經(jīng)常使用CIC濾波器進(jìn)行數(shù)字濾波。
考慮到CIC濾波器的除數(shù)及抽取因子不宜取得過大,所以實(shí)際巾的下抽濾波器一般都是采用CI協(xié)同HB來完成下抽的任務(wù)。比如這里我們要下抽14,一般的做法是先用CIC下抽7然后用HB下抽2 如果這時(shí)一級(jí)HB仍然不滿足要求的話,我們可以通過適當(dāng)增加HB的級(jí)聯(lián)數(shù)目來完成下抽。例如,如果要下抽28,那么可以先下抽7,然后通過兩級(jí)HB來完成下抽4,進(jìn)而達(dá)到下抽28的目的。
在MATLAB中通過設(shè)置下抽因子,需要的通帶截止頻率等參數(shù)可以方便的設(shè)計(jì)出想要的CIC濾波器。下圖為本次設(shè)計(jì)中設(shè)計(jì)出的CIC濾波器的幅頻響應(yīng)。
通過將其通帶細(xì)節(jié)圖放大,可以發(fā)現(xiàn)在2.05 MHz處通帶的衰減為4.508 dB。
3 PFIR濾波器設(shè)計(jì)
PFIR濾波器的設(shè)計(jì)目標(biāo)是在滿足通帶波紋和過渡帶寬盡可能窄的同時(shí)使得阻帶衰減盡可能大,PFIR的階數(shù)越高,PFIR濾波器的通帶波紋,過渡帶寬,阻帶衰減等特性就越好。
PFIR存在的意義是它能夠改善CIC濾波器帶內(nèi)平坦度較差的問題,因此,其帶內(nèi)的幅頻響應(yīng)的走勢(shì)和CIC正好相反,從而在一定程度上平滑CIC濾波器通帶內(nèi)衰減的趨勢(shì)。在設(shè)計(jì)好了上一級(jí)CIC濾波器的基礎(chǔ)上,通過輸入已經(jīng)完成的上級(jí)濾波器參數(shù)在MATLAB中可以自動(dòng)生成與其互補(bǔ)的PFIR濾波器,它的幅頻響應(yīng)如圖4所示。
通過將這里設(shè)計(jì)的PFIR濾波器與上節(jié)設(shè)計(jì)的CIC濾波器進(jìn)行級(jí)聯(lián),級(jí)聯(lián)后的濾波器的幅頻響應(yīng)較之于之前設(shè)計(jì)的CIC濾波器其通帶性能有了很大的提高,級(jí)聯(lián)前的CIC濾波器的通帶波紋為4.508 dB,而級(jí)聯(lián)后僅為0.11 dB將其通帶細(xì)節(jié)圖如圖5所示。
4 HB濾波器設(shè)計(jì)
半帶濾波器是一種特殊的FIR濾波器,在多速率信號(hào)處理中有著至關(guān)重要的作用。在常見的下抽濾波器設(shè)計(jì)中第二級(jí)一般采用HB濾波器要用到第二級(jí)的原因是綜合考慮到帶內(nèi)平坦度和阻帶衰減度等因素使得第一級(jí)CIC抽取濾波器的級(jí)數(shù)和抽取因子不宜過大,HB濾波器的帶內(nèi)平坦度好,計(jì)算效率高,在高速率信號(hào)處理中發(fā)揮著重要的作用,在抽取因子為2的冪次方的場(chǎng)合更是如魚得水。
HB濾波器的通帶和阻帶具有對(duì)稱的關(guān)系,因此其通帶波紋和阻帶波紋相等。但是使其成為數(shù)字信號(hào)處理中非常常用的一種濾波器的主要原因卻是因?yàn)槠湎禂?shù)有一半均為0。如此,在低速率數(shù)字信號(hào)處理中或許還不是很重要,但是在那些對(duì)實(shí)時(shí)性要求非常高的系統(tǒng)中,這種將計(jì)算量減半的性能就使得其得到了廣泛的應(yīng)用。
綜合考慮前方中提出的設(shè)計(jì)的要求,文中設(shè)計(jì)的HB濾波器的幅頻響應(yīng)如圖6所示。
將文中設(shè)計(jì)的CIC,PFIR,HB級(jí)聯(lián)之后得到的總的濾波器的幅頻響應(yīng)如圖7所示,可以發(fā)現(xiàn)較之于CIC濾波器的通帶性能,此時(shí)級(jí)聯(lián)濾波器的通帶性能已經(jīng)有了較大的提高。其通帶細(xì)節(jié)圖如圖8所示。
5 system generator仿真
system generator for dsp是業(yè)內(nèi)領(lǐng)先的高級(jí)系統(tǒng)級(jí)FPGA開發(fā)工具。本次設(shè)計(jì)是在基于Xilinx(賽林思)的system generator的基礎(chǔ)上完成的。賽林思是全球領(lǐng)先的可編程邏輯完整解決方案的供應(yīng)商,它研發(fā)、制造并銷售范圍廣泛的高級(jí)集成電路、軟件設(shè)計(jì)工具以及作為預(yù)定義系統(tǒng)級(jí)功能的IP(InteIlectual Property)核,客戶使用Xilinx及其合作伙伴的自動(dòng)化軟件工具和IP核對(duì)器件進(jìn)行編程。System generator是Xilinx公司進(jìn)行數(shù)字信號(hào)處理開發(fā)的一種設(shè)計(jì)工具,它通過將Xilinx開發(fā)的一些模塊嵌入到MATLAB的Simulink庫(kù)中,可以在Simulink中進(jìn)行定點(diǎn)的仿真,可以設(shè)置定點(diǎn)信號(hào)的類型,這樣就可以比較定點(diǎn)仿真與浮點(diǎn)仿真的區(qū)別。并且它還可以生成HDL文件,或者網(wǎng)表直接供ISE調(diào)用。較之于直接用MATLAB進(jìn)行算法的仿真其主要優(yōu)勢(shì)作于它是基于定點(diǎn)的,同時(shí),它是由各個(gè)供應(yīng)廠商直接提供的庫(kù),因此它能夠充分認(rèn)識(shí)FPGA內(nèi)部的資源等,其仿真也更精確可靠。
雖然,system generator能直接生成供底層FPGA調(diào)用的代碼以及網(wǎng)表,但是,通常并不這樣做。相對(duì)于人工編寫的代碼,system genera tor生成的代碼相對(duì)冗余度高,資源利用也不及人工編寫的代碼合理。但是,在某些需要快速進(jìn)行算法開發(fā)的項(xiàng)目中,這種方式無疑為用FPGA從事快速的算法開發(fā)提供了一個(gè)捷徑。
將MATLAB與system generator集成后,由圖1所示的原理框圖,搭建了用于仿真的system generator模塊,如圖9所示。
在輸入端輸入幅頻響如下圖所示的信號(hào),其有用信號(hào)范圍173~25.5 MHz。另外為了方便仿真結(jié)果的觀察,又加入了2個(gè)大的噪聲信號(hào)分別位于32.4MHz,12.4 MHz。
將上圖所示的信號(hào)送入DDC網(wǎng)絡(luò)后,信號(hào)變成I/Q兩路信號(hào),將這兩路信號(hào)組合成復(fù)數(shù)信號(hào)后得到的復(fù)數(shù)信號(hào)的頻譜圖如圖11(a)所示。
圖11(a)為原輸入信號(hào)的有用信號(hào)附近的細(xì)節(jié)圖,而圖11(b)為經(jīng)過DDC網(wǎng)絡(luò)后得到的復(fù)數(shù)信號(hào)的幅頻響應(yīng)圖。由于simulink的頻譜繪制工具顯示刷新的問題它們看起來有了一點(diǎn)點(diǎn)的誤籌,但是,也可以發(fā)現(xiàn)經(jīng)下變頻后的信號(hào)有效的恢復(fù)了原信號(hào)的頻譜信息。它將原輸入信號(hào)的負(fù)邊頻線性搬移到了以0頻為中心的帶寬為4.1MHz的頻譜上來。
6 結(jié)束語
實(shí)際項(xiàng)目中接觸到的信號(hào)處理任務(wù)大多為帶通信號(hào),如果直接采用傳統(tǒng)的奈奎斯特采樣定理對(duì)模擬信號(hào)進(jìn)行采樣,然后進(jìn)行數(shù)字信號(hào)處理任務(wù),這樣對(duì)后端的DSP器件的實(shí)時(shí)性要求太高。因此,通常我們都要先用一個(gè)FPGA來完成數(shù)字信號(hào)的下變頻操作,之后再由后端的DSP器件來完成信號(hào)處理任務(wù)。因此,如何合理的設(shè)計(jì)DDC下變頻就顯得特別重要。本文針對(duì)如何設(shè)計(jì)DDC濾波器以及基于FPGA的System Generator的仿真都作了簡(jiǎn)單的介紹。