OpenCores
URL https://opencores.org/ocsvn/yac/yac/trunk

Subversion Repositories yac

[/] [yac/] [trunk/] [README.txt] - Diff between revs 6 and 12

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 6 Rev 12
----------------------------------------------------------------------------
----------------------------------------------------------------------------
----                                                                    ----
----                                                                    ----
----                  Copyright Notice                                  ----
----                  Copyright Notice                                  ----
----                                                                    ----
----                                                                    ----
---- This file is part of YAC - Yet Another CORDIC Core                 ----
---- This file is part of YAC - Yet Another CORDIC Core                 ----
---- Copyright (c) 2014, Author(s), All rights reserved.                ----
---- Copyright (c) 2014, Author(s), All rights reserved.                ----
----                                                                    ----
----                                                                    ----
---- YAC is free software; you can redistribute it and/or               ----
---- YAC is free software; you can redistribute it and/or               ----
---- modify it under the terms of the GNU Lesser General Public         ----
---- modify it under the terms of the GNU Lesser General Public         ----
---- License as published by the Free Software Foundation; either       ----
---- License as published by the Free Software Foundation; either       ----
---- version 3.0 of the License, or (at your option) any later version. ----
---- version 3.0 of the License, or (at your option) any later version. ----
----                                                                    ----
----                                                                    ----
---- YAC is distributed in the hope that it will be useful,             ----
---- YAC is distributed in the hope that it will be useful,             ----
---- but WITHOUT ANY WARRANTY; without even the implied warranty of     ----
---- but WITHOUT ANY WARRANTY; without even the implied warranty of     ----
---- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  ----
---- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  ----
---- Lesser General Public License for more details.                    ----
---- Lesser General Public License for more details.                    ----
----                                                                    ----
----                                                                    ----
---- You should have received a copy of the GNU Lesser General Public   ----
---- You should have received a copy of the GNU Lesser General Public   ----
---- License along with this library. If not, download it from          ----
---- License along with this library. If not, download it from          ----
---- http://www.gnu.org/licenses/lgpl                                   ----
---- http://www.gnu.org/licenses/lgpl                                   ----
----                                                                    ----
----                                                                    ----
----------------------------------------------------------------------------
----------------------------------------------------------------------------
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
=======
=======
>>>>>>> Updated C and RTL model as well as the documentation
>>>>>>> Updated C and RTL model as well as the documentation
         Author(s):  Christian Haettich
         Author(s):  Christian Haettich
         Email       feddischson@opencores.org
         Email       feddischson@opencores.org
Description
Description
------------------
------------------
CORDIC is the acronym for COordinate Rotation DIgital Computer and
CORDIC is the acronym for COordinate Rotation DIgital Computer and
allows a hardware efficient calculation of various functions
allows a hardware efficient calculation of various functions
like - atan, sin, cos - atanh, sinh, cosh, - division, multiplication.
like - atan, sin, cos - atanh, sinh, cosh, - division, multiplication.
Hardware efficient means, that only shifting, additions and
Hardware efficient means, that only shifting, additions and
subtractions in combination with table-lookup is required. This makes
subtractions in combination with table-lookup is required. This makes
it suitable for a realization in digital hardware. Good
it suitable for a realization in digital hardware. Good
introductions can be found in [1][2][3][5].
introductions can be found in [1][2][3][5].
The following six CORDIC modes are supported:
The following six CORDIC modes are supported:
- trigonometric rotation
- trigonometric rotation
- trigonometric vectoring
- trigonometric vectoring
- linear rotation
- linear rotation
- linear vectoring
- linear vectoring
- hyperbolic rotation
- hyperbolic rotation
- hyperbolic vectoring
- hyperbolic vectoring
Furthermore, the CORDIC algorithm is implemented for iterative
Furthermore, the CORDIC algorithm is implemented for iterative
processing which means, that the IP-core is started
processing which means, that the IP-core is started
with a set of input data and after a specific amount of
with a set of input data and after a specific amount of
clock cycles, the result is
clock cycles, the result is
available. No parallel data can be processed.
available. No parallel data can be processed.
In addition to an IP-core written in VHDL, a bit-accurate C-model
In addition to an IP-core written in VHDL, a bit-accurate C-model
is provided. This C-model can be compiled as mex for a usage with Octave or
is provided. This C-model can be compiled as mex for a usage with Octave or
Matlab. Therefore, this C-model allows a bit-accurate analysis
Matlab. Therefore, this C-model allows a bit-accurate analysis
of the CORDIC performance on a higher level.
of the CORDIC performance on a higher level.
For a more detailed documentation, see ./doc/documentation.pdf
For a more detailed documentation, see ./doc/documentation.pdf
Status
Status
----------------------
----------------------
- C-model implementation is done
- C-model implementation is done
- RTL model implementation is done
- RTL model implementation is done
- RTL model is verified against C-model
- RTL model is verified against C-model
- Wishbone-bus wrapper is added
- Wishbone-bus wrapper is added
- included into a small SoC, tested on a spartan-3 FPGA
- Included into a small SoC, tested on a spartan-3 FPGA
 
