CORDIC Hardware Implementations
Appearance
Purpose
[edit | edit source]- developing CORDIC architectures similar to DDR (Double Data Rate).
Background
[edit | edit source]General CORDIC Description
[edit | edit source]- General.1.A.pdf - Rotation as a complex number multiplication (in CORDIC FAQ)
- General.2.A.pdf - Rotation as a geometric interpretation (in Synthesis of Arithmetic Circuits examples)
- General.3.A.pdf - A set of CORDIC equations (in Andraka's paper )
- General.4.A.pdf - Unified CORDIC
Software Simulations
[edit | edit source]- Software.1.A.pdf - Burkardt's MATLAB implementation
- Software.2.A.pdf - Burkardt's C++ implementation
Fixed Point Software Implementations
[edit | edit source]- Fixed.1.A.pdf - Dr. Dobbs Journal implementation
FPGA Hardware Implementations
[edit | edit source]- FPGA.1.A.pdf - Monash Univ VHDL implementation (architecture and precision)
- FPGA.2.A.pdf - Monash Univ VHDL implementation (VHDL detail )
- FPGA.2.B.pdf - Andraka's paper (FPGA related)
Lookahead CORDIC
[edit | edit source]- Lookahead CORDIC Literature Note (pdf)
Redundant CORDIC
[edit | edit source]- 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 | edit source]- AR CORDIC Note 3 - Swartzlander (pdf)
Hybrid CORDIC
[edit | edit source]- 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 | edit source]- Let's identify the source of the prevalent statement of "50 % improvement".
- An explanation using a uniform framework would be good.
- BAM.1.A.pdf - Angle Recoding CORDIC- Y. H. Hu
- BAM.2.A.pdf - Trellis-based Searching CORDIC - C. S. Wu
- BAM.3.A.pdf - Look-ahead CORDIC - C. C. Kao
- BAM.4.A.pdf - Redundant CORDIC - T. Vladimirova
- BAM.5.A.pdf - Adpative CORDIC - T. K. Rodrigues
- BAM.6.A.pdf - MSE Variance CORDIC - S. Y. Park
- BAM.7.A.pdf - Angle Approx Error & Datapath Rounding Error - C. Dick
Scaling-free CORDIC
[edit | edit source]
Idea Sketch
[edit | edit source]CORDIC as a Search Algorithm
[edit | edit source]- CORDIC as a Search Idea.3.A (pdf)
- 5. Search (pdf)
Quad Angle Tree Based CORDIC
[edit | edit source]- CORDIC Quad Tree Angles (pdf)
- 6 Lookahead Idea (pdf)
Minimizing Latency
[edit | edit source]- Latency Minimizing Idea.2.A (pdf)
- 7. Backtrack (pdf)
Maximizing Throughput
[edit | edit source]- Throughput Maximizing Idea.1.A (pdf)
- 8. Serialize (pdf)
Bit-Serial & Bit-Parallel Trade-offs
[edit | edit source]- Generalized Multi-Byte CORDIC Idea.4.A (pdf)
Implementation Issues
[edit | edit source]Implementation Technical Background
[edit | edit source]- - [ Understanding VLSI Design ]
- - [ Understanding Low Power Design ]
- - [ Understanding Arithmetic Circuits ]
- - [ Understanding FPGA Design ]
Fixed Point Simulation
[edit | edit source]- -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 | edit source]- - Area, Speed, Power Trade-offs between architectures
CORDIC Sensor Characteristics
[edit | edit source]- Accuracy
- Preceision
- Sensitivity
- Linearity
- Resoltion
CORDIC Accuracy & Precision
[edit | edit source]CORDIC.AccPrec (pdf)
Binary Angle Tree Approaches (C++, gnuplot)
[edit | edit source]C++ Codes
[edit | edit source]- CORDIC Source (pdf)
Testbench Codes and Results
[edit | edit source]- cordic testbenches (pdf)
CORDIC Accuracy Notes
[edit | edit source]
- Angles_wx using wxWidgets & wxGlade (pdf)
General Angle Tree Approaches (C, R)
[edit | edit source]Search Space Approaches using C
[edit | edit source]Tree type | Memory bound | Time bound |
---|---|---|
Binary Tree | code, output | |
Ternary Tree | code, output | |
Quaternary tree | code, output | |
Full Tree | code, output |
Parallel Search Space Approaches using C + MPI
[edit | edit source]Tree type | Memory bound | Time bound |
---|---|---|
Binary Tree | code, output | |
Ternary Tree | code, output | |
Quaternary tree | code, output | |
Full Tree | code, output |
Parallel Search Space Approaches using C + OpenMP
[edit | edit source]Tree type | Memory bound | Time bound |
---|---|---|
Binary Tree | code, output | |
Ternary Tree | code, output | |
Quaternary tree | code, output | |
Full Tree | code, output |
Statistical Analysis using R
[edit | edit source]Tree Type | R Script | Output |
---|---|---|
Binary Tree | ||
Ternary Tree | ||
Quaternary |
Test Cases
[edit | edit source]1. Powers of 2 angles testcase (code, summary)
Tree Type | log file | table | plot |
---|---|---|---|
Binary Tree | |||
Ternary Tree | |||
Quaternary |
2. Leaf and internal node angles testcase
3. Uniformly distributed angles testcase
4. Subtree angles testcase
CORDIC Sensitivity Analysis
[edit | edit source]
CORDIC Uncertainty Analysis
[edit | edit source]
Haskell Implementation
[edit | edit source]Functional Programming Approach
[edit | edit source]- Background (pdf)
Prolog Implementation
[edit | edit source]Binary Tree in Prolog
[edit | edit source]- Background (pdf)
Recursion Implementation
[edit | edit source]
Computing Gaussian Function
[edit | edit source]- Scale Space Filtering (Gaussian Smoothing)
- Parallel CORDIC
- Neural Network (Computing Exponential Function)
Related Links
[edit | edit source]See Burkardt's C++ Implementations
Exercise
[edit | edit source]Rotating Vector Plotting
[edit | edit source]- Using gnuplot_i package (pdf)
- CORDIC Animation: Java Swing Based CORDIC Simulator
Symbolic Computation of CORDIC Equations
[edit | edit source]- Using Maxima / wxMaxima (pdf, matrix.pdf)
Simulation in C, C++, Octave
[edit | edit source]- CORDIC Octave Simulation ( CORDIC.m.pdf)
- CORDIC C++ Simulation ( CORDIC_cpp.pdf)
- CORDIC C Simulation ( CORDIC.c.pdf, CORDIC_tb.c.pdf)
- CORDIC Fixed Point C Simulation ( CORDIC.fixed.c.pdf)
Simulation using Multiple Precision Libraries (GMP, MPFR)
[edit | edit source]- CORDIC GMP Simulation ( cordic_gmp.pdf, normerror.pdf)
SystemC Model
[edit | edit source]- SystemC Data Types (my_cnt.systemc, dtype.systemc)
- Fixed point Simulation (cordic.scfix)
- Generating VHDL ROM model (cordic.rom)
VHDL Behavioral Model
[edit | edit source]- VHDL Behavioral Model and Testbench (cordic_beh in one file, cordic_beh.vhdl, cordic_tb.vhdl, cordic_pkg.vhdl)
- VHDL Data Conversion - some test pieces (test_conv.vhdl)
VHDL Data Flow Model
[edit | edit source]- VHDL Data Flow Model and Testbench ( cordic_rtl in one file, CORDIC.rtl)
- 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 | edit source]
FPGA CORDIC Design Examples
[edit | edit source]
Old Versions
[edit | edit source]Old CORDIC Background
[edit | edit source]Papers and Reports
[edit | edit source]- 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 | edit source]Software Implementations
[edit | edit source]- Dr. Dobbs Journal implementation (fixed.1.A) (pdf)
Hardware Implementations
[edit | edit source]- Monash Univ VHDL implementation (VHDL.1.A.pdf, VHDL.2.A.pdf )
- Some Plots