近乎完美的DDS正弦波訊號音產生器(上)

作者 : Patrick Butler,ADI現場應用工程師

適合高解析度頻寬ADC的典型測試台的典型測試配置中,最關鍵的元件就是正弦波產生器(單訊號音或多訊號音),其中基於軟體的直接數位頻率合成器(DDS)可以提供完全的靈活性、極高的頻率解析度和時脈同步性能,利用資料擷取系統來執行相關取樣,以避免洩漏和FFT窗口濾波…

在測試和驗證解析度高於16位元的高精準度快速類比數位轉換器(ADC)的交流性能時,需要用到近乎完美的正弦波產生器,該產生器至少支援0kHz~20kHz音訊頻寬。通常會使用價格高昂的實驗室儀器儀錶來進行這些評估和特性表徵,例如Audio Precision提供的音訊分析儀AP27xx或APx5xx系列。大多數情況下,24位元或更高解析度的現代高速SAR和寬頻Σ-Δ ADC都採用單電源和全差分輸入,因此要求用於DUT的訊號源具備準確的直流和交流性能,同時提供全差分輸出(180°錯相)。如此一來,這款交流產生器的雜訊和失真水準應該遠優於這些ADC的規格,根據大部分供應商提供的規格,其本底雜訊水準遠低於-140dBc,失真水準低於-120 dBc,輸入訊號音訊率為1kHz~2kHz,最高可達20kHz。

有關適合高解析度頻寬ADC的典型測試台的典型測試配置,請參考圖1。最關鍵的元件就是正弦波產生器(單訊號音或多訊號音),其中基於軟體的直接數位頻率合成器(DDS)可以提供完全的靈活性、極高的頻率解析度和時脈同步性能,利用資料擷取系統來執行相關取樣,以避免洩漏和FFT窗口濾波。

因為成本只有音訊精密分析儀的幾分之一,所以能夠基於直接數位頻率合成(DDFS)原理設計非常精準的正弦波產生器,但需要透過軟體在SHARC處理器等浮點DSP處理器上實現。一個相當快的浮點DSP將能滿足即時性要求,以及所有演算法和處理條件,以達到先進的SAR ADC所設置的失真和雜訊性能水準。透過利用SHARC內核架構的全字資料長度(32位元或64位元定點格式)來進行NCO相位累加,利用專有的40位元浮點擴展精準度來執行正弦近似函數,以及利用數位濾波器來確定頻譜形狀,量化效應(回轉雜訊和截斷雜訊)得到大幅降低,與用於訊號重構的數位類比轉換器(DAC)缺點相比,這種效應可以忽略不計。

直接數位頻率合成

1970年4月,Joseph A. Webb提出了數位訊號產生器頻率合成器的專利申請,其中描述了有關DDS生成包括正弦波等各種模擬波形的考慮因素,只需使用數個數位邏輯模組即可實現。之後,Tierney等人在1971年初發表了論文(後來成為大家頻繁引用的參考文獻),闡述了透過深化DDS操作進行正交生成來實現直接數位頻率生成,以及採樣系統理論相關局限性(相位截斷和頻率規劃)問題。隨後出現的實際應用大部分依賴於離散式標準邏輯IC,例如TTL 74xx或ECL 10K系列。後來在不到10年的時間裡,Stanford Telecom、Qualcomm、Plessey和ADI等紛紛推出了完全整合式解決方案,例如ADI的AD9950和AD9955。

這些邏輯IC旨在實現速度、功耗和成本之間的最佳平衡,其架構基於查閱資料表(LUT),以確保在有限相位、頻率和幅度解析度下實現相位-正弦幅度轉換。如今,ADI仍然是DDS獨立積體電路的最大供應商,可能也是最獨特的供應商,而當前的數控振盪器(NCO)往往都整合到AD9164或AD9174之類RF DAC中。雖然這些元件在多GHz頻寬上具備出色的雜訊和線性度性能,但它們都不適合測試中等速度、高解析度ADC,例如LTC2378-20、AD4020或AD7768。

