1.为何模拟前端存在高频幅度衰减?
以心电采集芯片ads1291为例,以250hz采样,输入40hz频率的正弦波,输出的信号只有输入的信号的88%左右,明明满足奈奎斯特采样定律,为何衰减这么多呢?通过查阅手册发现,原来模拟设计都会考虑抗混叠,比如adc采样率为250hz,如果输入信号中包含125hz以上的信号,就会引入混叠噪声,所以一般模拟前端在硬件设计上就会设计一个抗混叠的低通滤波器,该滤波器幅频响应与输入信号频率/采样率相关,便是这个滤波器导致的40zh信号输出衰减。
2.如何解决
通过手册中给出的参数知道,幅频衰减曲线如下:
现在的问题在于,我们希望0~40hz频率信号衰减小于10%,于是有两种方法,第一提高采样率,这样便能保证40hz以下信号衰减降低或者基本无衰减;第二种方法就是均衡器的思想,滤波器既然能衰减信号,便能进行指定频带的信号增强。
matlab中firls函数可通过幅频关系来计算出滤波器参数,这里采用抗混叠滤波器的幅频系数的倒数作为firls滤波器设计的输入:
matlab设计代码:
fin=1:80;%input f
fdr=250;%fs
fr=fin./fdr;%0:0.01:0.27; %ads1291 datasheet page.23 fig.27
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)