149 lines
4.1 KiB
Verilog

//--------------------------------------------------------------------------------------------
//
// Generated by X-HDL VHDL Translator - Version 2.0.0 Feb. 1, 2011
// ?? 3? 29 2020 15:44:24
//
// Input file :
// Component name : multiplier
// Author :
// Company :
//
// Description :
//
//
//--------------------------------------------------------------------------------------------
module multiplier(CLK, RESET, input1, input2, output_xhdl0);
input CLK;
input RESET;
input [7:0] input1;
input [7:0] input2;
output [7:0] output_xhdl0;
reg [7:0] output_xhdl0;
reg [15:0] out_temp;
reg [15:0] input1_buf;
reg [15:0] part0;
reg [15:0] part1;
reg [15:0] part2;
reg [15:0] part3;
reg [15:0] part4;
reg [15:0] part5;
reg [15:0] part6;
reg [15:0] part7;
always @(posedge CLK or posedge RESET)
if (RESET == 1'b1)
begin
out_temp <= {16{1'b0}};
output_xhdl0 <= {8{1'b0}};
input1_buf <= {16{1'b0}};
part0 <= {16{1'b0}};
part1 <= {16{1'b0}};
part2 <= {16{1'b0}};
part3 <= {16{1'b0}};
part4 <= {16{1'b0}};
part5 <= {16{1'b0}};
part6 <= {16{1'b0}};
part7 <= {16{1'b0}};
end
else
begin
input1_buf <= {input1[7], input1[7], input1[7], input1[7], input1[7], input1[7], input1[7], input1[7], signed_xhdl1(input1)};
if (input2[0] == 1'b1)
part0 <= -(input1_buf);
else
part0 <= {16{1'b0}};
if (input2[1] == 1'b1)
begin
if (input2[0] == 1'b1)
part1 <= {16{1'b0}};
else
part1 <= -(input1_buf);
end
else
if (input2[0] == 1'b1)
part1 <= input1_buf;
else
part1 <= {16{1'b0}};
if (input2[2] == 1'b1)
begin
if (input2[1] == 1'b1)
part2 <= {16{1'b0}};
else
part2 <= -(input1_buf);
end
else
if (input2[1] == 1'b1)
part2 <= input1_buf;
else
part2 <= {16{1'b0}};
if (input2[3] == 1'b1)
begin
if (input2[2] == 1'b1)
part3 <= {16{1'b0}};
else
part3 <= -(input1_buf);
end
else
if (input2[2] == 1'b1)
part3 <= input1_buf;
else
part3 <= {16{1'b0}};
if (input2[4] == 1'b1)
begin
if (input2[3] == 1'b1)
part4 <= {16{1'b0}};
else
part4 <= -(input1_buf);
end
else
if (input2[3] == 1'b1)
part4 <= input1_buf;
else
part4 <= {16{1'b0}};
if (input2[5] == 1'b1)
begin
if (input2[4] == 1'b1)
part5 <= {16{1'b0}};
else
part5 <= -(input1_buf);
end
else
if (input2[4] == 1'b1)
part5 <= input1_buf;
else
part5 <= {16{1'b0}};
if (input2[6] == 1'b1)
begin
if (input2[5] == 1'b1)
part6 <= {16{1'b0}};
else
part6 <= -(input1_buf);
end
else
if (input2[5] == 1'b1)
part6 <= input1_buf;
else
part6 <= {16{1'b0}};
if (input2[7] == 1'b1)
begin
if (input2[6] == 1'b1)
part7 <= {16{1'b0}};
else
part7 <= -(input1_buf);
end
else
if (input2[6] == 1'b1)
part7 <= input1_buf;
else
part7 <= {16{1'b0}};
out_temp <= part0 + ({part1[14:0], 1'b0}) + ({part2[13:0], 2'b00}) + ({part3[12:0], 3'b000}) + ({part4[11:0], 4'b0000}) + ({part5[10:0], 5'b00000}) + ({part6[9:0], 6'b000000}) + ({part7[8:0], 7'b0000000});
output_xhdl0 <= out_temp[15:8];
end
endmodule