请更新您的浏览器。 为了获得最佳的 Liquid Instruments 使用体验,请将 Chrome、Edge、Firefox 或 Safari 更新到最新版本。 更新 Microsoft Edge.
液体仪器标志
产品
硬件平台
Moku:Delta
Moku:Delta
全新发布
用于高级设计和验证
Moku:Pro
Moku:Pro用于多种测试和测量
Moku:Lab
Moku:Lab用于实验研究实验室
Moku:Go
Moku:Go用于快速测试和调试
比较硬件
比较硬件横向比较所有 Moku 硬件
技术
GenInst Studio
全新发布
生成个性化工具
仪器功能高度集成触手可及的专业仪器设备
神经网络集成了 基于 FPGA 的神经网络仪器
多仪器并行模式组合仪器功能以创建自定义测试系统
Moku Compile编码、编译和部署到 Moku 的 FPGA 上
软件
MokuOS下载适用于 Windows、macOS、iPadOS 和 VisionOS 的 Moku 应用
APIsPython、MATLAB、LabVIEW
实用工具用于文件转换的命令行和图形工具
仪器功能
信号分析
示波器
频谱分析仪
频率响应分析仪
锁相放大器
相位表
逻辑分析仪/码型发生器
时间间隔与频率分析仪
数据记录器
信号生成
波形发生器
任意波形发生器
信号控制与调理
PID 控制器
数字滤波器
FIR 滤波器生成器
激光锁频/稳频器
自定义与其他功能
GenInst Studio
全新发布
高速信号采集记录回放仪(Gigabit Streamer)
自定义仪器
神经网络
多仪器并行模式
应用
光学与光子学
显微镜和光谱学
光子计数
量子光学
航空航天和国防
A&D仪器
器件测试
自动化测试
半导体测试
控制系统和伯德图分析
MEMS 系统测试
AI 和机器学习
生成式仪器
全新发布
神经网络
教育服务提供商
教育与研究
相关资源
应用笔记
博客
客户案例
相关课程
指南
产品文档
资讯观点
网络研讨会
白皮书
支持
关于我们
联系我们
关于我们
领导团队
合作伙伴
公司动态
媒体中心
活动日程表
加入我们
商店
Moku:Delta
Moku:Pro
Moku:Go
升级您的 Moku:Pro
升级您的 Moku:Lab
升级您的 Moku:Go
0
获取报价 立即购买
应用笔记

通过自定义且实时的数字滤波来减少噪声和信号的瞬态变化

部署自定义移动平均滤波器以优化信号处理并有效降低应用程序中的噪声和信号的瞬态变化

