摘要:介紹了DDS技術在MCU+FPGA雙系統的一種實現方法,重點介紹了MCU的控制系統設計與現場可編程邏輯門陣列FPGA實現直接數字頻率合成的原理及其電路結構,并給出了利用ALTERA公司的Flex10K系列EPFIOK10LC84-4設計實現方案。
關鍵詞:直接數字頻率合成(DDS) MCU 現場可編程邏輯門陣列(FPGA)
中圖分類號:TN741 文獻標識碼:B 文章編號:1002-2422(2008)01-0013-02
DDS技術在相對帶寬、頻率轉換時間、相位連續性、高分辨率以及集成化等一系列性能指標方面已遠遠超過了傳統頻率合成技術。當DDS中的累加器的位數N很大時,最低輸出頻率可達Hz、mHz乃至μHz。如果fc為100MHz,那么當N為40位時,其分辨率可達90uHz。轉換時間最快可達10ns的量級,這都是傳統頻率合成所不能比擬的。
1 DDS的基本原理和參數要求
DDS設計是以AT89C51和FPGA為核心,采用直接數字合成技術,通過一定的手段將正弦波波形的數字量表示的幅值存入存儲器RAM(又稱波形存儲器)中,然后通過一個地址發生器對RAM尋址得到對應的幅值,用RAM的輸出值來驅動DAC,然后經濾波即可轉換成所需要的模擬正弦波形。因為它是在時域中進行頻率合成,從而能夠對輸出頻率進行快速而且精確的控制,并且這種控制全部都是數字控制,因此可以提供非常高的頻率精度。DDS實現的基本原理框圖如圖1。

DDS技術在本質上實現了一個數字分頻器的功能,它的頻率精度是由N位相位累加器的比特數決定的,即輸入的參考頻率除以2N就決定了DDS所能夠實現的頻率精度。輸出信號波形的頻率及頻率分辨率可以表示如下:
fout=Mfc/2N
f
式中:fout為輸出信號頻率;f
2 DDS的總體方案設計
系統采用MCU和FPGA兩個系統進行設計,在很多系統設計中,經常會遇到多個控制系統共同協作完成整個系統的設計,解決多系統(包括雙系統)共同協作互相通信的關鍵是要處理好系統之間通信的總線仲裁問題(即BUs_Contro1),只有解決了這個問題,才能保證整個系統的正常運轉。設計中由MCU的P3.0作為總線控制,MCU主要進行鍵盤輸入,顯示單元及對RAM存儲波形數據的控制。上電后,由MCU給予初始化,轉而由FPGA來控制波形數據的讀取,然后通過D/A控制及幅度控制單元,再經過一個低通濾波器,就可以得到所需的輸出波形。
3 MCu控制系統模塊的方案設計
系統上電后,MCU系統控制模塊首先進行初始化工作,主要完成的功能是:系統初始化的工作,包括輸出信號的頻率、幅度、占空比以及波形類型的設置,然后進行鍵盤掃描并進行判斷處理。輸出500Hz,幅度為5V的正弦波。然后進入鍵盤掃描,對輸入的鍵值進行操作。根據具體情況設置幾種合法的鍵盤輸入,假設設定如下:
(1)5個數字鍵加,‘A’鍵,用來設定頻率。如設定500Hz的頻率,按鍵次序是‘00500A’。
(2)2個數字鍵加‘B’鍵,用來設定信號幅度。如設定
2.4V的峰峰值,按鍵次序是‘24B’。
(3)1個數字鍵加‘C’鍵,用來設定輸出信號類型。0、1、2分別指正弦波、三角波、方波。
(4)1個數字鍵加‘D’鍵,用來設定方波的占空比。如設定20%的占空比,按鍵次序是‘2D’。
(5)任何時候輸入‘E’鍵,都表示清除前面的所有輸入,回到初始狀態。下面是C51程序的部分源程序:
void main()
{
unsigned int freq,now_freq:
unsigned char amp,zkb,wave_type,now_amp,now_zkb,now_type;
unsigned char key,key1,k,key_buffer[5];
bus_ctrl=1;sel_da=0;amp=50,zkb=5,wave_type=0,freq=500;
now_type=wave_type; now_zkb=zkb;now_amp=amp;nowfreq=freq;
write_dphase(freq);wrlte_wave amp(amp);init_ram(wave_type,
zkb);
wave_out(now_freq);k=0;bus_ctrl=0;
while(1)
{
key=sctmkey():
}
}
4 波形存儲器數據的產生方案
波形存儲器的設計是很重要的部分。為了保證波形的平滑,設計時可將一個周期分為65536個點,點數很多,直接求解很麻煩。正弦波形具有特有的對稱性,可以考慮取一個周期的一半(或者是四分之一)即可,充分運用其對稱性通過一定的編程算法實現整個周期波形的還原。采用了取半個周期,即要取32768個采樣點,如果直接用單片機計算32768個點的正弦幅度值,涉及的多次浮點運算,初始化時間很長,為了提高效率,可采取一種簡單的方法。這里用的是8位的DA,所以每個幅度值也是8位的,一共有256個不同的幅度值,ram中存儲的是余弦函數從π到2π的幅度值,由下式計算:
amp=127.5+127.5cos(δ+2δ(n+0.5)/65532)
n=0,1,…,32768
將每個幅度值的個數記下。由于余弦函數的對稱性,幅度為255的點的個數和幅度為0的點的個數是相同的,因此將幅度0到127的點的個數分別存儲到一個step[128]的數組中,這個數組位于程序存儲器中。初始化余弦函數的波形的時候就可以直接根據step[128]向ram中寫數據。這一設計大大縮短了ram空間波形數據的初始化時間,是系統設計的一大突出特色。
5 FPGA控制模塊的設計方案
FPGA控制模塊的設計主要包括:分頻模塊,相位累加器模塊,鎖存模塊,MCU寫FPGA內寄存器模塊,數碼管掃描顯示模塊等。
相位累加器模塊相當于地址發生器,對于一個連續的正弦波信號,其角頻率ω可以用相位斜率△φ/△t表示。當角頻率。為定值時,正弦波信號的相位與時間成線性關系,即φ=△t。根據這一基本關系,在一定頻率fc的時鐘信號作用下,通過一個線性的計數時序發生器按照相位增量M進行累加,所產生的結果作為取樣地址對正弦波波形存儲器進行掃描,進而周期性的讀取波形存儲器中的數據。
6 結束語
DDS是現今一種重要的頻率合成手段,高速集成電路的發展進一步改善了DDS的性能,它與傳統技術相結合組成的各種混合設計方案將頻率源的性能提高到了一個新的水平,因此,未來的DDS不僅可應用于需要使用信號源的傳統領域,而且也必將開拓出許多新的應用領域。
實踐證明:本系統在頻率不高于17kHz時能產生精確的正弦波形,而且十分穩定。由于基準時鐘為526.7KHz,且分辨率為19位,因此,該系統能產生的最低頻率為1.0045Hz,若要產生更低頻率及更精確的波形,可以提高分辨率并相應減小基準時鐘,這在FPGA中實現起來相當容易,可以通過改變RAM數據,產生任意波形。用FPGA設計DDS電路較采用專用DDS芯片更為靈活方便。