1971年,美國學者J.TIerney等人撰寫的《A Digital Frequency Synthesizer》一文首次提出了以全數字技術,從相位概念出發直接合成所需波形的一種新合成原理。限于當時的技術,沒有得到重視,但隨著微電子技術的迅速發展,它以有別于其他頻率合成方法的優越性能和特點成為現代頻率合成技術的佼佼者,具體體現在相對帶寬寬,頻率轉換時間短,頻率分辨率高,輸出相位連續,可產生多種調制信號,控制靈活方便。因此,對于正弦信號發生器的設計,可以采用DDS,即直接數字頻率合成方案實現。DDS的輸出頻率是數字可調的,完全能實現頻率為1 kHz~10 MHz之間的正弦信號,這是實際應用中產生可調頻率正弦信號波形較為理想的方案。實現DDS常用3種技術方案:高性能DDS單片電路的解決方案;低頻正弦波DDS單片電路的解決方案;自行設計的基于FPGA芯片的解決方案。雖然有的專用DDS芯片的功能也比較多,但控制方式卻是固定的,因此不一定滿足用戶需求。而基于FPGA則可以根據需要方便地實現各種比較復雜的調頻、調相和調幅功能,具有良好的實用性。專用DDS芯片由于采用特定的集成工藝,內部數字信號抖動很小,可以輸出高質量的模擬信號;利用FPGA也能輸出較高質量的信號,雖然達不到專用DDS芯片的水平,但信號精度誤差非常小,能滿足大多數信號源要求。DDS是本系統的關鍵技術,在介紹本系統之前,先單獨介紹DDS的原理。
l DDS電路工作原理
1.1 DDS的工作原理
DDS的工作原理是以數控振蕩器的方式產生頻率、相位可控制的正弦波。如圖1所示,電路一般包括基準時鐘、頻率累加器、相位累加器、幅度/相位轉換電路、D/A轉換器和低通濾波器(LPF)。頻率累加器對輸入信號進行累加運算,產生頻率控制數據X(frequency data或相位步進量)。相位累加器由N位全加器和N位累加寄存器級聯而成,對代表頻率的二進制碼進行累加運算,是典型的反饋電路,產生累加結果Y。幅度/相位轉換電路實質上是一個波形寄存器,以供查表使用。讀出的波形數據送入D/A轉換器和低通濾波器轉換成符合要求的模擬信號。
1.2 具體工作過程
信號產生過程:如圖1所示,N位加法器將頻率控制數據X與累加寄存器輸出的累加相位數據在時鐘脈沖Fclk控制下相加,把相加后的結果Y送至累加寄存器的輸入端。累加寄存器一方面將在上一時鐘周期作用后所產生的新的相位數據反饋到加法器的輸入端,以使加法器在下一時鐘的作用下繼續與頻率控制數據X相加;另一方面將這個值作為取樣地址值送入幅度/相位轉換電路(即圖1中的波形存儲器),幅度/相位轉換電路根據這個地址輸出相應的波形數據。最后經D/A轉換器和低通濾波器將波形數據處理成所需要的模擬波形。相位累加器在基準時鐘的作用下,進行線性相位累加,當相位累加器加滿量時就會產生一次溢出,這樣就完成了一個周期,這個周期也就是DDS信號的一頻率周期。 DDS輸出信號的頻率由下式給定:
假定基準時鐘為70 MHz,累加器為16位,則:
再假定X=4 096,則Fout=(4 096/65 536)×70=4.375 MHz。
可見,通過設定相位累加器位數、頻率控制字X和基準時鐘的值,就可以產生任一頻率的輸出。DDS的頻率分辨率定義為:
由于基準時鐘一般固定,因此相位累加器的位數就決定了頻率分辨率。如上面的例子,相位累加器為16位,那么頻率分辨率就可以認為是16位。位數越多,分頻率越高。
2 正弦信號發生器系統結構設計及實現
2.1 系統結構圖
正弦信號發生器系統結構圖如圖2所示。
2.2 單元電路
2.2.1 單片機控制模塊實現方式
單片機實現部分主要處理數據輸入及數據顯示,此模塊以AT89S51為中心,控制鍵盤輸入和LED顯示,其中鍵盤輸入值作為頻率控制字送給FPGA處理。單片機的P1口直接與鍵盤連接,無鍵按下時為高電平,當有鍵按下時就變為低電平。可以設計鍵1為“0”值鍵、鍵2為“1”值鍵,滿足頻率控制字以二進制進行輸入;鍵3為輸入確定鍵;鍵4和鍵5為頻率步進控制鍵,鍵4為加100 Hz鍵,鍵5為減100 Hz鍵,當鍵3按下時將輸入設置的頻率控制字以二進制數形式送至P2口,然后通過串行口輸出并驅動LED靜態顯示。PO.O和PO.1及PO.2控制數據輸出的先后順序。此模塊功能具體實現可通過匯編語言編程后下載到單片機調試并實現,限于篇幅,具體程序不在此展現,只展示設計思路。
2.2.2 FPGA處理模塊
(1)FPGA處理模塊控制原理
FPGA處理模塊是本系統的核心,系統結構圖中FPGA模塊里的DDS基本結構圖如圖3所示。
圖3中DDS工作原理為:相位累加器由32位加法器與32位累加寄存器級聯構成。在時鐘脈沖,fc的控制下,加法器將頻率控制字M與累加寄存器輸出的累加相位數據相加,把相加后的結果送到累加寄存器的數據輸入端,以使加法器在下一個時鐘脈沖的作用下繼續與頻率控制字相加。這樣,相位累加器在時鐘作用下,不斷對頻率控制字進行線性相位累加。由此可以看出,相位累加器在每一個時鐘輸入時,把頻率控制字累加一次,相位累加器輸出的數據就是合成信號的相位。
DDS采用改變尋址的步長來改變輸出信號的頻率,步長即為對數字波形查表的相位增量,由累加器對相位增量進行累加,累加器的值作為查表地址,這樣就可把存儲在波形存儲器內的波形抽樣值(二進制編碼)經查找表查出,完成相位到幅值轉換,波形存儲器的輸出送到D/A轉換器,D/A轉換器將數字量形式的波形幅值轉換成所要求合成頻率的模擬量形式信號。低通濾波器用于濾除不需要的取樣分量,以便輸出頻譜純凈的正弦波信號。