0 引言
隨著現(xiàn)代電子技術的發(fā)展,在通訊、雷達、宇航、電視廣播、遙控遙測和電子測量等使用領域,對信號源的頻率穩(wěn)定度、頻譜純度、范圍和輸出頻率提出了越來越高的要求。為了提高頻率穩(wěn)定度,經(jīng)常采用晶體振蕩器等方法來解決,但已不能滿足眾多應用場合的要求。伴隨電子測量技能與計算機技能的緊密結合,一種新的信號發(fā)生器——任意波形發(fā)生器應運而生,它可產(chǎn)生由用戶定義的任意復雜的波形,因而具有廣闊的運用發(fā)展前景。目前設計波形發(fā)生器的要領通常有三種:
(1)傳統(tǒng)的直接頻率合成技能(DS)。該類要領能實現(xiàn)高速頻率變換,具有低相位噪聲以及所有要領中最高的工作頻率。但由于采用大量的倍頻、分頻、混頻和濾波環(huán)節(jié),導致其結構復雜、體積龐大、成本昂貴,而且容易產(chǎn)生過多的雜散分量。
(2)鎖相環(huán)式頻率合成器(PLL)。該類技能具有良好窄帶跟蹤特征,可選擇所需頻率信號,抑制雜散分量,且省去大量濾波器,有利于集成化和小型化。但由于鎖相環(huán)本身是個惰性環(huán)節(jié),鎖定時間較長,因而頻率轉換時間較長,且由模擬要領合成的正弦波參數(shù)(如幅度、頻率和相位等)都難以定量控制。
(3)直接數(shù)字式頻率合成器(direct digital frequency,DDS)。該類要領具有高頻率穩(wěn)定度、高頻率分辨率以及極短的頻率轉換時間。此外,全數(shù)字化結構便于集成,輸出相位連續(xù),頻率、相位和幅度均可實現(xiàn)程控,而且理論上能夠實現(xiàn)任意波形。
鑒于DDS技術的優(yōu)點,本文利用FPGA芯片的可編程性和實現(xiàn)方案易改動的特點,提出一種基于FPGA和DDS技術的任意波形發(fā)生器設計新方法。
1 DDS的基本原理
DDS的基本原理是利用采樣定理,通過查表法產(chǎn)生波形。DDS的結構有很多種,其基本的電路原理可用圖1來表示。

DDS是從相位概念出發(fā),直接對參考正弦信號進行抽樣,得到不同的相位,通過數(shù)字計算技術產(chǎn)生對應的電壓幅度,最后濾波平滑輸出所需頻率。下面通過從相位出發(fā)的正弦函數(shù)產(chǎn)生描述DDS的概念。
圖1中,K為頻率控制字;N為相位累加器的字長;M為ROM地址線位數(shù);m為ROM數(shù)據(jù)線位數(shù),即DAC的位數(shù);fc為DDS系統(tǒng)的參考時鐘源,通常是一個具有高穩(wěn)定性的晶體振蕩器,為整個系統(tǒng)的各個組成部分提供同步時鐘。
DDS的數(shù)學模型可歸結為:在每一個時鐘周期T內(nèi),頻率控制字K與N比特相位累加器累加1次,同時對2N取模運算,得到的和(以N位二進制數(shù)表示)作為相位值,以二進制代碼的形式查詢正弦函數(shù)表ROM,再將相位信息轉變成相應的數(shù)字量化正弦幅度值。ROM輸出的數(shù)字正弦波序列經(jīng)數(shù)/模轉換器轉變?yōu)殡A梯模擬信號,最后通過低通濾波器平滑后得到一個純凈的正弦模擬信號,其頻率為:

相位累加器由N位加法器與N位累加寄存器級聯(lián)構成。每來一個時鐘脈沖fc,加法器將頻率控制字K與累加寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結果送至累加寄存器的數(shù)據(jù)輸入端。累加寄存器將加法器在上一個時鐘脈沖作用后所產(chǎn)生的新相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一個時鐘脈沖的作用下繼續(xù)與頻率控制字相加。這樣,相位累加器在時鐘作用下,不斷對頻率控制字進行線性相位累加。由此可以看出,相位累加器在每一個時鐘脈沖輸入時,把頻率控制字累加1次,相位累加器輸出的數(shù)據(jù)就是合成信號的相位,相位累加器的溢出頻率就是DDS輸出的信號頻率。用相位累加器輸出的數(shù)據(jù)作為波形存儲器(ROM)的相位取樣地址,這樣就可把存儲在波形存儲器內(nèi)的波形抽樣值(二進制編碼)經(jīng)查找表查出,完成相位到幅值轉換。波形存儲器的輸出送到D/A轉換器,D/A轉換器將數(shù)字量形式的波形幅值轉換成所要求合成頻率的模擬量形式信號。低通濾波器用于濾除不需要的取樣分量,以便輸出頻譜純凈的正弦波信號。
2 DDS模塊的FPGA實現(xiàn)
2.1 DDS模塊的基本結構設計
整個DDS系統(tǒng)的設計采用層次結構,采用VHDL與原理圖輸入相結合的方法,DDS基本結構如圖2所示。

下面就各個部分的設計分別介紹:該設計中采用的頻率字為32位,即N=32,RAM為256×8位,故ROM的地址線寬M=8,輸出數(shù)據(jù)線寬L=8。由于RAM地址線為8位(28=256),而相位累加器的輸出為32位,為了保證它們之間的對應,將相位累加器的高8位與RAM的地址線相連。這樣存在多個相位地址對應同一個RAM地址的情況,如果把相位累加器輸出的所有位數(shù)全部用來查詢RAM,那么RAM的容量會非常的大,如此巨大的RAM表容量在實際工作中難以實現(xiàn)。因此,常使用相位地址高位來尋址,舍去低位的相位截斷方法。當然,這種方法會引入一定的噪聲,但
對于節(jié)省的資源來說,這種方法還是值得的。
2.2 DDS模塊的總體設計
該設計主要由接口部件、頻率及控制部件、相位累加器、波形數(shù)據(jù)產(chǎn)生部件和輸出選擇器組成,如圖3所示。

接口部件主要完成接收單片機發(fā)送過來的頻率參數(shù)及控制參數(shù)其中A0為數(shù)據(jù)通道和地址通道選擇位,EN為數(shù)據(jù)寫入使能。頻率及控制部件主要完成頻率控制字及輸出控制參數(shù)的存儲,由5個帶寫使能的8位同步寄存器組成。相位累加器為DDS主要部件實現(xiàn)相位的累加。波形數(shù)據(jù)產(chǎn)生部件的功能是將相位數(shù)據(jù)轉化為所需的波形數(shù)據(jù),其中正弦波和三角波數(shù)據(jù)由查ROM表獲得,鋸齒波數(shù)據(jù)直接由相位累加器輸出得到,方波數(shù)據(jù)是相位累加器輸出數(shù)據(jù)與設定數(shù)據(jù)比較獲得。輸出選擇器的SEL端接到控制參數(shù)寄存器,它的4個數(shù)值分別選擇4種不同的波形輸出。
3 DDS仿真實驗結果
設置輸出100 kHz正弦波,由式,得,通過計算K=21 477 072=147B6DOH,按照此數(shù)據(jù)設置好頻率控制寄存器的參數(shù),其仿真波形如圖4、圖5所示。


用Matlab對仿真數(shù)據(jù)進行處理,得到對應波形顯示圖6~圖11所示,驗證了設計的正確性。