直接數字合成

直接數字合成Direct Digital Synthesizer,簡稱DDS)是一種數字電子方式,它從一個單一(或混合)的頻率源中產生任意波形頻率

DDS的函數發生器

概述

一個基本的DDS電路包括電子控制器、隨機訪問存儲器(RAM)、頻率參考源(通常是晶振)、計數器數位類比轉換器(DAC)。要使DDS系統工作需要兩個操作階段:我們稱之為編程和運行。

編程

在編程這一階段里,電子控制器把數據載入至存儲器中。數據的每一個單元是一個用來表示當前時刻信號幅度的二進制數。存儲器中這些數據的排列(數組)構成一張振幅表,表示每一時刻當前波形的振幅。舉個例子,在一張振幅表中,前一半的數全為0,後一半全為波形振幅的最大值(100%),這些數據就表示「方波」了。任何波形都可以通過簡單地改變這些數據來產生。

運行

在運行這一階段中,計數器(又稱之為相位累加器)受頻率參考源的指示,在每一個頻率的上升沿或下降沿自增。相位累加器的輸出(相位)通常就是數組中依次輸出的各個數據。最後會被DAC依次轉換成模擬波形。

為了產生周期波形,電路被設計成每一個參考頻率周期的時間片讀取振幅表中的一個數據。舉個例子,如果參考頻率是1MHz,而且振幅表中包含1000個數據,以自增1的方式讀完整個振幅表需要1000 / 1 MHz = 1 ms,所以最後輸出波形的頻率為1/(1 ms) = 1 kHz。

要想使系統產生更高的輸出頻率,可以簡單地增加相位自增速度,從而使計數器能更快地讀完一遍振幅表。在上面的那個例子中,相位自增的幅度是1,所以如果自增的幅度設為2,則輸出波形的頻率將提高一倍。為了能較好地控制頻率,可將標準的相位自增幅度設為10。這樣微調輸出頻率。舉個例子,如果將相位自增幅度提至11則會增加10%的輸出頻率。當將相位自增幅度減至9時,輸出頻率會相應地減小。為了獲得更加精確的輸出頻率,需用計數器DAC擁有較多的位數。

執行細節

實際執行中通常在32位的相位累加器和相位自增中設置查找表在大小為2的n次方。通常計數器的高位8或10比特用作查找表的索引(查找表的大小通常為256或1024)。剩餘的低位比特可被作為參數或索引,用來竄改查找表中鄰近的數據。經常用線性插值法來實現。頻率源通常由一個1MHz至100MHz的晶振產生。 最高頻率產生的方式取決於查找表的大小和(頻率源的)頻率。為了能產生清晰的波形,(查找表中)必須擁有最少的採樣點。如果相位自增幅度太大,計數器閱遍查找表太快從而導致輸出信號的失真。 DDS的實現有軟件與硬件兩種。由於DDS的實時性,軟件的實現通常只用於聲音頻率的產生。

DDS的應用:函數信號發生器混頻器調製器和聲音合成器等等。

參考

論文

  • Tierney, J., Rader, C.M., and Gold, B. "A Digital Frequency Synthesizer," IEEE Transactions on Audio and Electroacoustics AU-19:1, March 1971, 48-56

圖書

  • Goldberg, Bar-Giora, Digital Techniques in Frequency Synthesis, New York: McGraw-Hill, 1996. ISBN 0-07-024166-X

外部連結