|
@@ -27,11 +27,11 @@ module fp_product #(parameter N=16, M=4)(input_a, input_b, output_z, clk, reset)
|
|
|
begin
|
|
begin
|
|
|
// Unpacking the inputs
|
|
// Unpacking the inputs
|
|
|
a_s0 <= input_a[N-1];
|
|
a_s0 <= input_a[N-1];
|
|
|
- a_e0 <= input_a[N-2:N-2-M];
|
|
|
|
|
|
|
+ a_e0 <= input_a[N-2:N-2-M] - (1<<M);
|
|
|
a_m0 <= input_a[N-3-M:0];
|
|
a_m0 <= input_a[N-3-M:0];
|
|
|
|
|
|
|
|
b_s0 <= input_b[N-1];
|
|
b_s0 <= input_b[N-1];
|
|
|
- b_e0 <= input_b[N-2:N-2-M];
|
|
|
|
|
|
|
+ b_e0 <= input_b[N-2:N-2-M] - (1<<M);
|
|
|
b_m0 <= input_b[N-3-M:0];
|
|
b_m0 <= input_b[N-3-M:0];
|
|
|
|
|
|
|
|
// Untouched pipelined registers
|
|
// Untouched pipelined registers
|
|
@@ -158,7 +158,7 @@ module fp_product #(parameter N=16, M=4)(input_a, input_b, output_z, clk, reset)
|
|
|
|
|
|
|
|
// Packing the output
|
|
// Packing the output
|
|
|
output_z[N-1] <= z_s3;
|
|
output_z[N-1] <= z_s3;
|
|
|
- output_z[N-2:N-2-M] <= z_e3;
|
|
|
|
|
|
|
+ output_z[N-2:N-2-M] <= z_e3+(1<<M);
|
|
|
output_z[N-3-M:0] <= z_m3;
|
|
output_z[N-3-M:0] <= z_m3;
|
|
|
end
|
|
end
|
|
|
|
|
|