URL
https://opencores.org/ocsvn/openfpu64/openfpu64/trunk
Subversion Repositories openfpu64
[/] [openfpu64/] [trunk/] [README] - Rev 12
Compare with Previous | Blame | View Log
OpenFPU64============================Peter HüweV.0.1, Januar 2009, License: CC-by-sa:author initials: PH:email: peterhuewe@gmx.de:license: CC-by-saAbout OpenFPU64---------------OpenFPU64 is a free and open source implementation of a double precision floating point unit.The openFPU64 currently features:* double precision* Addition/Subtraction* Multiplication* rounding (to nearest even)* subnormals/denormals* validated against IEEE754 using TestFloat (http://www.jhauser.us/arithmetic/TestFloat.html)* Compatible with Avalon Bus* Wishbone interface will be provided soonThe openFPU64 is tested with a Cyclone II and a CycloneIII fpga.Overview--------The openFPU64 consists of several parts:* openfpu64.vhd - contains the bus logic for the avalon bus, instantiate your own algorithms here* fpu_package.vhd - global constants and defines* fpu_add.vhd - Add/Sub algorithms* fpu_mul.vhd - Multiplication Algorithm with several embedded Multipliers* fpu_mul_single.vhd - Multiplication Algorithm with only one embedded Multiplier (currently in development, has some bugs)To use it in the NiosII environment you have to use the driver/library in* nios-driverThe testbench needs also* openfpu64_tb.vhd - Testframework, consists of openfpu64_tb.head.vhd, openfpu64_tb.tail.vhd and the actual testcases which reside in tests/ (untar tests.tar.bz2)* eis_helpers.vhd - some nice conversion functions for std_logic_vectors, provided by Prof. Dr. Gundolf Kiefer.Usage in QuartusII SOPC (tm)----------------------------In order to use openFPU64 copy all VHDL files (*.vhd) and the TCL file (openfpu64_hw.tcl) to the root directory of your QuartusII Project.(alternative: 'make quartus_distribution' and copy everything in openfpu64_quartus/ to the root directory of your Quartus II project)Then open the QuartusII and from Quartus launch the SOPC Builder.In SOPC Builder click new component in the left pane and selectFile -> open and open the openfpu64_hw.tcl file.By clicking on finish, the openFPU64 is added to your library.Now add openFPU64 to your SOPC-design by double clicking on it, click Generate as usual.In some rare cases your have to assign new Base and End Adresses,clicking "System->Auto-Assign Base Adresses" does resolve this.Now click Generate as usual, close SOPC Builder afterwards and compile your design as usual using Quartus.Driver/Libary in NiosII:------------------------add the openfpu64.c and openfpu64.h files (in nios-driver)to your NiosII Project.To use this library/driver, add the fpu.[ch] files to your applicationand add these linker flags.Click right on your application, choose properties, C/C++ Build-> Linker -> General and type"-Wl,--wrap,__adddf3,--wrap,__subdf3,--wrap,__muldf3"For each implemented function, add another --wrap,__functionameDevelopment:------------If you'd like to do some development on openFPU64, you can use the Makefile together with GHDL (http://ghdl.free.fr/)You can create several different testbenches by issuing one of these commands:* empty_testsuite* addsub_testsuite* custom_testsuite* add_testsuite* sub_testsuite* mul_testsuiteThe custom_testsuite contains several hand crafted testsuites for ADD/SUB/MUL, the others are quite big (45k,95k testcases) and generated using TestFloat.The testbench is made up of openfpu64_tb.head.vhd, openfpu64_tb.tail.vhd and the testscases in tests/.If you want to change the testbench structure please DO NOT change openfpu64_tb.vhd but rather openfpu64_tb.head.vhd, otherwise your changes will be overwritten by make *_testsuite.The empty testsuite is for 'resetting' the openfpu64_tb to be committed to svn.Please use make empty_testsuite before checking your sources in.Note:-----QuartusII, Nios, Cyclone, QuartusII SOPC Builders are registered Trademarks of Altera Corporation, 101 Innovation Drive, San Jose, California 95134, USA. All rights reserved.Todo:-----Of course there is still a lot to do, e.g. adding more documentation.Meanwhile, for questions contact me at peterhuewe@gmx.de and I'm glad to help you out
