2024-10-08 11:23:42 +08:00
|
|
|
//+FHDR--------------------------------------------------------------------------------------------------------
|
|
|
|
// Company:
|
|
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
|
|
// File Name : TailCorr_top.v
|
|
|
|
// Department :
|
|
|
|
// Author : thfu
|
|
|
|
// Author's Tel :
|
|
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
|
|
// Relese History
|
|
|
|
// Version Date Author Description
|
|
|
|
// 0.3 2024-05-15 thfu
|
|
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
|
|
// Keywords :
|
|
|
|
//
|
|
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
|
|
// Parameter
|
|
|
|
//
|
|
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
|
|
// Purpose :
|
|
|
|
//
|
|
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
|
|
// Target Device:
|
|
|
|
// Tool versions:
|
|
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
|
|
// Reuse Issues
|
|
|
|
// Reset Strategy:
|
|
|
|
// Clock Domains:
|
|
|
|
// Critical Timing:
|
|
|
|
// Asynchronous I/F:
|
|
|
|
// Synthesizable (y/n):
|
|
|
|
// Other:
|
|
|
|
//-FHDR--------------------------------------------------------------------------------------------------------
|
|
|
|
|
2024-04-16 10:14:19 +08:00
|
|
|
module TailCorr_top
|
|
|
|
|
|
|
|
(
|
|
|
|
clk,
|
|
|
|
rstn,
|
2024-10-08 11:23:42 +08:00
|
|
|
en,
|
2025-02-26 15:50:49 +08:00
|
|
|
vldi,
|
2024-10-08 11:23:42 +08:00
|
|
|
tc_bypass,
|
2025-02-26 15:50:49 +08:00
|
|
|
din,
|
2024-04-16 10:14:19 +08:00
|
|
|
a0_re,
|
|
|
|
a0_im,
|
2025-02-26 15:50:49 +08:00
|
|
|
ab0_re,
|
|
|
|
ab0_im,
|
|
|
|
bb0_re,
|
|
|
|
bb0_im,
|
2024-04-16 10:14:19 +08:00
|
|
|
a1_re,
|
|
|
|
a1_im,
|
2025-02-26 15:50:49 +08:00
|
|
|
ab1_re,
|
|
|
|
ab1_im,
|
|
|
|
bb1_re,
|
|
|
|
bb1_im,
|
2024-04-16 10:14:19 +08:00
|
|
|
a2_re,
|
|
|
|
a2_im,
|
2025-02-26 15:50:49 +08:00
|
|
|
ab2_re,
|
|
|
|
ab2_im,
|
|
|
|
bb2_re,
|
|
|
|
bb2_im,
|
2024-04-16 10:14:19 +08:00
|
|
|
a3_re,
|
|
|
|
a3_im,
|
2025-02-26 15:50:49 +08:00
|
|
|
ab3_re,
|
|
|
|
ab3_im,
|
|
|
|
bb3_re,
|
|
|
|
bb3_im,
|
2024-04-16 10:14:19 +08:00
|
|
|
a4_re,
|
|
|
|
a4_im,
|
2025-02-26 15:50:49 +08:00
|
|
|
ab4_re,
|
|
|
|
ab4_im,
|
|
|
|
bb4_re,
|
|
|
|
bb4_im,
|
2024-04-16 10:14:19 +08:00
|
|
|
a5_re,
|
|
|
|
a5_im,
|
2025-02-26 15:50:49 +08:00
|
|
|
ab5_re,
|
|
|
|
ab5_im,
|
|
|
|
bb5_re,
|
|
|
|
bb5_im,
|
2024-04-16 10:14:19 +08:00
|
|
|
dout
|
|
|
|
);
|
|
|
|
|
|
|
|
input rstn;
|
|
|
|
input clk;
|
2024-10-08 11:23:42 +08:00
|
|
|
input en;
|
2025-02-26 15:50:49 +08:00
|
|
|
input vldi;
|
2024-10-08 11:23:42 +08:00
|
|
|
input tc_bypass;
|
2025-02-26 15:50:49 +08:00
|
|
|
input signed [15:0] din;
|
2024-11-25 20:26:22 +08:00
|
|
|
input signed [31:0] a0_re;
|
|
|
|
input signed [31:0] a0_im;
|
2025-02-26 15:50:49 +08:00
|
|
|
input signed [31:0] ab0_re;
|
|
|
|
input signed [31:0] ab0_im;
|
|
|
|
input signed [31:0] bb0_re;
|
|
|
|
input signed [31:0] bb0_im;
|
2024-11-25 20:26:22 +08:00
|
|
|
input signed [31:0] a1_re;
|
|
|
|
input signed [31:0] a1_im;
|
2025-02-26 15:50:49 +08:00
|
|
|
input signed [31:0] ab1_re;
|
|
|
|
input signed [31:0] ab1_im;
|
|
|
|
input signed [31:0] bb1_re;
|
|
|
|
input signed [31:0] bb1_im;
|
2024-11-25 20:26:22 +08:00
|
|
|
input signed [31:0] a2_re;
|
|
|
|
input signed [31:0] a2_im;
|
2025-02-26 15:50:49 +08:00
|
|
|
input signed [31:0] ab2_re;
|
|
|
|
input signed [31:0] ab2_im;
|
|
|
|
input signed [31:0] bb2_re;
|
|
|
|
input signed [31:0] bb2_im;
|
2024-11-25 20:26:22 +08:00
|
|
|
input signed [31:0] a3_re;
|
|
|
|
input signed [31:0] a3_im;
|
2025-02-26 15:50:49 +08:00
|
|
|
input signed [31:0] ab3_re;
|
|
|
|
input signed [31:0] ab3_im;
|
|
|
|
input signed [31:0] bb3_re;
|
|
|
|
input signed [31:0] bb3_im;
|
2024-11-25 20:26:22 +08:00
|
|
|
input signed [31:0] a4_re;
|
|
|
|
input signed [31:0] a4_im;
|
2025-02-26 15:50:49 +08:00
|
|
|
input signed [31:0] ab4_re;
|
|
|
|
input signed [31:0] ab4_im;
|
|
|
|
input signed [31:0] bb4_re;
|
|
|
|
input signed [31:0] bb4_im;
|
2024-11-25 20:26:22 +08:00
|
|
|
input signed [31:0] a5_re;
|
|
|
|
input signed [31:0] a5_im;
|
2025-02-26 15:50:49 +08:00
|
|
|
input signed [31:0] ab5_re;
|
|
|
|
input signed [31:0] ab5_im;
|
|
|
|
input signed [31:0] bb5_re;
|
|
|
|
input signed [31:0] bb5_im;
|
2024-04-16 10:14:19 +08:00
|
|
|
output signed [15:0] dout;
|
|
|
|
|
|
|
|
|
2025-02-26 15:50:49 +08:00
|
|
|
wire signed [15:0] IIRin;
|
2024-04-16 10:14:19 +08:00
|
|
|
wire signed [15:0] dout_0;
|
|
|
|
wire signed [15:0] dout_1;
|
|
|
|
wire signed [15:0] dout_2;
|
|
|
|
wire signed [15:0] dout_3;
|
|
|
|
wire signed [15:0] dout_4;
|
|
|
|
wire signed [15:0] dout_5;
|
|
|
|
wire signed [18:0] Ysum;
|
|
|
|
|
|
|
|
reg signed [15:0] dout_r;
|
|
|
|
|
2025-02-26 15:50:49 +08:00
|
|
|
reg [15:0] din_p0;
|
|
|
|
reg [15:0] din_p1;
|
|
|
|
s2p_2 inst_s2p_2 (
|
|
|
|
.clk (clk),
|
|
|
|
.rst_n (rstn),
|
|
|
|
.din (din),
|
|
|
|
.en (vldi),
|
|
|
|
.dout0 (din_p0),
|
|
|
|
.dout1 (din_p1)
|
|
|
|
);
|
|
|
|
|
|
|
|
reg signed [15:0] din_p0_r1;
|
|
|
|
reg signed [15:0] din_p0_r2;
|
|
|
|
reg signed [15:0] din_p0_r3;
|
|
|
|
reg signed [15:0] din_p0_r4;
|
|
|
|
reg signed [15:0] din_p0_r5;
|
|
|
|
reg signed [15:0] din_p0_r6;
|
|
|
|
|
|
|
|
always @(posedge clk or negedge rstn)
|
|
|
|
if (!rstn)
|
|
|
|
begin
|
|
|
|
din_p0_r1 <= 'h0;
|
|
|
|
din_p0_r2 <= 'h0;
|
|
|
|
din_p0_r3 <= 'h0;
|
|
|
|
din_p0_r4 <= 'h0;
|
|
|
|
din_p0_r5 <= 'h0;
|
|
|
|
din_p0_r6 <= 'h0;
|
|
|
|
end
|
|
|
|
else if(en)
|
|
|
|
begin
|
|
|
|
din_p0_r1 <= din_p0;
|
|
|
|
din_p0_r2 <= din_p0_r1;
|
|
|
|
din_p0_r3 <= din_p0_r2;
|
|
|
|
din_p0_r4 <= din_p0_r3;
|
|
|
|
din_p0_r5 <= din_p0_r4;
|
|
|
|
din_p0_r6 <= din_p0_r5;
|
|
|
|
end
|
|
|
|
else
|
|
|
|
begin
|
|
|
|
din_p0_r1 <= din_p0_r1;
|
|
|
|
din_p0_r2 <= din_p0_r2;
|
|
|
|
din_p0_r3 <= din_p0_r3;
|
|
|
|
din_p0_r4 <= din_p0_r4;
|
|
|
|
din_p0_r5 <= din_p0_r5;
|
|
|
|
din_p0_r6 <= din_p0_r6;
|
|
|
|
end
|
|
|
|
|
|
|
|
reg signed [15:0] din_p1_r1;
|
|
|
|
reg signed [15:0] din_p1_r2;
|
|
|
|
reg signed [15:0] din_p1_r3;
|
|
|
|
reg signed [15:0] din_p1_r4;
|
|
|
|
reg signed [15:0] din_p1_r5;
|
|
|
|
reg signed [15:0] din_p1_r6;
|
|
|
|
|
|
|
|
always @(posedge clk or negedge rstn)
|
|
|
|
if (!rstn)
|
|
|
|
begin
|
|
|
|
din_p1_r1 <= 'h0;
|
|
|
|
din_p1_r2 <= 'h0;
|
|
|
|
din_p1_r3 <= 'h0;
|
|
|
|
din_p1_r4 <= 'h0;
|
|
|
|
din_p1_r5 <= 'h0;
|
|
|
|
din_p1_r6 <= 'h0;
|
|
|
|
end
|
|
|
|
else if(en)
|
|
|
|
begin
|
|
|
|
din_p1_r1 <= din_p1;
|
|
|
|
din_p1_r2 <= din_p1_r1;
|
|
|
|
din_p1_r3 <= din_p1_r2;
|
|
|
|
din_p1_r4 <= din_p1_r3;
|
|
|
|
din_p1_r5 <= din_p1_r4;
|
|
|
|
din_p1_r6 <= din_p1_r5;
|
|
|
|
end
|
|
|
|
else
|
|
|
|
begin
|
|
|
|
din_p1_r1 <= din_p1_r1;
|
|
|
|
din_p1_r2 <= din_p1_r2;
|
|
|
|
din_p1_r3 <= din_p1_r3;
|
|
|
|
din_p1_r4 <= din_p1_r4;
|
|
|
|
din_p1_r5 <= din_p1_r5;
|
|
|
|
din_p1_r6 <= din_p1_r6;
|
|
|
|
end
|
|
|
|
|
|
|
|
wire signed [15:0] IIRin_p0;
|
|
|
|
wire signed [15:0] IIRin_p1;
|
|
|
|
assign IIRin_p0 = din_p0 - din_p1_r1;
|
|
|
|
assign IIRin_p1 = din_p1 - din_p0;
|
|
|
|
|
|
|
|
reg [15:0] IIRin_p0_r1;
|
|
|
|
reg [15:0] IIRin_p0_r2;
|
|
|
|
always @(posedge clk or negedge rstn)begin
|
|
|
|
if(rstn==1'b0)begin
|
|
|
|
IIRin_p0_r1 <= 0;
|
|
|
|
IIRin_p0_r2 <= 0;
|
|
|
|
end
|
|
|
|
else if(en)begin
|
|
|
|
IIRin_p0_r1 <= IIRin_p0;
|
|
|
|
IIRin_p0_r2 <= IIRin_p0_r1;
|
|
|
|
end
|
|
|
|
else begin
|
|
|
|
IIRin_p0_r1 <= IIRin_p0_r1;
|
|
|
|
IIRin_p0_r2 <= IIRin_p0_r2;
|
|
|
|
end
|
|
|
|
end
|
2024-04-16 10:14:19 +08:00
|
|
|
|
2025-02-26 15:50:49 +08:00
|
|
|
reg [15:0] IIRin_p1_r1;
|
|
|
|
reg [15:0] IIRin_p1_r2;
|
|
|
|
always @(posedge clk or negedge rstn)begin
|
|
|
|
if(rstn==1'b0)begin
|
|
|
|
IIRin_p1_r1 <= 0;
|
|
|
|
IIRin_p1_r2 <= 0;
|
|
|
|
end
|
|
|
|
else if(en)begin
|
|
|
|
IIRin_p1_r1 <= IIRin_p1;
|
|
|
|
IIRin_p1_r2 <= IIRin_p1_r1;
|
|
|
|
end
|
|
|
|
else begin
|
|
|
|
IIRin_p1_r1 <= IIRin_p1_r1;
|
|
|
|
IIRin_p1_r2 <= IIRin_p1_r2;
|
|
|
|
end
|
|
|
|
end
|
2024-04-16 10:14:19 +08:00
|
|
|
|
2025-02-26 15:50:49 +08:00
|
|
|
wire signed [15:0] IIRout0_p0;
|
|
|
|
wire signed [15:0] IIRout0_p1;
|
|
|
|
wire signed [15:0] IIRout1_p0;
|
|
|
|
wire signed [15:0] IIRout1_p1;
|
|
|
|
wire signed [15:0] IIRout2_p0;
|
|
|
|
wire signed [15:0] IIRout2_p1;
|
|
|
|
wire signed [15:0] IIRout3_p0;
|
|
|
|
wire signed [15:0] IIRout3_p1;
|
|
|
|
wire signed [15:0] IIRout4_p0;
|
|
|
|
wire signed [15:0] IIRout4_p1;
|
|
|
|
wire signed [15:0] IIRout5_p0;
|
|
|
|
wire signed [15:0] IIRout5_p1;
|
|
|
|
|
|
|
|
IIR_Filter_p2 inst_iir_0_p0 (
|
2024-04-16 10:14:19 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
2024-10-08 11:23:42 +08:00
|
|
|
.en (en ),
|
2025-02-26 15:50:49 +08:00
|
|
|
.din (IIRin_p0 ),
|
|
|
|
.din_r1 (IIRin_p1_r2 ),
|
2024-04-16 10:14:19 +08:00
|
|
|
.a_re (a0_re ),
|
|
|
|
.a_im (a0_im ),
|
2025-02-26 15:50:49 +08:00
|
|
|
.ab_re (ab0_re ),
|
|
|
|
.ab_im (ab0_im ),
|
|
|
|
.bb_re (bb0_re ),
|
|
|
|
.bb_im (bb0_im ),
|
|
|
|
.dout (IIRout0_p0 )
|
2024-04-16 10:14:19 +08:00
|
|
|
);
|
|
|
|
|
2025-02-26 15:50:49 +08:00
|
|
|
IIR_Filter_p2 inst_iir_0_p1 (
|
2024-04-16 10:14:19 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
2024-10-08 11:23:42 +08:00
|
|
|
.en (en ),
|
2025-02-26 15:50:49 +08:00
|
|
|
.din (IIRin_p1 ),
|
|
|
|
.din_r1 (IIRin_p0 ),
|
|
|
|
.a_re (a0_re ),
|
|
|
|
.a_im (a0_im ),
|
|
|
|
.ab_re (ab0_re ),
|
|
|
|
.ab_im (ab0_im ),
|
|
|
|
.bb_re (bb0_re ),
|
|
|
|
.bb_im (bb0_im ),
|
|
|
|
.dout (IIRout0_p1 )
|
|
|
|
);
|
|
|
|
IIR_Filter_p2 inst_iir_1_p0 (
|
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
|
|
|
.din (IIRin_p0 ),
|
|
|
|
.din_r1 (IIRin_p1_r2 ),
|
2024-04-16 10:14:19 +08:00
|
|
|
.a_re (a1_re ),
|
|
|
|
.a_im (a1_im ),
|
2025-02-26 15:50:49 +08:00
|
|
|
.ab_re (ab1_re ),
|
|
|
|
.ab_im (ab1_im ),
|
|
|
|
.bb_re (bb1_re ),
|
|
|
|
.bb_im (bb1_im ),
|
|
|
|
.dout (IIRout1_p0 )
|
2024-04-16 10:14:19 +08:00
|
|
|
);
|
|
|
|
|
2025-02-26 15:50:49 +08:00
|
|
|
IIR_Filter_p2 inst_iir_1_p1 (
|
2024-04-16 10:14:19 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
2024-10-08 11:23:42 +08:00
|
|
|
.en (en ),
|
2025-02-26 15:50:49 +08:00
|
|
|
.din (IIRin_p1 ),
|
|
|
|
.din_r1 (IIRin_p0 ),
|
|
|
|
.a_re (a1_re ),
|
|
|
|
.a_im (a1_im ),
|
|
|
|
.ab_re (ab1_re ),
|
|
|
|
.ab_im (ab1_im ),
|
|
|
|
.bb_re (bb1_re ),
|
|
|
|
.bb_im (bb1_im ),
|
|
|
|
.dout (IIRout1_p1 )
|
|
|
|
);
|
|
|
|
IIR_Filter_p2 inst_iir_2_p0 (
|
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
|
|
|
.din (IIRin_p0 ),
|
|
|
|
.din_r1 (IIRin_p1_r2 ),
|
2024-04-16 10:14:19 +08:00
|
|
|
.a_re (a2_re ),
|
|
|
|
.a_im (a2_im ),
|
2025-02-26 15:50:49 +08:00
|
|
|
.ab_re (ab2_re ),
|
|
|
|
.ab_im (ab2_im ),
|
|
|
|
.bb_re (bb2_re ),
|
|
|
|
.bb_im (bb2_im ),
|
|
|
|
.dout (IIRout2_p0 )
|
2024-04-16 10:14:19 +08:00
|
|
|
);
|
|
|
|
|
2025-02-26 15:50:49 +08:00
|
|
|
IIR_Filter_p2 inst_iir_2_p1 (
|
2024-04-16 10:14:19 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
2024-10-08 11:23:42 +08:00
|
|
|
.en (en ),
|
2025-02-26 15:50:49 +08:00
|
|
|
.din (IIRin_p1 ),
|
|
|
|
.din_r1 (IIRin_p0 ),
|
|
|
|
.a_re (a2_re ),
|
|
|
|
.a_im (a2_im ),
|
|
|
|
.ab_re (ab2_re ),
|
|
|
|
.ab_im (ab2_im ),
|
|
|
|
.bb_re (bb2_re ),
|
|
|
|
.bb_im (bb2_im ),
|
|
|
|
.dout (IIRout2_p1 )
|
|
|
|
);
|
|
|
|
IIR_Filter_p2 inst_iir_3_p0 (
|
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
|
|
|
.din (IIRin_p0 ),
|
|
|
|
.din_r1 (IIRin_p1_r2 ),
|
2024-04-16 10:14:19 +08:00
|
|
|
.a_re (a3_re ),
|
|
|
|
.a_im (a3_im ),
|
2025-02-26 15:50:49 +08:00
|
|
|
.ab_re (ab3_re ),
|
|
|
|
.ab_im (ab3_im ),
|
|
|
|
.bb_re (bb3_re ),
|
|
|
|
.bb_im (bb3_im ),
|
|
|
|
.dout (IIRout3_p0 )
|
2024-04-16 10:14:19 +08:00
|
|
|
);
|
|
|
|
|
2025-02-26 15:50:49 +08:00
|
|
|
IIR_Filter_p2 inst_iir_3_p1 (
|
2024-04-16 10:14:19 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
2024-10-08 11:23:42 +08:00
|
|
|
.en (en ),
|
2025-02-26 15:50:49 +08:00
|
|
|
.din (IIRin_p1 ),
|
|
|
|
.din_r1 (IIRin_p0 ),
|
|
|
|
.a_re (a3_re ),
|
|
|
|
.a_im (a3_im ),
|
|
|
|
.ab_re (ab3_re ),
|
|
|
|
.ab_im (ab3_im ),
|
|
|
|
.bb_re (bb3_re ),
|
|
|
|
.bb_im (bb3_im ),
|
|
|
|
.dout (IIRout3_p1 )
|
|
|
|
);
|
|
|
|
IIR_Filter_p2 inst_iir_4_p0 (
|
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
|
|
|
.din (IIRin_p0 ),
|
|
|
|
.din_r1 (IIRin_p1_r2 ),
|
|
|
|
.a_re (a4_re ),
|
|
|
|
.a_im (a4_im ),
|
|
|
|
.ab_re (ab4_re ),
|
|
|
|
.ab_im (ab4_im ),
|
|
|
|
.bb_re (bb4_re ),
|
|
|
|
.bb_im (bb4_im ),
|
|
|
|
.dout (IIRout4_p0 )
|
|
|
|
);
|
|
|
|
|
|
|
|
IIR_Filter_p2 inst_iir_4_p1 (
|
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
|
|
|
.din (IIRin_p1 ),
|
|
|
|
.din_r1 (IIRin_p0 ),
|
2024-04-16 10:14:19 +08:00
|
|
|
.a_re (a4_re ),
|
|
|
|
.a_im (a4_im ),
|
2025-02-26 15:50:49 +08:00
|
|
|
.ab_re (ab4_re ),
|
|
|
|
.ab_im (ab4_im ),
|
|
|
|
.bb_re (bb4_re ),
|
|
|
|
.bb_im (bb4_im ),
|
|
|
|
.dout (IIRout4_p1 )
|
|
|
|
);
|
|
|
|
IIR_Filter_p2 inst_iir_5_p0 (
|
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
|
|
|
.en (en ),
|
|
|
|
.din (IIRin_p0 ),
|
|
|
|
.din_r1 (IIRin_p1_r2 ),
|
|
|
|
.a_re (a5_re ),
|
|
|
|
.a_im (a5_im ),
|
|
|
|
.ab_re (ab5_re ),
|
|
|
|
.ab_im (ab5_im ),
|
|
|
|
.bb_re (bb5_re ),
|
|
|
|
.bb_im (bb5_im ),
|
|
|
|
.dout (IIRout5_p0 )
|
2024-04-16 10:14:19 +08:00
|
|
|
);
|
|
|
|
|
2025-02-26 15:50:49 +08:00
|
|
|
IIR_Filter_p2 inst_iir_5_p1 (
|
2024-04-16 10:14:19 +08:00
|
|
|
.clk (clk ),
|
|
|
|
.rstn (rstn ),
|
2024-10-08 11:23:42 +08:00
|
|
|
.en (en ),
|
2025-02-26 15:50:49 +08:00
|
|
|
.din (IIRin_p1 ),
|
|
|
|
.din_r1 (IIRin_p0 ),
|
2024-04-16 10:14:19 +08:00
|
|
|
.a_re (a5_re ),
|
|
|
|
.a_im (a5_im ),
|
2025-02-26 15:50:49 +08:00
|
|
|
.ab_re (ab5_re ),
|
|
|
|
.ab_im (ab5_im ),
|
|
|
|
.bb_re (bb5_re ),
|
|
|
|
.bb_im (bb5_im ),
|
|
|
|
.dout (IIRout5_p1 )
|
2024-04-16 10:14:19 +08:00
|
|
|
);
|
|
|
|
|
2025-02-26 15:50:49 +08:00
|
|
|
wire signed [15:0] dout_p0;
|
|
|
|
wire signed [15:0] dout_p1;
|
|
|
|
assign dout_p0 = din_p0_r5 + IIRout0_p0+ IIRout1_p0+ IIRout2_p0+ IIRout3_p0+ IIRout4_p0+ IIRout5_p0;
|
|
|
|
assign dout_p1 = din_p1_r5 + IIRout0_p1+ IIRout1_p1+ IIRout2_p1+ IIRout3_p1+ IIRout4_p1+ IIRout5_p1;
|
2024-04-16 10:14:19 +08:00
|
|
|
|
|
|
|
always @(posedge clk or negedge rstn)
|
|
|
|
if (!rstn)
|
|
|
|
begin
|
2025-02-26 15:50:49 +08:00
|
|
|
din_p0_r1 <= 'h0;
|
|
|
|
din_p0_r2 <= 'h0;
|
|
|
|
din_p0_r3 <= 'h0;
|
|
|
|
din_p0_r4 <= 'h0;
|
|
|
|
din_p0_r5 <= 'h0;
|
|
|
|
din_p0_r6 <= 'h0;
|
2024-04-16 10:14:19 +08:00
|
|
|
end
|
2024-10-08 11:23:42 +08:00
|
|
|
else if(en)
|
2024-04-16 10:14:19 +08:00
|
|
|
begin
|
2025-02-26 15:50:49 +08:00
|
|
|
din_p0_r1 <= din_p0;
|
|
|
|
din_p0_r2 <= din_p0_r1;
|
|
|
|
din_p0_r3 <= din_p0_r2;
|
|
|
|
din_p0_r4 <= din_p0_r3;
|
|
|
|
din_p0_r5 <= din_p0_r4;
|
|
|
|
din_p0_r6 <= din_p0_r5;
|
2024-04-16 10:14:19 +08:00
|
|
|
end
|
2024-10-08 11:23:42 +08:00
|
|
|
else
|
|
|
|
begin
|
2025-02-26 15:50:49 +08:00
|
|
|
din_p0_r1 <= din_p0;
|
|
|
|
din_p0_r2 <= din_p0_r2;
|
|
|
|
din_p0_r3 <= din_p0_r3;
|
|
|
|
din_p0_r4 <= din_p0_r4;
|
|
|
|
din_p0_r5 <= din_p0_r5;
|
|
|
|
din_p0_r6 <= din_p0_r6;
|
2024-10-08 11:23:42 +08:00
|
|
|
end
|
2024-04-16 10:14:19 +08:00
|
|
|
|
2024-10-08 11:23:42 +08:00
|
|
|
always@(posedge clk or negedge rstn)
|
2024-11-25 23:05:43 +08:00
|
|
|
if (!rstn)begin
|
|
|
|
dout_r <= 'h0;
|
|
|
|
end
|
|
|
|
else if(tc_bypass)begin
|
2025-02-26 15:50:49 +08:00
|
|
|
dout_r <= din;
|
2024-11-25 23:05:43 +08:00
|
|
|
end
|
|
|
|
else begin
|
|
|
|
if(en) begin
|
|
|
|
if(Ysum[16:15]==2'b01)
|
|
|
|
dout_r <= 16'd32767;
|
|
|
|
else if(Ysum[16:15]==2'b10)
|
|
|
|
dout_r <= -16'd32768;
|
|
|
|
else
|
|
|
|
dout_r <= Ysum[15:0];
|
|
|
|
end
|
|
|
|
else begin
|
|
|
|
dout_r <= dout_r;
|
|
|
|
end
|
2024-10-08 11:23:42 +08:00
|
|
|
end
|
2024-11-26 13:34:17 +08:00
|
|
|
|
2024-04-16 10:14:19 +08:00
|
|
|
assign dout = dout_r;
|
2024-11-26 13:34:17 +08:00
|
|
|
|
2024-04-16 10:14:19 +08:00
|
|
|
endmodule
|
|
|
|
|