注:本设计的参数为:D=2,R=5,N=3;时钟频率为50mhz,输入信号为有符号8位,根据公式bmax=bin+N*log(2,R*D);可以得到bmax=18;
1,cic抽取滤波器原理
网上资料一大堆,不说了。重点在于传递函数,以及各个部分的结构。
2,simulink仿真
模型图
频谱仪显示结果
3,cic滤波器verilog 代码
module cic_dec(clk,rst_n,datain,dataout);
input clk,rst_n;
input [7:0] datain;
output [7:0] dataout;
reg [17:0] data_buff;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
data_buff<=0;
else
data_buff<={ {10{datain[7]}},datain};
end
reg [17:0] integ1_result;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
integ1_result<=0;
else
integ1_result<=data_buff+integ1_result;
end
reg [17:0] integ2_result;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
integ2_result<=0;
else
integ2_result<=integ1_result+integ2_result;
end
reg [17:0] integ3_result;
always@(posedge clk or neg