Line 60... |
Line 60... |
|
|
wire [size_exponent - 1 : 0] exp_difference;
|
wire [size_exponent - 1 : 0] exp_difference;
|
wire [size_exponent : 0] exp_inter;
|
wire [size_exponent : 0] exp_inter;
|
wire eff_op;
|
wire eff_op;
|
|
|
wire [size_exception_field - 1 : 0] set_b_sp_case, resulted_exception_field;
|
wire [size_exception_field - 1 : 0] sp_case_o, resulted_exception_field;
|
wire resulted_sign;
|
wire resulted_sign;
|
wire swap;
|
wire swap;
|
|
|
wire zero_flag;
|
wire zero_flag;
|
|
|
Line 236... |
Line 236... |
assign unadjusted_exponentFP = exp_inter - adjust_mantissaFP;
|
assign unadjusted_exponentFP = exp_inter - adjust_mantissaFP;
|
assign resulted_e_oFP = do_conversion? max_entityFP[size_mantissa+size_exponent-2 : size_mantissa-1] : unadjusted_exponentFP + 1'b1;
|
assign resulted_e_oFP = do_conversion? max_entityFP[size_mantissa+size_exponent-2 : size_mantissa-1] : unadjusted_exponentFP + 1'b1;
|
//-------------------------------------------------------- end FarPath addition and conversion
|
//-------------------------------------------------------- end FarPath addition and conversion
|
|
|
|
|
assign set_b_sp_case = do_conversion? zero : sp_case_b_number;
|
|
|
|
//compute exception_field
|
//compute exception_field
|
special_cases #( .size_exception_field(size_exception_field),
|
special_cases #( .size_exception_field(size_exception_field),
|
.zero(zero),
|
.zero(zero),
|
.normal_number(normal_number),
|
.normal_number(normal_number),
|
.infinity(infinity),
|
.infinity(infinity),
|
.NaN(NaN))
|
.NaN(NaN))
|
special_cases_instance( .sp_case_a_number(sp_case_a_number),
|
special_cases_instance( .sp_case_a_number(sp_case_a_number),
|
.sp_case_b_number(set_b_sp_case),
|
.sp_case_b_number(sp_case_b_number),
|
.sp_case_result_o(resulted_exception_field));
|
.sp_case_result_o(sp_case_o));
|
|
|
|
assign resulted_exception_field = do_conversion? sp_case_a_number : sp_case_o;
|
|
|
//set zero_flag in case of equal numbers
|
//set zero_flag in case of equal numbers
|
assign zero_flag = ((exp_difference > 1 | !eff_op) & conversion != int_to_FP)? ~(|resulted_m_oFP) : ~(|resulted_m_oCP);
|
assign zero_flag = ((exp_difference > 1 | !eff_op) & conversion != int_to_FP)?
|
|
~((|{resulted_m_oFP, sp_case_o[1]}) & (|sp_case_o)) :
|
|
~((|{resulted_m_oCP, sp_case_o[1]}) & (|sp_case_o));
|
|
|
assign resulted_sign = do_conversion? s_a_number :
|
assign resulted_sign = do_conversion? s_a_number :
|
((exp_difference > 1 | !eff_op)? (!a_greater_exponent[size_exponent]? s_a_number : (eff_op? ~s_b_number : s_b_number)) :
|
((exp_difference > 1 | !eff_op)? (!a_greater_exponent[size_exponent]? s_a_number : (eff_op? ~s_b_number : s_b_number)) :
|
(ovfCP ^ swap));
|
(ovfCP ^ swap));
|
|
|