Jump to content

CORDIC Hardware Implementations: Difference between revisions

From Wikiversity
Content deleted Content added
Young1lim (discuss | contribs)
Young1lim (discuss | contribs)
Line 144: Line 144:
== '''Related Links'''==
== '''Related Links'''==
<references />
<references />
See [http://people.sc.fsu.edu/~jburkardt/cpp_src/cordic/cordic.html Burkardt's C++ Implementations]



</br>
</br>

Revision as of 13:13, 15 March 2014

Purpose

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


Background

General CORDIC Description

Software Simulations

Fixed Point Software Implementations

FPGA Hardware Implementations


Binary Angular Measurement

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


Scaling-free CORDIC


Idea Sketch

Maximizing Throughput

  • Throughput Maximizing Idea.1.A (pdf)

Minimizing Latency

  • Latency Minimizing Idea.2.A (pdf)

Bit-Serial & Bit-Parallel Trade-offs

  • Generalized Multi-Byte CORDIC Idea.4.A (pdf)

CORDIC as a Search Algorithm

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

Quad Angle Tree Based CORDIC

  • CORDIC Quad Tree Angles (pdf)


Implementation Issues

Implementation Technical Background

- CMOS VLSI Circuits [1]
- Low Power Techniques [2]
- Arithmetic Circuits [3]
- FPGA Design [4]

Fixed Point Simulation

-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

CORDIC Sensor Characteristics

  • Accuracy
  • Preceision
  • Sensitivity
  • Linearity
  • Resoltion


CORDIC Accuracy & Precision

CORDIC.AccPrec (pdf)


Makefile (pdf)
CORDIC Core class source (pdf)
Angles class source (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)
fig_tscale (pdf)
fig_uscale (pdf)


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)


batch run bash file for testbench 01 (pdf)
batch run bash file for testbench 02 (pdf)


Angles_wx using wxWidgets & wxGlade (pdf)



CORDIC Sensitivity Analysis


CORDIC Uncertainty Analysis


CORDIC Quad Tree Angles

QuadTree (pdf)


Resource Sharing

- Area, Speed, Power Trade-offs between architectures






  1. Understanding VLSI Design
  2. Understanding VLSI Design
  3. Understanding Arithmetic Circuits
  4. Understanding FPGA Design

See Burkardt's C++ Implementations




Exercise

Rotating Vector Plotting

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


Symbolic Computation of CORDIC Equations


Simulation in C, C++, Octave



Simulation using Multiple Precision Libraries (GMP, MPFR)


SystemC Model


VHDL Behavioral Model


VHDL Data Flow Model

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


Old Versions

Old CORDIC Background

Papers and Reports

  • 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

  • Burkardt's MATLAB implementation (Matlab.1.A) (pdf)
  • Burkardt's C++ implementation (C++.1.A) (pdf)

Software Implementations

  • Dr. Dobbs Journal implementation (fixed.1.A) (pdf)

Hardware Implementations

* Monash Univ VHDL implementation (VHDL.1.A.pdf, VHDL.2.A.pdf )

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)