📄 iir_filter_2.v
字号:
module IIR_Filter_2(Data_out,Data_in,clock,reset);
//Second-order,Generic IIR Filter
parameter order=2;
parameter word_size_in=16;
parameter word_size_out=2*word_size_in + 2;//??????//
parameter b0=16'd7; //Feedforward filter coefficients
parameter b1=0;
parameter b2=0;
parameter a1=16'd46; //Feedback filter coefficients
parameter a2=16'd32;
output [word_size_out-1:0] Data_out;
input [word_size_in-1:0] Data_in;
input clock,reset;
reg [word_size_in-1:0] Samples_in[1:order];
reg [word_size_in-1:0] Samples_out[1:order];
wire [word_size_out-1:0] Data_feedforward;
wire [word_size_out-1:0] Data_feedback;
integer k;
assign Data_feedforward = b0*Data_in + b1*Samples_in[1] + b2*Samples_in[2];
assign Data_feedback = a1*Samples_out[1]+a2*Samples_out[2];
assign Data_out = Data_feedforward + Data_feedback;
always@(posedge clock)
if(reset==1)
for(k=1;k<order;k=k+1)
begin
Samples_in[k]<=0;
Samples_out[k]<=0;
end
else begin
Samples_in[1] <= Data_in;
Samples_out[1] <= Data_out;
for(k=2;k<=order;k=k+1)
begin
Samples_in[k] <= Samples_in[k-1];
Samples_out[k]<= Samples_out[k-1];
end
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -