使用FPGA和DDS技術(shù)的DDS模塊的總體設(shè)計(jì)
0 引言
隨著現(xiàn)代電子技術(shù)的發(fā)展,在通訊、雷達(dá)、宇航、電視廣播、遙控遙測(cè)和電子測(cè)量等使用領(lǐng)域,對(duì)信號(hào)源的頻率穩(wěn)定度、頻譜純度、范圍和輸出頻率提出了越來越高的要求。為了提高頻率穩(wěn)定度,經(jīng)常采用晶體振蕩器等方法來解決,但已不能滿足眾多應(yīng)用場(chǎng)合的要求。伴隨電子測(cè)量技能與計(jì)算機(jī)技能的緊密結(jié)合,一種新的信號(hào)發(fā)生器——任意波形發(fā)生器應(yīng)運(yùn)而生,它可產(chǎn)生由用戶定義的任意復(fù)雜的波形,因而具有廣闊的運(yùn)用發(fā)展前景。目前設(shè)計(jì)波形發(fā)生器的要領(lǐng)通常有三種:
(1)傳統(tǒng)的直接頻率合成技能(DS)。該類要領(lǐng)能實(shí)現(xiàn)高速頻率變換,具有低相位噪聲以及所有要領(lǐng)中最高的工作頻率。但由于采用大量的倍頻、分頻、混頻和濾波環(huán)節(jié),導(dǎo)致其結(jié)構(gòu)復(fù)雜、體積龐大、成本昂貴,而且容易產(chǎn)生過多的雜散分量。
(2)鎖相環(huán)式頻率合成器(PLL)。該類技能具有良好窄帶跟蹤特征,可選擇所需頻率信號(hào),抑制雜散分量,且省去大量濾波器,有利于集成化和小型化。但由于鎖相環(huán)本身是個(gè)惰性環(huán)節(jié),鎖定時(shí)間較長,因而頻率轉(zhuǎn)換時(shí)間較長,且由模擬要領(lǐng)合成的正弦波參數(shù)(如幅度、頻率和相位等)都難以定量控制。
(3)直接數(shù)字式頻率合成器(direct digital frequency,DDS)。該類要領(lǐng)具有高頻率穩(wěn)定度、高頻率分辨率以及極短的頻率轉(zhuǎn)換時(shí)間。此外,全數(shù)字化結(jié)構(gòu)便于集成,輸出相位連續(xù),頻率、相位和幅度均可實(shí)現(xiàn)程控,而且理論上能夠?qū)崿F(xiàn)任意波形。
鑒于DDS技術(shù)的優(yōu)點(diǎn),本文利用FPGA芯片的可編程性和實(shí)現(xiàn)方案易改動(dòng)的特點(diǎn),提出一種基于FPGA和DDS技術(shù)的任意波形發(fā)生器設(shè)計(jì)新方法。
1 DDS的基本原理
DDS的基本原理是利用采樣定理,通過查表法產(chǎn)生波形。DDS的結(jié)構(gòu)有很多種,其基本的電路原理可用圖1來表示。
DDS是從相位概念出發(fā),直接對(duì)參考正弦信號(hào)進(jìn)行抽樣,得到不同的相位,通過數(shù)字計(jì)算技術(shù)產(chǎn)生對(duì)應(yīng)的電壓幅度,最后濾波平滑輸出所需頻率。下面通過從相位出發(fā)的正弦函數(shù)產(chǎn)生描述DDS的概念。
圖1中,K為頻率控制字;N為相位累加器的字長;M為ROM地址線位數(shù);m為ROM數(shù)據(jù)線位數(shù),即DAC的位數(shù);fc為DDS系統(tǒng)的參考時(shí)鐘源,通常是一個(gè)具有高穩(wěn)定性的晶體振蕩器,為整個(gè)系統(tǒng)的各個(gè)組成部分提供同步時(shí)鐘。
DDS的數(shù)學(xué)模型可歸結(jié)為:在每一個(gè)時(shí)鐘周期T內(nèi),頻率控制字K與N比特相位累加器累加1次,同時(shí)對(duì)2N取模運(yùn)算,得到的和(以N位二進(jìn)制數(shù)表示)作為相位值,以二進(jìn)制代碼的形式查詢正弦函數(shù)表ROM,再將相位信息轉(zhuǎn)變成相應(yīng)的數(shù)字量化正弦幅度值。ROM輸出的數(shù)字正弦波序列經(jīng)數(shù)/模轉(zhuǎn)換器轉(zhuǎn)變?yōu)殡A梯模擬信號(hào),最后通過低通濾波器平滑后得到一個(gè)純凈的正弦模擬信號(hào),其頻率為:
相位累加器由N位加法器與N位累加寄存器級(jí)聯(lián)構(gòu)成。每來一個(gè)時(shí)鐘脈沖fc,加法器將頻率控制字K與累加寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果送至累加寄存器的數(shù)據(jù)輸入端。累加寄存器將加法器在上一個(gè)時(shí)鐘脈沖作用后所產(chǎn)生的新相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一個(gè)時(shí)鐘脈沖的作用下繼續(xù)與頻率控制字相加。這樣,相位累加器在時(shí)鐘作用下,不斷對(duì)頻率控制字進(jìn)行線性相位累加。由此可以看出,相位累加器在每一個(gè)時(shí)鐘脈沖輸入時(shí),把頻率控制字累加1次,相位累加器輸出的數(shù)據(jù)就是合成信號(hào)的相位,相位累加器的溢出頻率就是DDS輸出的信號(hào)頻率。用相位累加器輸出的數(shù)據(jù)作為波形存儲(chǔ)器(ROM)的相位取樣地址,這樣就可把存儲(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 DDS模塊的FPGA實(shí)現(xiàn)
2.1 DDS模塊的基本結(jié)構(gòu)設(shè)計(jì)
整個(gè)DDS系統(tǒng)的設(shè)計(jì)采用層次結(jié)構(gòu),采用VHDL與原理圖輸入相結(jié)合的方法,DDS基本結(jié)構(gòu)如圖2所示。
下面就各個(gè)部分的設(shè)計(jì)分別介紹:該設(shè)計(jì)中采用的頻率字為32位,即N=32,RAM為256×8位,故ROM的地址線寬M=8,輸出數(shù)據(jù)線寬L=8。由于RAM地址線為8位(28=256),而相位累加器的輸出為32位,為了保證它們之間的對(duì)應(yīng),將相位累加器的高8位與RAM的地址線相連。這樣存在多個(gè)相位地址對(duì)應(yīng)同一個(gè)RAM地址的情況,如果把相位累加器輸出的所有位數(shù)全部用來查詢RAM,那么RAM的容量會(huì)非常的大,如此巨大的RAM表容量在實(shí)際工作中難以實(shí)現(xiàn)。因此,常使用相位地址高位來尋址,舍去低位的相位截?cái)喾椒?。?dāng)然,這種方法會(huì)引入一定的噪聲,但
對(duì)于節(jié)省的資源來說,這種方法還是值得的。
2.2 DDS模塊的總體設(shè)計(jì)
該設(shè)計(jì)主要由接口部件、頻率及控制部件、相位累加器、波形數(shù)據(jù)產(chǎn)生部件和輸出選擇器組成,如圖3所示。
接口部件主要完成接收單片機(jī)發(fā)送過來的頻率參數(shù)及控制參數(shù)其中A0為數(shù)據(jù)通道和地址通道選擇位,EN為數(shù)據(jù)寫入使能。頻率及控制部件主要完成頻率控制字及輸出控制參數(shù)的存儲(chǔ),由5個(gè)帶寫使能的8位同步寄存器組成。相位累加器為DDS主要部件實(shí)現(xiàn)相位的累加。波形數(shù)據(jù)產(chǎn)生部件的功能是將相位數(shù)據(jù)轉(zhuǎn)化為所需的波形數(shù)據(jù),其中正弦波和三角波數(shù)據(jù)由查ROM表獲得,鋸齒波數(shù)據(jù)直接由相位累加器輸出得到,方波數(shù)據(jù)是相位累加器輸出數(shù)據(jù)與設(shè)定數(shù)據(jù)比較獲得。輸出選擇器的SEL端接到控制參數(shù)寄存器,它的4個(gè)數(shù)值分別選擇4種不同的波形輸出。
3 DDS仿真實(shí)驗(yàn)結(jié)果
設(shè)置輸出100 kHz正弦波,由式,得,通過計(jì)算K=21 477 072=147B6DOH,按照此數(shù)據(jù)設(shè)置好頻率控制寄存器的參數(shù),其仿真波形如圖4、圖5所示。
用Matlab對(duì)仿真數(shù)據(jù)進(jìn)行處理,得到對(duì)應(yīng)波形顯示圖6~圖11所示,驗(yàn)證了設(shè)計(jì)的正確性。