CORDIC Hardware Implementations
Jump to navigation
Jump to search
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