Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.
21618 Discussions

Floating point division

Altera_Forum
Honored Contributor II
1,882 Views

Hi, 

does anyone has a code for floating point division? 

 

i tried using the megafunction tool for division but it keeps giving me error when i run simulation.
0 Kudos
9 Replies
Altera_Forum
Honored Contributor II
1,163 Views

how about your code?

0 Kudos
Altera_Forum
Honored Contributor II
1,163 Views

Floating point division in firmware is no trivial task. You could always offload that problem to a NIOS, but that seems like overkill. Are you sure you can't get by with fixed point or avoiding division entirely?

0 Kudos
Altera_Forum
Honored Contributor II
1,163 Views

You could try using integers.  

 

Multiply the FP numbers by a scalar to convert it to a integer, divide the integers, then convert back to FP or divide down to get just the integer result of the multiplication.
0 Kudos
Altera_Forum
Honored Contributor II
1,163 Views

 

--- Quote Start ---  

You could try using integers.  

 

Multiply the FP numbers by a scalar to convert it to a integer, divide the integers, then convert back to FP or divide down to get just the integer result of the multiplication. 

--- Quote End ---  

 

 

Floating to integer conversion is not as simple as "multiply by a scaler", you need to do a full conversion. You may be thinking of fixed point, which is just integer arithmatic anyway.
0 Kudos
Altera_Forum
Honored Contributor II
1,163 Views

FP division is probably simpler than integer division - especially if you aren't worried about underflow, overflow, infinities, NaNs and denormalised small values. 

Extract and subtract the exponents and then divide the mantissa's - which both start with a 1.
0 Kudos
Altera_Forum
Honored Contributor II
1,163 Views

Hi, 

 

For a 32 bit floating point number, i would like to know the split of signbit,exponent,mantissa.
0 Kudos
Altera_Forum
Honored Contributor II
1,163 Views

The format is explained in the FP MegaFunction user manual. Or google for IEEE 754.

0 Kudos
Altera_Forum
Honored Contributor II
1,163 Views

Sign bit : Exponent (8 bits) : Mantissa (23 bits) 

 

Keep in mind that the mantissa has the implied '1' that DSL referred to which isn't stored as part of the manatissa field. 

 

Back when I was working on floating point stuff I found this webpage very handy: http://www.h-schmidt.net/floatconverter/ieee754.html 

 

So DSL said to subtract bits [30:23] and divide bits {1'b1, [22:0]}. For the sign bit you could just XOR those bits since both positive or both negative should result in a positive result (sign bit = 0).
0 Kudos
Altera_Forum
Honored Contributor II
1,163 Views

You are then dividing two values between 0.5 and 1.999999999 - so the exponent may need changing by 1 (or 2?) in order to normalise the resultant mantissa. 

You should also worry aout the rounding rules (round to even is normally specified by default).
0 Kudos
Reply