CORDIC Hardware Implementations

Purpose Edit

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


BackgroundEdit

General CORDIC DescriptionEdit

Software SimulationsEdit

Fixed Point Software ImplementationsEdit

FPGA Hardware ImplementationsEdit

Lookahead CORDICEdit

  • Lookahead CORDIC Literature Note (pdf)

Redundant CORDICEdit

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

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

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

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


Scaling-free CORDICEdit


Idea SketchEdit

CORDIC as a Search AlgorithmEdit

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

Quad Angle Tree Based CORDICEdit

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

Minimizing LatencyEdit

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

Maximizing ThroughputEdit

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

Bit-Serial & Bit-Parallel Trade-offsEdit

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


Implementation IssuesEdit

Implementation Technical BackgroundEdit

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

Fixed Point SimulationEdit

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

- Area, Speed, Power Trade-offs between architectures


CORDIC Sensor CharacteristicsEdit

  • Accuracy
  • Preceision
  • Sensitivity
  • Linearity
  • Resoltion

CORDIC Accuracy & PrecisionEdit

CORDIC.AccPrec (pdf)

Binary Angle Tree Approaches (C++, gnuplot)Edit

C++ CodesEdit

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 ResultsEdit

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 NotesEdit

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 CEdit

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

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

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 REdit

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

Test CasesEdit

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 AnalysisEdit


Haskell ImplementationEdit

Functional Programming ApproachEdit

Background (pdf)


Prolog ImplementationEdit

Binary Tree in PrologEdit

Background (pdf)


Recursion ImplementationEdit


Computing Gaussian FunctionEdit

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


Related LinksEdit

See Burkardt's C++ Implementations




ExerciseEdit

Rotating Vector PlottingEdit

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

Symbolic Computation of CORDIC EquationsEdit

Simulation in C, C++, OctaveEdit

Simulation using Multiple Precision Libraries (GMP, MPFR)Edit

SystemC ModelEdit

VHDL Behavioral ModelEdit

VHDL Data Flow ModelEdit

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 ExamplesEdit



FPGA CORDIC Design ExamplesEdit


Old VersionsEdit

Old CORDIC BackgroundEdit

Papers and ReportsEdit
  • 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 SimulationsEdit
  • Burkardt's MATLAB implementation (Matlab.1.A) (pdf)
  • Burkardt's C++ implementation (C++.1.A) (pdf)
Software ImplementationsEdit
  • Dr. Dobbs Journal implementation (fixed.1.A) (pdf)
Hardware ImplementationsEdit
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 ]