2022 年 12 月 15 日

    更新了March 27,2024

    在本应用笔记中,我们利用 Moku Cloud Compile 和多仪器模式来解释如何开发通用的移动平均滤波器。我们使用 示波器 和 频率响应分析仪 检查这个基本的有限脉冲响应 (FIR) 滤波器。然后我们使用以下方法开发、部署和检查五点中值滤波器: Moku 设备。以这种方式组合线性和非线性滤波器可以有效地抑制许多控制或传感应用中的瞬态并降低噪声。

    自定义仪器

    自定义仪器 (MCC) 是 Liquid Instruments 的一项服务,可让您快速编译自定义硬件描述语言 (HDL) 代码并将其部署到 Moku 设备。MCC 将 Moku 中的 FPGA 开放给自定义代码,并允许用户开发特定的功能和特性。我们提供一系列示例和支持,以帮助您部署自定义功能。

     

    移动平均滤波器

    移动平均滤波器非常简单,是对多个 (n) 个连续信号样本进行平均。方程为:

    其中 x(t) 是离散时间序列输入信号,y(t) 是输出信号。 例如,当 n = 4 时:

    这个简单的滤波器在降低信号噪声方面具有非常有用的应用。对于不相关的随机(白)噪声,此移动平均函数最适合抑制噪声并保留尖锐的阶跃响应,但阻带性能较差。在硬件中实现这一点仅需要加法器和一次除法,因此在硬件资源有限的情况下非常有用。在硬件中除以任意数字在 FPGA 中并不简单。通常,该滤波器是通过确保 n 是 2 的幂(即 n = 2^N)来实现的,从而将除法减少为右移 N 个二进制位。

    二进制按位移位

    图 1:二进制位移

    直接的硬件实现如图 2 所示。

    一系列加法器来实现移动平均数

    图 2:实现移动平均的一系列加法器

    此实现需要 2^N-1 个加法器,并且硬件成本昂贵。深系列加法器还可能需要时钟寄存器来满足合理的时序性能。我们可以通过以下方式改进这一点:

    深度加法器系列可能还需要时钟寄存器才能满足合理的时序性能。我们可以通过实现以下功能来改进这一点

    因此,更一般地如图 3 所示:

    累加器实现

    图 3:累加器实现

    这表明每个输出都取决于先前的输出和当前的输入。 我们现在已将移动平均函数简化为一个累加器、一个减法函数和一个 n 级移位寄存器,然后是 2^N 除法的按位右移(图 3)。 当 N > 4 时,这种硬件节省变得很重要,限制因素是 2^N 级移位寄存器。 此外,不需要其他时钟元件来满足时序限制。

     

    VHDL实现

    图 4 显示了 VHDL 实现的核心。 这个过滤器的核心非常简单,只有 12 行代码。 p_moving_average 是最后 N 个样本的时间历史,其中第 8 行在最新输入之前添加并丢弃最旧输入。 在第 9 行,累加器 r_acc 添加新输入,而第 10 行生成输出所需的位移位(除法器)。

    图 4:移动平均 VHDL 代码

    编译部署

    编译和综合此 VHDL 代码很容易。 要开始,请访问 compile.liquidinstruments.com,上传代码,然后选择构建。 Liquid Instruments 服务器将生成一个文件或比特流,定义 FPGA 上实现代码所需的硬件配置。 对于Moku:Go和Moku:Lab,编译大约需要5分钟; 对于 Moku:Pro,由于 FPGA 的尺寸更大,该时间接近 20 分钟。

    提供了指导您完成编译和部署的详细说明 开始.

     

    测试 MCC 移动平均滤波器

    为了测试此移动平均滤波器,我们使用 Moku:Go 的多仪器模式 (MiM),如图 5 所示。在此模式下,我们可以部署两台采样率为 31.25 MHz 的仪器。我们也可以在 Moku:Pro 上测试此滤波器,它允许在 MiM 中同时使用四台仪器,输入采样率为 312.5 MHz。

     

    插槽 1 包含 Moku Cloud Compile 移动平均滤波器,插槽 2 包含示波器仪器。我们使用示波器观察来自模数转换器 (ADC) 输入 1 的滤波和未滤波信号。示波器还集成了波形发生器,用于生成测试信号。在本例中,我们使用示波器内置的波形发生器以 2 kHz 的频率生成一个方波,并将其驱动至输出 1。我们在外部将信号衰减 60 dB,使其接近 Moku:Go 的本底噪声。然后,我们将该信号路由回输入 1。

     

    图 5:多仪器模式下的滤波器测试设置

    在图 6 中,我们可以在蓝色轨迹中看到衰减后的噪声方波。 红色轨迹显示移动平均器的输出具有明显更干净的方波。 这是一种有用的降噪技术,使用 MCC 和 MiM 的一个插槽即可启用。

    使用 Moku 的移动平均滤波器进行降噪

    图 6:使用 MCC 移动平均滤波器进行降噪

    因此,这种最简单的滤波器在降低噪声方面非常有效。它的计算量也非常小,只需要一个累加器、减法器和逐位移位运算。这意味着它可以在 Moku:Pro 上以 312.5 MSa/s 的极高速度运行,在 Moku:Go 上则以 31.25 MSa/s 的极高速度运行。

    将注意力转向噪声功率,我们知道该平均滤波器将噪声功率降低了 2 倍N;噪声幅度降低√2N。我们的实现使用 N=8,因此噪声幅度应降低至原始值的 6.25% (1/16)。

    图 7 显示了 Moku:Go 的输入噪声(蓝色轨迹)和移动平均信号(红色轨迹),其幅度分别为 161.2 mV 和 9.162 mV。由此可见,滤波后的噪声幅度接近预期的原始噪声的 1/16,即 9.162 / 161.2 mV = 0.057。该滤波器正常运行,符合我们的预期。

    图 7:平均输入噪声

    频率响应

    我们可以使用 Moku 频率响应分析仪 (FRA) 仪器轻松确定移动平均值的频率响应。 FRA 在其输出上驱动扫频正弦波,并测量其输入上产生的幅度和相位。图 8 显示了测试设置:

    Moku 频率响应分析仪在多仪器模式下的配置

    图 8:频率响应分析仪 MiM 配置

    图 9 显示了 MCC 滤波器的最终频率响应。 将其与图 10(理想移动平均滤波器的 MATLAB 图)进行比较,我们发现移动平均滤波器没有提供特别好的阻带衰减。

    图 9:移动平均滤波器的频率响应

                                                                                           

    图 10:理想移动平均滤波器的 MATLAB 图

    中值滤波器

    中值滤波器是确定小移动窗口的中值的非线性滤波器。 输入样本通过窗口,输出是样本在任何给定时间的中值。 移动平均滤波器适用于滤除均匀分布的随机噪声,而中值滤波器适用于滤除非常短的尖峰或脉冲噪声。 虽然它经常部署在图像处理中,但它在更一般的信号处理中也很有用。

    通常,为窗口长度选择奇数个样本:3、5 或 7 个点。 这意味着输出只是值排序窗口的中间样本。

     

    VHDL实现

    图 11 显示了 VHDL 中五点中值函数的实现。 在时钟信号的每个上升沿,图 11 中的函数将五个输入样本从低值到高值排序。 这种排序发生在第 12 行到第 20 行的两个嵌套“for”循环中。因此,中位数是排序窗口中的第三个样本; 这被分配给第 22 行的输出。

    图 11:中值滤波器 VHDL 代码

    我们可以使用示波器和Moku云编译槽以及示波器的波形生成器以与移动平均滤波器相同的方式分析中值滤波器的时域性能。

    图12显示噪声峰值显著降低,滤波后未滤波噪声的峰峰值测量值从3.66 mV降至305 μV。降幅为1/12,不如移动平均滤波器(1/16)有效。

    中值滤波器时域性能

    图 12:中值滤波器时域性能

    由于中值滤波器的一个关键功能是消除脉冲噪声,因此我们还使用带有附加脉冲的方波来检查其性能。图 13 显示了具有前沿尖峰和低电平中途尖峰的方波(蓝色通道 B);滤波后的信号显示中值滤波器去除尖峰但保留尖锐的前缘和后缘(红色通道 A)后的方波。

    图 13:去除尖峰噪声的中值

    我们在 Moku:Go 上编译并测试了该中值滤波器,其 MCC 时钟频率为 31.25 MHz。然而,在 Moku:Pro 上测试此示例时,由于时钟频率提升至 312.5 MHz,我们需要调整实现方案。图 11 中的实现方案使用了带变量的嵌套 for 循环。这将综合成一个庞大而深的组合逻辑网络,其传播延迟(图 14)超过了 Moku:Pro 时钟频率的 3.2 ns 周期。为了满足时序要求,时钟元件之间逻辑的传播延迟必须小于时钟周期。

    通过逻辑的传播延迟

    图 14:通过逻辑的传播延迟

    我们需要将大型逻辑块分成由寄存器或时钟元件分隔的段。 在 VHDL 中,我们通过使用信号而不是变量来实现这一点。 在这种情况下,我们将逻辑分为五个阶段以便于编码。 这意味着大约有五个时钟周期的输入到输出延迟,这适合我们的应用程序。

    图 15 显示了这个五阶段流水线中值算法的一个阶段。 在可供下载的项目文件中找到完整的 VHDL 开始.

    图 15:一级流水线中值滤波器

    Moku:Pro 中值滤波测试

    我们在 MiM 中使用 Moku:Pro 和任意波形发生器 (AWG) 来创建带有噪声尖峰的方波。然后,我们将 AWG 的输出连接到 MCC 中值滤波器,并使用示波器观察效果。

    此 MiM 设置如图 16 所示。我们配置了 AWG,如图 17 所示。它的输出将模拟信号驱动到 Moku:Pro 的输出 3,而该信号又通过同轴电缆环接到输入 3。我们部署了Moku Cloud Compile slot 中的中值滤波器并使用示波器观察性能。

    Moku:Pro中值滤波器测试系统

    图 16:Moku:Pro 中值滤波器测试系统

    最后,我们观察中值滤波器的性能,如图 18 所示。中值滤波器去除了脉冲,同时保留了方波的尖锐边缘。 由分阶段的时钟流水线的插入引起的处理延迟导致大约 44 ns 的延迟。

    图 17:任意波形发生器,带脉冲的方波

    图 18:Moku:Pro 中值滤波操作

    结语

    在本应用笔记中,我们讨论了移动平均滤波器和中值滤波器的实现。为了实现这些功能,我们利用 Moku Cloud Compile 构建了滤波器,并将其部署到 Moku:Go 设备上。之后,我们修改了设计,以确保与更高的 Moku:Pro 时钟频率兼容。为了验证 MCC 滤波器的性能,我们使用多仪器模式连接了完全可定制的滤波器、示波器和任意波形发生器。这种实现方式能够在数字信号处理应用中有效降低噪声,同时保留信号边沿。

    代码下载

    应用笔记的代码可供下载 开始.

    Moku:演示模式

    您可以在我们的网站上下载适用于 macOS 和 Windows 的 Moku:应用程序 官方网站。演示模式无需任何硬件即可运行,并介绍如何使用 Moku:Go、Moku:Lab 或 Moku:Pro。 Moku:应用程序也可用于 iPadOS 端应用程序 在苹果应用商店。

    有问题或想要打印版本?

    请联系我们 support@liquidinstruments.com.

    参考法案

    [1] www.mathworks.com/help/dsp/ug/how-is-moving-average-filter- Different-from-an-fir-filter.html

     

    在演示模式下试用 Moku 下载 Moku 应用 → 获取常见问题的答案 访问知识库 → 与全球的 Moku 用户建立联系 加入用户论坛 →

    其他推荐的应用笔记

    应用笔记
    使用 Moku:Delta 进行频率混合和检测

    在本应用笔记中,我们将介绍如何使用 Moku:Delta 生成和检测微波脉冲。首先,利用任意波形发生器对基带波形进行编程,然后使用外部微波源和双平衡 IQ 混频器进行上变频。最后,我们将展示 Moku:Delta 如何利用其 6 GHz 模拟带宽模式直接检测和解调微波脉冲。这无需模拟下变频,同时保留了脉冲中包含的相位信息,使其非常适合需要精确测量微波频率相位的应用。

    特点: Moku:Delta、锁相放大器、任意波形发生器

    应用笔记
    从设置到串流:Moku:Delta 千兆串流器指南

    本指南介绍如何通过 SFP/QSFP 端口在 Moku:Delta 和 Linux 主机之间传输确定性样本数据。内容涵盖设置、数据包结构以及发送/接收工作流程。

    特点: Moku:Delta,千兆流媒体播放器

    应用笔记
    使用 Moku:Delta 6 GHz 模式检测奈奎斯特频率以上的射频信号

    本应用笔记探讨了如何利用 Moku:Delta 的全模拟前端,采集和分析奈奎斯特频率以上的信号。我们回顾了奈奎斯特-香农采样定理的概念及其对数字采样的限制。我们解释了该方法的优势以及应用时需要考虑的重要因素。我们以 Moku:Delta 的 6 GHz 模式为例,展示了如何测量第一奈奎斯特区以上的信号。

    特点: Moku:Delta,频谱分析仪

    返回所有应用笔记

    站内导航

    • 产品
    • 仪器功能
    • 相关资源
    • 支持
    • 关于我们
    • 联系我们
    • 隐私政策
    • 使用条款

    办公室

    美国
    (619) 332-6230
    12526 High Bluff Dr.
    Suite 150
    San Diego, CA 92130

    澳大利亚
    +61 2 6171 9730
    243 Northbourne Avenue
    Suite 1, Level 1
    Lyneham, ACT 2602

    澳大利亚
    +61 3 7073 3594
    5C套房,5楼
    斯旺斯顿街700号
    维多利亚州卡尔顿 – 3058

     

     

    关注我们

    LinkedIn YouTube X Facebook Instagram

    官方微信

    © 2026 Liquid Instruments. 版权所有