24小時聯(lián)系電話:18217114652、13661815404
中文
行業(yè)資訊
數(shù)字和模擬濾波器的低成本驗證
數(shù)字和模擬濾波器的低成本驗證
在自動化硬件在環(huán)測試的低成本解決方案中,我們回顧了使用低成本測試設(shè)備來驗證我們的硬件設(shè)計的想法。在本文中,我想重點介紹一個在驗證方面具有很高進入門檻的特定應(yīng)用程序:數(shù)字信號處理 (DSP),特別是信號過濾。與其詳述 DSP 主題,不如將其簡單地定義為“將進入電路板的信號數(shù)字化,然后對其進行處理”。要更深入地了解什么是 DSP 以及它是如何工作的,您可以查閱維基百科或各種教程,例如dspGuru或DSP Guide. 本文的重點是找到一種簡單但經(jīng)濟高效的方法來驗證您的數(shù)字(或模擬)濾波器。為簡單起見,我使用 Arduino 實現(xiàn)了我的數(shù)字濾波器。代碼存儲庫可以在這里找到。
基線
很常見的是,越接近電子,測試就越原始。這不是針對模擬設(shè)計社區(qū)的攻擊。對于非基于生產(chǎn)的硬件,期望很少或沒有測試自動化是合理的。如嵌入式系統(tǒng)的測試驅(qū)動開發(fā)中所述在 OnTrack 上,電氣工程師在開發(fā)階段自動化全套測試以驗證其設(shè)計的驅(qū)動因素并不多。它所需的成本和時間并不能證明工程師需要轉(zhuǎn)動幾個旋鈕并稱其為良好的幾次是合理的。輸入模擬和數(shù)字濾波。設(shè)計工程師可以驗證設(shè)計完美的基本濾波器一兩次,并移交給設(shè)計流程的下一個階段。當多個變量進入方程式時,例如調(diào)諧、范圍驗證和 EMI 測試,自動化將大有幫助。大多數(shù)高端示波器都帶有某種頻譜分析儀,可以執(zhí)行快速傅立葉變換 (FFT) 來確定您的濾波器是否正常工作,但很少有完全自動化的。為了那個原因,
讓我們看一個簡單的例子:一個低通濾波器試圖用特定的噪聲抑制水平濾除 100 Hz 以上的所有頻率。如果我想手動測試這個,我將在改變我從函數(shù)發(fā)生器中驅(qū)動的輸入頻率和幅度的同時,將我的輸入與輸出進行比較。示例測試設(shè)置通常如下所示:
圖 1:測試硬件配置
即使我們堅持使用整數(shù)測試每個頻率也需要很長時間。使用低端泰克示波器,我只測試了 4 個不同的頻率,但我仍然需要一些時間來配置我的示波器、手動驅(qū)動輸入以及捕獲每個波形的圖像。正如您所看到的,圖像捕獲的分辨率也不是很高。
圖 2:1 Hz 時的波形捕獲
圖 3:10 Hz 時的波形捕獲
圖 4:100 Hz 時的波形捕獲
圖 5:1 kHz 時的波形捕獲
范圍捕獲并明確表明過濾器似乎正在工作。您可以看到濾波后的信號(通道 2)在我們接近 100 Hz 時緩慢衰減,達到我們在達到目標時“過濾掉”的要求。示波器附帶的內(nèi)置 FFT 數(shù)學函數(shù)也是如此。這沒什么好寫的,但它確實為我花費了大約 1,000 美元的示波器完成了工作。
圖 6:使用示波器的數(shù)學函數(shù)進行 FFT 捕獲
當我們經(jīng)歷這個過程時,特別是在第十輪返工之后,我們不得不問自己,“我們愿意像這樣手動驗證我們的設(shè)計多少次?”
驗證交易空間
當涉及到驗證和自動化測試時,尤其是對于包括數(shù)字信號處理在內(nèi)的更復雜的設(shè)計,我們需要了解在自動化方面投入時間和金錢的地方。讓我們看一下用于測試濾波器設(shè)計的三種不同的可行選項。
圖 7:測試設(shè)置的交易空間
正如我們之前看到的,第一個選項使用示波器和函數(shù)發(fā)生器。這些是每個工程師在學校學習如何使用的標準工具。這是手動的,乏味的,而且不是很徹底。第二個選項,捕獲數(shù)據(jù)并處理它,很好,但前提是您擅長 MATLAB 或 SciPy。最后一個選項也不錯,但還需要了解您正在使用的設(shè)備(或與該設(shè)備相關(guān)的驅(qū)動程序)。
對于這個項目,我采取了混合的方法。我首先使用我的Analog Discovery 2 對所有內(nèi)容進行了視覺驗證,然后轉(zhuǎn)向使用 Python 的Pytest框架進行自動驗證。
圖 8:使用 Analog Discovery 2 的示波器 + 頻譜分析儀
一旦我為自己設(shè)定了基線,我就轉(zhuǎn)向了自動驗證。我的 CI/CD 設(shè)置包括兩個階段:編譯/加載固件和硬件在循環(huán)測試。
在這兩個腳本之間,總共執(zhí)行了三個測試并報告回 Gitlab。這些測試是使用我在計算機(或 Raspberry Pi)上配置的 Gitlab Runner 在硬件目標上運行的。
圖 10:Gitlab 中的測試報告
我的測試目標是確保我的輸入信號在大于 100 Hz 的頻率下被正確衰減,而我的自動測試正是這樣做的。
圖 11:信號幅度衰減
我通過切割波形的邊緣并獲取正弦波的前幾個最大值和最小值來實現(xiàn)幅度檢查器的“窮人版”。請注意,在實際 DSP 中,需要應(yīng)用窗口函數(shù),然后對濾波后的信號運行 FFT。對于這個測試,我只關(guān)心 1V 的輸入幅度對于 100Hz 以上的頻率衰減到 0.2V 或更低。正如您在作業(yè)日志中看到的那樣,該測試正是這樣做的。我們現(xiàn)在可以使用這個測試套件并在任何地方運行它,而不必每次都手動設(shè)置我們的設(shè)備。