如何預測直接數(shù)字頻率合成器(DDS)輸出頻譜中主相位截斷雜散的頻率和幅度
現(xiàn)代直接數(shù)字頻率合成器(DDS)通常利用累加器和數(shù)字頻率調諧字(FTW)在累加器輸出端產生周期性的N位數(shù)字斜坡(見圖1)。 此數(shù)字斜坡可依據(jù)公式1定義DDS的輸出頻率(fO),其中fS為DDS采樣速率(或系統(tǒng)時鐘頻率)。
(1)
DDS給定時,組成FTW的位數(shù)(N)定義了fO的最小可能變化,這發(fā)生在FTW值僅更改最低有效位(LSB)時。 也就是說,F(xiàn)TW中的1 LSB變化定義了DDS的調諧分辨率。 例如,N = 32的DDS的調諧分辨率高于N = 24的DDS。為了證實DDS的極佳調諧能力,以AD9912為例,N = 48產生的調諧分辨率為1/248(即1/281,474,976,710,656)。 事實上,fS = 1 GHz時,AD9912產生的頻率調諧分辨率約為3.6 µHz (0.0000036 Hz)。
若DDS的FTW為N位,細看圖1可知,累加器輸出端的位數(shù)(N)和角度轉幅度模塊輸入端的位數(shù)(P)之間存在明顯的差異,即P ≤ N。這種差異會導致DDS輸出頻譜中出現(xiàn)相位截斷雜散。
知道給定DDS的P值對預測相位截斷雜散非常重要。 本應用筆記介紹了一種用于計算特定相位截斷雜散的頻率和幅度的方法,尤其適合給定FTW的主相位截斷(PPT)。
圖1. DDS功能框圖
相位截斷
累加器和FTW組成DDS的頻率控制元件。 但是,除了頻率控制元件外,DDS還具有將N位累加器輸出從相位值轉換為幅度值的角度轉幅度模塊。 角度轉幅度模塊占據(jù)了DDS數(shù)字電路的很大一部分。 因此,通過增大N來提高DDS的調諧分辨率會大幅增加角度轉幅度模塊所需的電路數(shù)。 同樣,將所有N位相位信息轉換為幅度不太實際。 如圖1所示,實際DDS使用累加器位的子集進行相位幅度轉換,即P最高有效位(MSB)。 這種位截斷會大幅減少角度轉幅度模塊所需的電路數(shù)。 但代價是需要在DDS輸出端引入可能的頻譜偽像(具體而言就是相位截斷雜散)。
相位截斷雜散
根據(jù)定義,按P = N設計的DDS沒有相位截斷。 因此,其輸出頻譜中沒有相位截斷雜散。 但是在實際DDS中,P N,這會產生相位截斷。
有三類相位截斷雜散: 一階、二階和三階。 這幾個分類源于DDS中相位幅度轉換器和數(shù)模轉換器(DAC)的級聯(lián)組合的頻譜特性。 圖2結合圖形說明將傅里葉變換技術應用于角度轉幅度模塊(帶P位相位輸入)和呈現(xiàn)諧波失真的非理想DAC所產生的譜線。 一般而言,頻譜由2P個頻率構成,指數(shù)范圍為0至2P − 1,分類詳情如表1。
圖2. 角度轉幅度模塊和DAC的頻譜特性
主相位截斷(PPT)雜散
每階(一階、二階和三階)的許多相位截斷雜散可能在DDS的輸出頻譜中出現(xiàn),具體取決于FTW的特定值。 本應用筆記重點介紹最大的一階雜散,即PPT雜散。
由于DDS輸出是從相位采樣生成波形的結果(即累加器輸出),因此DDS輸出頻譜遵循奈奎斯特采樣理論的規(guī)則。 輸出頻譜顯示為兩個完全相同的頻譜,每個頻譜跨越采樣頻率(fS)一半的頻率范圍。 這兩個頻譜是彼此的鏡像,反映奈奎斯特頻率(fS/2)。 同樣,PPT雜散將其自身表示為兩個雜散。 一個PPT雜散出現(xiàn)在0 Hz和fS/2之間,另一個作為其鏡像出現(xiàn)在fS/2和fS之間。
請注意,盡管兩個PPT雜散是最大的一階相位截斷雜散,但整體而言,這些雜散可能不是最大的相位截斷雜散。 由于相位截斷雜散在DDS輸出頻譜中的分配機制,部分二階相位截斷雜散的幅度可能大于PPT雜散。
我們無法預測二階或三階相位截斷雜散的幅度。 二階相位截斷雜散幅度取決于DAC的諧波失真特性,這些特性因器件而異。 三階相位截斷雜散幅度與量化誤差相關,而量化誤差基本上是隨機的。
表1. 圖2中顯示的頻率分類
最右側的非零位
計算PPT雜散的幅度和頻率位置需要知道以下參數(shù):
•DDS采樣速率(fS)
•兩個DDS參數(shù):N和P
•FTW的特定值
對于給定應用,N和P固定,fS通常為恒定值。 相反,F(xiàn)TW完全可變,控制fO的值(詳見公式1)。FTW的值不僅控制DDS輸出頻譜中fO的位置,而且控制相位截斷雜散的位置。 事實上,對于DDS輸出頻譜,給定FTW的最重要特性是以二進制形式表示時的尾隨零數(shù)量。 尾隨零數(shù)量定義了重要參數(shù)L,即FTW最右側非零位的位置。
FTW中的L位位置取決于FTW的特定值(切記,F(xiàn)TW的值依據(jù)所需DDS輸出頻率而變化,詳見公式1)。 這種依賴性非常大,因為任意給定FTW的L位位置決定相位截斷雜散在DDS輸出頻譜中的分配方式。
對于任意給定FTW,圖3演示了如何找到L的值。首先,將FTW轉換為二進制。 然后,將指數(shù)值分配給FTW位,MSB的起始指數(shù)值為1。圖3為一個32位FTW的示例;因此,指數(shù)范圍為1至32。L值是值為1的最后一位的指數(shù)(從MSB向LSB讀)。 圖3中的FTW值為0x0036e580(十六進制),因此,采用本協(xié)議時,此特定FTW的L的值為25。
給定FTW的L的值最為重要。 首先,L決定相位截斷雜散是否出現(xiàn)在DDS輸出頻譜中。 若L ≤ P,則沒有相位截斷雜散。 若L > P,則包括PPT雜散在內的相位截斷雜散出現(xiàn)在DDS輸出頻譜中。 其次,L和P的值可確定PPT雜散的幅度和頻率(假定L > P)。
PPT幅度
兩個PPT雜散具有相同的幅度(見公式2)。 若已知特定FTW的值和給定DDS設計的P值,兩個PPT雜散的幅度為:
其中,PPT幅度的值以dBc為單位: 與頻率為fO時主DDS輸出信號的幅度相關的分貝。
請注意,公式2中的兩個正弦函數(shù)的參數(shù)以弧度為單位。 例如,假設DDS的P = 19,F(xiàn)TW如圖3所示,則使用公式2得到的PPT雜散幅度為−114.38789 dBc。
PPT頻率
需要多個步驟才能確定這兩個PPT頻率。 第一步,得出K的值,F(xiàn)TW的十進制值截斷為L位。 要得到K,在FTW為二進制形式的情況下,消除尾隨0并將得到的L位FTW轉換為相應的十進制值。 例如,圖3中的FTW可得到K = 28,107(通過將二進制數(shù)字0000000000110110111001011轉換為相應的十進制數(shù)字得出)。
使用K計算兩個PPT雜散的頻譜指數(shù)位置(R1和R2),如下面的公式3和公式4所示:
例如,在DDS的P = 19且FTW如圖3所示的情況下,公式3中括號內的數(shù)字為14,736,134,709,公式4中括號內的數(shù)字為928,378,285,515。將225模數(shù)應用于這些值可得到
R1 = 5,739,061
R2 = 27,815,371
根據(jù)下面的公式5和公式6,使用R1和R2確定DDS輸出頻譜中的兩個PPT頻率位置(fPPT1和fPPT2)。
例如,若fS = 250 MHz,F(xiàn)TW如圖3所示,且R1和R2的值已在前面的例子中計算出,則兩個PPT雜散頻率如下:
結論
盡管本應用筆記介紹了一種相對簡單的方式來預測兩個PPT雜散的頻率和幅度,但公式3和公式4可能引起計算問題。 具體而言,括號內的數(shù)字由一個整數(shù)定義,可能非常大。
為了解釋這些計算中較大整數(shù)引起的問題,試重新考慮AD9912,其中N = 48,P = 19。假定FTW為0x400000000001(十六進制),即70,368,744,177,665(十進制)。 在此例中,L = 48;因此,K的值與FTW相同。
現(xiàn)在考慮公式4中括號內的數(shù)字。2L – 2P + 1可得到以下值:
248 – 219 + 1 = 281,474,976,186,369
因此,由公式4中括號內的數(shù)字可得到
K × (2L – 2P + 1) = 70,368,744,177,665 × 281,474,976,186,369 = 19,807,040,591,672,948,094,687,248,385
以二進制形式表示此整數(shù)需要94位。 大部分計算軟件工具無法精確表示這種大小的整數(shù)。 例如,在64位機器上運行的MATLAB將K × (2L – 2P + 1)表示為浮點數(shù):1.980704059167295 × 1028。對應的整數(shù)為19,807,040,591,672,950,000,000,000,000。此值與真實值偏差較大,因此得到的R2并不正確。
事實上,不僅大部分軟件工具無法處理極大整數(shù),而且大部分計算機內部的處理器芯片也無法處理極大整數(shù)。 例如,一臺帶64位處理器的計算機無法處理94位整數(shù)。 這個問題至關重要,因為計算R1和R2值需要極大整數(shù)計算,這超出了大部分計算機的能力。
除了正確表示公式3和公式4中括號內的數(shù)字,還需要計算括號內數(shù)字的2L模數(shù)。 在前面的例子中,L = 48,這意味著模數(shù)達48位。 大部分計算機不支持超過32位的模數(shù)計算。
總而言之,公式3和公式4產生的難題在使用軟件工具實現(xiàn)PPT雜散計算時需要特別注意。 用戶必須將括號內的數(shù)字作為一個整數(shù)進行正確計算(無截斷或四舍五入),并且應在不損失精度的情況下正確處理模數(shù)計算。
盡管大部分軟件工具和處理器無法直接處理極大整數(shù),但也有例外。 例如,軟件工具Python本身支持極大整數(shù)計算。 盡管MATLAB®本身無法處理極大整數(shù),但支持極大整數(shù)計算的可變精度整數(shù)(VPI)工具箱可在MATLAB Central的Math Works網(wǎng)站上免費下載。
評論