1 |
2 |
feddischso |
----------------------------------------------------------------------------
|
2 |
|
|
---- ----
|
3 |
|
|
---- Copyright Notice ----
|
4 |
|
|
---- ----
|
5 |
|
|
---- This file is part of YAC - Yet Another CORDIC Core ----
|
6 |
|
|
---- Copyright (c) 2014, Author(s), All rights reserved. ----
|
7 |
|
|
---- ----
|
8 |
|
|
---- YAC is free software; you can redistribute it and/or ----
|
9 |
|
|
---- modify it under the terms of the GNU Lesser General Public ----
|
10 |
|
|
---- License as published by the Free Software Foundation; either ----
|
11 |
|
|
---- version 3.0 of the License, or (at your option) any later version. ----
|
12 |
|
|
---- ----
|
13 |
|
|
---- YAC is distributed in the hope that it will be useful, ----
|
14 |
|
|
---- but WITHOUT ANY WARRANTY; without even the implied warranty of ----
|
15 |
|
|
---- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ----
|
16 |
|
|
---- Lesser General Public License for more details. ----
|
17 |
|
|
---- ----
|
18 |
|
|
---- You should have received a copy of the GNU Lesser General Public ----
|
19 |
|
|
---- License along with this library. If not, download it from ----
|
20 |
|
|
---- http://www.gnu.org/licenses/lgpl ----
|
21 |
|
|
---- ----
|
22 |
|
|
----------------------------------------------------------------------------
|
23 |
|
|
|
24 |
|
|
|
25 |
|
|
|
26 |
3 |
feddischso |
<<<<<<< HEAD
|
27 |
2 |
feddischso |
Author(s): Christian Haettich
|
28 |
|
|
Email feddischson@opencores.org
|
29 |
|
|
|
30 |
|
|
|
31 |
|
|
|
32 |
|
|
|
33 |
|
|
|
34 |
|
|
|
35 |
|
|
Description
|
36 |
|
|
------------------
|
37 |
|
|
|
38 |
|
|
CORDIC is the acronym for COordinate Rotation DIgital Computer and
|
39 |
|
|
allows a hardware efficient calculation of various functions
|
40 |
|
|
like - atan, sin, cos - atanh, sinh, cosh, - division, multiplication.
|
41 |
|
|
Hardware efficient means, that only shifting, additions and
|
42 |
|
|
subtractions in combination with table-lookup is required. This makes
|
43 |
|
|
it suitable for a realization in digital hardware. Good
|
44 |
|
|
introductions can be found in [1][2][3][5].
|
45 |
|
|
|
46 |
|
|
|
47 |
|
|
|
48 |
|
|
The following six CORDIC modes are supported:
|
49 |
|
|
- trigonometric rotation
|
50 |
|
|
- trigonometric vectoring
|
51 |
|
|
- linear rotation
|
52 |
|
|
- linear vectoring
|
53 |
|
|
- hyperbolic rotation
|
54 |
|
|
- hyperbolic vectoring
|
55 |
|
|
|
56 |
|
|
|
57 |
|
|
Furthermore, the CORDIC algorithm is implemented for iterative
|
58 |
|
|
processing which means, that the IP-core is started
|
59 |
|
|
with a set of input data and after a specific amount of
|
60 |
|
|
clock cycles, the result is
|
61 |
|
|
available. No parallel data can be processed.
|
62 |
|
|
|
63 |
|
|
In addition to an IP-core written in VHDL, a bit-accurate C-model
|
64 |
|
|
is provided. This C-model can be compiled as mex for a usage with Octave or
|
65 |
|
|
Matlab. Therefore, this C-model allows a bit-accurate analysis
|
66 |
|
|
of the CORDIC performance on a higher level.
|
67 |
|
|
|
68 |
|
|
|
69 |
|
|
For a more detailed documentation, see ./doc/documentation.pdf
|
70 |
|
|
|
71 |
|
|
|
72 |
|
|
|
73 |
|
|
|
74 |
|
|
|
75 |
|
|
Status
|
76 |
|
|
----------------------
|
77 |
|
|
- C-model implementation is done
|
78 |
|
|
- RTL model implementation is done
|
79 |
|
|
- RTL model is verified against C-model
|
80 |
|
|
|
81 |
|
|
|
82 |
|
|
|
83 |
|
|
|
84 |
|
|
|
85 |
|
|
Next-Steps
|
86 |
|
|
-----------------------
|
87 |
|
|
- Prove of FPGA feasibility
|
88 |
|
|
- Circuit optimizations
|
89 |
|
|
- Numerical optimizations
|
90 |
|
|
|
91 |
|
|
|
92 |
|
|
|
93 |
|
|
|
94 |
3 |
feddischso |
=======
|
95 |
|
|
>>>>>>> initial commit
|
96 |
2 |
feddischso |
|
97 |
|
|
Files and folders:
|
98 |
|
|
------------------
|
99 |
|
|
|
100 |
|
|
./c_octave : contains a bit-accurate C-implementation of the YAC.
|
101 |
|
|
This C-implementation is used for analyzing the performance
|
102 |
|
|
and to generate RTL testbench stimulus
|
103 |
|
|
(cordic_iterative_test.m).
|
104 |
|
|
The file cordic_iterative_code.m is used to create some
|
105 |
|
|
VHDL/C-code automatically.
|
106 |
|
|
|
107 |
|
|
./rtl/vhdl : Contains the VHDL implementation files
|
108 |
|
|
|
109 |
|
|
./doc : Will contain a detailed documentation in future.
|
110 |
|
|
|
111 |
|
|
|
112 |
|
|
|
113 |
|
|
|
114 |
3 |
feddischso |
<<<<<<< HEAD
|
115 |
2 |
feddischso |
|
116 |
|
|
|
117 |
|
|
[1] Andraka, Ray; A survey of CORDIC algorithms for FPGA based computers, 1989
|
118 |
|
|
[2] Hu, Yu Hen; CORDIC-Based VLSI Architectures for Digital Signal Processing, 1992
|
119 |
|
|
[3] CORDIC on wikibook: http://en.wikibooks.org/wiki/Digital_Circuits/CORDIC
|
120 |
|
|
[4] CORDIC on wikipedia:http://en.wikipedia.org/wiki/CORDIC
|
121 |
|
|
[5] David, Herbert; Meyr, Heinricht; CORDIC Algorithms and Architectures
|
122 |
|
|
http://www.eecs.berkeley.edu/newton/Classes/EE290sp99/lectures/ee290aSp996_1/cordic_chap24.pdf
|
123 |
|
|
|
124 |
|
|
|
125 |
3 |
feddischso |
=======
|
126 |
|
|
>>>>>>> initial commit
|