梳状滤波器以及积分梳状滤波器的FPGA实现

电子说

1.3w人已加入

描述

作者:lee

在实现多级CIC滤波器前我们先来了解滑动平均滤波器、微分器、积分器以及梳状滤波器原理。CIC滤波器在通信信号处理中有着重要的应用。

这篇文章来介绍梳状滤波器以及积分梳状滤波器,为up sample rate convert 和 down sample rate convert 的FPGA实现打下基础。

1 梳状滤波器

 

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);
 

FPGA

 
图2 梳状滤波器的频率响应和相位响应

因为滤波器的幅频响应像一把梳子,所以称作梳状滤波器。

2 积分梳状滤波器

 

FPGA

 
图3 积分梳状滤波器结构

积分器和梳状滤波器的级联就是积分梳状(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);
 

FPGA

 
图4 积分梳状滤波器的频率响应和相位响应

 

FPGA

 
图5 五级IC串联

如图5所示,5个积分梳状滤波器级联的幅频响应如图6所示。

 

FPGA

 
图6 五级积分梳状滤波器串联幅频响应


编辑:hfy


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分