2025-03-03 18:10:00 +08:00
|
|
|
|
|
|
|
module IIR_top
|
|
|
|
|
|
|
|
(
|
2025-03-08 11:32:53 +08:00
|
|
|
input rstn
|
|
|
|
,input clk
|
|
|
|
,input en
|
|
|
|
,input signed [15 :0] IIRin_p0
|
|
|
|
,input signed [15 :0] IIRin_p1
|
|
|
|
,input signed [15 :0] IIRin_p2
|
|
|
|
,input signed [15 :0] IIRin_p3
|
|
|
|
,input signed [15 :0] IIRin_p4
|
|
|
|
,input signed [15 :0] IIRin_p5
|
|
|
|
,input signed [15 :0] IIRin_p6
|
|
|
|
,input signed [15 :0] IIRin_p7
|
2025-03-03 18:10:00 +08:00
|
|
|
,input signed [31 :0] a_re
|
|
|
|
,input signed [31 :0] a_im
|
|
|
|
,input signed [31 :0] ab_re
|
|
|
|
,input signed [31 :0] ab_im
|
|
|
|
,input signed [31 :0] abb_re
|
|
|
|
,input signed [31 :0] abb_im
|
|
|
|
,input signed [31 :0] ab_pow3_re
|
|
|
|
,input signed [31 :0] ab_pow3_im
|
|
|
|
,input signed [31 :0] ab_pow4_re
|
|
|
|
,input signed [31 :0] ab_pow4_im
|
|
|
|
,input signed [31 :0] ab_pow5_re
|
|
|
|
,input signed [31 :0] ab_pow5_im
|
|
|
|
,input signed [31 :0] ab_pow6_re
|
|
|
|
,input signed [31 :0] ab_pow6_im
|
|
|
|
,input signed [31 :0] ab_pow7_re
|
|
|
|
,input signed [31 :0] ab_pow7_im
|
|
|
|
,input signed [31 :0] b_pow8_re
|
|
|
|
,input signed [31 :0] b_pow8_im
|
|
|
|
|
2025-03-08 11:32:53 +08:00
|
|
|
,output signed [15 :0] IIRout_p0
|
|
|
|
,output signed [15 :0] IIRout_p1
|
|
|
|
,output signed [15 :0] IIRout_p2
|
|
|
|
,output signed [15 :0] IIRout_p3
|
|
|
|
,output signed [15 :0] IIRout_p4
|
|
|
|
,output signed [15 :0] IIRout_p5
|
|
|
|
,output signed [15 :0] IIRout_p6
|
|
|
|
,output signed [15 :0] IIRout_p7
|
2025-03-03 18:10:00 +08:00
|
|
|
);
|
2025-03-12 10:16:52 +08:00
|
|
|
wire signed [15:0] IIRin_p_r1 [7:1];
|
2025-03-08 11:32:53 +08:00
|
|
|
wire signed [15 : 0] IIRin_p [7:0];
|
|
|
|
assign IIRin_p[7] = IIRin_p7;
|
|
|
|
assign IIRin_p[6] = IIRin_p6;
|
|
|
|
assign IIRin_p[5] = IIRin_p5;
|
|
|
|
assign IIRin_p[4] = IIRin_p4;
|
|
|
|
assign IIRin_p[3] = IIRin_p3;
|
|
|
|
assign IIRin_p[2] = IIRin_p2;
|
|
|
|
assign IIRin_p[1] = IIRin_p1;
|
|
|
|
assign IIRin_p[0] = IIRin_p0;
|
2025-03-03 18:10:00 +08:00
|
|
|
|
2025-03-12 10:16:52 +08:00
|
|
|
sirv_gnrl_dfflr #(16) dff_IIRin_p7_1(en,IIRin_p[7], IIRin_p_r1[7] ,clk,rstn);
|
|
|
|
sirv_gnrl_dfflr #(16) dff_IIRin_p6_1(en,IIRin_p[6], IIRin_p_r1[6] ,clk,rstn);
|
|
|
|
sirv_gnrl_dfflr #(16) dff_IIRin_p5_1(en,IIRin_p[5], IIRin_p_r1[5] ,clk,rstn);
|
|
|
|
sirv_gnrl_dfflr #(16) dff_IIRin_p4_1(en,IIRin_p[4], IIRin_p_r1[4] ,clk,rstn);
|
|
|
|
sirv_gnrl_dfflr #(16) dff_IIRin_p3_1(en,IIRin_p[3], IIRin_p_r1[3] ,clk,rstn);
|
|
|
|
sirv_gnrl_dfflr #(16) dff_IIRin_p2_1(en,IIRin_p[2], IIRin_p_r1[2] ,clk,rstn);
|
|
|
|
sirv_gnrl_dfflr #(16) dff_IIRin_p1_1(en,IIRin_p[1], IIRin_p_r1[1] ,clk,rstn);
|
2025-03-08 11:32:53 +08:00
|
|
|
|
|
|
|
IIR_Filter_p8 inst_iir_p0 (
|
2025-03-03 18:10:00 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.dinp0 (IIRin_p[0] ),
|
|
|
|
.dinp1 (IIRin_p_r1[7] ),
|
|
|
|
.dinp2 (IIRin_p_r1[6] ),
|
|
|
|
.dinp3 (IIRin_p_r1[5] ),
|
|
|
|
.dinp4 (IIRin_p_r1[4] ),
|
|
|
|
.dinp5 (IIRin_p_r1[3] ),
|
|
|
|
.dinp6 (IIRin_p_r1[2] ),
|
|
|
|
.dinp7 (IIRin_p_r1[1] ),
|
2025-03-03 18:10:00 +08:00
|
|
|
.a_re (a_re ),
|
|
|
|
.a_im (a_im ),
|
|
|
|
.ab_re (ab_re ),
|
|
|
|
.ab_im (ab_im ),
|
|
|
|
.abb_re (abb_re ),
|
|
|
|
.abb_im (abb_im ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.ab_pow3_re (ab_pow3_re ),
|
|
|
|
.ab_pow3_im (ab_pow3_im ),
|
|
|
|
.ab_pow4_re (ab_pow4_re ),
|
|
|
|
.ab_pow4_im (ab_pow4_im ),
|
|
|
|
.ab_pow5_re (ab_pow5_re ),
|
|
|
|
.ab_pow5_im (ab_pow5_im ),
|
|
|
|
.ab_pow6_re (ab_pow6_re ),
|
|
|
|
.ab_pow6_im (ab_pow6_im ),
|
|
|
|
.ab_pow7_re (ab_pow7_re ),
|
|
|
|
.ab_pow7_im (ab_pow7_im ),
|
|
|
|
.b_pow8_re (b_pow8_re ),
|
|
|
|
.b_pow8_im (b_pow8_im ),
|
|
|
|
.dout (IIRout_p0 )
|
2025-03-03 18:10:00 +08:00
|
|
|
);
|
|
|
|
|
2025-03-08 11:32:53 +08:00
|
|
|
IIR_Filter_p8 inst_iir_p1 (
|
2025-03-03 18:10:00 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.dinp0 (IIRin_p[1] ),
|
|
|
|
.dinp1 (IIRin_p[0] ),
|
|
|
|
.dinp2 (IIRin_p_r1[7] ),
|
|
|
|
.dinp3 (IIRin_p_r1[6] ),
|
|
|
|
.dinp4 (IIRin_p_r1[5] ),
|
|
|
|
.dinp5 (IIRin_p_r1[4] ),
|
|
|
|
.dinp6 (IIRin_p_r1[3] ),
|
|
|
|
.dinp7 (IIRin_p_r1[2] ),
|
2025-03-03 18:10:00 +08:00
|
|
|
.a_re (a_re ),
|
|
|
|
.a_im (a_im ),
|
|
|
|
.ab_re (ab_re ),
|
|
|
|
.ab_im (ab_im ),
|
|
|
|
.abb_re (abb_re ),
|
|
|
|
.abb_im (abb_im ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.ab_pow3_re (ab_pow3_re ),
|
|
|
|
.ab_pow3_im (ab_pow3_im ),
|
|
|
|
.ab_pow4_re (ab_pow4_re ),
|
|
|
|
.ab_pow4_im (ab_pow4_im ),
|
|
|
|
.ab_pow5_re (ab_pow5_re ),
|
|
|
|
.ab_pow5_im (ab_pow5_im ),
|
|
|
|
.ab_pow6_re (ab_pow6_re ),
|
|
|
|
.ab_pow6_im (ab_pow6_im ),
|
|
|
|
.ab_pow7_re (ab_pow7_re ),
|
|
|
|
.ab_pow7_im (ab_pow7_im ),
|
|
|
|
.b_pow8_re (b_pow8_re ),
|
|
|
|
.b_pow8_im (b_pow8_im ),
|
|
|
|
.dout (IIRout_p1 )
|
2025-03-03 18:10:00 +08:00
|
|
|
);
|
2025-03-08 11:32:53 +08:00
|
|
|
IIR_Filter_p8 inst_iir_p2 (
|
2025-03-03 18:10:00 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.dinp0 (IIRin_p[2] ),
|
|
|
|
.dinp1 (IIRin_p[1] ),
|
|
|
|
.dinp2 (IIRin_p[0] ),
|
|
|
|
.dinp3 (IIRin_p_r1[7] ),
|
|
|
|
.dinp4 (IIRin_p_r1[6] ),
|
|
|
|
.dinp5 (IIRin_p_r1[5] ),
|
|
|
|
.dinp6 (IIRin_p_r1[4] ),
|
|
|
|
.dinp7 (IIRin_p_r1[3] ),
|
2025-03-03 18:10:00 +08:00
|
|
|
.a_re (a_re ),
|
|
|
|
.a_im (a_im ),
|
|
|
|
.ab_re (ab_re ),
|
|
|
|
.ab_im (ab_im ),
|
|
|
|
.abb_re (abb_re ),
|
|
|
|
.abb_im (abb_im ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.ab_pow3_re (ab_pow3_re ),
|
|
|
|
.ab_pow3_im (ab_pow3_im ),
|
|
|
|
.ab_pow4_re (ab_pow4_re ),
|
|
|
|
.ab_pow4_im (ab_pow4_im ),
|
|
|
|
.ab_pow5_re (ab_pow5_re ),
|
|
|
|
.ab_pow5_im (ab_pow5_im ),
|
|
|
|
.ab_pow6_re (ab_pow6_re ),
|
|
|
|
.ab_pow6_im (ab_pow6_im ),
|
|
|
|
.ab_pow7_re (ab_pow7_re ),
|
|
|
|
.ab_pow7_im (ab_pow7_im ),
|
|
|
|
.b_pow8_re (b_pow8_re ),
|
|
|
|
.b_pow8_im (b_pow8_im ),
|
|
|
|
.dout (IIRout_p2 )
|
2025-03-03 18:10:00 +08:00
|
|
|
);
|
2025-03-08 11:32:53 +08:00
|
|
|
IIR_Filter_p8 inst_iir_p3 (
|
2025-03-03 18:10:00 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.dinp0 (IIRin_p[3] ),
|
|
|
|
.dinp1 (IIRin_p[2] ),
|
|
|
|
.dinp2 (IIRin_p[1] ),
|
|
|
|
.dinp3 (IIRin_p[0] ),
|
|
|
|
.dinp4 (IIRin_p_r1[7] ),
|
|
|
|
.dinp5 (IIRin_p_r1[6] ),
|
|
|
|
.dinp6 (IIRin_p_r1[5] ),
|
|
|
|
.dinp7 (IIRin_p_r1[4] ),
|
2025-03-03 18:10:00 +08:00
|
|
|
.a_re (a_re ),
|
|
|
|
.a_im (a_im ),
|
|
|
|
.ab_re (ab_re ),
|
|
|
|
.ab_im (ab_im ),
|
|
|
|
.abb_re (abb_re ),
|
|
|
|
.abb_im (abb_im ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.ab_pow3_re (ab_pow3_re ),
|
|
|
|
.ab_pow3_im (ab_pow3_im ),
|
|
|
|
.ab_pow4_re (ab_pow4_re ),
|
|
|
|
.ab_pow4_im (ab_pow4_im ),
|
|
|
|
.ab_pow5_re (ab_pow5_re ),
|
|
|
|
.ab_pow5_im (ab_pow5_im ),
|
|
|
|
.ab_pow6_re (ab_pow6_re ),
|
|
|
|
.ab_pow6_im (ab_pow6_im ),
|
|
|
|
.ab_pow7_re (ab_pow7_re ),
|
|
|
|
.ab_pow7_im (ab_pow7_im ),
|
|
|
|
.b_pow8_re (b_pow8_re ),
|
|
|
|
.b_pow8_im (b_pow8_im ),
|
|
|
|
.dout (IIRout_p3 )
|
2025-03-03 18:10:00 +08:00
|
|
|
);
|
2025-03-08 11:32:53 +08:00
|
|
|
IIR_Filter_p8 inst_iir_p4 (
|
2025-03-03 18:10:00 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.dinp0 (IIRin_p[4] ),
|
|
|
|
.dinp1 (IIRin_p[3] ),
|
|
|
|
.dinp2 (IIRin_p[2] ),
|
|
|
|
.dinp3 (IIRin_p[1] ),
|
|
|
|
.dinp4 (IIRin_p[0] ),
|
|
|
|
.dinp5 (IIRin_p_r1[7] ),
|
|
|
|
.dinp6 (IIRin_p_r1[6] ),
|
|
|
|
.dinp7 (IIRin_p_r1[5] ),
|
2025-03-03 18:10:00 +08:00
|
|
|
.a_re (a_re ),
|
|
|
|
.a_im (a_im ),
|
|
|
|
.ab_re (ab_re ),
|
|
|
|
.ab_im (ab_im ),
|
|
|
|
.abb_re (abb_re ),
|
|
|
|
.abb_im (abb_im ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.ab_pow3_re (ab_pow3_re ),
|
|
|
|
.ab_pow3_im (ab_pow3_im ),
|
|
|
|
.ab_pow4_re (ab_pow4_re ),
|
|
|
|
.ab_pow4_im (ab_pow4_im ),
|
|
|
|
.ab_pow5_re (ab_pow5_re ),
|
|
|
|
.ab_pow5_im (ab_pow5_im ),
|
|
|
|
.ab_pow6_re (ab_pow6_re ),
|
|
|
|
.ab_pow6_im (ab_pow6_im ),
|
|
|
|
.ab_pow7_re (ab_pow7_re ),
|
|
|
|
.ab_pow7_im (ab_pow7_im ),
|
|
|
|
.b_pow8_re (b_pow8_re ),
|
|
|
|
.b_pow8_im (b_pow8_im ),
|
|
|
|
.dout (IIRout_p4 )
|
2025-03-03 18:10:00 +08:00
|
|
|
);
|
2025-03-08 11:32:53 +08:00
|
|
|
IIR_Filter_p8 inst_iir_p5 (
|
2025-03-03 18:10:00 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.dinp0 (IIRin_p[5] ),
|
|
|
|
.dinp1 (IIRin_p[4] ),
|
|
|
|
.dinp2 (IIRin_p[3] ),
|
|
|
|
.dinp3 (IIRin_p[2] ),
|
|
|
|
.dinp4 (IIRin_p[1] ),
|
|
|
|
.dinp5 (IIRin_p[0] ),
|
|
|
|
.dinp6 (IIRin_p_r1[7] ),
|
|
|
|
.dinp7 (IIRin_p_r1[6] ),
|
2025-03-03 18:10:00 +08:00
|
|
|
.a_re (a_re ),
|
|
|
|
.a_im (a_im ),
|
|
|
|
.ab_re (ab_re ),
|
|
|
|
.ab_im (ab_im ),
|
|
|
|
.abb_re (abb_re ),
|
|
|
|
.abb_im (abb_im ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.ab_pow3_re (ab_pow3_re ),
|
|
|
|
.ab_pow3_im (ab_pow3_im ),
|
|
|
|
.ab_pow4_re (ab_pow4_re ),
|
|
|
|
.ab_pow4_im (ab_pow4_im ),
|
|
|
|
.ab_pow5_re (ab_pow5_re ),
|
|
|
|
.ab_pow5_im (ab_pow5_im ),
|
|
|
|
.ab_pow6_re (ab_pow6_re ),
|
|
|
|
.ab_pow6_im (ab_pow6_im ),
|
|
|
|
.ab_pow7_re (ab_pow7_re ),
|
|
|
|
.ab_pow7_im (ab_pow7_im ),
|
|
|
|
.b_pow8_re (b_pow8_re ),
|
|
|
|
.b_pow8_im (b_pow8_im ),
|
|
|
|
.dout (IIRout_p5 )
|
2025-03-03 18:10:00 +08:00
|
|
|
);
|
2025-03-08 11:32:53 +08:00
|
|
|
IIR_Filter_p8 inst_iir_p6 (
|
2025-03-03 18:10:00 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.dinp0 (IIRin_p[6] ),
|
|
|
|
.dinp1 (IIRin_p[5] ),
|
|
|
|
.dinp2 (IIRin_p[4] ),
|
|
|
|
.dinp3 (IIRin_p[3] ),
|
|
|
|
.dinp4 (IIRin_p[2] ),
|
|
|
|
.dinp5 (IIRin_p[1] ),
|
|
|
|
.dinp6 (IIRin_p[0] ),
|
|
|
|
.dinp7 (IIRin_p_r1[7] ),
|
2025-03-03 18:10:00 +08:00
|
|
|
.a_re (a_re ),
|
|
|
|
.a_im (a_im ),
|
|
|
|
.ab_re (ab_re ),
|
|
|
|
.ab_im (ab_im ),
|
|
|
|
.abb_re (abb_re ),
|
|
|
|
.abb_im (abb_im ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.ab_pow3_re (ab_pow3_re ),
|
|
|
|
.ab_pow3_im (ab_pow3_im ),
|
|
|
|
.ab_pow4_re (ab_pow4_re ),
|
|
|
|
.ab_pow4_im (ab_pow4_im ),
|
|
|
|
.ab_pow5_re (ab_pow5_re ),
|
|
|
|
.ab_pow5_im (ab_pow5_im ),
|
|
|
|
.ab_pow6_re (ab_pow6_re ),
|
|
|
|
.ab_pow6_im (ab_pow6_im ),
|
|
|
|
.ab_pow7_re (ab_pow7_re ),
|
|
|
|
.ab_pow7_im (ab_pow7_im ),
|
|
|
|
.b_pow8_re (b_pow8_re ),
|
|
|
|
.b_pow8_im (b_pow8_im ),
|
|
|
|
.dout (IIRout_p6 )
|
2025-03-03 18:10:00 +08:00
|
|
|
);
|
2025-03-08 11:32:53 +08:00
|
|
|
IIR_Filter_p8 inst_iir_p7 (
|
2025-03-03 18:10:00 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.dinp0 (IIRin_p[7] ),
|
|
|
|
.dinp1 (IIRin_p[6] ),
|
|
|
|
.dinp2 (IIRin_p[5] ),
|
|
|
|
.dinp3 (IIRin_p[4] ),
|
|
|
|
.dinp4 (IIRin_p[3] ),
|
|
|
|
.dinp5 (IIRin_p[2] ),
|
|
|
|
.dinp6 (IIRin_p[1] ),
|
|
|
|
.dinp7 (IIRin_p[0] ),
|
2025-03-03 18:10:00 +08:00
|
|
|
.a_re (a_re ),
|
|
|
|
.a_im (a_im ),
|
|
|
|
.ab_re (ab_re ),
|
|
|
|
.ab_im (ab_im ),
|
|
|
|
.abb_re (abb_re ),
|
|
|
|
.abb_im (abb_im ),
|
2025-03-08 11:32:53 +08:00
|
|
|
.ab_pow3_re (ab_pow3_re ),
|
|
|
|
.ab_pow3_im (ab_pow3_im ),
|
|
|
|
.ab_pow4_re (ab_pow4_re ),
|
|
|
|
.ab_pow4_im (ab_pow4_im ),
|
|
|
|
.ab_pow5_re (ab_pow5_re ),
|
|
|
|
.ab_pow5_im (ab_pow5_im ),
|
|
|
|
.ab_pow6_re (ab_pow6_re ),
|
|
|
|
.ab_pow6_im (ab_pow6_im ),
|
|
|
|
.ab_pow7_re (ab_pow7_re ),
|
|
|
|
.ab_pow7_im (ab_pow7_im ),
|
|
|
|
.b_pow8_re (b_pow8_re ),
|
|
|
|
.b_pow8_im (b_pow8_im ),
|
|
|
|
.dout (IIRout_p7 )
|
2025-03-03 18:10:00 +08:00
|
|
|
);
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|