圖1 基於IEEE 1241標準的典型ADC (ac)測試設定的處理鏈。DDFS能夠讓整個測量系統完全實現數位化,具備多種優勢,包括完全的靈活性和相關取樣採集。

與基於PLL的傳統頻率合成器相比,NCO和DDS的顯著優勢包括:極高的頻率解析度、快速靈敏性,以及可輕鬆生成完美正交的正弦/餘弦波形。此外,還提供寬頻寬範圍和高直流精準度。其工作原理基於數位訊號處理和採樣系統理論,數位特性支援對輸出訊號的相位、頻率和幅度實施全數位獨立控制。圖2所示的框圖顯示傳統DDS的架構,該DDS由三大功能模組組成:

  • N位相位累加器;
  • 相位-正弦幅度轉換器,由W位截取相位輸入字表徵特性;
  • D位DAC及其相關重構濾波器。

相位累加器由簡單的N位加法器結合暫存器構成,暫存器的內容按照採樣時脈FCLK的速率,以輸入相位增量Δθ (通常也稱為頻率調諧字,FTW)更新。累加器會定期溢出,在採樣或參考時脈FCLK和DDS輸出頻率FOUT之間像小數分頻器,或像齒輪箱一樣運作,分頻比為:

溢出速率為生成的波形提供輸出頻率,使得:

其中0 ≤ FTW ≤ 2N-1。因為分頻器的原因,NCO輸出端的參考或採樣fS時脈相位雜訊的影響會降低:

相位累加器暫存器的輸出表示生成波形的電流相位。每個離散式累加器輸出相位值,然後透過相位-正弦或相位-餘弦映射引擎,被轉換成幅度正弦或餘弦資料或樣本。此功能通常利用儲存在LUT (ROM)中的三角函數值完成,有時透過執行正弦近似演算法完成,或兩者組合方式完成。相位-正弦幅度轉換器的輸出供DAC使用,在濾波之前生成量化和採樣正弦訊號,使訊號平穩,並避免頻譜混疊。由DAC有限解析度導致的幅度量化設定了本底雜訊,以及相應的頻率合成器訊噪比(SNR)的理論限值。此外,DAC作為混合訊號元件,由於其INL、DNL、壓擺率、毛刺和建立時間等特性,展現出一系列直流和交流非線性,這會產生雜散訊號音,縮小正弦波產生器的整個動態範圍。

基於圖2中架構實現的實際正弦波形產生器,主要是相位-幅度轉換模組不同,受數位無線電應用這一個市場導向影響,該模組通常針對速度和功耗,而不是高精準度而最佳化。實施相位-正弦幅度轉換器最簡單的方法就是使用ROM,採用一對一映射的方式來儲存正弦值。遺憾的是,LUT的長度與相位累加器的寬度N呈指數成長(2N),並且與波表資料字精準度W呈線性增長。而且,減小累加器的尺寸或截斷其輸出之間的權衡和取捨會導致頻率解析度降低,並且嚴重降低SFDR的性能。

結果表示,相位或幅度量化導致的雜散會降低-6dB/位元。實現精細的頻率調諧通常需要較大的N,已有幾種技術可用來限制ROM的尺寸,同時保持足夠的雜散性能。一般會使用簡單的壓縮方法,利用正弦或餘弦函數的四分之一波長對稱性將相位幅度範圍減小4倍。為了進一步縮小範圍,實際會使用截斷相位累加器輸出的方法,不過這會導致產生雜散諧波。

儘管如此,這種方法也因精準的頻率解析度要求、記憶體尺寸和成本考量而得到了廣泛採用。建議採用多種角分解方法,以降低基於LUT的方法對記憶體的要求。與使用各種分段、線性或多項式內插法的幅度壓縮結合,在進行需要正弦和餘弦函數的I/Q合成時,準確估算正弦函數的第一象限,或依照[0, π/4]間隔估算。同樣的,在沒有ROM LUT的情況下,只需要按照逐次逼近的方法調用位移和添加操作,即可使用基於角旋轉的方法有效產生複雜訊號。這種方法以流行的CORDIC為代表,當硬體乘法器不可用時,或者出於速度或成本考慮,應最大限度減少實施函數所需的閘級數量時(在FPGA或ASIC中),此方法通常比其他方法更快。相反的,當硬體乘法器可用時(在DSP微處理器中總是如此),採用插入方法和如泰勒級數(Taylor-series)展開、切比雪夫多項式(Chebyshev polynomials)等完整多項式計算的表查找要比CORDIC更快,尤其是要求高精準度時。

