一.概述
頻率合成主要有三種方法:直接模擬合成法、鎖相環(huán)合成法和直接數(shù)字合成法(Direct Digital Frequency Synthesis,一般簡稱DDS)。直接模擬合成法利用倍頻、分頻、混頻及濾波,從單一或幾個參考頻率中產生多個所需的頻率。該方法頻率轉換時間短,但是體積大、功耗大,目前已基本不被采用。鎖相環(huán)合成法通過鎖相環(huán)完成頻率的加、減、乘、除運算。該方法結構簡化、便于集成,且頻譜純度高,目前使用比較廣泛,但存在高分辨率和快轉換速度之間的矛盾,一般只能用于大步進頻率合成技術中。DDS 是近年來迅速發(fā)展起來的一種新的頻率合成方法。該方法與前兩種方法相比,這種方法簡單可靠、控制方便,且具有很高的頻率分辨率和轉換速度,可以實現(xiàn)可編程和全數(shù)字化,控制靈活方便,并具有極高的性價比。
目前雖然有很多專用DDS 芯片,但控制方式卻是固定的,在某些場合,專用的DDS 芯片在控制方式、置頻速率等方面與系統(tǒng)的要求差距很大,不一定是我們所需要的。而用高性能的FPGA 器件設計符合自己需要的DDS 電路是一個很好的方法??删幊踢壿嬈骷云渌俣雀?、規(guī)模大、可編程,以及有強大EDA軟件支持等特性,十分適合實現(xiàn)DDS 技術。
DDS 的原理框圖如圖1,控制電路按照一定的地址關系從存儲器中讀取數(shù)據,進行數(shù)摸轉換,就可以得到一定頻率的輸出波形,再通過濾波器對輸出波形進行平滑處理。
圖1 DDS 原理框圖
基于FPGA 的DDS 控制電路的實現(xiàn)有采用相位累加和比例乘法器兩種方案,下面將分別介紹。
二.采用相位累加控制實現(xiàn)DDS
1.工作原理
電路如圖2 所示,相位累加器由N位加法器與N位相位寄存器級聯(lián)構成,類似于一個簡單的加法器。每來一個時鐘脈沖fclk,加法器就將頻率控制字M 與相位寄存器輸出的累加相位數(shù)據相加,然后把相加后的結果送至相位寄存器輸入端。相位寄存器在下一個時鐘的作用下就將加法器在上一個時鐘作用后產生的新相位數(shù)據反饋到加法器的輸入端,以使加法器繼續(xù)將相位數(shù)據與頻率控制字M 相加。頻率控制字M 由累加器累加以得到相應的這個相位數(shù)據將作為取樣地址值送入的波形存儲器,波形存儲器根據這個地址輸出相應的波形數(shù)據。最后經D/A 轉換器和低通濾波器將波形數(shù)據轉換成所需要的模擬波形。
圖2 相位累加器
當相位累加器累加滿量時,就會產生一次溢出,完成一個周期性的動作,這個周期就是合成信號的一個周期,累加器的溢出頻率也就是DDS 的合成信號頻率。
根據以上原理,輸出信號頻率與累加器時鐘fclk, 累加器位數(shù)N,相位增量M 的關系為f0=(fclk, • M )/ 2N 。其中:采樣點為2N/M,若fclk,一定,f0 越高,采樣點數(shù)越少;最小步進為fclk/2N,達到最小步進值時,采樣點數(shù)最多。設計中根據所要求的最高頻率和最少采樣點數(shù)可確定需要的fclk;根據最小步進和fclk,可確定N 的位數(shù);根據最高輸出頻率和最小步進可確定M 的位數(shù)。
2.設計實現(xiàn)
如要求設計產生頻率范圍為0HZ~~160KHZ,頻率的最小步進為5HZ 的信號。
根據公式可計算出fclk、N、和M 。f0 若達到160KHZ,采樣點數(shù)達64 點,則累加器時鐘fclk 為不小于10.24MHZ;為實現(xiàn)5HZ 的步進,此時采樣點數(shù)最多,有 5= fclk / 2N ,得到N=21,即累加器為21 位;最終輸出頻率與相位增量M 的關系為f0 =5M,由于最高達到160KHZ,則M≥160000/5=32000,而215=32768,所以選擇相位增量的位數(shù)為15 位。相位累加器XWLJ 采用VHDL 設計,其高九位給波形存儲器作為地址,根據以上要求的VHDL 設計,編譯成功后自動生成的邏輯符號如圖3 所示。
圖3 XWLJ 邏輯符號
若當頻率控制字為M=0100H 時,其仿真波形如圖4 所示??梢钥闯?,N 的輸出高九位按設計要求實現(xiàn)了相位累加的功能。
圖4 相位累加器仿真波形
三.采用比例乘法器控制實現(xiàn)DDS
1.比例乘法器工作原理
根據硬件比例乘法器(CC14527)的原理,我們對其進行VHDL 設計實現(xiàn)。其完成的功能為:ST為片選信號,當ST 有效時,在CLK 每十個脈沖中輸出端Q 將輸出DATA[3..0](0~9)個脈沖,同時在CLK 滿10 個脈沖時,C 端產生一個脈沖控制信號。在Max+plusⅡ下編譯成功后自動生成的邏輯符號MUL 如圖5 所示。其仿真波形如圖6,可以看出,當data 為4,在clk 十個脈沖中, q 輸出4 個脈沖,在CLK 滿10 個脈沖時,C 端產生一個脈沖控制信號,完全實現(xiàn)了比例乘法器功能。
圖5 比例乘法器的邏輯符號
圖6 比例乘法器仿真波形
2 設計實現(xiàn)
在兩個比例乘法器級聯(lián)時,令高位輸入數(shù)據q0,低位輸入數(shù)據q1,在每10 個脈沖中高位輸出q0個脈沖,同時高位C 端禁止低位CLK 進入,當高位滿10 個脈沖后高位C 端允許低位CLK 進入1 個脈沖,這樣在100 個脈沖中整體上將輸出10q0+q1 個脈沖。于是在n 級級聯(lián)后,若輸入頻率為f,則輸出脈沖頻率為[10 n-1q0+10n-2q1+…+10q(n-2)+q(n-1)]f/10n。
在Max+plusⅡ軟件環(huán)境下,對上面采用VHDL 語言已經實現(xiàn)的比例乘法器模塊MUL,采用6 級級聯(lián)產生DDS 控制電路頂層圖如圖7 所示, 為了清楚地顯示設計功能,仿真時q0 取1,q1 取2,其仿真波形如圖8 所示,可以看出,在CLK 的100 個脈沖中,q 輸出12 個脈沖。在給定輸入下,完全實現(xiàn)了設計的功能。
圖7 MUL 級聯(lián)構成的DDS 控制電路
圖8 MUL 級聯(lián)構成的DDS 控制電路的仿真波形
若在單片機的控制下,F(xiàn)PGA 接收單片機傳送過來的用戶要求的波形數(shù)據,及其頻率數(shù)據,并送到FPGA 以產生所需要的輸出頻率值。若時鐘信號為16MHz 時,則產生的頻率為實際所置頻率的16 倍。在用戶給定某一頻率后,通過單片機將其乘8 后再送給FPGA,乘法器再將其擴大16 倍,得到用戶預置頻率128 倍頻,故可以對波形的采樣點達128 個,提高波形準確度,很容易實現(xiàn)低值的頻率步進,步進可以降低到1Hz。
3. 結論
實踐證明,通過FPGA 實現(xiàn)的DDS 控制電路與其它的控制芯片如單片機等相結合,可以準確、靈活和方便地實現(xiàn)任意信號發(fā)生電路的設計。 以上兩種控制方案,只要累加器位數(shù)和比例乘法器級聯(lián)足夠多,就可以實現(xiàn)頻率的步進小,產生的頻率信號準確,穩(wěn)定性好,頻率的分辨率高,頻率轉換快,容易控制。FPGA 的功能完全取決于設計需求,具有相當大的靈活性,比購買專用DDS 芯片具有很高的性價比。基于FPGA 的DDS 控制技術,將在現(xiàn)代化電子系統(tǒng)和儀器儀表工業(yè)等領域廣泛應用。
本文作者創(chuàng)新點:在本文中,給出了兩種基于FPGA 的DDS 控制電路,增加了設計的選擇性,從而可以根據設計外圍電路要求,選擇一種更適合于系統(tǒng)設計的DDS 控制電路,可以使設計更加靈活、方便,易于實現(xiàn)。
參考文獻:
[1] 黃正謹. CPLD 系統(tǒng)設計入門與應用 [M].北京.電子工業(yè)出版社,2002
[2] 侯伯亨 顧新. VHDL 硬件描述語言與數(shù)字邏輯電路設計. [M].西安. 西安電子科技大學出版社,1999
[3] 高速雷達數(shù)字信號發(fā)生器的FPGA 設計與實現(xiàn)技巧. [J].微計算機信息,2006 年,第3-2 期,166-168 頁
[4] 李景華 杜玉遠.可編程邏輯器件及EDA 技術. [M].沈陽.東北大學出版社.2000