24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 行业资讯>
- 数字和模拟滤波器的低...
行业资讯
数字和模拟滤波器的低成本验证
数字和模拟滤波器的低成本验证
在自动化硬件在环测试的低成本解决方案中,我们回顾了使用(yòng)低成本测试设备来验证我们的硬件设计的想法。在本文(wén)中,我想重点介绍一个在验证方面具有(yǒu)很(hěn)高进入门槛的特定应用(yòng)程序:数字信号处理(lǐ) (DSP),特别是信号过滤。与其详述 DSP 主题,不如将其简单地定义為(wèi)“将进入電(diàn)路板的信号数字化,然后对其进行处理(lǐ)”。要更深入地了解什么是 DSP 以及它是如何工作的,您可(kě)以查阅维基百科(kē)或各种教程,例如dspGuru或DSP Guide. 本文(wén)的重点是找到一种简单但经济高效的方法来验证您的数字(或模拟)滤波器。為(wèi)简单起见,我使用(yòng) Arduino 实现了我的数字滤波器。代码存储库可(kě)以在这里找到。
基線(xiàn)
很(hěn)常见的是,越接近電(diàn)子,测试就越原始。这不是针对模拟设计社區(qū)的攻击。对于非基于生产的硬件,期望很(hěn)少或没有(yǒu)测试自动化是合理(lǐ)的。如嵌入式系统的测试驱动开发中所述在 OnTrack 上,電(diàn)气工程师在开发阶段自动化全套测试以验证其设计的驱动因素并不多(duō)。它所需的成本和时间并不能(néng)证明工程师需要转动几个旋钮并称其為(wèi)良好的几次是合理(lǐ)的。输入模拟和数字滤波。设计工程师可(kě)以验证设计完美的基本滤波器一两次,并移交给设计流程的下一个阶段。当多(duō)个变量进入方程式时,例如调谐、范围验证和 EMI 测试,自动化将大有(yǒu)帮助。大多(duō)数高端示波器都带有(yǒu)某种频谱分(fēn)析仪,可(kě)以执行快速傅立叶变换 (FFT) 来确定您的滤波器是否正常工作,但很(hěn)少有(yǒu)完全自动化的。為(wèi)了那个原因,
让我们看一个简单的例子:一个低通滤波器试图用(yòng)特定的噪声抑制水平滤除 100 Hz 以上的所有(yǒu)频率。如果我想手动测试这个,我将在改变我从函数发生器中驱动的输入频率和幅度的同时,将我的输入与输出进行比较。示例测试设置通常如下所示:
图 1:测试硬件配置
即使我们坚持使用(yòng)整数测试每个频率也需要很(hěn)長(cháng)时间。使用(yòng)低端泰克示波器,我只测试了 4 个不同的频率,但我仍然需要一些时间来配置我的示波器、手动驱动输入以及捕获每个波形的图像。正如您所看到的,图像捕获的分(fēn)辨率也不是很(hěn)高。
图 2:1 Hz 时的波形捕获
图 3:10 Hz 时的波形捕获
图 4:100 Hz 时的波形捕获
图 5:1 kHz 时的波形捕获
范围捕获并明确表明过滤器似乎正在工作。您可(kě)以看到滤波后的信号(通道 2)在我们接近 100 Hz 时缓慢衰减,达到我们在达到目标时“过滤掉”的要求。示波器附带的内置 FFT 数學(xué)函数也是如此。这没什么好写的,但它确实為(wèi)我花(huā)费了大约 1,000 美元的示波器完成了工作。
图 6:使用(yòng)示波器的数學(xué)函数进行 FFT 捕获
当我们经历这个过程时,特别是在第十轮返工之后,我们不得不问自己,“我们愿意像这样手动验证我们的设计多(duō)少次?”
验证交易空间
当涉及到验证和自动化测试时,尤其是对于包括数字信号处理(lǐ)在内的更复杂的设计,我们需要了解在自动化方面投入时间和金钱的地方。让我们看一下用(yòng)于测试滤波器设计的三种不同的可(kě)行选项。
图 7:测试设置的交易空间
正如我们之前看到的,第一个选项使用(yòng)示波器和函数发生器。这些是每个工程师在學(xué)校學(xué)习如何使用(yòng)的标准工具。这是手动的,乏味的,而且不是很(hěn)彻底。第二个选项,捕获数据并处理(lǐ)它,很(hěn)好,但前提是您擅長(cháng) MATLAB 或 SciPy。最后一个选项也不错,但还需要了解您正在使用(yòng)的设备(或与该设备相关的驱动程序)。
对于这个项目,我采取了混合的方法。我首先使用(yòng)我的Analog Discovery 2 对所有(yǒu)内容进行了视觉验证,然后转向使用(yòng) Python 的Pytest框架进行自动验证。
图 8:使用(yòng) Analog Discovery 2 的示波器 + 频谱分(fēn)析仪
一旦我為(wèi)自己设定了基線(xiàn),我就转向了自动验证。我的 CI/CD 设置包括两个阶段:编译/加载固件和硬件在循环测试。
在这两个脚本之间,总共执行了三个测试并报告回 Gitlab。这些测试是使用(yòng)我在计算机(或 Raspberry Pi)上配置的 Gitlab Runner 在硬件目标上运行的。
图 10:Gitlab 中的测试报告
我的测试目标是确保我的输入信号在大于 100 Hz 的频率下被正确衰减,而我的自动测试正是这样做的。
图 11:信号幅度衰减
我通过切割波形的边缘并获取正弦波的前几个最大值和最小(xiǎo)值来实现幅度检查器的“穷人版”。请注意,在实际 DSP 中,需要应用(yòng)窗口函数,然后对滤波后的信号运行 FFT。对于这个测试,我只关心 1V 的输入幅度对于 100Hz 以上的频率衰减到 0.2V 或更低。正如您在作业日志(zhì)中看到的那样,该测试正是这样做的。我们现在可(kě)以使用(yòng)这个测试套件并在任何地方运行它,而不必每次都手动设置我们的设备。