#定点 #DSP #滤波器 #整数 #数学 #低通 #PID

idsp

嵌入式DSP算法,主要使用整数(定点)数学

27个版本 (14个重大变更)

0.15.1 2024年2月14日
0.14.1 2024年1月15日
0.13.0 2023年11月1日
0.10.0 2023年7月20日
0.3.0 2021年11月2日

#136算法

Download history 126/week @ 2024-04-07 217/week @ 2024-04-14 235/week @ 2024-04-21 109/week @ 2024-04-28 214/week @ 2024-05-05 94/week @ 2024-05-12 166/week @ 2024-05-19 146/week @ 2024-05-26 136/week @ 2024-06-02 117/week @ 2024-06-09 213/week @ 2024-06-16 121/week @ 2024-06-23 142/week @ 2024-06-30 353/week @ 2024-07-07 133/week @ 2024-07-14 97/week @ 2024-07-21

每月下载量735
用于 4 个crate

MIT/Apache

125KB
2.5K SLoC

嵌入式DSP算法

GitHub release crates.io Documentation QUARTIQ Matrix Chat Continuous Integration

此crate包含一些针对通用和特别适用于嵌入式使用的调优DSP算法。许多算法都是基于整数(定点)数据类型实现的。

这些算法的一个综合用户是 Stabilizer

定点

余弦/正弦

[cossin()] 使用小的(128个元素或512字节)查找表(LUT),智能八分体映射,线性插值以及对边界情况的全面分析,以实现非常干净的信号(4e-6 RMS误差,9e-6最大误差,108 dB SNR典型值),低旁瓣,每次调用约40个cortex-m指令,给定一个相位输入同时计算余弦和正弦(即复数信号)。

双参数反正切

[atan2()] 给定一个复数信号(一个同相/ x/余弦和正交/ y/正弦的配对)返回一个相位。均方根相位误差小于5e-6弧度,最大误差小于1.2e-5弧度,即20.5位均方根精度,19.1位最大精度。偏差最小。

PLL, RPLL

[PLL], RPLL:高精度,无假设,完全鲁棒,前向和反向PLL,具有动态可调的时间常数和任意(在奈奎斯特采样意义上的)捕获范围,以及噪声整形。

Unwrapper, Accu, saturating_scale()

Unwrapper, Accu, [saturating_scale()]: 处理、跟踪和展开相位信号或生成它们的工具。

浮点数和定点数

IIR/二阶

iir::Biquad 是定点(i8i16i32i64)和浮点(f32f64)双二次 IIR 滤波器。它具有鲁棒的剪辑和偏移(抗饱和、无导数跳变、动态可调增益和增益限制),适用于 PID 控制器应用。支持三种滤波器动作:直接形式 1、直接形式 2 逆变换和带噪声整形直接形式 1。支持多通道系数共享。

比较

这是几个可用的 biquadcrate 的粗略功能比较,不保证完整性、准确性或公平性。TL;DR:idsp速度较慢但提供更多功能。

功能\crate biquad-rs fixed-filters idsp::iir
浮点 f32/f64
定点 i32
参数定点 i32
定点 i8/i16/i64/i128
DF2T
限制/夹紧
定点累加器保护位
求和节点偏移
定点噪声整形
配置/状态解耦/多通道
f32 参数音频滤波器构建器
f64 参数音频滤波器构建器
其他滤波器(I/HO)
f32 PI 构建器
f32/f64 PI²D² 构建器
PI²D² 构建器限制
支持定点 a1=-2

比较了三个 crate,在处理 4x1M 个样本(4 个通道)的双二次低通滤波器时。硬件为 thumbv7em-none-eabihfcortex-m7、代码在 ITCM 中,数据在 DTCM 中,启用缓存。

crate 类型,功能 每样本周期
biquad-rs f32 11.4
idsp::iir f32、限制、偏移 15.5
fixed-filters i32、限制 20.3
idsp::iir i32、限制、偏移 23.5
idsp::iir i32、限制、偏移、噪声整形 30.0

状态变量滤波器

svf 是一个简单的 IIR 状态变量滤波器,同时提供信号的高通、低通、带通和陷波滤波。

LowpassLockin

LowpassLockin 是快速、无限级联、一阶和二阶低通滤波器,并相应地集成到锁定放大器算法中。

FIR 滤波器

hbf::HbfDechbf::HbfInthbf::HbfDecCascadehbf::HbfIntCascade:快速的f32对称FIR滤波器,优化的半带滤波器,半带滤波器抽取器和积分器以及级联。这些用于在stabilizer-stream中进行在线对数频率尺度的PSD计算,适用于任意大量数据。

Delta Sigma 模拟器/噪声整形器

[Dsm] 是 MASH-(1)^K 架构中的 Delta Sigma 模拟器/噪声整形器。

依赖项

~1–1.6MB
~36K SLoC