摘要
涉及對真實世界進行敏感測量的應用都是從準確、精密的低噪聲信號鏈開始。現代高度集成的數據采集器件通常可以直接連接到傳感器輸出,在單個硅器件上執行模擬信號調理、數字化和數字濾波,這極大地簡化了系統電子組成。但是,要使這些現代器件發揮出色性能,并對它們進行調試,仍然需要深入了解信號鏈的噪聲源和噪聲限制濾波器。
簡介
混合模式信號鏈無處不在。簡單地說,任何將真實世界的信號轉換為電子表示(然后數字化)的系統都可以被歸類為混合模式信號鏈。在信號鏈的每個點上,信號都以各種方式降級,從特征來看,可能是出現一定程度的失真,或是出現相加噪聲。在進入數字領域之后,對數字化數據的處理也不是完美的,但至少,實際上可以不受許多影響模擬信號的因素的影響——部件公差、溫度漂移、鄰近信號的干擾或電源電壓變化。
隨著行業不斷擴展物理限制,有一點是肯定的:儀器儀表的模擬和混合信號部件始終存在可改進的空間。如果市場上出現的模數轉換器(ADC)或數模轉換器(DAC)在速度、噪音、功率、精度或價格方面都表現出色,制造商會很樂意用其來解決現有問題,然后要求進行更多改進。但是,為了給客戶應用提供最佳的采集系統,就必須了解每種部件的限制,然后做出相應選擇。
本教程ADI將側重介紹單個信號鏈元件的噪聲,(可視作轉換器連接教程的續篇1,2),并使用Python/SciPy3和LTspice?來模擬這些噪聲。然后,使用Python,通過libm2k和Linux?工業輸入輸出(IIO)框架來驅動ADALM2000多功能測試儀器來驗證模擬結果。關于源代碼和更多討論,請參見配套的主動學習實驗室練習。
一種通用的混合模式信號鏈
圖1顯示了在精密儀器應用中很典型的一種通用信號鏈,提供物理輸入和數字輸出。目前有許多關于ADC的背景參考資料4,大部分讀者都知道,ADC會在某個時點對輸入信號進行采樣(或測量某個觀察時間段內信號的平均值),并生成該信號的數值表示,通常是二進制數值,其值介于0和2(N – 1)之間,N表示輸出字的位數。
圖1.在混合模式信號鏈中,會將一些物理現象(例如溫度、光強度、pH值、力或扭矩)轉換為電氣參數(電阻、電流或直接轉換為電壓)。然后,該信號被放大,受到低通濾波,然后被ADC數字化,ADC中可能包含內部數字濾波。
ADC噪聲源
雖然圖1中有多個噪聲源,但有一個經常被忽略,或是被過分強調,即ADC數字輸出的位數。以前,人們將ADC的位數視為評斷品質的終極指標,認為16位轉換器比14位轉換器好出4倍。5 但在現在的高分辨率轉換器中,位數幾乎可以忽略。注意,信號鏈設計要奉行一條一般原則:“某一級的輸入噪聲應在一定程度上低于前一級的輸出噪聲。”
與信號鏈一樣,ADC內部通常也有一個噪聲源占主導。所以,如果對N位ADC應用無噪聲信號:
?要么得出單個輸出代碼,要么得出兩個相鄰的輸出代碼,然后量化噪聲占主導地位。信噪比(SNR)不會大于(6.02N + 1.76)dB。6
?多個輸出代碼呈高斯分布,熱噪聲源占主導地位。SNR不會大于:
其中:VIN (p-p)表示滿量程輸入信號。σ表示以電壓為單位的輸出代碼的標準偏差。
分辨率很高的轉換器(例如AD7124-8,稍后會用作示例)很少受量化噪聲限制;在所有增益/帶寬設置中,熱噪聲占主導地位,短路輸入始終會導致產生按高斯分布分布的輸出代碼。圖2顯示24位Σ-Δ ADC AD7124-8的接地輸入直方圖,內部可編程增益放大器(PGA)分別設置為1和128。
圖2.在PGA增益為1時(左側),AD7124輸出噪聲中顯示13個代碼,標準偏差為約2.5個代碼。當量化噪聲可見時,熱噪聲更為顯著。在PGA增益為128時(右側),顯示187個代碼,量化噪聲是無關緊要的。截斷一個或兩個最低有效位(雙倍或四倍量化噪聲)不會導致信息丟失。
模擬和測量ADC噪聲
模擬熱噪聲受限的ADC的噪聲是很簡單的。如果噪聲“表現正常”(如圖2所示,呈高斯分布),且在ADC的輸入范圍內保持恒定,即可使用NumPy7的隨機正常函數來模擬ADC的時域噪聲,然后通過標準偏差來進行驗證,如圖3所示。
圖3.使用NumPy模擬高斯噪聲
圖4.ADALM2000是一款多功能USB測試儀器,具有兩個通用模擬輸入和兩個輸出,采樣率分別為100 MSPS和150 MSPS。它可以作為簡單的信號源,用于測量ADC噪聲帶寬和濾波器響應。運行支持AD7124器件驅動器支持的內核的樹莓派4作為AD7124和主機之間的簡單橋梁。
AD7124設備驅動器在行業標準IIO框架之內,該框架具有完善的軟件API(包括Python捆綁)。應用代碼可以在本地(在樹莓派上)運行,也可以通過網絡、串行或USB連接在遠程機器上運行。此外,pyadi-iio8抽象層負責與IIO器件進行連接所需的大部分樣板的設置,極大地簡化了軟件接口。圖5顯示如何打開AD7124-8的連接,進行配置,捕捉一個數據塊,然后關閉連接。
圖5.AD7124-8基本數據捕捉
建立與AD7124-8的通信之后,可以執行非常簡單,但非常有用的測試:直接測量輸入噪聲。簡單地讓ADC的輸入短路,然后查看ADC代碼的分布,這是確定信號鏈設計的一個非常有用的步驟。AD7124的輸入模式設置為單極性,所以只有正值是有效的;圖6所示的測試電路確保輸入始終為正值。
圖6.使用一個電阻分壓器在AD7124-8的輸入中生成1.25mV偏置,克服15μV最大失調電壓,確保ADC的讀數始終為正。
圖7顯示兩個1024點的測量值。下方的(藍色)線條是在初次通電后立即獲取的。
圖7.兩次AD7124-8數據捕捉是在采用1.25mV偏置的情況下進行的。下面的線條顯示在通電后,電路升溫時的初始漂移。上面的線條顯示在半個小時升溫后,讀數達到穩定。
“漂移”可能是由許多因素造成的——內部基準電壓源升溫、外部電阻升溫(因此漂移),或者是因為寄生熱電偶,在熱電偶中,稍微不同的金屬會在存在熱梯度的情況下產生電壓。升溫后測量到的噪聲為約565nV rms,與數據手冊中的噪聲規格相當。
用密度表示ADC噪聲
如果所有元件都包括噪聲密度規格(大部分明確規定的傳感器和幾乎所有的放大器都如此要求),模擬信號鏈設計的一般原則(某一級的輸入噪聲應在一定程度上低于前一級的輸出噪聲)將是一項簡單的計算。
與放大器和傳感器不同,ADC數據手冊通常不包括噪聲密度規格。用密度表示ADC的噪聲之后,可以直接與模擬信號鏈的最后一個元件的輸出噪聲進行比較,它可能是ADC驅動器級,是增益級,或是傳感器本身。
ADC的內部噪聲必然會出現在DC和采樣率的一半之間。理想情況下,該噪聲是扁平的,或者至少是可預測的形狀。事實上,由于ADC的總噪聲分布在已知帶寬上,所以可以將其轉換成噪聲密度,然后直接與信號鏈的其他元件進行比較。精密轉換器的總噪聲通常會直接給出,單位為Vrms:
其中eRMS表示總有效值噪聲,根據代碼的接地輸入直方圖的標準偏差進行計算。
用正弦信號測試和表征的更高速度的轉換器通常包含SNR規格。如果提供,可使用以下公式計算總有效值噪聲:
其中ADCp-p是ADC的峰峰值輸入范圍。可以使用以下公式計算等效噪聲密度:
其中fS表示ADC采樣速率,單位為樣本/秒。
在128SPS的數據速率下,在升溫后圖7的總噪聲為565nV。噪聲密度約為:
ADC現在可以直接納入信號鏈噪聲分析中,為優化信號鏈增益提供了指導。
?增加增益,只要到達“ADC之前的最后一個級的噪聲密度比ADC的噪聲密度高一位”的點,即停止。切勿再增加信號鏈增益——這只會放大噪聲,并減小允許的輸入范圍。
這與“填補”ADC的輸入范圍的傳統智慧背道而馳。如果ADC的轉換函數中存在步進或斷續,超出ADC的輸入范圍可能會有好處,但對于“表現正常”的ADC(大多數Σ-Δ ADC和現代的高分辨率逐次逼近寄存器(SAR) ADC)來說,通過噪聲進行優化是首選方法。
測量ADC濾波器響應
AD7124-8是一個Σ-Δ ADC,其中調制解調器產生高采樣率,但噪聲大(低分辨率),表示模擬輸入。這些噪聲很大的數據然后被內部數字濾波器過濾,產生更低速率、更低噪聲的輸出。濾波器的類型因ADC而異,具體由預期的最終應用決定。AD7124-8是針對精密應用的通用器件。因此,數字濾波器響應和輸出數據速率是高度可配置的。雖然數據手冊中明確定義了濾波器響應,但有時可能需要測量濾波器對給定信號的影響。AD7124-8濾波器響應代碼塊(參見圖9)通過將正弦波應用到ADC輸入并分析輸出來測量濾波器響應。該方法適用性高,可用于測量其他波形——子波和模擬的物理事件。ADALM2000連接至AD7124-8電路,如圖8所示。
圖8.ADALM2000波形發生器用于生成一定范圍的正弦波頻率,以直接測量AD7124-8的濾波器響應。雖然腳本將正弦波幅度和偏移設置為安全水平,1kΩ電阻可以在功能故障時保護AD7124-8。(ADALM2000的輸出電壓范圍為–5V至+5V,而AD7124-8的絕對最大限值為-0.3V和+3.6V。)
AD7124-8濾波器響應代碼塊(參見圖9)將設置ADALM2000的波形發生器,生成10Hz正弦波,捕捉1024個數據點,計算rms值,然后將結果附加到列表中。send_sinewave和capture_data是實用函數,分別用于發送一個正弦波到ADALM2000和接收來自AD7124的數據塊。2 接著,它將頻率步進增加,直到達到120Hz,然后給出圖10所示的結果。
圖9.ADALM2000的濾波器響應框圖
圖10.在64 SPS、sinc4模式下測量AD7124濾波器的響應,顯示濾波器的通帶、第一個波瓣和前兩個零位。
當測量高衰減值需要一個更安靜和更低失真的信號發生器時,在此設置下,前幾個主要波瓣的響應是明顯的。
模擬ADC濾波器
測量ADC的濾波器響應的能力是一項實用的平臺驗證工具。但是,要完全模擬信號鏈,需要濾波器的模型。關于這一點,許多轉換器(包括AD7124-8)沒有明確指明,但可以根據數據手冊中提供的信息逆向設計得出可用的模型。
注意,以下只是AD7124-8濾波器的模型;不是位精準的表示。請參考AD7124-8數據手冊查看所有保證參數。
AD7124的濾波器都具有由各種sinc函數組成的頻率響應(頻率響應與(sin{f}/f)N成正比)。這些濾波器易于構建,在零位已知的情況下可以逆向設計。
圖11顯示AD7124-8的10Hz陷波濾波器。還提供高階sinc3和sinc4濾波器的各種組合。
濾波器的脈沖(時域)形狀如圖14所示。濾波器系數(tap)值被標準化,以得出零頻率時的單位(0dB)增益。
圖11.AD7124-8 10 Hz陷波濾波器具有sinc1幅度響應;濾波器的脈沖響應只是100 ms時間間隔內樣本的未加權(矩形)平均值。
圖12中顯示的同步50Hz/60Hz拒波濾波器是一個重要示例。此濾波器用于強烈抑制來自交流電源線的噪聲,可能是50Hz(與歐洲一樣),或者是60Hz(與美國一樣)。
圖12.AD7124-8 50Hz/60Hz拒波濾波器響應是50Hz sinc3濾波器和60Hz sinc1濾波器的組合。
可以通過對sinc1濾波器進行卷積來生成更高階的sinc濾波器。例如,將兩個sinc1濾波器(在時間上有一個矩形脈沖響應)進行卷積將得到一個三角脈沖響應和一個相應的sinc2頻率響應。AD7124濾波器代碼塊(參見圖13)生成一個sinc3濾波器,在50Hz時為零,然后添加第四個濾波器,在60Hz時為零。
圖13.適用于50Hz/60Hz sinc濾波器的AD7124-8代碼示例。
濾波器的脈沖(時域)形狀如圖14所示。濾波器系數(tap)值被標準化,以得出零頻率時的單位(0dB)增益。
圖14.對矩形脈沖響應進行反復卷積,得到三角形響應,然后是類高斯脈沖響應。
最后,可以使用NumPy的freqz函數計算頻率響應,如圖16所示。響應如圖15所示。
圖15.將sinc3 50Hz陷波濾波器與sinc1 60Hz濾波器進行卷積,將產生強烈抑制50Hz和60Hz的復合響應。
圖16.AD7124-8代碼示例,適用于帶sinc 60Hz濾波器的sinc3 50Hz陷波濾波器。
無可避免:傳感器的基本限制
所有傳感器,無論多么完美,都有最大輸入值(和對應的最大輸出,可能是電壓、電流、電阻,甚至是刻度位置)和一個有限的本底噪聲——即使輸入完全靜止,輸出也存在“波動”。在有些情況下,提供電力輸出的傳感器可能包含具有有限電阻(更廣泛一點,阻抗)的元件,在圖17中,RSENSOR表示該電阻。這代表一個無法改善的基本噪聲限值,此電阻會生成en(RMS)噪聲電壓,最小值為:
其中:eN (RMS)表示總噪聲。K表示波爾茲曼常數(1.38e-23 J/K)。T表示電阻的絕對溫度(開氏度)。F2和F1表示相關頻段的上限和下限。將帶寬標準化至1Hz,以V/√Hz為單位表示噪聲密度。
傳感器數據手冊可能給出低輸出電阻(通常接近0Ω),但這可能是個緩沖級,可以簡化與下游電路之間的連接,但無法消除信號鏈前面部分的電阻導致的噪聲。
圖17.傳感器通常包括一個內部緩沖器,用于簡化與下游電路的連接。當輸出阻抗很低(通常接近0 Ω)時,來自高阻抗檢測元件的噪聲與信號一起被緩沖。
還有許多其他的傳感器限制——機械的、化學的、光學的,每個傳感器都有自己的理論限制,我們可以模擬其影響,之后再進行補償。但噪聲是唯一無法彌補的缺陷。
實驗室噪聲源
一個校準過的噪聲發生器就像是“世界上最糟糕的傳感器”,它模擬傳感器的噪聲,但實際上不做任何檢測。這種發生器允許直接測量信號鏈的噪聲響應。圖18所示的電路使用1MΩ電阻作為127nV/√Hz(在室溫下)噪聲源,具有“合格”的精度和帶寬。雖然精度只是合格,此方法也有其優勢:
?它基于第一原則,因此在某種意義上可以作為一種未校準的標準。
?它是真正隨機的,不含重復的模式。
OP482是一款超低偏置電流放大器,具有相應的低電流噪聲,以及足夠低的電壓噪聲,所以,1MΩ輸入阻抗導致的噪聲占主導地位。配置增益為2121,輸出噪聲為269μV/√Hz。
圖18.一個1MΩ電阻作為可預測的噪聲源,然后通過低噪聲運算放大器放大到可用的水平。
使用ADALM2000 USB儀器,以及Scopy GUI的頻譜分析儀驗證噪聲源,如圖19所示。9
圖19.基于電阻的實驗室噪聲發生器的輸出具有大約10kHz的可用帶寬
在分析儀采用圖示的設置時,ADALM2000的本底噪聲為40μV/√Hz,遠低于噪聲源的269μV/√Hz。
雖然Scopy可用于單次可視測量,但其功能可以通過SciPy周期圖函數輕松復制。使用libm2k10和Python捆綁程序從ADALM2000收集原始數據,進行最低限度的處理,以去除直流內容(否則會泄漏至低頻率倉),并擴展至nV/√Hz。此方法如圖20所示,適用于任何數據采集模塊,只要采樣速率是固定的、已知的,且數據可以格式化為電壓向量。
圖20.ADALM2000的Python噪聲源測量代碼
我們現在有了已知的噪聲源和測量該噪聲源的方法,它們都可以用來驗證信號鏈。
在LTspice中模擬信號鏈
Ltspice??是一款免費的通用模擬電路模擬器,可模擬信號鏈設計。它可以執行瞬態分析、頻域分析(交流掃描)和噪聲分析,分析結果可以導出并使用Python集成到混合信號模型中。
圖21顯示模擬噪聲發生器的噪聲模擬,與實驗結果高度一致。使用與OP482的屬性相似的運算放大器進行模擬。
圖21.對實驗室噪聲源的LTspice模擬顯示出與被測電路大致相同的可用帶寬
在模擬的時候,圖22的電路噪聲并不重要,它在某些帶寬(相關信號所在的帶寬)中是恒定的,而在高于這些帶寬的帶寬中,它會按約一階低通響應降低。由于高階模擬濾波或有源元件本身,這種技術在模擬非平坦本底噪聲時非常有用。自動歸零放大器(例如LTC2057)中常見的噪聲山形就是一個典型示例,請參見圖23。
圖22.LTC2057的噪聲密度在低頻率下是平坦的,在50kHz時出現峰值(內部振蕩器的100kHz頻率的一半)。
在Python中導入LTspice噪聲數據用于頻域分析涉及到設置模擬命令,以模擬分析向量中的具體頻率。在本例中,噪聲模擬的最大頻率設置為2.048MHz,分辨率為62.5Hz,對應于4.096MSPS采樣率下的第一奈奎斯特區。圖23顯示同相增益為10時對LTC2057的模擬、模擬輸出和導出的數據格式。
圖23.LTspice用于模擬LTC2057在同相增益配置為+10時的輸出噪聲。LTspice提供了用于集成噪聲的簡單工具,但是可以將任何模擬的結果導出和導入到Python中,以進行進一步的分析。
為了確定給定頻帶的噪聲對信號(信噪比)的影響,在相關帶寬上集成噪聲的和的平方根。在LTspice中,可以通過設置繪圖界限來集成繪制參數,然后單擊參數標簽。整個2.048MHz模擬過程的總噪聲為32μV rms。在Python中實現此操作的函數如圖24所示。
圖24.用于實現和的平方根的Python代碼
讀取導出的噪聲數據并將其傳遞給integrate_psd函數,得出的總噪聲為3.21951e-05,與LTspice計算得出的值非常接近。
生成測試噪聲
它在純粹的模擬噪聲發生器的功能上進行擴展,非常適合用于生成不止是扁平,而且是任意的噪聲剖面——平坦的噪聲帶、粉紅噪聲,或模擬某些放大器的峰值的噪聲山形。由圖25所示的半譜代碼塊生成的時間序列從所需的噪聲譜密度(可以手動生成,或從LTspice模擬中獲取)和時序序列的采樣速率開始,然后生成可以發送至DAC的電壓時間序列值。
圖25.生成任意噪聲剖面的Python代碼
可以通過使用libm2k腳本控制一個ADALM2000,然后使用第二個ADALM2000和Scopy GUI中的頻譜分析儀來驗證噪聲剖面,以驗證此功能。將噪聲時間序列推到ADALM2000代碼片段(參見圖26),會在ADALM2000 W2輸出上生成4個1 mV/√Hz噪聲帶(在W1上有一個正弦波,用于實現雙重檢查功能)。
圖26.使用ADALM2000驗證任意噪聲
圖27顯示了一個ADALM2000生成的4個1mV/√Hz噪聲帶。輸入矢量長達8192個點,采樣速率為75kSPS,每個點帶寬為9.1Hz。每個頻段為512個點,或為4687Hz寬。高于~20kHz之后出現的滾降是DAC的sinc滾降。如果DAC能夠提供更高的采樣速率,時間序列數據就可以通過插值濾波器進行上采樣和濾波。11
圖27.Scopy光譜分析儀被用于驗證任意噪聲發生器。噪聲帶之間的深凹痕展示了分析儀的本底噪聲,表明可以準確地生成任意噪聲剖面。
該噪聲發生器可與純粹的模擬發生器一起使用,用于驗證信號鏈的抑制特性。
模擬和驗證ADC噪聲帶寬
外部噪聲源和fS/2以上的雜散音將折回(混疊)到直流到fS/2區域,轉換器可能對遠遠超過fS/2的噪聲非常敏感。以LTC2378-20為例,它具有1MSPS采樣速率,34MHz的–3dB輸入帶寬。雖然在如此高的頻率下性能可能不是最好的,但這個轉換器會對超過68個奈奎斯特區的噪聲進行數字化,并將它們折疊回您的信號上。這展示了抗混疊濾波器對寬帶ADC的重要性。精密應用的轉換器一般采用∑-?(例如AD7124-8)或過采樣SAR架構,在該架構中,輸入帶寬受設計限制。
考慮濾波器的等效噪聲帶寬(ENBW)通常是有用的,包括ADC的內置濾波器。ENBW是扁平通帶“磚墻”濾波器的帶寬,該濾波器允許通過與非扁平濾波器相同數量的噪聲。常見示例包括一階RC濾波器的ENBW,其公式為:
其中fC表示該濾波器的截止頻率。如果對1kHz一階低通濾波器的輸入和1.57kHz磚墻低通濾波器的輸入應用寬帶噪聲(從“直流到可見光”),輸出端的總噪聲功率將是相同的。
圖28中的ENBW示例代碼塊接受濾波器幅度響應,然后返回有效噪聲帶寬。計算并使用單極性濾波器的幅度響應來驗證ENBW = fC × π/2關系。
圖28.Python代碼示例,用于計算有效噪聲帶寬
此函數可用于計算任意濾波器響應的ENBW,包括AD7124的內部濾波器。可以使用與之前的50Hz/60Hz拒波濾波器示例類似的方法來計算AD7124 sinc4濾波器的頻率響應和128SPS采樣速率。arb_anbw函數返回約31Hz的ENBW。
ADALM2000噪聲發生器可用于驗證這一結果。設置測試噪聲發生器生成1000μV/√Hz的頻段會導致約5.69mV rms的總噪聲,測量出的總噪聲約為5.1mV rms。示波器捕獲的ADC輸入信號在ADC輸出數據旁邊繪出,如圖29所示。注意,測量到的峰峰值噪聲為426mV,而ADC的峰峰值噪聲約為26mV。雖然在真實的精密信號鏈中,是無法實現如此高的噪聲水平的(雖然希望如此),但本練習表明,可以將ADC的內部濾波器作為信號鏈中的主要帶寬限制元件,從而降低噪聲。
圖29.1mV/√Hz噪聲帶被驅動進入AD7124-8輸入。很明顯能夠看到,噪聲出現定量降低;ADC輸入上的426mV峰峰值噪聲會導致ADC輸出上出現約25mV峰峰值噪聲。按照給出的ADC濾波器的噪聲密度為1mV/√Hz,ENBW為31Hz,5.1mV rms總輸出噪聲非常接近預計的5.69mV rms。
結論
在任何信號鏈中,噪聲都是一個限制因素;一旦噪聲污染信號,就會致使信息丟失。在構建信號采集系統之前,必須先了解應用要求,選擇合適的組件,并測試原型電路。ADI在本教程提供了一組可以在設計和測試過程中用來準確模擬和測量傳感器和信號鏈噪聲的方法。
如果單獨來看,本教程中詳細介紹的技術并不新穎。但是,為了實現一個合適的系統,需要一組基本的、易于實現的低成本技術,以實現信號鏈模擬和驗證。即使制造商繼續提供性能更好的部件,但這些部件總是存在一定的限制,我們必須意識到這一點。這些技術不僅可以用于在構建混合模式信號鏈之前驗證部件,還可以用于識別現有信號鏈中的設計錯誤。
-
ADI
+關注
關注
144文章
45812瀏覽量
248729 -
adc
+關注
關注
98文章
6438瀏覽量
544097 -
模數轉換器
+關注
關注
26文章
3137瀏覽量
126742 -
python
+關注
關注
56文章
4782瀏覽量
84453
發布評論請先 登錄
相關推薦
評論