CORDIC Hardware Implementations

Purpose

edit
  • developing CORDIC architectures similar to DDR (Double Data Rate).


Background

edit

General CORDIC Description

edit

Software Simulations

edit

Fixed Point Software Implementations

edit

FPGA Hardware Implementations

edit

Lookahead CORDIC

edit
  • Lookahead CORDIC Literature Note (pdf)

Redundant CORDIC

edit
  • Redundant Adders (pdf)
  • Redundant CORDIC Note 1 - Tagaki (pdf)
  • Redundant CORDIC Note 2 - Ercegovac (pdf)
  • Redundant CORDIC Note 3 - Timmermann - A.(pdf) - B.(pdf) - C.(pdf)
  • Redundant CORDIC Note 4 - Booth Encoding (pdf)
  • Redundant CORDIC Note 5 - Noll (pdf)

Angle Recoding CORDIC

edit
  • AR CORDIC Note 1 - Hu (pdf)
  • AR CORDIC Note 2 - Wu (pdf)
0. Overview (pdf)
1. Conventional CORDIC (pdf)
2. AR (Angle Recoding) (pdf)
3. MVR (Modified Vector Rotation) (pdf)
4. EEAS (Extended Elementary Angle Set) (pdf)
5. Generalized EEAS (Extended Elementary Angle Set) (pdf)
  • AR CORDIC Note 3 - Swartzlander (pdf)

Hybrid CORDIC

edit
  • Hybrid CORDIC Note 1 - Sine/Cosine Generator Algorithms (pdf)
  • Hybrid CORDIC Note 2 - Sine/Cosine Generator Architecture (pdf)
  • Hybrid CORDIC Note 3 - ROM free modified coarse fine approach (pdf)
  • Hybrid CORDIC Note 4 - Hybrid CORDIC Alogorithms (pdf)

Binary Angular Measurement

edit
Let's identify the source of the prevalent statement of "50 % improvement".
An explanation using a uniform framework would be good.


Scaling-free CORDIC

edit


Idea Sketch

edit

CORDIC as a Search Algorithm

edit
  • CORDIC as a Search Idea.3.A (pdf)
5. Search (pdf)

Quad Angle Tree Based CORDIC

edit
  • CORDIC Quad Tree Angles (pdf)
6 Lookahead Idea (pdf)

Minimizing Latency

edit
  • Latency Minimizing Idea.2.A (pdf)
7. Backtrack (pdf)

Maximizing Throughput

edit
  • Throughput Maximizing Idea.1.A (pdf)
8. Serialize (pdf)

Bit-Serial & Bit-Parallel Trade-offs

edit
  • Generalized Multi-Byte CORDIC Idea.4.A (pdf)
9. Precision (pdf)
Bit-serial Redundant CORDIC (pdf)


Implementation Issues

edit

Implementation Technical Background

edit
- [ Understanding VLSI Design ]
- [ Understanding Low Power Design ]
- [ Understanding Arithmetic Circuits ]
- [ Understanding FPGA Design ]

Fixed Point Simulation

edit
-Octave
3. Octave Codes (pdf)
-SystemC
-VHDL Simulation
CORDIC Angle LUT ( scr.pdf, out.pdf)
CORDIC ROM Generation and Initialization ( c6.rom.file.vhdl )
CORDIC BEH Simulation ( cordic_beh.pdf )
CORDIC RTL Simulation ( cordic_rtl.pdf )
CORDIC testbench ( cordic_tb.vhdl )
-VHDL Testcases

Resource Sharing

edit
- Area, Speed, Power Trade-offs between architectures


CORDIC Sensor Characteristics

edit
  • Accuracy
  • Preceision
  • Sensitivity
  • Linearity
  • Resoltion

CORDIC Accuracy & Precision

edit

CORDIC.AccPrec (pdf)

Binary Angle Tree Approaches (C++, gnuplot)

edit

C++ Codes

edit
CORDIC Source (pdf)
Makefile (pdf)
Core class (pdf)
Angles class (pdf, pdf)
GPData class (pdf)
Figures class (pdf)
Interfacing GHDL CORDIC simulation with C (pdf)
Calling C++ cordic function from C (pdf)
batch run bash file for Angles_tb (pdf)
fig_basic (pdf, note)
fig_tscale (pdf)
fig_uscale (pdf)

Testbench Codes and Results

