2025-04-18 15:16:50 +08:00
|
|
|
module IIR_top #(
|
|
|
|
parameter data_out_width = 18
|
|
|
|
,parameter coef_width = 32
|
|
|
|
,parameter a0_width = 32
|
|
|
|
,parameter b0_width = 29
|
|
|
|
,parameter b0_i_width = 29
|
|
|
|
,parameter b0_o_width = 19
|
|
|
|
,parameter a1_width = 19
|
|
|
|
,parameter b1_width = 19
|
|
|
|
,parameter b1_i_width = 19
|
|
|
|
,parameter b1_o_width = 19
|
|
|
|
,parameter a2_width = 21
|
|
|
|
,parameter b2_width = 21
|
|
|
|
,parameter b2_i_width = 19
|
|
|
|
,parameter b2_o_width = 19
|
|
|
|
,parameter a3_width = 21
|
|
|
|
,parameter b3_width = 21
|
|
|
|
,parameter b3_i_width = 19
|
|
|
|
,parameter b3_o_width = 19
|
|
|
|
,parameter a4_width = 20
|
|
|
|
,parameter b4_width = 20
|
|
|
|
,parameter b4_i_width = 19
|
|
|
|
,parameter b4_o_width = 18
|
|
|
|
,parameter a5_width = 21
|
|
|
|
,parameter b5_width = 21
|
|
|
|
,parameter b5_i_width = 18
|
|
|
|
,parameter b5_o_width = 18
|
|
|
|
,parameter a6_width = 21
|
|
|
|
,parameter b6_width = 21
|
|
|
|
,parameter b6_i_width = 18
|
|
|
|
,parameter b6_o_width = 18
|
|
|
|
,parameter a7_width = 22
|
|
|
|
,parameter b7_width = 22
|
|
|
|
,parameter b7_i_width = 18
|
|
|
|
,parameter b7_o_width = 18
|
|
|
|
,parameter a8_width = 23
|
|
|
|
,parameter b8_width = 23
|
|
|
|
,parameter b8_i_width = 18
|
|
|
|
,parameter b8_o_width = 18
|
|
|
|
,parameter a9_width = 24
|
|
|
|
,parameter b9_width = 24
|
|
|
|
,parameter b9_i_width = 18
|
|
|
|
,parameter b9_o_width = 18
|
|
|
|
,parameter a10_width = 25
|
|
|
|
,parameter b10_width = 25
|
|
|
|
,parameter b10_i_width = 18
|
|
|
|
,parameter b10_o_width = 18
|
|
|
|
,parameter a11_width = 26
|
|
|
|
,parameter b11_width = 26
|
|
|
|
,parameter b11_i_width = 18
|
|
|
|
,parameter b11_o_width = 18
|
|
|
|
,parameter a12_width = 27
|
|
|
|
,parameter b12_width = 27
|
|
|
|
,parameter b12_i_width = 18
|
|
|
|
,parameter b12_o_width = 18
|
|
|
|
,parameter a13_width = 28
|
|
|
|
,parameter b13_width = 28
|
|
|
|
,parameter b13_i_width = 18
|
|
|
|
,parameter b13_o_width = 18
|
|
|
|
,parameter a14_width = 29
|
|
|
|
,parameter b14_width = 29
|
|
|
|
,parameter b14_i_width = 18
|
|
|
|
,parameter b14_o_width = 18
|
|
|
|
,parameter a15_width = 29
|
|
|
|
,parameter b15_width = 29
|
|
|
|
,parameter b15_i_width = 18
|
|
|
|
,parameter b15_o_width = 18
|
|
|
|
)
|
|
|
|
(
|
|
|
|
input rstn
|
|
|
|
,input clk
|
|
|
|
,input en
|
|
|
|
,input signed [15 :0] IIRin_p0 // x(8n+9)
|
|
|
|
,input signed [15 :0] IIRin_p1 // x(8n+10)
|
|
|
|
,input signed [15 :0] IIRin_p2 // x(8n+11)
|
|
|
|
,input signed [15 :0] IIRin_p3 // x(8n+12)
|
|
|
|
,input signed [15 :0] IIRin_p4 // x(8n+13)
|
|
|
|
,input signed [15 :0] IIRin_p5 // x(8n+14)
|
|
|
|
,input signed [15 :0] IIRin_p6 // x(8n+15)
|
|
|
|
,input signed [15 :0] IIRin_p7 // x(8n+16)
|
|
|
|
,input signed [15 :0] IIRin_p8 // x(8n+9)
|
|
|
|
,input signed [15 :0] IIRin_p9 // x(8n+10)
|
|
|
|
,input signed [15 :0] IIRin_pa // x(8n+11)
|
|
|
|
,input signed [15 :0] IIRin_pb // x(8n+12)
|
|
|
|
,input signed [15 :0] IIRin_pc // x(8n+13)
|
|
|
|
,input signed [15 :0] IIRin_pd // x(8n+14)
|
|
|
|
,input signed [15 :0] IIRin_pe // x(8n+15)
|
|
|
|
,input signed [15 :0] IIRin_pf // x(8n+16)
|
|
|
|
,input signed [15 :0] IIRin_p0_r2 // x(8n+9) delay 2M -> x(8n- 7)
|
|
|
|
,input signed [15 :0] IIRin_p1_r4 // x(8n+10) delay 4M -> x(8n-22)
|
|
|
|
,input signed [15 :0] IIRin_p2_r6 // x(8n+11) delay 6M -> x(8n-37)
|
|
|
|
,input signed [15 :0] IIRin_p3_r8 // x(8n+12) delay 8M -> x(8n-52)
|
|
|
|
,input signed [15 :0] IIRin_p4_r10 // x(8n+13) delay 10M -> x(8n-67)
|
|
|
|
,input signed [15 :0] IIRin_p5_r12 // x(8n+14) delay 12M -> x(8n-82)
|
|
|
|
,input signed [15 :0] IIRin_p6_r14 // x(8n+15) delay 14M -> x(8n-97)
|
|
|
|
,input signed [15 :0] IIRin_p7_r16 // x(8n+16) delay 16M -> x(8n-112)
|
|
|
|
,input signed [15 :0] IIRin_p8_r18 // x(8n+15) delay 18M -> x(8n-127)
|
|
|
|
,input signed [15 :0] IIRin_p9_r20 // x(8n+14) delay 20M -> x(8n-142)
|
|
|
|
,input signed [15 :0] IIRin_pa_r22 // x(8n+13) delay 22M -> x(8n-157)
|
|
|
|
,input signed [15 :0] IIRin_pb_r24 // x(8n+12) delay 24M -> x(8n-172)
|
|
|
|
,input signed [15 :0] IIRin_pc_r26 // x(8n+11) delay 26M -> x(8n-187)
|
|
|
|
,input signed [15 :0] IIRin_pd_r28 // x(8n+10) delay 28M -> x(8n-202)
|
|
|
|
,input signed [15 :0] IIRin_pe_r30 // x(8n+9) delay 30M -> x(8n-217)
|
|
|
|
,input signed [31 :0] a_re
|
|
|
|
,input signed [31 :0] b_re
|
|
|
|
,input signed [31 :0] ab_re
|
|
|
|
,input signed [31 :0] abb_re
|
|
|
|
,input signed [31 :0] ab_pow3_re
|
|
|
|
,input signed [31 :0] ab_pow4_re
|
|
|
|
,input signed [31 :0] ab_pow5_re
|
|
|
|
,input signed [31 :0] ab_pow6_re
|
|
|
|
,input signed [31 :0] ab_pow7_re
|
|
|
|
,input signed [31 :0] ab_pow8_re
|
|
|
|
,input signed [31 :0] ab_pow9_re
|
|
|
|
,input signed [31 :0] ab_powa_re
|
|
|
|
,input signed [31 :0] ab_powb_re
|
|
|
|
,input signed [31 :0] ab_powc_re
|
|
|
|
,input signed [31 :0] ab_powd_re
|
|
|
|
,input signed [31 :0] ab_powe_re
|
|
|
|
,input signed [31 :0] ab_powf_re
|
|
|
|
,input signed [31 :0] b_pow16_re
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,input signed [31 :0] a_im
|
|
|
|
,input signed [31 :0] b_im
|
|
|
|
,input signed [31 :0] ab_im
|
|
|
|
,input signed [31 :0] abb_im
|
|
|
|
,input signed [31 :0] ab_pow3_im
|
|
|
|
,input signed [31 :0] ab_pow4_im
|
|
|
|
,input signed [31 :0] ab_pow5_im
|
|
|
|
,input signed [31 :0] ab_pow6_im
|
|
|
|
,input signed [31 :0] ab_pow7_im
|
|
|
|
,input signed [31 :0] ab_pow8_im
|
|
|
|
,input signed [31 :0] ab_pow9_im
|
|
|
|
,input signed [31 :0] ab_powa_im
|
|
|
|
,input signed [31 :0] ab_powb_im
|
|
|
|
,input signed [31 :0] ab_powc_im
|
|
|
|
,input signed [31 :0] ab_powd_im
|
|
|
|
,input signed [31 :0] ab_powe_im
|
|
|
|
,input signed [31 :0] ab_powf_im
|
|
|
|
,input signed [31 :0] b_pow16_im
|
|
|
|
`endif
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_p0 // y(8n-8)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_p1 // y(8n-23)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_p2 // y(8n-38)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_p3 // y(8n-53)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_p4 // y(8n-68)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_p5 // y(8n-83)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_p6 // y(8n-98)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_p7 // y(8n-113)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_p8 // y(8n-128)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_p9 // y(8n-143)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_pa // y(8n-158)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_pb // y(8n-173)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_pc // y(8n-188)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_pd // y(8n-203)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_pe // y(8n-218)
|
|
|
|
,output signed [data_out_width-1 :0] IIRout_pf // y(8n-233)
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wire signed [b0_o_width- 1:0] IIRout_p0_re;
|
|
|
|
wire signed [b1_o_width- 1:0] IIRout_p1_re;
|
|
|
|
wire signed [b2_o_width- 1:0] IIRout_p2_re;
|
|
|
|
wire signed [b3_o_width- 1:0] IIRout_p3_re;
|
|
|
|
wire signed [b4_o_width- 1:0] IIRout_p4_re;
|
|
|
|
wire signed [b5_o_width- 1:0] IIRout_p5_re;
|
|
|
|
wire signed [b6_o_width- 1:0] IIRout_p6_re;
|
|
|
|
wire signed [b7_o_width- 1:0] IIRout_p7_re;
|
|
|
|
wire signed [b8_o_width- 1:0] IIRout_p8_re;
|
|
|
|
wire signed [b9_o_width- 1:0] IIRout_p9_re;
|
|
|
|
wire signed [b10_o_width- 1:0] IIRout_pa_re;
|
|
|
|
wire signed [b11_o_width- 1:0] IIRout_pb_re;
|
|
|
|
wire signed [b12_o_width- 1:0] IIRout_pc_re;
|
|
|
|
wire signed [b13_o_width- 1:0] IIRout_pd_re;
|
|
|
|
wire signed [b14_o_width- 1:0] IIRout_pe_re;
|
|
|
|
wire signed [b15_o_width- 1:0] IIRout_pf_re;
|
|
|
|
`ifdef COMPLEX
|
|
|
|
wire signed [b0_o_width- 1:0] IIRout_p0_im;
|
|
|
|
wire signed [b1_o_width- 1:0] IIRout_p1_im;
|
|
|
|
wire signed [b2_o_width- 1:0] IIRout_p2_im;
|
|
|
|
wire signed [b3_o_width- 1:0] IIRout_p3_im;
|
|
|
|
wire signed [b4_o_width- 1:0] IIRout_p4_im;
|
|
|
|
wire signed [b5_o_width- 1:0] IIRout_p5_im;
|
|
|
|
wire signed [b6_o_width- 1:0] IIRout_p6_im;
|
|
|
|
wire signed [b7_o_width- 1:0] IIRout_p7_im;
|
|
|
|
wire signed [b8_o_width- 1:0] IIRout_p8_im;
|
|
|
|
wire signed [b9_o_width- 1:0] IIRout_p9_im;
|
|
|
|
wire signed [b10_o_width- 1:0] IIRout_pa_im;
|
|
|
|
wire signed [b11_o_width- 1:0] IIRout_pb_im;
|
|
|
|
wire signed [b12_o_width- 1:0] IIRout_pc_im;
|
|
|
|
wire signed [b13_o_width- 1:0] IIRout_pd_im;
|
|
|
|
wire signed [b14_o_width- 1:0] IIRout_pe_im;
|
|
|
|
wire signed [b15_o_width- 1:0] IIRout_pf_im;
|
|
|
|
`endif
|
|
|
|
|
|
|
|
IIR_Filter_p16#(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.b_pow16_width ( b0_width )
|
|
|
|
,.ab_pow_width ( a0_width )
|
|
|
|
,.temp_var_width ( b0_i_width )
|
|
|
|
,.data_out_width ( b0_o_width )
|
|
|
|
)inst_iir_p0(
|
|
|
|
.rstn ( rstn )
|
|
|
|
,.clk ( clk )
|
|
|
|
,.en ( en )
|
|
|
|
,.dinp0 ( IIRin_pf )
|
|
|
|
,.dinp1 ( IIRin_pe )
|
|
|
|
,.dinp2 ( IIRin_pd )
|
|
|
|
,.dinp3 ( IIRin_pc )
|
|
|
|
,.dinp4 ( IIRin_pb )
|
|
|
|
,.dinp5 ( IIRin_pa )
|
|
|
|
,.dinp6 ( IIRin_p9 )
|
|
|
|
,.dinp7 ( IIRin_p8 )
|
|
|
|
,.dinp8 ( IIRin_p7 )
|
|
|
|
,.dinp9 ( IIRin_p6 )
|
|
|
|
,.dinpa ( IIRin_p5 )
|
|
|
|
,.dinpb ( IIRin_p4 )
|
|
|
|
,.dinpc ( IIRin_p3 )
|
|
|
|
,.dinpd ( IIRin_p2 )
|
|
|
|
,.dinpe ( IIRin_p1 )
|
|
|
|
,.dinpf ( IIRin_p0 )
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.ab_re ( ab_re )
|
|
|
|
,.abb_re ( abb_re )
|
|
|
|
,.ab_pow3_re ( ab_pow3_re )
|
|
|
|
,.ab_pow4_re ( ab_pow4_re )
|
|
|
|
,.ab_pow5_re ( ab_pow5_re )
|
|
|
|
,.ab_pow6_re ( ab_pow6_re )
|
|
|
|
,.ab_pow7_re ( ab_pow7_re )
|
|
|
|
,.ab_pow8_re ( ab_pow8_re )
|
|
|
|
,.ab_pow9_re ( ab_pow9_re )
|
|
|
|
,.ab_powa_re ( ab_powa_re )
|
|
|
|
,.ab_powb_re ( ab_powb_re )
|
|
|
|
,.ab_powc_re ( ab_powc_re )
|
|
|
|
,.ab_powd_re ( ab_powd_re )
|
|
|
|
,.ab_powe_re ( ab_powe_re )
|
|
|
|
,.ab_powf_re ( ab_powf_re )
|
|
|
|
,.b_pow16_re ( b_pow16_re )
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.ab_im ( ab_im )
|
|
|
|
,.abb_im ( abb_im )
|
|
|
|
,.ab_pow3_im ( ab_pow3_im )
|
|
|
|
,.ab_pow4_im ( ab_pow4_im )
|
|
|
|
,.ab_pow5_im ( ab_pow5_im )
|
|
|
|
,.ab_pow6_im ( ab_pow6_im )
|
|
|
|
,.ab_pow7_im ( ab_pow7_im )
|
|
|
|
,.ab_pow8_im ( ab_pow8_im )
|
|
|
|
,.ab_pow9_im ( ab_pow9_im )
|
|
|
|
,.ab_powa_im ( ab_powa_im )
|
|
|
|
,.ab_powb_im ( ab_powb_im )
|
|
|
|
,.ab_powc_im ( ab_powc_im )
|
|
|
|
,.ab_powd_im ( ab_powd_im )
|
|
|
|
,.ab_powe_im ( ab_powe_im )
|
|
|
|
,.ab_powf_im ( ab_powf_im )
|
|
|
|
,.b_pow16_im ( b_pow16_im )
|
|
|
|
,.dout_im ( IIRout_p0_im )
|
|
|
|
`endif
|
|
|
|
,.dout_re ( IIRout_p0_re )
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a1_width )
|
|
|
|
,.b_width ( b1_width )
|
|
|
|
,.cascade_in_width ( b1_i_width )
|
|
|
|
,.data_out_width ( b1_o_width )
|
|
|
|
) inst_iir_p1 (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_p0_r2 ) // x(8n-7)
|
|
|
|
,.dout_r1_re ( IIRout_p0_re ) // Re(y(8n-8))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_p0_im ) // Re(y(8n-8))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_p1_re ) // Re(y(8n-23))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_p1_im ) // Re(y(8n-23))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a2_width )
|
|
|
|
,.b_width ( b2_width )
|
|
|
|
,.cascade_in_width ( b2_i_width )
|
|
|
|
,.data_out_width ( b2_o_width )
|
|
|
|
) inst_iir_p2 (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_p1_r4 ) // x(8n-22)
|
|
|
|
,.dout_r1_re ( IIRout_p1_re ) // Re(y(8n-23))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_p1_im ) // Re(y(8n-23))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_p2_re ) // Re(y(8n-38))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_p2_im ) // Re(y(8n-38))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a3_width )
|
|
|
|
,.b_width ( b3_width )
|
|
|
|
,.cascade_in_width ( b3_i_width )
|
|
|
|
,.data_out_width ( b3_o_width )
|
|
|
|
) inst_iir_p3 (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_p2_r6 ) // x(8n-37)
|
|
|
|
,.dout_r1_re ( IIRout_p2_re ) // Re(y(8n-38))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_p2_im ) // Re(y(8n-38))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_p3_re ) // Re(y(8n-53))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_p3_im ) // Re(y(8n-53))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a4_width )
|
|
|
|
,.b_width ( b4_width )
|
|
|
|
,.cascade_in_width ( b4_i_width )
|
|
|
|
,.data_out_width ( b4_o_width )
|
|
|
|
) inst_iir_p4 (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_p3_r8 ) // x(8n-52)
|
|
|
|
,.dout_r1_re ( IIRout_p3_re ) // Re(y(8n-53))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_p3_im ) // Re(y(8n-53))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_p4_re ) // Re(y(8n-68))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_p4_im ) // Re(y(8n-68))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a5_width )
|
|
|
|
,.b_width ( b5_width )
|
|
|
|
,.cascade_in_width ( b5_i_width )
|
|
|
|
,.data_out_width ( b5_o_width )
|
|
|
|
) inst_iir_p5 (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_p4_r10 ) // x(8n-67)
|
|
|
|
,.dout_r1_re ( IIRout_p4_re ) // Re(y(8n-68))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_p4_im ) // Re(y(8n-68))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_p5_re ) // Re(y(8n-83))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_p5_im ) // Re(y(8n-83))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a6_width )
|
|
|
|
,.b_width ( b6_width )
|
|
|
|
,.cascade_in_width ( b6_i_width )
|
|
|
|
,.data_out_width ( b6_o_width )
|
|
|
|
) inst_iir_p6 (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_p5_r12 ) // x(8n-82)
|
|
|
|
,.dout_r1_re ( IIRout_p5_re ) // Re(y(8n-83))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_p5_im ) // Re(y(8n-83))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_p6_re ) // Re(y(8n-98))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_p6_im ) // Re(y(8n-98))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a7_width )
|
|
|
|
,.b_width ( b7_width )
|
|
|
|
,.cascade_in_width ( b7_i_width )
|
|
|
|
,.data_out_width ( b7_o_width )
|
|
|
|
) inst_iir_p7 (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_p6_r14 ) // x(8n-97)
|
|
|
|
,.dout_r1_re ( IIRout_p6_re ) // Re(y(8n-98))
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_p7_re ) // Re(y(8n-113))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_p6_im ) // Re(y(8n-98))
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_p7_im ) // Re(y(8n-113))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a8_width )
|
|
|
|
,.b_width ( b8_width )
|
|
|
|
,.cascade_in_width ( b8_i_width )
|
|
|
|
,.data_out_width ( b8_o_width )
|
|
|
|
) inst_iir_p8 (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_p7_r16 ) // x(8n-112)
|
|
|
|
,.dout_r1_re ( IIRout_p7_re ) // Re(y(8n-113))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_p7_im ) // Re(y(8n-113))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_p8_re ) // Re(y(8n-128))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_p8_im ) // Re(y(8n-128))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a9_width )
|
|
|
|
,.b_width ( b9_width )
|
|
|
|
,.cascade_in_width ( b9_i_width )
|
|
|
|
,.data_out_width ( b9_o_width )
|
|
|
|
) inst_iir_p9 (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_p8_r18 ) // x(8n-127)
|
|
|
|
,.dout_r1_re ( IIRout_p8_re ) // Re(y(8n-128))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_p8_im ) // Re(y(8n-128))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_p9_re ) // Re(y(8n-143))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_p9_im ) // Re(y(8n-143))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a10_width )
|
|
|
|
,.b_width ( b10_width )
|
|
|
|
,.cascade_in_width ( b10_i_width )
|
|
|
|
,.data_out_width ( b10_o_width )
|
|
|
|
) inst_iir_pa (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_p9_r20 ) // x(8n-142)
|
|
|
|
,.dout_r1_re ( IIRout_p9_re ) // Re(y(8n-143))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_p9_im ) // Re(y(8n-143))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_pa_re ) // Re(y(8n-158))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_pa_im ) // Re(y(8n-158))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a11_width )
|
|
|
|
,.b_width ( b11_width )
|
|
|
|
,.cascade_in_width ( b11_i_width )
|
|
|
|
,.data_out_width ( b11_o_width )
|
|
|
|
) inst_iir_pb (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_pa_r22 ) // x(8n-157)
|
|
|
|
,.dout_r1_re ( IIRout_pa_re ) // Re(y(8n-158))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_pa_im ) // Re(y(8n-158))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_pb_re ) // Re(y(8n-173))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_pb_im ) // Re(y(8n-173))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a12_width )
|
|
|
|
,.b_width ( b12_width )
|
|
|
|
,.cascade_in_width ( b12_i_width )
|
|
|
|
,.data_out_width ( b12_o_width )
|
|
|
|
) inst_iir_pc (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_pb_r24 ) // x(8n-172)
|
|
|
|
,.dout_r1_re ( IIRout_pb_re ) // Re(y(8n-173))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_pb_im ) // Re(y(8n-173))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_pc_re ) // Re(y(8n-188))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_pc_im ) // Re(y(8n-188))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a13_width )
|
|
|
|
,.b_width ( b13_width )
|
|
|
|
,.cascade_in_width ( b13_i_width )
|
|
|
|
,.data_out_width ( b13_o_width )
|
|
|
|
) inst_iir_pd (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_pc_r26 ) // x(8n-187)
|
|
|
|
,.dout_r1_re ( IIRout_pc_re ) // Re(y(8n-188))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_pc_im ) // Re(y(8n-188))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_pd_re ) // Re(y(8n-203))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_pd_im ) // Re(y(8n-203))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a14_width )
|
|
|
|
,.b_width ( b14_width )
|
|
|
|
,.cascade_in_width ( b14_i_width )
|
|
|
|
,.data_out_width ( b14_o_width )
|
|
|
|
) inst_iir_pe (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_pd_r28 ) // x(8n-202)
|
|
|
|
,.dout_r1_re ( IIRout_pd_re ) // Re(y(8n-203))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_pd_im ) // Re(y(8n-203))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_pe_re ) // Re(y(8n-218))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_pe_im ) // Re(y(8n-218))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p1 #(
|
|
|
|
.coef_width ( coef_width )
|
|
|
|
,.a_width ( a15_width )
|
|
|
|
,.b_width ( b15_width )
|
|
|
|
,.cascade_in_width ( b15_i_width )
|
|
|
|
,.data_out_width ( b15_o_width )
|
|
|
|
) inst_iir_pf (
|
|
|
|
.clk ( clk )
|
|
|
|
,.rstn ( rstn )
|
|
|
|
,.en ( en )
|
|
|
|
,.din_re ( IIRin_pe_r30 ) // x(8n-217)
|
|
|
|
,.dout_r1_re ( IIRout_pe_re ) // Re(y(8n-218))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.dout_r1_im ( IIRout_pe_im ) // Re(y(8n-218))
|
|
|
|
`endif
|
|
|
|
,.a_re ( a_re )
|
|
|
|
,.b_re ( b_re )
|
|
|
|
,.dout_re ( IIRout_pf_re ) // Re(y(8n-233))
|
|
|
|
`ifdef COMPLEX
|
|
|
|
,.a_im ( a_im )
|
|
|
|
,.b_im ( b_im )
|
|
|
|
,.dout_im ( IIRout_pf_im ) // Re(y(8n-233))
|
|
|
|
`endif
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
assign IIRout_p0 = IIRout_p0_re[b0_o_width-1 : b0_o_width-data_out_width]; // y(8n-8)
|
|
|
|
assign IIRout_p1 = IIRout_p1_re[b1_o_width-1 : b1_o_width-data_out_width]; // y(8n-23)
|
|
|
|
assign IIRout_p2 = IIRout_p2_re[b2_o_width-1 : b2_o_width-data_out_width]; // y(8n-38)
|
|
|
|
assign IIRout_p3 = IIRout_p3_re[b3_o_width-1 : b3_o_width-data_out_width]; // y(8n-53)
|
|
|
|
assign IIRout_p4 = IIRout_p4_re[b4_o_width-1 : b4_o_width-data_out_width]; // y(8n-68)
|
|
|
|
assign IIRout_p5 = IIRout_p5_re[b5_o_width-1 : b5_o_width-data_out_width]; // y(8n-83)
|
|
|
|
assign IIRout_p6 = IIRout_p6_re[b6_o_width-1 : b6_o_width-data_out_width]; // y(8n-98)
|
|
|
|
assign IIRout_p7 = IIRout_p7_re[b7_o_width-1 : b7_o_width-data_out_width]; // y(8n-113)
|
|
|
|
assign IIRout_p8 = IIRout_p8_re[b8_o_width-1 : b8_o_width-data_out_width]; // y(8n-128)
|
|
|
|
assign IIRout_p9 = IIRout_p9_re[b9_o_width-1 : b9_o_width-data_out_width]; // y(8n-143)
|
|
|
|
assign IIRout_pa = IIRout_pa_re[b10_o_width-1 : b10_o_width-data_out_width]; // y(8n-158)
|
|
|
|
assign IIRout_pb = IIRout_pb_re[b11_o_width-1 : b11_o_width-data_out_width]; // y(8n-173)
|
|
|
|
assign IIRout_pc = IIRout_pc_re[b12_o_width-1 : b12_o_width-data_out_width]; // y(8n-188)
|
|
|
|
assign IIRout_pd = IIRout_pd_re[b13_o_width-1 : b13_o_width-data_out_width]; // y(8n-203)
|
|
|
|
assign IIRout_pe = IIRout_pe_re[b14_o_width-1 : b14_o_width-data_out_width]; // y(8n-218)
|
|
|
|
assign IIRout_pf = IIRout_pf_re[b15_o_width-1 : b15_o_width-data_out_width]; // y(8n-233)
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|