删除了一些重复的.v文件,使文件夹更简洁
This commit is contained in:
parent
aad2a5dadb
commit
886c84e221
99
DW02_mult.v
99
DW02_mult.v
|
@ -1,99 +0,0 @@
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// This confidential and proprietary software may be used only
|
||||
// as authorized by a licensing agreement from Synopsys Inc.
|
||||
// In the event of publication, the following notice is applicable:
|
||||
//
|
||||
// (C) COPYRIGHT 1994 - 2018 SYNOPSYS INC.
|
||||
// ALL RIGHTS RESERVED
|
||||
//
|
||||
// The entire notice above must be reproduced on all authorized
|
||||
// copies.
|
||||
//
|
||||
// AUTHOR: KB WSFDB June 30, 1994
|
||||
//
|
||||
// VERSION: Simulation Architecture
|
||||
//
|
||||
// DesignWare_version: 714fe7a9
|
||||
// DesignWare_release: O-2018.06-DWBB_201806.3
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------------
|
||||
//
|
||||
// ABSTRACT: Multiplier
|
||||
// A_width-Bits * B_width-Bits => A_width+B_width Bits
|
||||
// Operands A and B can be either both signed (two's complement) or
|
||||
// both unsigned numbers. TC determines the coding of the input operands.
|
||||
// ie. TC = '1' => signed multiplication
|
||||
// TC = '0' => unsigned multiplication
|
||||
//
|
||||
// FIXED: by replacement with A tested working version
|
||||
// that not only doesn't multiplies right it does it
|
||||
// two times faster!
|
||||
// RPH 07/17/2002
|
||||
// Rewrote to comply with the new guidelines
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
module DW02_mult(A,B,TC,PRODUCT);
|
||||
parameter integer A_width = 8;
|
||||
parameter integer B_width = 8;
|
||||
|
||||
input [A_width-1:0] A;
|
||||
input [B_width-1:0] B;
|
||||
input TC;
|
||||
output [A_width+B_width-1:0] PRODUCT;
|
||||
|
||||
wire [A_width+B_width-1:0] PRODUCT;
|
||||
|
||||
wire [A_width-1:0] temp_a;
|
||||
wire [B_width-1:0] temp_b;
|
||||
wire [A_width+B_width-2:0] long_temp1,long_temp2;
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Parameter legality check
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
initial begin : parameter_check
|
||||
integer param_err_flg;
|
||||
|
||||
param_err_flg = 0;
|
||||
|
||||
|
||||
if (A_width < 1) begin
|
||||
param_err_flg = 1;
|
||||
$display(
|
||||
"ERROR: %m :\n Invalid value (%d) for parameter A_width (lower bound: 1)",
|
||||
A_width );
|
||||
end
|
||||
|
||||
if (B_width < 1) begin
|
||||
param_err_flg = 1;
|
||||
$display(
|
||||
"ERROR: %m :\n Invalid value (%d) for parameter B_width (lower bound: 1)",
|
||||
B_width );
|
||||
end
|
||||
|
||||
if ( param_err_flg == 1) begin
|
||||
$display(
|
||||
"%m :\n Simulation aborted due to invalid parameter value(s)");
|
||||
$finish;
|
||||
end
|
||||
|
||||
end // parameter_check
|
||||
|
||||
|
||||
assign temp_a = (A[A_width-1])? (~A + 1'b1) : A;
|
||||
assign temp_b = (B[B_width-1])? (~B + 1'b1) : B;
|
||||
|
||||
assign long_temp1 = temp_a * temp_b;
|
||||
assign long_temp2 = ~(long_temp1 - 1'b1);
|
||||
|
||||
assign PRODUCT = ((^(A ^ A) !== 1'b0) || (^(B ^ B) !== 1'b0) || (^(TC ^ TC) !== 1'b0) ) ? {A_width+B_width{1'bX}} :
|
||||
(TC)? (((A[A_width-1] ^ B[B_width-1]) && (|long_temp1))?
|
||||
{1'b1,long_temp2} : {1'b0,long_temp1})
|
||||
: A * B;
|
||||
endmodule
|
||||
|
||||
|
103
IIR_Filter.v
103
IIR_Filter.v
|
@ -1,103 +0,0 @@
|
|||
module IIR_Filter (
|
||||
clk,
|
||||
rstn,
|
||||
din_re,
|
||||
din_im,
|
||||
a_re,
|
||||
a_im,
|
||||
b_re,
|
||||
b_im,
|
||||
dout
|
||||
);
|
||||
|
||||
input rstn;
|
||||
input clk;
|
||||
input signed [15:0] din_re;
|
||||
input signed [15:0] din_im;
|
||||
input signed [31:0] a_re;
|
||||
input signed [31:0] a_im;
|
||||
input signed [31:0] b_re;
|
||||
input signed [31:0] b_im;
|
||||
|
||||
output signed [15:0] dout;
|
||||
|
||||
wire signed [48:0] mult_x_re;
|
||||
wire signed [48:0] mult_x_im;
|
||||
wire signed [54:0] mult_y_re;
|
||||
wire signed [54:0] mult_y_im;
|
||||
wire signed [15:0] dout_t;
|
||||
wire signed [50:0] Ysum_re;
|
||||
wire signed [50:0] Ysum_im;
|
||||
|
||||
reg signed [15:0] dout_r1;
|
||||
reg signed [50:0] YsumR_re;
|
||||
reg signed [50:0] YsumR_im;
|
||||
reg signed [50:0] YsumR1_re;
|
||||
reg signed [50:0] YsumR1_im;
|
||||
|
||||
|
||||
|
||||
mult_C #(16,16,32,32) inst_c1 ( .a (din_re ),
|
||||
.b (din_im ),
|
||||
.c (a_re ),
|
||||
.d (a_im ),
|
||||
.Re (mult_x_re ),
|
||||
.Im (mult_x_im )
|
||||
);
|
||||
|
||||
|
||||
mult_C #(32,32,32,32) inst_c2 ( .a (YsumR_re ),
|
||||
.b (YsumR_im ),
|
||||
.c (b_re ),
|
||||
.d (b_im ),
|
||||
.Re (mult_y_re ),
|
||||
.Im (mult_y_im )
|
||||
);
|
||||
|
||||
|
||||
assign Ysum_re = mult_x_re - mult_y_re;
|
||||
assign Ysum_im = mult_x_im - mult_y_im;
|
||||
|
||||
|
||||
always @(posedge clk or negedge rstn)
|
||||
if (!rstn)
|
||||
begin
|
||||
YsumR_re <= 'h0;
|
||||
YsumR_im <= 'h0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
YsumR_re <= {{20{Ysum_re[50]}},Ysum_re[50:20]} + Ysum_re[50];
|
||||
YsumR_im <= {{20{Ysum_im[50]}},Ysum_im[50:20]} + Ysum_im[50];
|
||||
end
|
||||
|
||||
always @(posedge clk or negedge rstn)
|
||||
if (!rstn)
|
||||
begin
|
||||
YsumR1_re <= 'h0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
YsumR1_re <= {{16{YsumR_re[50]}},YsumR_re[50:16]};
|
||||
end
|
||||
|
||||
always @(posedge clk or negedge rstn)
|
||||
if (!rstn)
|
||||
begin
|
||||
dout_r1 <= 'h0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
|
||||
if(YsumR1_re[16:15]==2'b01)
|
||||
dout_r1 <= 16'd32767;
|
||||
else if(YsumR1_re[16:15]==2'b10)
|
||||
dout_r1 <= -16'd32768;
|
||||
else
|
||||
dout_r1 <= YsumR1_re[15:0];
|
||||
|
||||
end
|
||||
|
||||
assign dout = dout_r1;
|
||||
|
||||
endmodule
|
209
TailCorr_top.v
209
TailCorr_top.v
|
@ -1,209 +0,0 @@
|
|||
module TailCorr_top
|
||||
|
||||
(
|
||||
clk,
|
||||
rstn,
|
||||
din_re,
|
||||
din_im,
|
||||
a0_re,
|
||||
a0_im,
|
||||
b0_re,
|
||||
b0_im,
|
||||
a1_re,
|
||||
a1_im,
|
||||
b1_re,
|
||||
b1_im,
|
||||
a2_re,
|
||||
a2_im,
|
||||
b2_re,
|
||||
b2_im,
|
||||
a3_re,
|
||||
a3_im,
|
||||
b3_re,
|
||||
b3_im,
|
||||
a4_re,
|
||||
a4_im,
|
||||
b4_re,
|
||||
b4_im,
|
||||
a5_re,
|
||||
a5_im,
|
||||
b5_re,
|
||||
b5_im,
|
||||
dout
|
||||
);
|
||||
|
||||
input rstn;
|
||||
input clk;
|
||||
input signed [15:0] din_re;
|
||||
input signed [15:0] din_im;
|
||||
input signed [31:0] a0_re;
|
||||
input signed [31:0] a0_im;
|
||||
input signed [31:0] b0_re;
|
||||
input signed [31:0] b0_im;
|
||||
input signed [31:0] a1_re;
|
||||
input signed [31:0] a1_im;
|
||||
input signed [31:0] b1_re;
|
||||
input signed [31:0] b1_im;
|
||||
input signed [31:0] a2_re;
|
||||
input signed [31:0] a2_im;
|
||||
input signed [31:0] b2_re;
|
||||
input signed [31:0] b2_im;
|
||||
input signed [31:0] a3_re;
|
||||
input signed [31:0] a3_im;
|
||||
input signed [31:0] b3_re;
|
||||
input signed [31:0] b3_im;
|
||||
input signed [31:0] a4_re;
|
||||
input signed [31:0] a4_im;
|
||||
input signed [31:0] b4_re;
|
||||
input signed [31:0] b4_im;
|
||||
input signed [31:0] a5_re;
|
||||
input signed [31:0] a5_im;
|
||||
input signed [31:0] b5_re;
|
||||
input signed [31:0] b5_im;
|
||||
|
||||
output signed [15:0] dout;
|
||||
|
||||
|
||||
wire signed [15:0] IIRin_re;
|
||||
wire signed [15:0] IIRin_im;
|
||||
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] din_r0;
|
||||
reg signed [15:0] din_r1;
|
||||
reg signed [15:0] din_r2;
|
||||
reg signed [15:0] din_r3;
|
||||
reg signed [15:0] din_r4;
|
||||
reg signed [15:0] dout_r;
|
||||
|
||||
diff inst_diffRe
|
||||
(
|
||||
.clk (clk ),
|
||||
.rstn (rstn ),
|
||||
.din (din_re ),
|
||||
.dout (IIRin_re )
|
||||
);
|
||||
|
||||
diff inst_diffIm
|
||||
(
|
||||
.clk (clk ),
|
||||
.rstn (rstn ),
|
||||
.din (din_im ),
|
||||
.dout (IIRin_im )
|
||||
);
|
||||
|
||||
IIR_Filter inst_iir_0 (
|
||||
.clk (clk ),
|
||||
.rstn (rstn ),
|
||||
.din_re (IIRin_re ),
|
||||
.din_im (IIRin_im ),
|
||||
.a_re (a0_re ),
|
||||
.a_im (a0_im ),
|
||||
.b_re (b0_re ),
|
||||
.b_im (b0_im ),
|
||||
.dout (dout_0 )
|
||||
);
|
||||
|
||||
IIR_Filter inst_iir_1 (
|
||||
.clk (clk ),
|
||||
.rstn (rstn ),
|
||||
.din_re (IIRin_re ),
|
||||
.din_im (IIRin_im ),
|
||||
.a_re (a1_re ),
|
||||
.a_im (a1_im ),
|
||||
.b_re (b1_re ),
|
||||
.b_im (b1_im ),
|
||||
.dout (dout_1 )
|
||||
);
|
||||
|
||||
IIR_Filter inst_iir_2 (
|
||||
.clk (clk ),
|
||||
.rstn (rstn ),
|
||||
.din_re (IIRin_re ),
|
||||
.din_im (IIRin_im ),
|
||||
.a_re (a2_re ),
|
||||
.a_im (a2_im ),
|
||||
.b_re (b2_re ),
|
||||
.b_im (b2_im ),
|
||||
.dout (dout_2 )
|
||||
);
|
||||
|
||||
IIR_Filter inst_iir_3 (
|
||||
.clk (clk ),
|
||||
.rstn (rstn ),
|
||||
.din_re (IIRin_re ),
|
||||
.din_im (IIRin_im ),
|
||||
.a_re (a3_re ),
|
||||
.a_im (a3_im ),
|
||||
.b_re (b3_re ),
|
||||
.b_im (b3_im ),
|
||||
.dout (dout_3 )
|
||||
);
|
||||
|
||||
IIR_Filter inst_iir_4 (
|
||||
.clk (clk ),
|
||||
.rstn (rstn ),
|
||||
.din_re (IIRin_re ),
|
||||
.din_im (IIRin_im ),
|
||||
.a_re (a4_re ),
|
||||
.a_im (a4_im ),
|
||||
.b_re (b4_re ),
|
||||
.b_im (b4_im ),
|
||||
.dout (dout_4 )
|
||||
);
|
||||
|
||||
IIR_Filter inst_iir_5 (
|
||||
.clk (clk ),
|
||||
.rstn (rstn ),
|
||||
.din_re (IIRin_re ),
|
||||
.din_im (IIRin_im ),
|
||||
.a_re (a5_re ),
|
||||
.a_im (a5_im ),
|
||||
.b_re (b5_re ),
|
||||
.b_im (b5_im ),
|
||||
.dout (dout_5 )
|
||||
);
|
||||
|
||||
|
||||
always @(posedge clk or negedge rstn)
|
||||
if (!rstn)
|
||||
begin
|
||||
din_r0 <= 'h0;
|
||||
din_r1 <= 'h0;
|
||||
din_r2 <= 'h0;
|
||||
din_r3 <= 'h0;
|
||||
din_r4 <= 'h0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
din_r0 <= din_re;
|
||||
din_r1 <= din_r0;
|
||||
din_r2 <= din_r1;
|
||||
din_r3 <= din_r2;
|
||||
din_r4 <= din_r3;
|
||||
end
|
||||
|
||||
assign Ysum = dout_0 + dout_1 + dout_2 + dout_3 + dout_4 + dout_5 + din_r4;
|
||||
|
||||
always@(posedge clk or negedge rstn)
|
||||
if (!rstn)
|
||||
begin
|
||||
dout_r <= 'h0;
|
||||
end
|
||||
else
|
||||
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
|
||||
assign dout = dout_r;
|
||||
endmodule
|
||||
|
37
diff.v
37
diff.v
|
@ -1,37 +0,0 @@
|
|||
module diff(
|
||||
clk,
|
||||
rstn,
|
||||
din,
|
||||
dout
|
||||
);
|
||||
|
||||
|
||||
input rstn;
|
||||
input clk;
|
||||
input signed [15:0] din;
|
||||
|
||||
output signed [15:0] dout;
|
||||
|
||||
|
||||
reg [15:0] din_r;
|
||||
reg [15:0] din_r1;
|
||||
reg [15:0] out_r;
|
||||
|
||||
always@(posedge clk or negedge rstn)
|
||||
if(!rstn)
|
||||
begin
|
||||
din_r <= 16'd0;
|
||||
din_r1 <= 16'd0;
|
||||
|
||||
out_r <= 16'd0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
din_r <= din;
|
||||
din_r1 <= din_r;
|
||||
|
||||
out_r <= din_r - din_r1;
|
||||
end
|
||||
assign dout = out_r;
|
||||
|
||||
endmodule
|
53
mulc_C.v
53
mulc_C.v
|
@ -1,53 +0,0 @@
|
|||
module mult_C(
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
d,
|
||||
Re,
|
||||
Im
|
||||
);
|
||||
|
||||
parameter integer A_width = 8;
|
||||
parameter integer B_width = 8;
|
||||
parameter integer C_width = 8;
|
||||
parameter integer D_width = 8;
|
||||
|
||||
input signed [A_width-1:0] a;
|
||||
input signed [B_width-1:0] b;
|
||||
input signed [C_width-1:0] c;
|
||||
input signed [D_width-1:0] d;
|
||||
|
||||
output signed [A_width+C_width:0] Re;
|
||||
output signed [A_width+D_width:0] Im;
|
||||
|
||||
wire signed [A_width+C_width-1:0] ac;
|
||||
wire signed [B_width+D_width-1:0] bd;
|
||||
wire signed [A_width+D_width-1:0] ad;
|
||||
wire signed [B_width+C_width-1:0] bc;
|
||||
|
||||
DW02_mult #(A_width,C_width) inst_c1( .A (a ),
|
||||
.B (c ),
|
||||
.TC (1'b1 ),
|
||||
.PRODUCT (ac )
|
||||
);
|
||||
|
||||
DW02_mult #(B_width,D_width) inst_c2( .A (b ),
|
||||
.B (d ),
|
||||
.TC (1'b1 ),
|
||||
.PRODUCT (bd )
|
||||
);
|
||||
|
||||
DW02_mult #(A_width,D_width) inst_c3( .A (a ),
|
||||
.B (d ),
|
||||
.TC (1'b1 ),
|
||||
.PRODUCT (ad )
|
||||
);
|
||||
DW02_mult #(B_width,C_width) inst_c4( .A (b ),
|
||||
.B (c ),
|
||||
.TC (1'b1 ),
|
||||
.PRODUCT (bc )
|
||||
);
|
||||
assign Re = ac - bd;
|
||||
assign Im = ad + bc;
|
||||
|
||||
endmodule
|
Loading…
Reference in New Issue