edit
cordic testbenches (pdf)
cordic testbench 01 (percent error)
cordic testbench 02 (path error)
cordic testbench 03 (varying tree levels)
fig_basic (pdf)
fig_tscale (pdf)
fig_uscale (pdf)
cordic testbench 04 (coarse-fine)

CORDIC Accuracy Notes

edit
1. General (pdf)
2. Statistical Analysis (pdf)
3. Octave Fixed Point Simulation (pdf)
4. Scaling K (pdf)


batch run bash file for testbench 01 (pdf)
batch run bash file for testbench 02 (pdf)
Angles_wx using wxWidgets & wxGlade (pdf)

General Angle Tree Approaches (C, R)

edit

Search Space Approaches using C

edit
Tree type Memory bound Time bound
Binary Tree code, output pdf
Ternary Tree code, output pdf
Quaternary tree code, output pdf
Full Tree code, output pdf

Parallel Search Space Approaches using C + MPI

edit
Tree type Memory bound Time bound
Binary Tree code, output pdf
Ternary Tree code, output pdf
Quaternary tree code, output pdf
Full Tree code, output pdf

Parallel Search Space Approaches using C + OpenMP

edit
Tree type Memory bound Time bound
Binary Tree code, output pdf
Ternary Tree code, output pdf
Quaternary tree code, output pdf
Full Tree code, output pdf

Statistical Analysis using R

edit
Tree Type R Script Output
Binary Tree pdf pdf
Ternary Tree pdf pdf
Quaternary pdf pdf

Test Cases

edit

1. Powers of 2 angles testcase (code, summary)

Tree Type log file table plot
Binary Tree pdf pdf pdf
Ternary Tree pdf pdf pdf
Quaternary pdf pdf pdf


2. Leaf and internal node angles testcase

3. Uniformly distributed angles testcase

4. Subtree angles testcase

CORDIC Sensitivity Analysis

edit


CORDIC Uncertainty Analysis

edit


Haskell Implementation

edit

Functional Programming Approach

edit
Background (pdf)


Prolog Implementation

edit

Binary Tree in Prolog

edit
Background (pdf)


Recursion Implementation

edit


Computing Gaussian Function

edit
  • Scale Space Filtering (Gaussian Smoothing)
  • Parallel CORDIC
  • Neural Network (Computing Exponential Function)


edit

See Burkardt's C++ Implementations




Exercise

edit

Rotating Vector Plotting

edit
  • Using gnuplot_i package (pdf)
  • CORDIC Animation: Java Swing Based CORDIC Simulator

Symbolic Computation of CORDIC Equations

edit

Simulation in C, C++, Octave

edit

Simulation using Multiple Precision Libraries (GMP, MPFR)

edit

SystemC Model

edit

VHDL Behavioral Model

edit

VHDL Data Flow Model

edit
c1.adder.rtl.vhdl, c2.addsub.vhdl, c3.bshift.vhdl, c4.dffreg.vhdl, c5.counter.vhdl, c6.rom.vhdl, c7.mux.vhdl, m1.disp.vhdl,
cordic_rtl.vhdl, cordic_pkg.vhdl, cordic_tb.vhdl

CMOS CORDIC Design Examples

edit



FPGA CORDIC Design Examples

edit


Old Versions

edit

Old CORDIC Background

edit
Papers and Reports
edit
  • Background.1.A - CORDIC FAQ (1.A.pdf)
  • Background.2.A,B - Andraka's paper (2.A.pdf, 2.B.pdf)
  • Background.3.A - Unified CORDIC (3.A.pdf)
  • Background.4.A - Synthesis of Arithmetic Circuits examples (4.A.pdf)
Software Simulations
edit
  • Burkardt's MATLAB implementation (Matlab.1.A) (pdf)
  • Burkardt's C++ implementation (C++.1.A) (pdf)
Software Implementations
edit
  • Dr. Dobbs Journal implementation (fixed.1.A) (pdf)
Hardware Implementations
edit
Some Plots
Threshold=0.0 (pdf)
Threshold=0.001 (pdf)
Quantization Effects (pdf)
Percent Error (pdf)
Residue Statistics (tex file:pdf, pdf)


CORDIC.AccPrec (pdf)
Angles Class Source (pdf)
Angles_wx using wxWidgets & wxGlade (pdf)







go to [ Electrical_&_Computer_Engineering_Studies ]