基于FPGA和DDS技術(shù)的正弦信號(hào)發(fā)生器設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1971年,美國(guó)學(xué)者J.Tierney等人撰寫(xiě)的《A Digital Frequency Synthesizer》一文首次提出了以全數(shù)字技術(shù),從相位概念出發(fā)直接合成所需波形的一種新合成原理。限于當(dāng)時(shí)的技術(shù),沒(méi)有得到重視,但隨著微電子技術(shù)的迅速發(fā)展,它以有別于其他頻率合成方法的優(yōu)越性能和特點(diǎn)成為現(xiàn)代頻率合成技術(shù)的佼佼者,具體體現(xiàn)在相對(duì)帶寬寬,頻率轉(zhuǎn)換時(shí)間短,頻率分辨率高,輸出相位連續(xù),可產(chǎn)生多種調(diào)制信號(hào),控制靈活方便。因此,對(duì)于正弦信號(hào)發(fā)生器的設(shè)計(jì),可以采用DDS,即直接數(shù)字頻率合成方案實(shí)現(xiàn)。DDS的輸出頻率是數(shù)字可調(diào)的,完全能實(shí)現(xiàn)頻率為1 kHz~10 MHz之間的正弦信號(hào),這是實(shí)際應(yīng)用中產(chǎn)生可調(diào)頻率正弦信號(hào)波形較為理想的方案。實(shí)現(xiàn)DDS常用3種技術(shù)方案:高性能DDS單片電路的解決方案;低頻正弦波DDS單片電路的解決方案;自行設(shè)計(jì)的基于FPGA芯片的解決方案。雖然有的專(zhuān)用DDS芯片的功能也比較多,但控制方式卻是固定的,因此不一定滿(mǎn)足用戶(hù)需求。而基于FPGA則可以根據(jù)需要方便地實(shí)現(xiàn)各種比較復(fù)雜的調(diào)頻、調(diào)相和調(diào)幅功能,具有良好的實(shí)用性。專(zhuān)用DDS芯片由于采用特定的集成工藝,內(nèi)部數(shù)字信號(hào)抖動(dòng)很小,可以輸出高質(zhì)量的模擬信號(hào);利用FPGA也能輸出較高質(zhì)量的信號(hào),雖然達(dá)不到專(zhuān)用DDS芯片的水平,但信號(hào)精度誤差非常小,能滿(mǎn)足大多數(shù)信號(hào)源要求。DDS是本系統(tǒng)的關(guān)鍵技術(shù),在介紹本系統(tǒng)之前,先單獨(dú)介紹DDS的原理。
l DDS電路工作原理
1.1 DDS的工作原理
DDS的工作原理是以數(shù)控振蕩器的方式產(chǎn)生頻率、相位可控制的正弦波。如圖1所示,電路一般包括基準(zhǔn)時(shí)鐘、頻率累加器、相位累加器、幅度/相位轉(zhuǎn)換電路、D/A轉(zhuǎn)換器和低通濾波器(LPF)。頻率累加器對(duì)輸入信號(hào)進(jìn)行累加運(yùn)算,產(chǎn)生頻率控制數(shù)據(jù)X(frequency data或相位步進(jìn)量)。相位累加器由N位全加器和N位累加寄存器級(jí)聯(lián)而成,對(duì)代表頻率的二進(jìn)制碼進(jìn)行累加運(yùn)算,是典型的反饋電路,產(chǎn)生累加結(jié)果Y。幅度/相位轉(zhuǎn)換電路實(shí)質(zhì)上是一個(gè)波形寄存器,以供查表使用。讀出的波形數(shù)據(jù)送入D/A轉(zhuǎn)換器和低通濾波器轉(zhuǎn)換成符合要求的模擬信號(hào)。
1.2 具體工作過(guò)程
信號(hào)產(chǎn)生過(guò)程:如圖1所示,N位加法器將頻率控制數(shù)據(jù)X與累加寄存器輸出的累加相位數(shù)據(jù)在時(shí)鐘脈沖Fclk控制下相加,把相加后的結(jié)果Y送至累加寄存器的輸入端。累加寄存器一方面將在上一時(shí)鐘周期作用后所產(chǎn)生的新的相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一時(shí)鐘的作用下繼續(xù)與頻率控制數(shù)據(jù)X相加;另一方面將這個(gè)值作為取樣地址值送入幅度/相位轉(zhuǎn)換電路(即圖1中的波形存儲(chǔ)器),幅度/相位轉(zhuǎn)換電路根據(jù)這個(gè)地址輸出相應(yīng)的波形數(shù)據(jù)。最后經(jīng)D/A轉(zhuǎn)換器和低通濾波器將波形數(shù)據(jù)處理成所需要的模擬波形。相位累加器在基準(zhǔn)時(shí)鐘的作用下,進(jìn)行線性相位累加,當(dāng)相位累加器加滿(mǎn)量時(shí)就會(huì)產(chǎn)生一次溢出,這樣就完成了一個(gè)周期,這個(gè)周期也就是DDS信號(hào)的一頻率周期。 DDS輸出信號(hào)的頻率由下式給定:
假定基準(zhǔn)時(shí)鐘為70 MHz,累加器為16位,則:
再假定X=4 096,則Fout=(4 096/65 536)×70=4.375 MHz。
可見(jiàn),通過(guò)設(shè)定相位累加器位數(shù)、頻率控制字X和基準(zhǔn)時(shí)鐘的值,就可以產(chǎn)生任一頻率的輸出。DDS的頻率分辨率定義為:
由于基準(zhǔn)時(shí)鐘一般固定,因此相位累加器的位數(shù)就決定了頻率分辨率。如上面的例子,相位累加器為16位,那么頻率分辨率就可以認(rèn)為是16位。位數(shù)越多,分頻率越高。[!--empirenews.page--]
2 正弦信號(hào)發(fā)生器系統(tǒng)結(jié)構(gòu)設(shè)計(jì)及實(shí)現(xiàn)
2.1 系統(tǒng)結(jié)構(gòu)圖
正弦信號(hào)發(fā)生器系統(tǒng)結(jié)構(gòu)圖如圖2所示。
2.2 單元電路
2.2.1 單片機(jī)控制模塊實(shí)現(xiàn)方式
單片機(jī)實(shí)現(xiàn)部分主要處理數(shù)據(jù)輸入及數(shù)據(jù)顯示,此模塊以AT89S51為中心,控制鍵盤(pán)輸入和LED顯示,其中鍵盤(pán)輸入值作為頻率控制字送給FPGA處理。單片機(jī)的P1口直接與鍵盤(pán)連接,無(wú)鍵按下時(shí)為高電平,當(dāng)有鍵按下時(shí)就變?yōu)榈碗娖健?梢栽O(shè)計(jì)鍵1為“0”值鍵、鍵2為“1”值鍵,滿(mǎn)足頻率控制字以二進(jìn)制進(jìn)行輸入;鍵3為輸入確定鍵;鍵4和鍵5為頻率步進(jìn)控制鍵,鍵4為加100 Hz鍵,鍵5為減100 Hz鍵,當(dāng)鍵3按下時(shí)將輸入設(shè)置的頻率控制字以二進(jìn)制數(shù)形式送至P2口,然后通過(guò)串行口輸出并驅(qū)動(dòng)LED靜態(tài)顯示。PO.O和PO.1及PO.2控制數(shù)據(jù)輸出的先后順序。此模塊功能具體實(shí)現(xiàn)可通過(guò)匯編語(yǔ)言編程后下載到單片機(jī)調(diào)試并實(shí)現(xiàn),限于篇幅,具體程序不在此展現(xiàn),只展示設(shè)計(jì)思路。
2.2.2 FPGA處理模塊
(1)FPGA處理模塊控制原理
FPGA處理模塊是本系統(tǒng)的核心,系統(tǒng)結(jié)構(gòu)圖中FPGA模塊里的DDS基本結(jié)構(gòu)圖如圖3所示。
圖3中DDS工作原理為:相位累加器由32位加法器與32位累加寄存器級(jí)聯(lián)構(gòu)成。在時(shí)鐘脈沖,fc的控制下,加法器將頻率控制字M與累加寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果送到累加寄存器的數(shù)據(jù)輸入端,以使加法器在下一個(gè)時(shí)鐘脈沖的作用下繼續(xù)與頻率控制字相加。這樣,相位累加器在時(shí)鐘作用下,不斷對(duì)頻率控制字進(jìn)行線性相位累加。由此可以看出,相位累加器在每一個(gè)時(shí)鐘輸入時(shí),把頻率控制字累加一次,相位累加器輸出的數(shù)據(jù)就是合成信號(hào)的相位。
DDS采用改變尋址的步長(zhǎng)來(lái)改變輸出信號(hào)的頻率,步長(zhǎng)即為對(duì)數(shù)字波形查表的相位增量,由累加器對(duì)相位增量進(jìn)行累加,累加器的值作為查表地址,這樣就可把存儲(chǔ)在波形存儲(chǔ)器內(nèi)的波形抽樣值(二進(jìn)制編碼)經(jīng)查找表查出,完成相位到幅值轉(zhuǎn)換,波形存儲(chǔ)器的輸出送到D/A轉(zhuǎn)換器,D/A轉(zhuǎn)換器將數(shù)字量形式的波形幅值轉(zhuǎn)換成所要求合成頻率的模擬量形式信號(hào)。低通濾波器用于濾除不需要的取樣分量,以便輸出頻譜純凈的正弦波信號(hào)。
(2)FPGA處理模塊實(shí)現(xiàn)方式
根據(jù)設(shè)計(jì)要求:要達(dá)到正弦波輸出頻率范圍(1 kHz~10 MHz)及頻率步進(jìn)值100 Hz,設(shè)相位累加器的位寬為2N,sin表的大小為2P,累加器的高P位用于尋址Sin表。根據(jù)DDS工作原理,主頻時(shí)鐘Clock的頻率為,fc=100 MHz,累加器按步進(jìn)為1進(jìn)行累加直至溢出一遍的頻率即為頻率步進(jìn)值。
以M點(diǎn)為步長(zhǎng)(M為頻率控制字),產(chǎn)生信號(hào)的頻率:
由于頻率步進(jìn)值為100 Hz,由式(1)可計(jì)算得N=20。要使輸出頻率達(dá)到10 MHz,由式(2)可計(jì)算得M=104 857,為了使輸出的波形盡可能不失真,頻率控制字位寬取17位,高三位添000,由于設(shè)計(jì)加法器為32位,則低12位添000000000000。本系統(tǒng)中使用的D/A轉(zhuǎn)換器件的輸入位寬為10,所以只取相位累加器輸出的高10位可滿(mǎn)足設(shè)計(jì)要求。整個(gè)過(guò)程的實(shí)現(xiàn)過(guò)程中,本系統(tǒng)選用Altera公司的Cyclone系列芯片,采用VHDL語(yǔ)言描述,利用開(kāi)發(fā)軟件QuartusⅡ進(jìn)行綜合,以實(shí)現(xiàn)產(chǎn)生l kHz~10 MHz頻率范圍內(nèi)的各種正弦信號(hào)。[!--empirenews.page--]
3 實(shí)驗(yàn)數(shù)據(jù)測(cè)試
由鍵盤(pán)輸入的是二進(jìn)制頻率控制字,通過(guò)數(shù)碼管可以顯示出十進(jìn)制的頻率和相位,將信號(hào)發(fā)生器的輸出端和雙通道數(shù)字示波器接好,任意幾個(gè)頻率為1 kHz~10 MHz之間的信號(hào)測(cè)試結(jié)果如表1所示。
4 結(jié)語(yǔ)
本系統(tǒng)設(shè)計(jì)時(shí),相位字是在編程時(shí)就固定的,輸出正弦信號(hào)的頻率變化是由頻率字變化引起的,而頻率字的預(yù)置是通過(guò)鍵盤(pán)輸入的,因此能夠得到頻率變化的正弦信號(hào),這樣的信號(hào)源能夠很好地滿(mǎn)足需要變頻信號(hào)的情況,因此,實(shí)用性較強(qiáng)。通過(guò)理論計(jì)算和實(shí)際測(cè)量相比較可以看出,基于FPGA的DDS技術(shù)實(shí)現(xiàn)正弦信號(hào)發(fā)生器輸出正弦信號(hào)頻率范圍較寬、分辨率高、幅度和頻率的精度較高。另外,本系統(tǒng)還很容易擴(kuò)展,不需要對(duì)硬件電路進(jìn)行較大的修改,只需要修改相應(yīng)的程序便可實(shí)現(xiàn)相應(yīng)的功能,比如產(chǎn)生PSK,ASK信號(hào)等。但是它也有局限性,主要表現(xiàn)在輸出雜散大,這是由于DDS采用全數(shù)字結(jié)構(gòu),不可避免地引入雜散,主要來(lái)源有三個(gè):相位累加器相位舍位誤差造成的雜散;幅度量化誤差造成的雜散和DAC非線性造成的雜散。