【導讀】所有DAC都會表現(xiàn)出一定程度的諧波失真,諧波失真是用來衡量當DAC輸入端采用一個理想的均勻采樣正弦波的數(shù)值序列驅動時,其輸出端能在多大程度上再現(xiàn)這個理想的正弦波。由于DAC的瞬態(tài)和靜態(tài)特性并不理想,因此輸出頻譜將會包含諧波成分。DAC的瞬態(tài)輸出特性包括壓擺率限制、非對稱上升和下降時間、有限建立時間。靜態(tài)特性與傳遞函數(shù)偏離直線的程度有關。
本文將重點討論靜態(tài)特性,并闡述一種由輸出頻譜中觀察到的諧波成分導出DAC 傳遞函數(shù)的方法。分析中假設,傳遞函數(shù)而非瞬態(tài)輸出特性是所觀察到的諧波失真的主要來源。此假設在低頻時成立。
DAC傳遞函數(shù)
圖1顯示一個理想的DAC傳遞函數(shù),它是一條斜線,y=mx+b. 數(shù)字輸入位于x軸,模擬輸出位于y軸。
圖1. 理想的DAC傳遞函數(shù)
x軸上的目標范圍是從左邊的最小碼(A)到右邊的最大碼(B)。y軸上的目標范圍是從底部的最小輸出值(C)到接近頂部的最大輸出值(D)。定 義理想傳遞函數(shù)的斜率(m)和y軸截距(b)的方程式用邊界值A、B、C、D表示。信號g(t)代表一個無失真的正弦波,由A至B范圍內(nèi)的數(shù)字輸入組成,時間軸向下。信號 u(t)代表模擬輸出,其值在C至D范圍內(nèi),時間軸向右。
輸出信號是通過傳遞函數(shù)反射的輸入信號。請注意,輸出信號是將g(t)上各點鏈接到u(t)上相應點的結果。圖1顯示在特定時間點 t=tk的傳遞操作例子,該時間點確定輸入信號上的點g(tk)。傳遞函數(shù)進而將g(tk)鏈接到輸出信號上的相應點u(tk)。對于理想的線性傳遞函數(shù), u(t)與g(t)成比例關系。請注意,g(tk)對應于x軸上的點xk,它通過傳遞函數(shù)反射至y軸上的點yk。借助關于耦合點集(g(t n),u(tn))的已有知識,可以確定傳遞函數(shù)上的相關點(x n,y n)。因此,通過輸入信號g(t)上的點與輸出信號u(t) 上的點之間的關系,完全可定義傳遞函數(shù)。
對于N位DAC,邊界值A和B取特定值,即 A = 0 且 B = 2N–1。 而為了方便起見,指定邊界值C和D為 C = A 且 D = B。 這樣意味實際DAC 輸出信號的比例和偏移,因而其峰峰值范圍為0至 2N–1。 利用A、B、C、D的這些值,因為斜率 m = 1 且截距 b = 0。所以理想傳遞函數(shù)可簡化為 y=x。
到目前為止,討論的重點還是理想的DAC傳遞函數(shù),但現(xiàn)在我們有了可以處理失真DAC傳遞函數(shù)f(x)的工具,如圖2所示。需要注意的主要 特點是:傳遞函數(shù)不再是直線y=x,而是一個形狀函數(shù)f(x);圖中隨意以平滑弧形來表示。f(x)對輸出函數(shù)u(t)的影響也同樣重要。理想輸入 g(t)通過傳遞函數(shù)f(x)反射,產(chǎn)生失真輸出u(t)。與現(xiàn)成DAC的傳遞函數(shù)相比,圖中所示的弧形傳遞函數(shù)較為夸張,僅為加強說明效果而已。 現(xiàn)代DAC的傳遞函數(shù)與理想的直線幾乎沒有偏差,但即使最微小的偏差也會導致輸出頻譜中出現(xiàn)諧波雜散。
圖2. 失真的DAC傳遞函數(shù)
能否成功重構DAC傳遞函數(shù),取決于是否能通過已知的g(t)和u(t)確定 各點(xk,f(xk))。這一過程分為兩步:首先采用一個代表理想采樣正弦 波的數(shù)值序列驅動DAC輸入,利用頻譜分析儀測量DAC輸出,并記錄 基波信號和盡可能多諧波成分的幅值;然后將測得的諧波幅值轉換 為特定形狀的傳遞函數(shù)。如果操作得當,將g(t)代入f(x)仿真u(t)將產(chǎn) 生與測量結果相同的諧波失真值。
第一步:測量DAC諧波
第一步需要一個輸入序列,用來代表一個以等距時間間隔采樣的 理想正弦波周期。目標是重構DAC傳遞函數(shù),因此從0到2N–1的每個 DAC碼必須在輸入信號中至少出現(xiàn)一次。輸入序列需要2N以上的采 樣點才能以等距間隔使用每個DAC碼,實際上至少需要2N+3個采樣 才能保證每個碼都出現(xiàn)。下式可產(chǎn)生2K DAC碼的理想正弦序列(K≥ N+3)。函數(shù)round{x}將x舍入為最近的整數(shù)。
where n=0,1,2,3, ... 2K–1
此方程式假設DAC將標準二進制格式的數(shù)字輸入字解碼為0至2N–1 范圍內(nèi)的無符號整數(shù)。對于偏移二進制或二進制補碼DAC,必須調(diào) 整gn以表示負值。
數(shù)值序列(gn)以采樣速率f s重復提供給DAC,因此DAC輸出頻譜含有 頻率f0=f s/2k的基波信號。諧波出現(xiàn)在2f0、3f0、4f0和f0的其它整數(shù)倍。 由于DAC輸出頻譜具有采樣性質(zhì),因此這些諧波的幅度受sin(x)/x響 應的限制。不過,f0與fs相比微不足道,因此sin(x)/x響應實際上是平 坦的,可忽略不計。例如,對于一個8位DAC,K≥11且f0≤fs/2048,100次 諧波的sin(x)/x將不超過0.39%(0.034 dB)。
為了準確重構傳遞函數(shù)f(x),需要根據(jù)諧波數(shù)(h)集盡可能記錄更多諧 波的幅值。這些整數(shù)從h=1(基波頻率)至h=H,其中H表示取測量幅 值的最高諧波數(shù)。例如,對于10次諧波的測量,H=10,該諧波數(shù)集為 h={1, 2, 3, .. 10}。
然后,將各測量諧波的幅值(M)與其諧波數(shù)關聯(lián)。例如,M1是1次諧波 (基波)的幅值,M2是2次諧波的幅值,依此類推至MH。諧波幅值通常 用相對于基波幅值的分貝數(shù)(dBc)來衡量。dBc轉換為線性單位的公 式如下:
其中D表示測得的諧波幅值,單位為dBc。例如,如果3次諧波的幅值 為–40 dBc,則線性幅值M3=10–40/20或0.01。M1始終等于1,因為根據(jù) 定義,基波的幅值為0 dBc。
第二步:重構DAC傳遞函數(shù)
該過程的第二步涉及到將諧波測量結果與傳遞函數(shù)相關。f(x)上的點 取決于g(t)和u(t)上對應點之間的關系,因此首先必須將頻域中的諧 波幅值轉換到時域。請注意,組成g(t)的DAC碼與g(t)正弦形式的相關 時間點一一對應。因此,構成g(t)的DAC碼與時域相關。此外,u(t)通 過f(x)與g(t)相關,而g(t)是一個時域函數(shù),因此u(t)也必須表示為時域 函數(shù)。這樣就能將g(t)中的各時間點tk鏈接到u(t)中的相關時間點,從 而由g(t)和u(t)確定f(x)。
將諧波幅值轉換到時域非常困難,因為f(x)必須明確與g(t)中的各可 能DAC碼(0至2N–1)相關。g(t)是一個理想正弦波,因此確保唯一性 的唯一方法是將范圍限制在該正弦波單調(diào)增加的位置,如圖3加粗 部分所示。如果沒有這一限制條件,f(x)上的一個點可能會映射到g(t) 上的兩個點,從而導致不明確。
為演示這種不定性,請想象將區(qū)間T向下移動?,F(xiàn)在,f(x)上的點(xk, f(xk))可以與g(t)上的兩個點相關,這是不可接受的。將范圍T限制在 圖中所示位置,將不存在不定性。g(t)為正弦波,因此所需范圍T對應 于½周期,其初始相位偏移為3π/2弧度。
圖3. f(x)與g(t)之間的關系
g(t)的范圍受T限制意味著u(t)也具有類似的范圍限制。因此,將所記錄的諧波幅值轉換到時域時,必須確保將u(t)限制在與g(t)相同的范圍T,如圖4所示。
圖4. g(t)和u(t)的時域范圍
請注意,實際的時間范圍T無關緊要,因為f(x)僅在g(t)和u(t)二者的幅 值之間起轉換作用。為簡化分析,將基波頻率(f0)歸一化為1。因此,2 次諧波的頻率為2,3次諧波的頻率為3,如此類推。所以,諧波頻率 與諧波數(shù)(h)相等:fh=h。這一便捷關系可簡化從諧波測量結果Mh創(chuàng) 建u(t)的數(shù)學計算。
正弦波的一般時域表達式為:
其中β為峰值振幅,θ為初始相位偏移。
用h代替f,并用Mh代替β,可以獲得各諧波uh(t)的時域表達式。不過 應記住,g(t)偏 移3π/2弧度。此外,g(t)與u(t)之間通過f(x)關聯(lián)意味著 g(t)和u(t)在相位上是對準的。用3π/2代替θ可提供所需的對準。下式 中,請注意0≤t<1且π取代了2π,目的是將基波限制在范圍T所表示的 半個周期:
利用各諧波uh(t)的時域表達式,便可以重構復合輸出u(t),表示為基 波和諧波信號的和:
如前所述,我們的目標是將g(t)與u(t)相關以重構DAC傳遞函數(shù)f(x)。此 外,g(t)必須恰好由2N個樣本組成,以便與f(x)上的點一一對應。因此, g(t)的樣本計算公式為:
(n=0,1,2,3 .. 2N–1)
g(t)由2N個樣本組成,因此由包括2N個采樣的u(t)采樣值集重構f(x)似 乎是合理的。然而,事實卻是至少需要2N+3個采樣才能為較小的Mh 值提供適當?shù)木?。這種情況下,u(t)各采樣點的計算公式應如下:
(n=0,1,2,3 .. 2N+3–1)
請注意,這將導致u(t)所含的采樣數(shù)多于g(t),u(t)的多個樣本可能與 f(x)和g(t)上的一個點對應,從而使u(t)和g(t)到f(x)的映射關系復雜化。 因此,必須對特定的樣本組求平均值,以便提供到f(x)的合理映射。 下面的偽代碼反映了所需的映射關系,其中假設使用一個N位DAC, g(t)有2N個點,u(t)有2N+3個點。陣列DacXfr含有2N個元素,初始值均為0。執(zhí)行該代碼后,陣列DacXfr的元素包含歸一化的DAC傳遞函數(shù)。
n = 0
FOR i = 0 TO 2N–1
AvgCnt = 0
WHILE i = g[n]
AvgCnt = AvgCnt + 1
DacXfr[i] = DacXfr[i] + u[n]
n = n + 1
IF n >= 2N+3
EXIT WHILE
END IF
END WHILE
IF AvgCnt = 0
EXIT (fail because array, g[ ], is missing a DAC code)
END IF
DacXfr[i] = (DacXfr[i]/AvgCnt)/2N
END FOR
驗證
為驗證本文所述的方法,使用一臺頻譜分析儀來測量一個14位DAC 的輸出;該DAC由一個代表理想正弦波的輸入序列驅動。記錄了前 14次諧波的幅值(2次到15次,單位dBc),并利用這些值重構DAC傳 遞函數(shù)f(x)。然后,將理想正弦輸入序列g(t)代入重構的DAC傳遞函數(shù) f(x)進行模擬,產(chǎn)生一個輸出序列。一個FFT將u(t)轉換為頻域等效值 U(ω)。從U(ω)提取諧波幅值,并將其與頻譜分析儀的測量結果相比較, 如表1所示。請注意,與7次諧波相關的最大誤差僅為0.065 dB。
Table 1
由于比例關系,重構傳遞函數(shù)的圖形呈現(xiàn)為一條直線(y=x)。事實上, 該傳遞函數(shù)與y=x的偏差足以產(chǎn)生表1所示的諧波成分。為幫助理解, 圖5僅顯示了該傳遞函數(shù)與理想直線的偏差。垂直軸的單位為LSB。
圖5. DAC傳遞函數(shù)的殘差
推薦閱讀: