parent
c2e7492c21
commit
bcd12f7063
|
@ -1,36 +1,3 @@
|
||||||
//+FHDR--------------------------------------------------------------------------------------------------------
|
|
||||||
// Company:
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------
|
|
||||||
// File Name : mult_C.v
|
|
||||||
// Department :
|
|
||||||
// Author : thfu
|
|
||||||
// Author's Tel :
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------
|
|
||||||
// Relese History
|
|
||||||
// Version Date Author Description
|
|
||||||
// 0.1 2024-05-28 thfu
|
|
||||||
//2024-05-28 10:22:18
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------
|
|
||||||
// Keywords :
|
|
||||||
//
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------
|
|
||||||
// Parameter
|
|
||||||
//
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------
|
|
||||||
// Purpose :
|
|
||||||
//
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------
|
|
||||||
// Target Device:
|
|
||||||
// Tool versions:
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------
|
|
||||||
// Reuse Issues
|
|
||||||
// Reset Strategy:
|
|
||||||
// Clock Domains:
|
|
||||||
// Critical Timing:
|
|
||||||
// Asynchronous I/F:
|
|
||||||
// Synthesizable (y/n):
|
|
||||||
// Other:
|
|
||||||
//-FHDR--------------------------------------------------------------------------------------------------------
|
|
||||||
module mult_C #(
|
module mult_C #(
|
||||||
parameter integer A_width = 8
|
parameter integer A_width = 8
|
||||||
,parameter integer B_width = 8
|
,parameter integer B_width = 8
|
||||||
|
@ -72,6 +39,13 @@ wire signed [A_width+D_width :0] Im_tmp;
|
||||||
wire signed [o_width-1 :0] Re_trunc;
|
wire signed [o_width-1 :0] Re_trunc;
|
||||||
wire signed [o_width-1 :0] Im_trunc;
|
wire signed [o_width-1 :0] Im_trunc;
|
||||||
|
|
||||||
|
wire signed [A_width:0] sum_ab;
|
||||||
|
wire signed [C_width:0] sum_cd;
|
||||||
|
wire signed [A_width+C_width+1:0] product_of_sums;
|
||||||
|
|
||||||
|
assign sum_ab = a + b;
|
||||||
|
assign sum_cd = c + d;
|
||||||
|
|
||||||
|
|
||||||
DW02_mult #(A_width,C_width) inst_c1( .A (a ),
|
DW02_mult #(A_width,C_width) inst_c1( .A (a ),
|
||||||
.B (c ),
|
.B (c ),
|
||||||
|
@ -85,19 +59,14 @@ DW02_mult #(B_width,D_width) inst_c2( .A (b
|
||||||
.PRODUCT (bd )
|
.PRODUCT (bd )
|
||||||
);
|
);
|
||||||
|
|
||||||
DW02_mult #(A_width,D_width) inst_c3( .A (a ),
|
DW02_mult #(A_width+1,D_width+1) inst_c3( .A (sum_ab ),
|
||||||
.B (d ),
|
.B (sum_cd ),
|
||||||
.TC (1'b1 ),
|
.TC (1'b1 ),
|
||||||
.PRODUCT (ad )
|
.PRODUCT (product_of_sums)
|
||||||
);
|
|
||||||
DW02_mult #(B_width,C_width) inst_c4( .A (b ),
|
|
||||||
.B (c ),
|
|
||||||
.TC (1'b1 ),
|
|
||||||
.PRODUCT (bc )
|
|
||||||
);
|
);
|
||||||
|
|
||||||
assign Re_tmp = ac - bd;
|
assign Re_tmp = ac - bd;
|
||||||
assign Im_tmp = ad + bc;
|
assign Im_tmp = product_of_sums - ac - bd;
|
||||||
|
|
||||||
trunc #(
|
trunc #(
|
||||||
.diw (A_width+C_width+1 )
|
.diw (A_width+C_width+1 )
|
||||||
|
@ -114,4 +83,4 @@ trunc #(
|
||||||
assign Re = Re_trunc;
|
assign Re = Re_trunc;
|
||||||
assign Im = Im_trunc;
|
assign Im = Im_trunc;
|
||||||
|
|
||||||
endmodule
|
endmodule
|
Loading…
Reference in New Issue