问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

为何模拟前端存在高频幅度衰减?如何解决?

创作时间:
作者:
@小白创作中心

为何模拟前端存在高频幅度衰减?如何解决?

引用
CSDN
1.
https://blog.csdn.net/u013809089/article/details/139655961

在模拟前端设计中,高频幅度衰减是一个常见的问题。以心电采集芯片ADS1291为例,即使在满足奈奎斯特采样定律的情况下,40Hz的正弦波信号也会衰减至输入信号的88%左右。本文将探讨这一现象的原因,并提供两种解决方案:提高采样率和使用均衡器思想进行信号增强。

为何模拟前端存在高频幅度衰减?

以心电采集芯片ADS1291为例,当以250Hz采样率输入40Hz频率的正弦波时,输出的信号只有输入信号的88%左右。这似乎违反了奈奎斯特采样定律,但实际上,这种衰减是由于硬件设计中的抗混叠低通滤波器造成的。

为了防止125Hz以上的信号引入混叠噪声,ADC(模数转换器)在硬件设计上通常会包含一个抗混叠低通滤波器。这个滤波器的幅频响应与输入信号频率和采样率相关,导致了40Hz信号的输出衰减。

如何解决?

通过查阅ADS1291的数据手册,我们可以获得其幅频衰减曲线:

现在的问题在于,我们希望0~40Hz频率信号的衰减小于10%。有两种解决方案:

  1. 提高采样率:这样可以保证40Hz以下的信号衰减降低或基本无衰减。
  2. 使用均衡器思想:通过设计一个滤波器来增强指定频带的信号。

MATLAB实现

MATLAB中的firls函数可以根据幅频关系计算出滤波器参数。这里采用抗混叠滤波器幅频系数的倒数作为firls滤波器设计的输入:

fin = 1:80; % 输入频率
fdr = 250; % 采样率
fr = fin ./ fdr; % 频率归一化
N = 512;
h = abs(sin(N * pi * fr / 512) ./ (N * sin(pi * fr / 512))).^3;
figure;
plot(fr, 20 * log10(h));
A = 1 ./ h;
A = [A(1:40), 1, 1];
F = [0:39 fdr / 4 fdr / 2];
W = ones(1, length(A) / 2);
b = firls(40, F / (fdr / 2), A, W);
figure;
freqz(b)

这段代码设计了一个滤波器,其幅频响应与抗混叠滤波器的幅频响应互为倒数,从而实现对信号的补偿。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号