圖2 NCO的主要功能部分,以及與完整的直接數位頻率合成器的區別,其中包括重構DAC和其相關的AAF,NCO部分可用於測試或模擬DAC。

在軟體中實現高精準度NCO

如同著名的惠普分析儀,或者如同應用筆記AN-132中描述的,建構與最出色的類比振盪器具備同等或更出色的失真性能的高精準度交流訊號振盪器並不容易,即使是針對音頻頻譜(直流至20kHz範圍)。然而,如前所述,利用嵌入式處理器具有的足夠運算精準度來執行相位計算(ωt)和正弦函數(sin(ωt))近似計算,進而完整建置軟體,這顯然有助於最大限度減少量化的不利影響、雜訊和由此導致的雜散。這意味著圖2中的所有NCO功能模組都會轉換成程式碼行(不是VHDL),從而實現一個滿足即時約束的軟體版本,以確保實現最小的採樣速率和所需的頻率頻寬。

對於相位-正弦幅度轉換引擎,完整的LUT方案或任何變化都需要用到太多的儲存空間或太多的插值運算來實現完美的正弦一致性。相反,用於計算正弦近似值的多項式方法允許使用成本極低的通用DSP,在複雜性與精準度之間達成了不錯的平衡。多項式級數展開也很有吸引力,因為它相對簡單,並且能夠採用選擇的冪級數類型提供充分的靈活性,並且調整演算法來實現給定精度。它不需要很大的儲存空間(可能不到100行SHARC DSP彙編程式碼),只需要幾個RAM位置來儲存多項式係數和變數,因為正弦值只在採樣時刻計算。

首先,對於正弦近似值函數,顯然會選擇使用具有適當順序的Taylor/馬克勞林(MacLaurin)冪級數來滿足目標精度。但是,由於冪級數在端點處往往會失效,所以在執行任何多項式求值之前,必須將參數輸入範圍縮小到更小的區間。如果不縮小參數範圍,只能使用非常高階的多項式來支援在功能域(例如[-π, +π])中實現高精準度。所以,需要對初等函數進行一些變換,以獲取所需的約化參數,例如sin(|x|) = sin(f + k × π/2)和sin(f) = sin(x – k × π/2),其中0 ≤f<π/2。因此,對於三角函數,要特別注意不要使用減法相消,以免嚴重降低精準度,並導致災難性後果,特別是在運算精準度極差的情況下。在本文的例子中,當相位輸入大於或接近π/2的整數倍數時,會發生這種情況。

除了週期性和modulo-2π重複之外,sin(x)函數的對稱性可用於進一步縮小近似值範圍。鑒於正弦函數在區間[0, 2π]內,關於點x = π不對稱,所以能夠使用以下關係式:

將範圍縮小到[0, π]。採用同樣的方式,sin(x)在區間[0, π]內,關於由x = π/2定義的線對稱,所以:

x在區間[0, π/2]以內,這會進一步縮小角輸入近似值的範圍。透過進一步縮小參數區間(例如[0, π/4])來提高精確度並不是有效方法,因為這需要同時估算正弦和餘弦函數的值,如常用三角關係所示:sin(a+b) = sin(a) × cos(b) + cos(a) × sin(b),從生成正交訊號這一角度,這有其價值。

