數(shù)字變頻的FPGA實(shí)現(xiàn)
引言
本文引用地址:http://m.butianyuan.cn/article/201706/349311.htm數(shù)字化中頻(DIF)頻譜分析儀在高中頻實(shí)現(xiàn)數(shù)字化處理,具有分析帶寬大、RBW小、測(cè)量時(shí)長(zhǎng)短,可對(duì)復(fù)雜信號(hào)實(shí)施時(shí)—頻分析的功能,因而得到越來越廣泛的應(yīng)用。但由于現(xiàn)有的數(shù)字信號(hào)處理器(DSP)處理速度有限,往往難以對(duì)高速率A/D采樣得到的數(shù)字信號(hào)直接進(jìn)行實(shí)時(shí)處理。為了解決這一矛盾,需要采用數(shù)字下變頻(DDC)技術(shù),將采樣得到的高速率信號(hào)變成低速率基帶信號(hào),以便進(jìn)一步的分析處理。用現(xiàn)場(chǎng)可編程陣列(FPGA)來設(shè)計(jì)數(shù)字下變頻器有許多好處:FPGA在硬件上具有很強(qiáng)的穩(wěn)定性和極高的運(yùn)算速度,在軟件上具有可編程的特點(diǎn),可以根據(jù)不同的系統(tǒng)要求,采用不同的結(jié)構(gòu)來完成相應(yīng)的功能,具有很強(qiáng)的靈活性,便于進(jìn)行系統(tǒng)功能擴(kuò)展和性能升級(jí)。
數(shù)字下變頻
數(shù)字下變頻的主要目的是經(jīng)過數(shù)字混頻將A/D轉(zhuǎn)換輸出的中頻信號(hào)搬移至基帶,然后通過抽取,濾波完成信道提取的任務(wù)。因此,數(shù)字下變頻器由本地振蕩器(NCO)、混頻器、抽取濾波器和低通濾波器組成,如圖1所示。
圖1 數(shù)字下變頻原理圖
A/D變換后的信號(hào)分成兩個(gè)信號(hào),一個(gè)信號(hào)乘以正弦序列(同相分量),下變頻至零中心頻率上,通過抽取濾波器、整形低通FIR濾波形成與原信號(hào)相位相同的信號(hào);另一路信號(hào)乘以經(jīng)過90度相移的正弦序列(正交分量),同樣是下變頻至零中心頻率上,再通過相同的抽取濾波器、整形低通FIR濾波器,形成與原信號(hào)正交的信號(hào)。這樣,DDC輸出的低速率、零中頻的正交的兩路信號(hào)送往DSP等數(shù)字信號(hào)處理器進(jìn)行后續(xù)的數(shù)字處理。
DDC的FPGA
以某中頻數(shù)字化接收機(jī)為例來說明如何實(shí)現(xiàn)基于FPGA的數(shù)字下變頻器。輸入信號(hào)為中頻26MHz,帶寬500KHz的調(diào)頻信號(hào),該信號(hào)經(jīng)過A/D變換之后送到DDC(A/D采樣精度為8位,采樣率20MHz),要求DDC將其變換為數(shù)字正交基帶信號(hào),并實(shí)現(xiàn)10倍抽取,即輸出給基帶處理器的數(shù)據(jù)速率為2MSPS,最后再經(jīng)過16階FIR濾波器進(jìn)行信號(hào)整形。
NCO的實(shí)現(xiàn)
NCO采用直接數(shù)字合成(DDS)的方法實(shí)現(xiàn),目前常見的技術(shù)有查表法和CORDIC計(jì)算法,本設(shè)計(jì)采用查表法來實(shí)現(xiàn)NCO,其原理圖如圖2所示。
圖2 NCO原理圖
32位累加器由一個(gè)32位的加法器和一個(gè)32位寄存器組成,在時(shí)鐘的作用下,加法器通過寄存器將輸出數(shù)據(jù)送入到加法器的一個(gè)輸入端,與32位的頻率控制字進(jìn)行相加運(yùn)算,得到一個(gè)有規(guī)律的相位累加結(jié)果。由于正弦值在一個(gè)周期內(nèi)取有限個(gè)采樣值,大于2pi部分的正弦值只是這有限數(shù)值的重復(fù)出現(xiàn),因此,當(dāng)累加結(jié)果大于FFFFFFFFH是,不需產(chǎn)生進(jìn)位,而是重新從00000000H開始累加。為了減小ROM的容量,根據(jù)相位截?cái)嗉夹g(shù),取累加器輸出的高10位作為查表地址,但是這種實(shí)現(xiàn)方式,在降低成本的同時(shí),也引入了雜散分量,影響了NCO的純度。正弦值ROM中存儲(chǔ)的是預(yù)先計(jì)算好的正弦波幅值,利用正弦波的對(duì)稱特性,只需存儲(chǔ)四分之一周期的幅值,再通過相應(yīng)的轉(zhuǎn)換即可恢復(fù)出整個(gè)周期的幅值。同時(shí),由于余弦波和正弦波相位差為pi/2,可以很容易的實(shí)現(xiàn)余弦信號(hào)。其關(guān)鍵部分的VHDL代碼如下:
process
begin
wait until clk=’1’;
if add(8)=’0’ then
address=add(7 downto 0);
else
address=”11111111”-add(7 downto 0);
end if;
if add(9)=’0’ then
qou(7)=’0’;
qou(6 downto 0)=q;
else
qou(7)=’1’;
qou(6 downto 0)= ”1111111”-q;
end if;
end process;
抽取濾波器的實(shí)現(xiàn)
CIC積分梳狀濾波器是實(shí)現(xiàn)高速抽取非常有效的單元。CIC濾波器的系統(tǒng)函數(shù)為:
式中D即為CIC濾波器梳狀部分的延遲,濾波器系數(shù)都為1。從上式可以看出CIC濾波器的實(shí)現(xiàn)非常簡(jiǎn)單,只有加減運(yùn)算,沒有乘法運(yùn)算,F(xiàn)PGA實(shí)現(xiàn)時(shí)可達(dá)到很高的處理速率。但是,單級(jí)CIC濾波器的旁瓣電平只比主瓣低13.46dB,這就意味著阻帶衰減很差,一般是難以滿足實(shí)用要求的。為了降低旁瓣電平,可以采取多級(jí)CIC濾波器級(jí)聯(lián)的辦法解決。在CIC濾波器的實(shí)現(xiàn)過程中,需要給內(nèi)部寄存器提供足夠的位寬,其計(jì)算公式為:
其中N為級(jí)數(shù),M為延遲,R為抽取倍數(shù)。
本設(shè)計(jì)中,CIC濾波器需要完成10倍的抽取,采用4級(jí)級(jí)聯(lián)來實(shí)現(xiàn),由于輸入、輸出數(shù)據(jù)均為8bit,故內(nèi)部寄存器所需的最大位寬為,旁瓣容限可達(dá)到4×13.46=43.44dB。
CIC濾波器實(shí)現(xiàn)的關(guān)鍵是抽取器的分頻設(shè)計(jì),其VHDL代碼如下:
signal count : integer range 0 to 9;
signal clk2 : std_logic;
if (count=9) then --抽取器分頻實(shí)現(xiàn)
clk2=’1’;
else
clk2=’0’;
end if;
comb : process --抽取器代碼
begin
wait until clk2=’1’;
i3d1=c0;
…………
c4=c3/2-c3d1;
end process comb;
低通濾波器的實(shí)現(xiàn):
數(shù)字下變頻器的最后一個(gè)模塊是低通FIR濾波器,主要用來對(duì)信號(hào)進(jìn)行整形濾波,消除信號(hào)中存在的噪聲。本設(shè)計(jì)采用并行結(jié)構(gòu)的FIR濾波器,由2個(gè)8階濾波器級(jí)聯(lián)實(shí)現(xiàn)16階的濾波器,由預(yù)相加模塊、查找表模塊和移位相加模塊組成,結(jié)構(gòu)圖如圖3、4所示。
圖3 16階FIR濾波器的級(jí)聯(lián)結(jié)構(gòu)圖
圖4 FIR濾波器子模塊結(jié)構(gòu)圖
圖5 16階FIR濾波器響應(yīng)曲線圖
圖6 DDC實(shí)現(xiàn)的結(jié)構(gòu)圖
這種結(jié)構(gòu)的濾波器結(jié)構(gòu)簡(jiǎn)單、易于實(shí)現(xiàn),很容易擴(kuò)展成高階濾波器。首先通過MATLAB中的Fir DesignTool工具得到濾波器的系數(shù)圖表(表1)。利用線性FIR濾波器抽頭系數(shù)的對(duì)稱性,通過加法器將對(duì)稱的系數(shù)進(jìn)行預(yù)相加,從而降低硬件規(guī)模。根據(jù)分布式算法原理,通過將抽頭系數(shù)的所有可能組合固化在ROM中,利用查找表來代替乘法器。利用預(yù)相加模塊產(chǎn)生的地址來查找ROM表,并將相應(yīng)的數(shù)值進(jìn)行移位相加,從而得出正確的結(jié)果。
表1 16階FIR濾波器系數(shù)
DDC系統(tǒng)的實(shí)現(xiàn)
整個(gè)系統(tǒng)在Cyclone系列芯片EP1C6Q240C8上實(shí)現(xiàn),其FPGA綜合結(jié)果圖7所示。
圖7 DDC系統(tǒng)的Quartus綜合結(jié)果
圖8 系統(tǒng)時(shí)序測(cè)試結(jié)果
時(shí)序測(cè)試圖(圖8)中,黃色為系統(tǒng)時(shí)鐘波形,綠色為NCO產(chǎn)生的正弦波時(shí)序波形,藍(lán)色為抽取濾波器輸出的時(shí)序波形,粉紅色為FIR濾波器輸出時(shí)序波形。從示波器顯示的時(shí)序圖可以看出抽取濾波器輸出波形的延時(shí)最大,大約為14ns左右,這和軟件仿真的結(jié)果比較吻合,仿真中抽取濾波器輸出的延時(shí)為16.47ns。故抽取濾波器是制約系統(tǒng)時(shí)鐘速率提高的關(guān)鍵因素。
結(jié)語
本文介紹了一種應(yīng)用于數(shù)字化中頻頻譜分析儀的數(shù)字下變頻電路,整個(gè)電路基于FPGA實(shí)現(xiàn),結(jié)構(gòu)簡(jiǎn)單,易于編程實(shí)現(xiàn)。
評(píng)論