作者:lee
在实现多级CIC滤波器前我们先来了解滑动平均滤波器、微分器、积分器以及梳状滤波器原理。CIC滤波器在通信信号处理中有着重要的应用。
上一篇在《基于FPGA的多级CIC滤波器实现四倍抽取一》中介绍了滑动平均滤波器、微分器、积分器的原理,这篇文章来介绍梳状滤波器以及积分梳状滤波器,为up sample rate convert 和 down sample rate convert 的FPGA实现打下基础。
1 梳状滤波器
梳状滤波器的两端为1和-1的权值,具有简单的多信道频率响应。
Matlab: close all clear all Clc %set system parameter Fs = 352800; %sampling frequency L = 8192; %comb b =[1,0,0,0,0,0,0,0,-1]; a =1; %频率响应和相位响应 [h,f]=freqz(b,a,L,Fs); %freqz函数求频率响应 mag=20*log(abs(h))/log(10); %幅度转换成dB单位 ph=angle(h)*180/pi; %相位值单位转换 figure(1), subplot(211);plot(f,mag); xlabel('频率(Hz)','fontsize',8); ylabel('幅度(dB)','fontsize',8); title('freqz()幅频响应','fontsize',8); subplot(212);plot(f,ph); xlabel('频率(Hz)','fontsize',8); ylabel('相位(度)','fontsize',8); title('freqz()相频响应','fontsize',8);
因为滤波器的幅频响应像一把梳子,所以称作梳状滤波器。
2 积分梳状滤波器
积分器和梳状滤波器的级联就是积分梳状(Integrator-Comb)滤波器。
Matlab: close all clear all clc %set system parameter Fs = 44100; %sampling frequency L = 8192; %Integerator+comb b =[1,0,0,0,0,0,0,0,-1]; a =[1,-1]; %频率响应和相位响应 [h,f]=freqz(b,a,L,Fs); %freqz函数求频率响应 mag=20*log(abs(h))/log(10); %幅度转换成dB单位 mag = mag -max(mag) ph=angle(h)*180/pi; %相位值单位转换 figure(1), subplot(211);plot(f,mag); xlabel('频率(Hz)','fontsize',8); ylabel('幅度(dB)','fontsize',8); title('freqz()幅频响应','fontsize',8); subplot(212);plot(f,ph); xlabel('频率(Hz)','fontsize',8); ylabel('相位(度)','fontsize',8); title('freqz()相频响应','fontsize',8);
如图5所示,5个积分梳状滤波器级联的幅频响应如图6所示。
文章转载自: FPGA开源工作室(leezym0317)
*本文由作者授权转发,如需转载请联系作者本人