| 1 |
13 |
root |
<!--# include virtual="/ssi/ssi_start.shtml" -->
|
| 2 |
|
|
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
| 3 |
|
|
<html>
|
| 4 |
|
|
<head>
|
| 5 |
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
| 6 |
|
|
<meta name="GENERATOR" content="Mozilla/4.7 (Macintosh; I; PPC) [Netscape]">
|
| 7 |
|
|
</head>
|
| 8 |
|
|
<body>
|
| 9 |
|
|
<b><font face="Helvetica, Arial"><font color="#BF0000"><font size=+2>Project
|
| 10 |
|
|
Name: Floating Point Unit</font></font></font></b>
|
| 11 |
|
|
<p><font size=-1>(See change Log at bottom of page for changes/updates)</font>
|
| 12 |
|
|
<br>
|
| 13 |
|
|
<p><u><font size=+1>Description</font></u>
|
| 14 |
|
|
<p>This is a single precision floating point unit. It is fully IEEE 754
|
| 15 |
|
|
compliant. It can currently perform Add/Sub, Mul and Divide operations,
|
| 16 |
|
|
as well as integer to floating point and floating point to integer conversions.
|
| 17 |
|
|
It supports four rounding modes: Round to Nearest Even, Round to Zero,
|
| 18 |
|
|
Round to +INF and Round to -INF.
|
| 19 |
|
|
<p>There is now also a separate FP compare unit. It is located in the fpu/fcmp
|
| 20 |
|
|
directory.
|
| 21 |
|
|
<br>
|
| 22 |
|
|
<p><u><font size=+1>Motivation</font></u>
|
| 23 |
|
|
<ul>
|
| 24 |
|
|
<li>
|
| 25 |
|
|
A 100% IEEE 754 compliant Floating Point Unit</li>
|
| 26 |
|
|
|
| 27 |
|
|
<li>
|
| 28 |
|
|
Usable by the OR1K CPU</li>
|
| 29 |
|
|
|
| 30 |
|
|
<li>
|
| 31 |
|
|
Options to extend the core</li>
|
| 32 |
|
|
|
| 33 |
|
|
<li>
|
| 34 |
|
|
Free !</li>
|
| 35 |
|
|
</ul>
|
| 36 |
|
|
|
| 37 |
|
|
<p><br><u><font size=+1>Compatibility</font></u>
|
| 38 |
|
|
<p>To the best of my knowledge the FPU is 100% IEEE 754 compliant. I have
|
| 39 |
|
|
run over 14Mil. test vectors on it, that where generated using the
|
| 40 |
|
|
SoftFloat library by John R. Hauser, which can be found at: <a href="http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/SoftFloat.html">http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/SoftFloat.html</a>
|
| 41 |
|
|
<br>The test pattern generator is included with the distribution.
|
| 42 |
|
|
<br>
|
| 43 |
|
|
<p><u><font size=+1>Performance</font></u>
|
| 44 |
|
|
<ul>
|
| 45 |
|
|
<li>
|
| 46 |
|
|
Single cycle execution</li>
|
| 47 |
|
|
|
| 48 |
|
|
<li>
|
| 49 |
|
|
4 stage pipeline (this will probably be change in the future)</li>
|
| 50 |
|
|
</ul>
|
| 51 |
|
|
|
| 52 |
|
|
<p><br><u><font size=+1>Implementing the Core</font></u>
|
| 53 |
|
|
<p>It is very difficult to partition such a complex piece of hardware for
|
| 54 |
|
|
optimal pipe lining. Therefore you will need a synthesis tool that has
|
| 55 |
|
|
a "retiring" feature to obtain best results.
|
| 56 |
|
|
<p>Actual Add/Sub, Multiply and Divide cores must be replaced in the primitives.v
|
| 57 |
|
|
file, or your synthesis tool must be able to synthesize them for you. I
|
| 58 |
|
|
might fix this in the future.
|
| 59 |
|
|
<br>
|
| 60 |
|
|
<p><u><font size=+1>Status</font></u>
|
| 61 |
|
|
<p>Second version of the core is released. Included with the release is
|
| 62 |
|
|
also a test bench and a test pattern generator.
|
| 63 |
|
|
<p>I won't be doing any more work on the core in the near future, except
|
| 64 |
|
|
for bug fixes.
|
| 65 |
|
|
<p>The core can be downloaded from OpenCores CVS via <a href="http://www.opencores.org/cvsweb.shtml/">cvsweb</a>
|
| 66 |
|
|
or via <a href="/cvsmodule.shtml">cvsget</a> (use fpu for module name)
|
| 67 |
|
|
<br>
|
| 68 |
|
|
<p><u><font size=+1>To-Do</font></u>
|
| 69 |
|
|
<p>Things that need to be done:
|
| 70 |
|
|
<ul>
|
| 71 |
|
|
<li>
|
| 72 |
|
|
Add a remainder function</li>
|
| 73 |
|
|
|
| 74 |
|
|
<li>
|
| 75 |
|
|
Predict leading zeros to improve performance of post normalize unit</li>
|
| 76 |
|
|
</ul>
|
| 77 |
|
|
|
| 78 |
|
|
<p><br><u><font size=+1>Author / Maintainer</font></u>
|
| 79 |
|
|
<p>I have been doing ASIC design, verification and synthesis for over 15
|
| 80 |
|
|
years. I hope you find this cores useful. Please send me a note if you
|
| 81 |
|
|
intend to use it !
|
| 82 |
|
|
<p>Many thanks to Damjan Lampret for his support and motivation !
|
| 83 |
|
|
<p>Rudolf Usselmann
|
| 84 |
|
|
<br><a href="mailto:rudi@asics.ws_NOSPAM">rudi@asics.ws_NOSPAM</a>
|
| 85 |
|
|
<br><a href="http://www.asics.ws">www.asics.ws</a>
|
| 86 |
|
|
<p>Feel free to send me comments, suggestions and bug reports.
|
| 87 |
|
|
<br>
|
| 88 |
|
|
<p><u><font size=+1>Change Log</font></u>
|
| 89 |
|
|
<p>9/16/00 RU
|
| 90 |
|
|
<br>- Added FP compare unit
|
| 91 |
|
|
<p>9/15/00 RU
|
| 92 |
|
|
<br>- Added int to float and float to int conversion
|
| 93 |
|
|
<br>- Fixed documentation
|
| 94 |
|
|
<p>9/13/200 RU
|
| 95 |
|
|
<br>- Initial release
|
| 96 |
|
|
<br>
|
| 97 |
|
|
</body>
|
| 98 |
|
|
</html>
|
| 99 |
|
|
<!--# include virtual="/ssi/ssi_end.shtml" -->
|