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 在 算法
每月下载量735
用于 4 个crate
125KB
2.5K SLoC
嵌入式DSP算法
此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
是定点(i8
、i16
、i32
、i64
)和浮点(f32
、f64
)双二次 IIR 滤波器。它具有鲁棒的剪辑和偏移(抗饱和、无导数跳变、动态可调增益和增益限制),适用于 PID 控制器应用。支持三种滤波器动作:直接形式 1、直接形式 2 逆变换和带噪声整形直接形式 1。支持多通道系数共享。
比较
这是几个可用的 biquad
crate 的粗略功能比较,不保证完整性、准确性或公平性。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-eabihf
、cortex-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 状态变量滤波器,同时提供信号的高通、低通、带通和陷波滤波。
Lowpass
、Lockin
Lowpass
、Lockin
是快速、无限级联、一阶和二阶低通滤波器,并相应地集成到锁定放大器算法中。
FIR 滤波器
hbf::HbfDec
,hbf::HbfInt
,hbf::HbfDecCascade
,hbf::HbfIntCascade
:快速的f32
对称FIR滤波器,优化的半带滤波器,半带滤波器抽取器和积分器以及级联。这些用于在stabilizer-stream
中进行在线对数频率尺度的PSD计算,适用于任意大量数据。
Delta Sigma 模拟器/噪声整形器
[Dsm
] 是 MASH-(1)^K 架构中的 Delta Sigma 模拟器/噪声整形器。
依赖项
~1–1.6MB
~36K SLoC