幾年前,我需要一個快速、低頻但失真極低的源來測試板載微控制器 ADC,看看它是否具有接近數據表中所述的有效位數 (ENOB) 和線性度。
我知道凌力爾特 [1] 的失真非常低,但設計有些復雜,但這對于我的迫切需要來說似乎有點過分了。因此,我最終基于 Hein van den Heuvel [2] 的電路構建了一個經典的三運放狀態變量振蕩器,帶有一個小小麥燈泡作為振幅穩定電路。
經過一天擺弄電路中運算放大器的各個階段的負載后,我設法將諧波失真產物降低到 -95 dBc 水平以下,這對我的即時需求來說很好。
雖然可以構建分立的振蕩器電路,但它很繁瑣。存在溫度問題,如幅度漂移、頻率漂移、啟動和穩定時間等。同樣,我認為在未來擁有一個具有 2.5 到 +/-10 伏多輸出的快速設置振蕩器會很好,這樣我可以快速測量任何 16 位精度的 ADC。
模擬方法絕不是一種快速設置,這讓我開始思考專業音頻分析儀是如何實現它們的源的。我想,他們必須要么構建一個精密的離散 DDS,要么使用其中一個高分辨率 I2S 音頻 DAC。
然后,我瀏覽了 TI 應用說明,了解他們對超低失真測試振蕩器的看法,果然,它使用了他們的 Burr-Brown I2S 音頻 DAC 之一,然后是一些高性能低通濾波器 [3]。
我買了幾個 I2S DAC 并將它們連接到我的一個微控制器演示板上,大約一天后 I2S 就開始運行,并且有一些不錯的信號從設置中跑出來。I2S 的奇妙之處在于它可以連接到處理器的 DMA 上,使 99% 的數據傳輸對處理器透明。處理器所要做的就是每隔一段時間保持 DMA 管道充滿。
這是一種學習體驗,在經濟上并不有利,因為 TI 以低于 300 美元的價格出售他們的電路,但是,沒有發布的 API 可用于通過您自己的測試程序控制他們的解決方案。
然后我想,“USB聲卡加密狗怎么樣?它們一定很體面而且很便宜。”
快速搜索發現,Creative Labs 確實制造了一款成本極低但性能卓越的 16/24 位 USB 加密狗,令人印象深刻的是“Creative Labs Sound Blaster Play!3.” 這款不到 20.00 美元的設備甚至具有 24 位/96-kHz 的數據速率 [4]。我相信創意實驗室不會制造垃圾,所以我買了一個試試。
使用我的 18 位 FFT 分析儀 [5] 進行的初步測試表明,筆記本電腦不僅“聽起來”更好聽我的耳朵,而且性能確實處于 16 位失真水平,底噪非常干凈。
這種方法確實是我的通用 ADC 測試臺的“快速設置”解決方案,因為所有軟件都可以在我的實驗室 PC 上運行;現在我將擁有一個“可控”的源、頻率和幅度,并且它正在我的 PC 上運行,因此我可以擁有獨立的應用程序,甚至可以構建 API 以在以后需要時包含在自動化測試套件中。
在那里解決了很多工作,并且通過使用外部聲卡,精確的幅度和已知質量可以在任何測試臺之間轉移,因為我的測試筆記本電腦內部聲卡在輸出幅度和真實音質上隨處可見.
將筆記本電腦用于測試控制器的另一個好處是,您可以拔下電源適配器并依靠電池運行,從而消除了許多接地回路問題,這些問題總是在您嘗試快速移動并完成工作時突然出現。
輸入 BlasterAmp
現在所需的所有項目都是用于 Sound Blaster 加密狗的模擬接口板,以便為我的“通用”測試設置獲得所需的輸出。
我測量了 Sound Blaster 音頻輸出到指定的 300 歐姆耳機負載和一些測試音調,我測量了滿量程輸出的一致 0.37 伏峰值,與我使用的 PC 或操作系統無關。
列出了常用的 ADC 輸入范圍(表 1)。我想如果我涵蓋了常見的 ADC 輸入范圍,則可以通過使用音量控制來調整幅度來測量介于兩者之間的任何內容,這最終會降低可實現的信噪比 (SNR),但 Sound Blaster 的 SNR 已經足夠了對于我要測量的應用程序。
表 1:這些范圍涵蓋了我在過去 10 年中遇到的幾乎所有 ADC 輸入。該表用作確定 Sound Blaster 加密狗輸出的放大器所需的增益和偏移量的基礎。
3.3 伏的峰值范圍很奇怪,但仍然出現在較低分辨率的基本設計中,無論如何大多數都是 10 位或 12 位 ADC,因此決定只使用音量控制和 0-5 伏范圍在這些應用中,只有很小的信噪比損失。
然后我設計了我稱之為“BlasterAmp”的東西,它具有所需的增益和偏移,以便能夠轉換 0.37 伏峰值,即 Sound Blaster 加密狗的滿量程輸出,以匹配表 2。
表 2:BlasterAmp 旨在涵蓋表 1 中的常見電壓,只有 4 個增益步長和 3 個偏移設置。單極范圍需要使用三個偏移電壓。
關于單極范圍需要注意的一點:現在這些總是“軌到軌”,雖然我們說“軌到軌”,但幾乎總是與“軌”有一些偏移。這將對任何 ADC/緩沖器測試造成嚴重破壞,因為如果“軌”不完全處于零或滿量程,那么 ADC 將削波,這將導致嚴重的失真,從而阻止進行任何有意義的測量。此外,有時 ADC 參考電壓為 2.048 或 4.096 伏,而不是 2.5 和 5 伏。為了解決這些情況,我使用了精確的 25 轉微調器,以便在需要時對增益和偏移進行微調。微調器還允許 Sound Blaster 加密狗、電阻器容差和運算放大器偏移電壓的任何細微差異。
圖 1 顯示了完成的 BlasterAmp 的一個通道。短路跳線用于允許根據需要更改偏移和增益,以適應各種所需的輸出范圍。
圖 1:立體聲 BlasterAmp 的一個通道。增益和偏移范圍通過可移動的跳線設置,然后借助精確的 25 圈微調器進行微調。U101 周圍的電阻網絡是來自 Vishay (OSOPTC1001AT0) 的 1 k-ohm 匹配網絡。所有其他電阻器的尺寸為 0.1%,0805,以最大限度地減少電阻器發熱和隨后的失真。C100 和 C101 必須是薄膜或 COG 陶瓷類型以消除失真。
對于放大器,我使用了久經考驗的真正 Burr-Brown OPA1611,這是一款超低失真音頻運算放大器,它們的性能符合數據表,也就是說非常出色。
對于偏移參考電壓,我使用了 TI REF5050,它是一個精密的 5 伏參考電壓。
由于該電路預計將在我的工作臺上用于測試設置安排,因此我將其設計為由 +/-15 伏導軌供電,并使用了另一個經過驗證的真正組件,即我保留的 HP6234A 雙線性電源在我的長凳上這樣的場合。使用像 HP6234A 這樣的線性電源非常有用,因為它具有低噪聲、低 IO 電容設計,而且它不會在任何地方從開關電源中噴出共模電流。如果我必須使用切換器為設計供電,我會使用一些線性、低壓差穩壓器和電路中的大量共模扼流圈,以盡我所能將開關噪聲遠離電路板。值得信賴的 HP6234A 消除了所有這些問題。
我鋪設了最終的雙通道 BlasterAmp PCB,以安裝在我沒有蓋上蓋子的小型 Hammond 外殼 [6] 中,因為這樣可以輕松更換各種跳線和微調電位器(圖 2 )。
圖 2:完成的 BlasterAmp。我將 PCB 安裝在擠壓外殼中以進行保護。來自聲卡的音頻是 PCB 右上方的黑色電纜。電源由我的 HP6234A 線性工作臺電源通過 PCB 中間右側的電線連接器供電。完整的設計可用,見參考文獻 10。
通用格言:硬件需要軟件
使用 Sound Blaster 加密狗無疑大大簡化了設計并節省了開發時間,但我仍然需要一種將高動態范圍測試信號播放到 Sound Blaster 中的方法。我嘗試了大約十幾種音頻測試音調軟件解決方案,其中大多數都只有 60-dBc 或更低的失真水平,這對于聽力測試來說很好,但對于我的應用來說不行,我需要將失真降低到 16位級別。
互聯網上有幾個發燒友網站提供非常低的失真文件用于測試 [7]。對于播放,您需要一個在循環時具有零死區時間的 WAV 或 MP3 文件播放器。我發現愚蠢地命名的程序“foobar2000”是一個很好的選擇[8]。我最初在旅行時使用該程序在筆記本電腦上播放白噪聲,以在嘗試入睡時淹沒多余的聲音,并且在循環播放白噪聲文件時也不能有任何咔噠聲或爆裂聲,否則您會立即醒來. foobar2000 程序非常適合 BlasterAmp 和睡眠。
這些預制測試文件具有固定頻率,但可以通過 BlasterAmp 微調器或 PC 的音量控制根據需要微調幅度。
至于能夠以編程方式設置頻率和音量,我找到了一個名為 PyAudio [9] 的 Python 庫,它允許我生成給定幅度的精確正弦波信號,然后能夠直接從 Python 腳本 [10 ]。事實證明,這可以產生非常低的失真信號,如圖 3 所示。
圖 3:在我的 DMT9000 FFT 分析儀上測量的 BlasterAmp 設置為 +/-10V 范圍時的結果 [5]。可以看到滿量程失真產物在滿量程以下 -96 dBc 的 16 位級別。
然而,在產生任何測試音時必須小心。您要么必須為測試創建一個連續且足夠長的文件,要么必須不斷循環。循環時,只需確保波形的起點和終點準確對齊,否則會出現不連續性,從而在循環點增加失真。
作為使用 Sound Blaster 加密狗生成精確音調的最后一點,請務必關閉正在播放聲音生成的 PC 上的所有音頻均衡器或控制程序,以確保沒有不可預見的問題。
下次
在下一篇文章中,我將展示使用 BlasterAmp 測量一些實際 ADC 和測試組件的失真的技術。
Python 腳本的完整源代碼和 BlasterAmp 的完整原理圖可以在 Github 上找到。
審核編輯 黃昊宇
-
集成
+關注
關注
1文章
176瀏覽量
30257 -
模數轉換器
+關注
關注
26文章
3208瀏覽量
126863
發布評論請先 登錄
相關推薦
評論