Floating Point Unit - An IEEE 754 Compliant

Floating Point Unit - An IEEE 754 Compliant


Category: Coprocessor, Crypto Core

Created: September 25, 2001

Updated: January 27, 2020

Language: Verilog

Other project properties

Development Status: Stable

WishBone compliant: No

WishBone version: n/a

License: n/a


This is a single precision floating point unit. It is fully IEEE 754 compliant. It can currently perform Add/Sub, Mul and Divide operations, as well as integer to floating point and floating point to integer conversions. It supports four rounding modes: Round to Nearest Even, Round to Zero, Round to +INF and Round to -INF.

There is now also a separate FP compare unit. It is located in the fpu/fcmp directory.


- A 100% IEEE 754 compliant Floating Point Unit
- Usable by the OR1K CPU
- Options to extend the core
- Free !


To the best of my knowledge the FPU is 100% IEEE 754 compliant. I have run over 14Mil. test vectors on it, that where generated using the SoftFloat library by John R. Hauser, which can be found at: http://www.jhauser.us/arithmetic/SoftFloat.html. The test pattern generator is included with the distribution.


- Single cycle execution
- 4 stage pipeline

Implementing the core

It is very difficult to partition such a complex piece of hardware for optimal pipe lining. Therefore you will need a synthesis tool that has a "retiring" feature to obtain best results.

Actual Add/Sub, Multiply and Divide cores must be replaced in the primitives.v file, or your synthesis tool must be able to synthesize them for you. I might fix this in the future.


- Second version of the core is released. Included with the release is also a test bench and a test pattern generator.
- I won't be doing any more work on the core in the near future, except for bug fixes.
- The core can be downloaded from OpenCores CVS via cvsweb or via cvsget (use fpu for module name)

Things that need to be done

- Add a remainder function
- Predict leading zeros to improve performance of post normalize unit

Change log

- 9/16/00 RU Added FP compare unit
- 9/15/00 RU Added int to float and float to int conversion
- 9/15/00 RU Fixed documentation
- 9/13/200 RU Initial release

This IP Core is provided by:


www.ASICS.ws - Solutions for your ASIC/FPGA needs -