ADI的ADSP-21000系列應用手冊第1卷描述了一個近乎理想的(用於嵌入式系統)正弦近似值函數,該函數基於為第一個ADI DSP浮點處理器編寫的冪級數最佳化,即ADSP-21020,後者基本上屬於SHARC核心。這種sin(x)的實現方法依賴於Hart等人4發表、由Cody和Waite所完善、適用於浮點運算的極大極小逼近多項式,以減少捨入錯誤和避免出現前面提到的取消。極大極小方法依賴於Chebyshev多項式和雷米茲(Remez)交換演算法來確定所需的最大相對誤差的係數。如圖3中的MATLAB所示,與第七階Taylor多項式6相比,設置係數的微小變化可能會明顯提高極小極大值的精確度。為了實現精確度與速度的最佳平衡,這個正弦近似值函數的角輸入範圍應該縮小到[-π/2至+π/2]區間內,且軟體套裝程式含一個有效的範圍縮減濾波器,約佔總「正弦」副程式執行時間的30%。

圖3 不同於Taylor/MacLaurin方法圍繞0進行定義,極小極大正弦逼近方法在[-π/2至+π/2]區間內,會最小化和均衡最大相對誤差。

雖然所有計算都可以使用32位元定點演算法執行,但多年以來,最常見和最方便的數學計算格式是IEEE 754浮點標準,特別是在處理長數位時。作為一家DSP VLSI晶片製造商,ADI從一開始就率先採用了IEEE 754-1985標準。當時還沒有單晶片浮點DSP處理器,只有簡單的浮點乘法器和ALU運算IC,如ADSP-3212和ADSP-3222。這種格式取代了電腦產業的大多數專有格式,成為所有SHARC DSP處理器的本機格式,採用單精確度32位元、擴展精確度40位元,以及最近出現的適用於ADSP-SC589 和ADSP-SC573的雙重精確度64位元。

具備32位元尾數的SHARC 40位元擴展單精確度浮點格式為這種正弦波生成應用提供了足夠的精準度(u 2-32),且有助於保持均等,Cody和Waite表示第15階多項式的總體近似精準度為32位元,在[0至+π/2]輸入域內具有均勻分佈的誤差。為了最大限度減少運算次數並保持精準度,最後的調整是對多項式計算執行霍納(Horne)法則,這是一種快速求冪的方法,可以求取一個點的多項式值,所以:

R1至R7是多項式級數的Cody和Waite係數,只需要進行8次乘法和7次加法即可計算任何輸入參數ε[0, π/2]的正弦函數值。以彙編副程式的形式編寫的完整sin(x)近似程式碼在SHARC處理器上大約執行22個核心週期。原有的彙編副程式在更改之後,在獲取40位元多項式浮點係數時執行同步雙記憶體存取,以減少6個週期。

圖4 軟體DDS簡化框圖給出了處理單元之間的各種量化步驟的資料運算格式和位置。

NCO 64位相位累加器本身在執行時,就用到了雙精準度2的小數格式的SHARC 32位元ALU。提供記憶體更新的整個相位累加器執行過程需要11個核心週期,因此,每個NCO輸出樣本都在約33個核心週期內產生。

圖4中的框架圖顯示了基於軟體DSP的NCO的功能模組實現方案,每級都參考了運算格式精準度。此外,進行訊號類比重構,以及實現完整的DDFS還需要用到一個或兩個DAC及其類比抗混疊濾波器電路。處理鏈的關鍵元件包括:

  • 64位元相位累加器(SHARC ALU雙精確度,具備溢出);
  • 64位元小數定點到40位元浮點轉換模組;
  • 範圍縮減模組[0至+π/2]和象限選擇(Cody和Waite);
  • 正弦逼近演算法(Hart),用於相位-幅度轉換;
  • -1.0~+1.0範圍內的sin(x)重構和歸一化級;
  • LP FIR濾波器和sin(x)/x補償(如果必要);
  • 40位元浮點至D位元定點轉換和標度函數,以匹配DAC數位輸入。

