关于CIC滤波器中积分器和梳状器的作用
当时我也被这个问题困绕好久,然后去网上查找,关于这个问题的回复几乎是乱回答的,所以写了这篇博客,希望对研究这方面的有所帮助
CIC滤波器的作用
值得一提的是cic滤波器除了抽取以外还有类似移动平均滤波器的作用,其中积分器和梳状器就是为了实现这个移动平均滤波器的作用。
单级CIC滤波器
现在常说的CIC滤波器也就是多级CIC滤波器,它是通过多个单级CIC级联,然后,再利用Noble恒等式转化为Hogenauer滤波器。
单级CIC滤波器的结构如图:
这里其实是将输入信号x[n]的每隔六位的和单独抽取出来,取出的和也就是前面说的类似移动平均滤波器作用。
注意:这里是抽取六位的和而不是抽取六位
FPGA代码
module SigCIC(
rst,clk,din,
rdy,dout);
input rst; //复位信号,高电平有效
input clk; //FPGA系统时钟,频率为200kHz
input signed [9:0] din; //数据输入频率为200kHZ
output rdy; //输出数据有效指示信号
output signed [12:0] dout; //滤波后的输出数据,5倍抽取后的数据,频率为40kHZ
reg rdy_tem;
reg [2:0] c;
reg signed [12:0] tem;
reg signed [12:0] dout_tem;
always @(posedge clk or posedge rst)
if (rst)
//初始化寄存器值为0
begin
c <= 3'd0;
tem <= 13'd0;
dout_tem <= 13'd0;
rdy_tem <= 1'b0;
end
else
begin
if (c==4)
begin
rdy_tem <= 1'b1;
dout_tem <= tem + din;
c = 3'd0;
tem = 13'd0;
end
else
begin
rdy_tem <= 1'b0;
tem = tem + din;
c = c + 1;
end
end
assign dout = dout_tem;
assign rdy = rdy_tem;
endmodule
多级CIC滤波器
单级CIC滤波器原理看懂了这个问题也就解决了,多级CIC滤波器可以自行了解,这里就不多解释。
总结
CIC中积分器是求得信号的阶越信号,而梳状器则是将信号分解成滤波去阶数的和的信号。