- Testing within an SOC is done (see ./test_sys)
 
 
Next-Steps
Next-Steps
-----------------------
-----------------------
- Circuit optimizations
- Circuit optimizations
- Numerical optimizations
- Numerical optimizations
- Further testing within an SOC
 
 
 
<<<<<<< HEAD
<<<<<<< HEAD
=======
=======
>>>>>>> initial commit
>>>>>>> initial commit
=======
=======
>>>>>>> Updated C and RTL model as well as the documentation
>>>>>>> Updated C and RTL model as well as the documentation
Files and folders:
Files and folders:
------------------
------------------
 ./c_octave :  contains a bit-accurate C-implementation of the YAC.
 ./c_octave :  contains a bit-accurate C-implementation of the YAC.
               This C-implementation is used for analyzing the performance
               This C-implementation is used for analyzing the performance
               and to generate RTL testbench stimulus
               and to generate RTL testbench stimulus
               (cordic_iterative_test.m).
               (cordic_iterative_test.m).
               The file cordic_iterative_code.m is used to create some
               The file cordic_iterative_code.m is used to create some
               VHDL/C-code automatically.
               VHDL/C-code automatically.
 ./rtl/vhdl :  Contains the VHDL implementation files
 ./rtl/vhdl :  Contains the VHDL implementation files
 ./doc      :  Will contain a detailed documentation in future.
 ./doc      :  Will contain a detailed documentation in future.
 
 
 
 ./test_sys :  Contains a test system to test the YAC on a spartan-3an board
 
 
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
=======
=======
>>>>>>> Updated C and RTL model as well as the documentation
>>>>>>> Updated C and RTL model as well as the documentation
[1] Andraka, Ray; A survey of CORDIC algorithms for FPGA based computers, 1989
[1] Andraka, Ray; A survey of CORDIC algorithms for FPGA based computers, 1989
[2] Hu, Yu Hen; CORDIC-Based VLSI Architectures for Digital Signal Processing, 1992
[2] Hu, Yu Hen; CORDIC-Based VLSI Architectures for Digital Signal Processing, 1992
[3] CORDIC on wikibook: http://en.wikibooks.org/wiki/Digital_Circuits/CORDIC
[3] CORDIC on wikibook: http://en.wikibooks.org/wiki/Digital_Circuits/CORDIC
[4] CORDIC on wikipedia:http://en.wikipedia.org/wiki/CORDIC
[4] CORDIC on wikipedia:http://en.wikipedia.org/wiki/CORDIC
[5] David, Herbert; Meyr, Heinricht; CORDIC Algorithms and Architectures
[5] David, Herbert; Meyr, Heinricht; CORDIC Algorithms and Architectures
    http://www.eecs.berkeley.edu/newton/Classes/EE290sp99/lectures/ee290aSp996_1/cordic_chap24.pdf
    http://www.eecs.berkeley.edu/newton/Classes/EE290sp99/lectures/ee290aSp996_1/cordic_chap24.pdf
<<<<<<< HEAD
<<<<<<< HEAD
=======
=======
>>>>>>> initial commit
>>>>>>> initial commit
=======
=======
>>>>>>> Updated C and RTL model as well as the documentation
>>>>>>> Updated C and RTL model as well as the documentation
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.