DSP

关于CIC滤波器中积分器和梳状器的作用

2019-07-13 20:21发布

关于CIC滤波器中积分器和梳状器的作用

当时我也被这个问题困绕好久,然后去网上查找,关于这个问题的回复几乎是乱回答的,所以写了这篇博客,希望对研究这方面的有所帮助

CIC滤波器的作用

值得一提的是cic滤波器除了抽取以外还有类似移动平均滤波器的作用,其中积分器和梳状器就是为了实现这个移动平均滤波器的作用。

单级CIC滤波器

现在常说的CIC滤波器也就是多级CIC滤波器,它是通过多个单级CIC级联,然后,再利用Noble恒等式转化为Hogenauer滤波器。
单级CIC滤波器的结构如图:
单级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中积分器是求得信号的阶越信号,而梳状器则是将信号分解成滤波去阶数的和的信号。