作者:Mark ThorenandCristina ?uteu
任何涉及物理世界靈敏測量的應用都始于精確、精密和低噪聲信號鏈。現代、高度集成的數據采集設備通常可以直接連接到傳感器輸出,在單個硅器件上執行模擬信號調理、數字化和數字濾波,從而大大簡化了系統電子元件。然而,仍然需要全面了解信號鏈的噪聲源和噪聲限制濾波器,才能從這些現代器件中提取最大性能并進行調試。
介紹
本教程是轉換器連接教程的延續。1,2它將專注于單個信號鏈元件的噪聲,并使用Python/SciPy對其進行建模。3和LTspice。然后,它將通過使用Python通過libm2k和Linux工業輸入輸出(IIO)框架驅動ADALM2000多功能USB測試儀器來驗證結果。所有源代碼和其他討論均可在配套的主動學習實驗室練習中找到。??
混合模式信號鏈無處不在。簡而言之,任何將真實信號轉換為電表示然后數字化的系統都可以歸類為混合模式信號鏈。在鏈條上的每個點,信號都會以各種方式降級,通常可以表征為某種形式的失真或附加噪聲。一旦進入數字領域,數字化數據的處理也不是完美的,但至少出于所有實際目的,它不受許多影響模擬信號的因素的影響——元件容差、溫度漂移、來自相鄰信號的干擾或電源電壓變化。
隨著行業不斷突破物理極限,有一點是肯定的:儀器儀表的模擬和混合信號組件總是有改進的余地。如果市場上出現模數轉換器(ADC)或數模轉換器(DAC),在速度,噪聲,功率,精度或價格方面處于領先地位,制造商將很樂意將其應用于現有問題,然后要求更多改進。然而,為了為您的應用實現最佳的采集系統,了解組件的局限性并相應地選擇它們是至關重要的。
通用混合模式信號鏈
圖1顯示了精密儀器儀表應用的典型通用信號鏈,具有物理輸入和數字輸出。有許多關于ADC的背景參考資料可用,4大多數讀者會感覺到ADC在某個時間點對輸入信號進行采樣(或測量信號在某個觀察時間內的平均值),并生成該信號的數值表示形式 - 通常是二進制數,其值介于0到2之間(N – 1)其中 N 是輸出字中的位數。
圖1.在混合模式信號鏈中,溫度、光強度、pH、力或扭矩等一些物理現象被轉換為電參數(電阻、電流或直接轉換為電壓)。然后,該信號被放大、低通濾波,并由ADC數字化,其中可能包括內部數字濾波。
模數轉換器噪聲源
雖然圖1中有幾個噪聲源,但ADC數字輸出中的位數經常被忽略或過分強調。從歷史上看,ADC的位數被認為是最終品質因數,其中16位轉換器被認為比14位轉換器好4倍。5但在現代高分辨率轉換器的情況下,位數可以安全地忽略不計。注意信號鏈設計的一般原則:
“一級的輸入噪聲應略低于前一級的輸出噪聲。
與任何信號鏈一樣,ADC內的一個噪聲源通常占主導地位。因此,如果將無噪聲信號施加到N位ADC:
產生單個輸出代碼或兩個相鄰輸出代碼,則量化噪聲占主導地位。信噪比(SNR)不能大于(6.02 N + 1.76)dB。6
導致許多輸出代碼的高斯分布,然后熱噪聲源占主導地位。信噪比不大于:
哪里:
V在(p-p) 是滿量程輸入信號。
σ是以電壓單位表示的輸出代碼的標準偏差。
超高分辨率轉換器,如稍后將用作示例的AD7124-8,很少受到量化噪聲的限制;熱噪聲在所有增益/帶寬設置中占主導地位,短路輸入將始終產生相當高斯的輸出代碼分布。圖2顯示了24位Σ-Δ型ADC7124-8的接地輸入直方圖,內部可編程增益放大器(PGA)分別設置為1和128。
圖2.PGA增益為1(左)時,AD7124輸出噪聲表示13個代碼,標準偏差約為2.5個代碼。雖然量化是可見的,但熱噪聲更為顯著。PGA增益為128(右)時,表示187個代碼,量化噪聲微不足道。截斷一個或兩個最低有效位(加倍或四倍量化噪聲)不會導致信息丟失。
建模和測量ADC噪聲
對熱噪聲受限ADC的噪聲進行建模非常簡單。如果噪聲“表現良好”(如圖2所示為高斯噪聲)且在整個ADC輸入范圍內恒定,則可以使用NumPy的7隨機正態函數,然后通過取標準差進行驗證,如圖3所示。
圖3.使用 NumPy 對高斯噪聲進行建模。
圖4.ADALM2000是一款多功能USB測試儀器,具有兩個通用模擬輸入和兩個輸出,采樣速率分別為100 MSPS和150 MSPS。它可以用作測量ADC噪聲帶寬和濾波器響應的簡單信號源。運行內核的Raspberry Pi 4支持AD7124器件驅動程序,充當AD7124和主機之間的簡單橋梁。
AD7124器件驅動程序屬于行業標準IIO框架,該框架具有完善的軟件API(包括Python綁定)。應用程序代碼可以在本地(在樹莓派上)或通過網絡、串行或 USB 連接在遠程機器上運行。此外,皮亞迪-伊奧8抽象層負責與IIO設備接口所需的大部分樣板設置,從而大大簡化了軟件界面。圖5說明了如何打開與AD7124-8的連接,對其進行配置,捕獲數據塊,然后關閉連接。
圖5.AD7124-8基本數據采集。
建立與AD7124-8的通信后,可以執行一個非常簡單但非常有用的測試:直接測量輸入噪聲。簡單地將ADC的輸入短路并查看ADC代碼的分布是表征信號鏈設計的重要步驟。AD7124輸入模式設置為單極性,因此只有正值有效;圖6所示的測試電路確保輸入始終為正。
圖6.電阻分壓器用于在AD7124-8的輸入端產生1.25 mV偏置,克服了15 μV的最大失調電壓,并確保ADC讀數始終為正。
圖 7 顯示了兩個 1024 點測量值。下部(藍色)跡線是在最初通電后立即拍攝的。
圖7.在施加1.25 mV偏置的情況下采集兩個AD7124-8數據。下方的跡線顯示了上電后電路預熱時的初始漂移。上面的曲線顯示半小時預熱后讀數穩定。
“漂移”可能是由于許多因素造成的——內部基準升溫、外部電阻升溫(因此漂移)或寄生熱電偶,其中略有不同的金屬在存在熱梯度的情況下會產生電壓。預熱后的實測噪聲約為565 nV rms,與數據手冊中的噪聲規格相當。
將ADC噪聲表示為密度
模擬信號鏈設計的一般原理(一級的輸入噪聲應略低于前一級的輸出噪聲)如果所有元件都包含噪聲密度規格,則計算起來很容易——大多數明確指定的傳感器和幾乎所有放大器都是如此。
與放大器和傳感器不同,ADC數據手冊通常不包括噪聲密度規格。將ADC的噪聲表示為密度,可以直接將其與模擬信號鏈中最后一個元件(可能是ADC驅動器級、增益級或傳感器本身)輸出端的噪聲進行比較。
ADC的內部噪聲必然出現在直流和采樣速率的一半之間。理想情況下,這種噪聲是平坦的,或者至少是可預測的形狀。事實上,由于ADC的總噪聲分布在已知帶寬內,因此可以將其轉換為噪聲密度,可以直接與信號鏈中的其他元件進行比較。精密轉換器通常直接給出總噪聲,單位為伏特均方根:
其中 e有效值是總均方根噪聲,根據接地輸入代碼直方圖的標準偏差計算得出。
經過正弦信號測試和表征的高速轉換器通常具有SNR規格。如果提供,總均方根噪聲可以計算為:
其中ADCp-p是ADC的峰峰值輸入范圍。
然后可以計算等效噪聲密度:
其中 fS是以樣本/秒為單位的 ADC 采樣速率。
預熱后圖7的總噪聲為565 nV,數據速率為128 SPS。噪聲密度約為:
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的濾波器響應。腳本將正弦波幅度和失調設置為安全電平,而1 kΩ電阻可在發生故障時保護AD7124-8。(ADALM2000輸出電壓范圍為–5 V至+5 V,而AD7124-8的絕對最大限值為–0.3 V和+3.6 V。
AD7124-8濾波器響應代碼模塊(見圖9)將ADALM2000的波形發生器設置為產生10 Hz的正弦波,捕獲1024個數據點,計算均方根值,然后將結果附加到列表中。send_sinewave和capture_data是實用程序函數,分別向ADALM2000發送正弦波并從AD7124接收數據塊。2然后,它將逐步通過高達120 Hz的頻率,然后繪制結果,如圖10所示。
圖9.ADALM2000的濾波器響應模塊程序。
圖 10.AD7124濾波器在64 SPS、sinc4模式下的響應測量結果顯示了濾波器的通帶、第一個波瓣和前兩個零點。
雖然測量高衰減值需要更安靜、更低失真的信號發生器,但這種設置可以明顯地顯示前幾個主要波瓣的響應。
ADC濾波器建模
測量ADC濾波器響應的能力是臺架驗證的實用工具。但是,為了完全仿真信號鏈,需要濾波器的模型。許多轉換器(包括AD7124-8)沒有明確提供這一點,但可以根據數據手冊中提供的信息對可行的模型進行逆向工程。
請注意,以下僅為AD7124-8濾波器的型號;它不是位精確的表示形式。有關所有保證參數,請參考AD7124-8數據手冊。
AD7124的濾波器均具有各種sinc功能組合的頻率響應(頻率響應與(sin{f}/f)成比例)N).這些過濾器相當容易構造,并且在已知空值時進行逆向工程。
圖11顯示了AD7124-8的10 Hz陷波濾波器。還提供高階 sinc3 和 sinc4 過濾器的各種組合。
圖 11.AD7124-8 10 Hz陷波濾波器具有sinc1幅度響應;濾波器的脈沖響應只是100 ms時間間隔內樣本的未加權(矩形)平均值。
圖12所示的同步50 Hz/60 Hz抑制濾波器就是一個簡單的例子。該濾波器旨在強烈抑制來自交流電源線的噪聲,即50 Hz(如歐洲)或60 Hz(如美國)。
圖 12.AD7124-8 50 Hz/60 Hz抑制濾波器響應是50 Hz、sinc3濾波器和60 Hz、sinc1濾波器的組合。
高階sinc濾波器可以通過卷積sinc1濾波器生成。例如,卷積兩個sinc1濾波器(在時間上具有矩形脈沖響應)將產生三角脈沖響應和相應的sinc2頻率響應。AD7124濾波器代碼塊(見圖13)生成一個在50 Hz時為零的sinc3濾波器,然后在60 Hz時添加第四個為零的濾波器。
圖 13.AD7124-8 50 Hz/60 Hz sinc濾波器的代碼示例
濾波器產生的脈沖(時域)形狀如圖14所示。濾波器系數(抽頭)值歸一化,在零頻率下獲得單位(0 dB)增益。
圖 14.反復卷積矩形脈沖響應會產生三角形,然后是類似高斯的脈沖響應。
最后,可以使用NumPy的freqz函數計算頻率響應,如圖16所示。響應如圖 15 所示。
圖 15.將 sinc3、50 Hz 陷波濾波器與 sinc1、60 Hz 濾波器卷積會產生強烈抑制 50 Hz 和 60 Hz 的復合響應。
圖 16.AD7124-8代碼示例,用于sinc3 50 Hz陷波濾波器,帶sinc 60 Hz濾波器。
電阻是徒勞的:傳感器的基本限制
所有傳感器,無論多么完美,都有一些最大輸入值(以及相應的最大輸出,可能是電壓、電流、電阻,甚至撥號位置)和有限的本底噪聲——即使輸入完全靜止,也存在輸出“擺動”。在某些時候,具有電輸出的傳感器將包括一個具有有限電阻(或更一般地說,阻抗)的元件,由R表示傳感器在圖 17 中。這代表了一個無法改進的基本噪聲限值——該電阻至少會產生 en(RMS) 伏特噪聲:
哪里:
eN(RMS) 是總噪聲。
K 是玻爾茲曼常數 (1.38E-23J/K)。
T 是電阻器的絕對溫度(開爾文)。
F2 和 F1 是感興趣頻段的上限和下限。
將帶寬歸一化為 1 Hz 表示噪聲密度(以 V/√Hz為單位)。
圖 17.傳感器通常包括一個內部緩沖器,以簡化與下游電路的連接。雖然輸出阻抗較低(通常接近0 Ω),但來自高阻抗檢測元件的噪聲與信號一起緩沖。
將帶寬歸一化為 1 Hz 表示噪聲密度(以 V/√Hz為單位)。
傳感器的數據手冊可能規定低輸出阻抗(通常接近0 Ω),但這可能是一個緩沖級,它簡化了與下游電路的接口,但不能消除信號鏈早期阻抗引起的噪聲。
還有許多其他傳感器限制 - 機械,化學,光學 - 每個都有自己的理論限制,其影響可以在以后建模和補償。但噪音是不能做到的缺陷
實驗室噪聲源
經過校準的噪聲發生器充當“世界上最差的傳感器”,它模擬傳感器的噪聲而不實際感應到任何東西。這種發生器允許直接測量信號鏈對噪聲的響應。圖18所示電路使用1 MΩ電阻作為127 nV/√Hz(室溫下)噪聲源,精度和帶寬為“正常”。雖然精度還可以,但這種方法有優點:
它基于第一原理,因此在某種意義上可以作為未校準的標準。
它確實是隨機的,沒有重復的模式。
OP482是一款超低偏置電流放大器,具有相應的低電流噪聲和足夠低的電壓噪聲,使得1 MΩ輸入阻抗引起的噪聲占主導地位。增益配置為2121,輸出噪聲為269 μV/√Hz。
圖 18.1 MΩ電阻用作可預測的噪聲源,然后通過低噪聲運算放大器將其放大至可用電平。
使用ADALM2000 USB儀器,使用Scopy GUI的頻譜分析儀驗證噪聲源,如圖19所示。9
圖 19.基于電阻的實驗室噪聲發生器的輸出具有大約10 kHz的可用帶寬。
在所示分析儀設置下,ADALM2000的本底噪聲為40 μV/√Hz,遠低于噪聲源的269 μV/√Hz。
雖然 Scopy 對于單次目視測量很有用,但使用 SciPy 周期圖功能可以輕松復制該功能。原始數據是使用 libm2k 從 ADALM2000 收集的10和 Python 綁定,經過最低限度的處理以刪除 DC 內容(否則會泄漏到低頻箱中)并縮放到 nV/√Hz。這種方法如圖20所示,可以應用于任何數據采集模塊,只要采樣速率是固定的和已知的,并且數據可以格式化為電壓矢量。
圖 20.ADALM2000的Python噪聲源測量代碼。
我們現在配備了已知的噪聲源和測量該噪聲源的方法,這兩種方法都可用于驗證信號鏈。
LTspice中的信號鏈建模
LTspice?是一款免費提供的通用模擬電路仿真器,可應用于信號鏈設計。它可以執行瞬態分析、頻域分析(AC 掃描)和噪聲分析,其結果可以導出并使用 Python 合并到混合信號模型中。
圖21顯示了模擬噪聲發生器的噪聲仿真,與實驗結果非常吻合。仿真使用了與OP482具有相似特性的運算放大器。
圖 21.實驗室噪聲源的LTspice仿真顯示,其可用帶寬與測量電路大致相同。
圖22的電路噪聲對于模型來說相當微不足道,因為它在某些帶寬(目標信號所在的帶寬中)是恒定的,高于該帶寬,它以大約一階低通響應滾降。這種技術派上用場的地方是模擬非平坦本底噪聲,無論是由于高階模擬濾波,還是有源元件本身。典型的例子是自穩零放大器(如LTC2057)中經常存在的噪聲山,如圖23所示。
圖 22.LTC2057的噪聲密度在低頻時是平坦的,峰值為50 kHz(內部振蕩器100 kHz頻率的一半)。
圖 23.LTspice 用于在 +10 的同相增益配置中模擬 LTC2057 的輸出噪聲。LTspice提供了簡單的噪聲積分工具,但任何仿真的結果都可以導出并導入到Python中以進行進一步分析。
在Python中導入LTspice噪聲數據以進行頻域分析是設置仿真命令的問題,以便仿真分析矢量中的精確頻率。在這種情況下,噪聲仿真的最大頻率為2.048 MHz,分辨率為62.5 Hz,對應于采樣率為4.096 MSPS的第一奈奎斯特區。圖 23 顯示了 LTC2057 在同相增益 10 下的仿真、仿真輸出和導出的數據格式。
為了確定給定噪聲頻帶對信號的影響(信噪比),噪聲在目標帶寬上進行和方根積分。在LTspice中,可以通過設置繪圖限值,然后按住控制單擊參數標簽來積分繪制的參數。整個2.048 MHz仿真的總噪聲為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輸出端產生四個1 mV/√Hz噪聲頻段(W1上帶有正弦波,用于雙重檢查功能)。
圖 26.使用ADALM2000驗證任意噪聲。
圖27顯示一個ADALM2000產生的四個1 mV/√Hz噪聲頻段。輸入矢量長度為 8192 點,采樣率為 75 kSPS,帶寬為每點 9.1 Hz。每個頻段為 512 點,或 4687 Hz 寬。~20 kHz以上的滾降是DAC的sinc滾降。如果DAC能夠實現更高的采樣率,則可以通過插值濾波器對時間序列數據進行上采樣和濾波。11
圖 27.Scopy頻譜分析儀用于驗證任意噪聲發生器。噪聲帶之間的深陷波暴露了分析儀的本底噪聲,表明可以準確生成任意噪聲曲線。
該噪聲發生器可與純模擬發生器結合使用,以驗證信號鏈的抑制特性。
建模和驗證ADC噪聲帶寬
外部噪聲源和高于f的雜散音調S/2將折回(別名)到 DC 到 fS/2區域和轉換器可能對遠高于f 的噪聲敏感S/2.以LTC2378-20為例,其采樣速率為1 MSPS,–3 dB輸入帶寬為34 MHz。雖然在如此高的頻率下性能可能不是最好的,但該轉換器將數字化超過 68 個奈奎斯特噪聲區,并將它們折疊回信號頂部。這說明了抗混疊濾波器對寬帶ADC的重要性。用于精密應用的轉換器通常采用Σ-Δ(如AD7124-8)或過采樣SAR架構,其中輸入帶寬受設計限制
考慮濾波器(包括ADC的內置濾波器)的等效噪聲帶寬(ENBW)通常很有用。ENBW是平坦通帶“磚墻”濾波器的帶寬,其允許通過的噪聲量與非平坦濾波器相同。一個常見的例子是一階RC濾波器的ENBW,它是:
其中 fC是濾波器的截止頻率。如果將寬帶噪聲(從“直流到日光”)施加到1 kHz一階低通濾波器和1.57 kHz磚墻低通濾波器的輸入端,則輸出端的總噪聲功率將相同。
圖28中的ENBW示例代碼塊接受濾波器幅度響應并返回有效噪聲帶寬。計算單極點濾波器的幅度響應,并用于驗證ENBW = fC× π/2 關系。
圖 28.計算有效噪聲帶寬的Python代碼示例。
該函數可用于計算任意濾波器響應的ENBW,包括AD7124的內部濾波器。AD7124 sinc4濾波器的頻率響應,128 SPS采樣速率可以通過類似于前面的50 Hz/60 Hz抑制濾波器示例的方法計算。arb_anbw函數返回大約 31 Hz 的 ENBW。
ADALM2000噪聲發生器可用于驗證此結果。將測試噪聲發生器設置為產生1000 μV/√Hz頻段,總噪聲約為5.69 mV rms,測量結果約為5.1 mV rms總噪聲。示波器捕獲ADC輸入信號顯示在ADC輸出數據旁邊,如圖29所示。請注意,測得的峰峰值噪聲為426 mV,而ADC峰峰值噪聲約為26 mV。雖然如此高的 10 使用Python分析混合模式信號鏈中噪聲的簡單方法 噪聲水平在實際的精密信號鏈中(希望)是不現實的,但本練習表明,可以依靠ADC的內部濾波器作為信號鏈中的主要帶寬限制元件,從而降低噪聲。
圖 29.1 mV/√Hz噪聲頻段驅動至AD7124-8輸入。噪音的定性降低是顯而易見的;ADC輸入端的峰峰值噪聲為426 mV,導致ADC輸出端的峰峰值噪聲約為25 mV。考慮到ADC濾波器的1 mV/√Hz噪聲密度和31 Hz ENBW,5.1 mV rms總輸出噪聲接近預測的5.69 mV rms。
結論
噪聲是任何信號鏈中的限制因素;一旦噪聲污染信號,信息就會丟失。在 構 建 信號 采集 系統 之前, 必須 了解 應用 要求, 進行 相應 的 選擇 元件, 并 測試 原型 電路。本教程提供了一系列方法,用于準確建模和測量傳感器和信號鏈噪聲,這些方法可在設計和測試過程中使用。
審核編輯:郭婷
-
轉換器
+關注
關注
27文章
8887瀏覽量
150240 -
adc
+關注
關注
99文章
6613瀏覽量
547831 -
dac
+關注
關注
43文章
2361瀏覽量
192813 -
python
+關注
關注
56文章
4822瀏覽量
85899
發布評論請先 登錄
轉換器連接教程:Python分析混合模式信號鏈中噪聲的方法
分析信號鏈中累積直流誤差最詳盡的方法
一種節省能源的簡單方法
一種寬范圍微弱直流信號測量的簡單方法
教你一種抑制EMI的簡單方法資料下載

一種在電路板的銅走線上鍍錫的簡單方法
使用 Python 簡化混合模式信號鏈的噪聲分析

FPGA遠程更新/遠程調試的一種簡單方法

一種使用Python來分析混合模式信號鏈中噪聲的簡單方法

評論