----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
---- ----
|
---- ----
|
---- 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
|
|
|