可以在NCO輸出端放置一個可選的數位低通濾波器,以去除可能進入目標頻段的雜散和雜訊。或者,該濾波器可以提供插值和/或逆sin(x)/x頻率回應補償,具體由選擇用於類比重構的DAC決定。這種低通FIR濾波器可以使用MATLAB Filter Designer工具設計。例如,假設採樣頻率為48kSPS,頻寬為DC至20kHz,頻緞內漣波為0.0001dB,頻緞外衰減為-150dB,則可以實施具有40位元浮點係數的高品質均衡波紋濾波器。它只有99個濾波係數,在單指令單數據(SISD)單計算單元模式下,總執行時間將消耗約120個SHARC核心週期。經過數位濾波後,使用其中一個DSP同步序列埠,由DMA將計算的樣本對發送至DAC。為了獲得更好的速度性能,連結DMA操作也可以使用大型乒乓記憶體緩衝區來支援塊處理操作,例如,塊資料大小可以等於FIR資料延遲線的長度。

實現最佳SFDR 在NCO上進行的最後調整

如前所述,NCO遭受雜散的主要原因是對相位累加器輸出的截斷,其次是針對透過計算或列表得出的正弦值的幅度量化。相位截斷引起的誤差通過相位調變(鋸齒形)在載波頻率附近產生雜散,而正弦幅度量化引起與諧波相關的雜散,不過長期以來一直被認為是隨機誤差和雜訊。如今,在Henry T. Nicholas和H. Samueli撰寫的技術論文7中,從數學角度深入闡述了相位累加器的操作。在深入分析的基礎上,提出了一種模型,將相位累加器視為離散式相位樣本排列產生器,並據此預測頻率雜散。無論相位累加器參數(M、N、W)是多少,相序的長度都等於:

其中GCD是最大公約數,如圖4所示,由頻率調諧字M最右邊的位元位置L決定。因此,L的值定義序列類別,這些類別彼此共用自己的相位分量集,但根據:

比率重新排序。這些在時域內生成的截斷相位樣本序列被用來透過DFT確定頻率域內各雜散線各自的位置和大小。這些序列還表示,M (FTW)的奇數值顯示最低頻率雜散的幅度,並建議對相位累加器進行簡單的修改以滿足這些最低程度的條件(只需在FTW中添加1 LSB)。如此,相位累加器的輸出序列必須始終具有相同的2N個相位元素,無論相位累加器的M值和初始內容是什麼。之後,最差的雜散訊號音幅度等級降低3.922dB,等於SFDR_min (dBc) = 6.02 × W。由Nicholas更改的相位累加器為NCO提供了多種優勢,首先,它消除了FTW最右邊的位元非常接近MSB (FMCW應用中的頻率掃描)的情況,其次,它讓雜散幅度與頻率調諧字M無關。這種修改可以透過依採樣速率fS切換ALU LSB來輕鬆實現,如果FTW LSB置位元至邏輯1,則可以模擬與相位累加器相同的行為。相位累加器大小N = 64位元時,對於所需頻率FOUT的精準度,可以將½ LSB偏移視為可忽略的誤差。

圖5 FTW最右邊非零位的位置確定了理論上SFDR的最差水準。由Nicholas修改的相位累加器解決了採用任何N值的問題,並且使NCO的SFDR最大。

採用32位元輸出相位字W時,由相位截斷導致的最大雜散幅度會限制為-192dBc!正弦採樣值的有限量化也會導致產生另一組頻率雜散,該雜散通常被認為是雜訊,可採用大家熟知的SNRq(dB) = 6.02 × D + 1.76公式進行估算。這必須添加到寄生參數中,因為相位-正弦幅度轉換演算法階段的近似誤差被認為是可以忽略的,但是,必須非常謹慎地選擇相位-正弦近似演算法和計算精準度。

這些結果表示,從理論水準上,我們的軟體正弦NCO的線性和雜訊都遠遠超過了測試市場上大多數高精準度ADC所需的閾值。它仍然需要找到訊號鏈中最後一個、也是最關鍵的元件:重構DAC及其互補類比抗混疊濾波器和相關的驅動電路,以滿足預期的性能水準要求。

…文章未完,敬請期待下半部

 

 

 

 

 

 

 

 

加入LINE@,最新消息一手掌握!

發表評論