IP ExpressCORDIC (COordinate Rotation DIgital Computer) is a simple and efficient algorithm to calculate hyperbolic and trigonometric functions and convert polar co-ordinates to cartesian and vice versa. It is an iterative method that requires simple arithmetic operations such as addition, subtraction, bit shift and table look up. This frees up any available multipliers in the device for use in more complex tasks.

The Lattice CORDIC IP is configurable and several functions can be implemented in the IP core: Rotation, Translation, Sin and Cos, Arctan. Two architecture configurations are available for the arithmetic unit: Parallel, with single cycle data throughput, and Word-serial, with multiple cycles throughput. The input data, output data widths and iterative number are configurable over a wide range. The IP core uses full internal precision while allowing variable output precision with several choices for rounding.

Features

  • Functions supported:
    • Vector rotation (polar to rectangular)
    • Vector translation (rectangular to polar)
    • Sin and cos
    • Arctan
  • Input data widths from 8 to 32 bits
  • Configurable number of iterations used to derive output from 4 to 32
  • Optional pre-rotation module
  • Optional amplitude compensation scaling module to compensate for the CORDIC algorithm’s output amplitude scale factor
  • Selectable rounding algorithm: truncation, rounding up, rounding away from zero, convergent rounding
  • Selectable parallel architectural configuration for throughput optimization
  • Selectable word-serial architectural configuration for area optimization
  • Signed 2’s complement data
  • Optional clock enable (ce) and synchronous reset (sr) control signals
  • Full precision internal arithmetic

Jump to

Block Diagram

CORDIC

Performance and Size

ECP51
User Configurable Mode SLICEs LUTs Registers I/Os sysMEM EBRs MULT 18x18 fMAX (MHz)
1 722 1423 1239 85 - - 305
2 345 686 313 85 - - 161
3 716 1408 1212 69 - - 285
4 643 1269 1110 53 - - 274

1. Performance and utilization data are generated targeting an LFE5UM-45F-8BG554C device using Lattice Diamond 3.10 and Synplify Pro M-2017.03L-SP1-1. Performance may vary when using a different software version or targeting a different device density or speed grade within the ECP5 family.

LatticeECP31
User Configurable Mode SLICEs LUTs Registers I/Os sysMEM EBRs MULT 18x18 fMAX (MHz)
1 647 1280 1207 85 - - 253
2 318 618 278 85 - - 176
3 640 1261 1175 69 - - 320
4 609 1203 1102 53 - - 298

1. Performance and utilization data are generated targeting an LFE3-70E-8FN484CES device using Lattice Diamond 1.0 and Synplify Pro for Lattice D-2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade within the LatticeECP3 family.

LatticeECP2M1
User Configurable Mode SLICEs LUTs Registers I/Os sysMEM EBRs MULT 18x18 fMAX (MHz)
1 649 1283 1205 85 - - 279
2 308 602 278 85 - - 167
3 644 1268 1182 69 - - 276
4 624 1232 1104 53 - - 269

1. Performance and utilization data are generated targeting an LFE2M-20E-7F484C device using Lattice Diamond 1.0 and Synplify Pro for Lattice D-2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade within the LatticeECP2M family.

LatticeECP21
User Configurable Mode SLICEs LUTs Registers I/Os sysMEM EBRs MULT 18x18 fMAX (MHz)
1 649 1283 1205 85 - - 278
2 308 602 278 85 - - 171
3 644 1268 1182 69 - - 262
4 624 1232 1104 53 - - 271

1. Performance and utilization data are generated targeting an LFE2-20E-7F484C device using Lattice Diamond 1.0 and Synplify Pro for Lattice D-2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade within the LatticeECP2 family.

LatticeECP1
User Configurable Mode SLICEs LUTs Registers I/Os sysMEM EBRs MULT 18x18 fMAX (MHz)
1 649 1196 1210 85 - - 183
2 331 605 278 85 - - 128
3 642 1181 1181 69 - - 172
4 612 1146 1105 53 - - 188

1. Performance and utilization data are generated targeting an LFECP20E-5F484C device using Lattice Diamond 1.0 and Synplify Pro for Lattice D-2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade within the LatticeECP family.

LatticeEC1
User Configurable Mode SLICEs LUTs Registers I/Os sysMEM EBRs MULT 18x18 fMAX (MHz)
1 649 1196 1210 85 - - 188
2 334 611 271 85 - - 124
3 640 1179 1178 69 - - 170
4 611 1146 1105 53 - - 186

1. Performance and utilization data are generated targeting an LFEC20E-5F484C device using Lattice Diamond 1.0 and Synplify Pro for Lattice D-2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade within the LatticeEC family.

LatticeSC/M1
User Configurable Mode SLICEs LUTs Registers I/Os sysMEM EBRs MULT 18x18 fMAX (MHz)
1 833 1631 1224 85 - - 389
2 402 739 292 85 - - 235
3 830 1709 1214 69 - - 332
4 803 1586 1155 53 - - 390

1. Performance and utilization data are generated targeting an LFSC3GA25E-7F900C device using Lattice Diamond 1.0 and Synplify Pro for Lattice D-2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade within the LatticeSC/M family.

LatticeXP21
User Configurable Mode SLICEs LUTs Registers I/Os sysMEM EBRs MULT 18x18 fMAX (MHz)
1 649 1283 1205 85 - - 275
2 308 602 278 85 - - 159
3 644 1268 1182 69 - - 279
4 624 1232 1104 53 - - 274

1. Performance and utilization data are generated targeting an LFXP2-30E-7F484C device using Lattice Diamond 1.0 and Synplify Pro for Lattice D-2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade within the LatticeXP2 family.

LatticeXP1
User Configurable Mode SLICEs LUTs Registers I/Os sysMEM EBRs MULT 18x18 fMAX (MHz)
1 649 1196 1210 85 - - 174
2 334 611 271 85 - - 114
3 640 1179 1178 69 - - 156
4 611 1146 1105 53 - - 176

1. Performance and utilization data are generated targeting an LFXP20E-5F484C device using Lattice Diamond 1.0 and Synplify Pro for Lattice D-2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade within the LatticeXP family.

Ordering Information

Device Family Part Numbers
Single Design Multi-Site Subscription
Avant-E CORDIC-AVE-U CORDIC-AVE-UT CORDIC-AVE-US
MachXO5-NX CORDIC-XO5-U CORDIC-XO5-UT CORDIC-XO5-US
CertusPro-NX CORDIC-CPNX-U CORDIC-CPNX-UT CORDIC-CPNX-US
Certus-NX CORDIC-CTNX-U CORDIC-CTNX-UT CORDIC-CTNX-US
ECP5 CORDIC-E5-U CORDIC-E5-UT CORDIC-E5-US
LatticeECP3 CORDIC-E3-U1 CORDIC-E3-UT1 -
LatticeECP2M CORDIC-PM-U1 CORDIC-PM-UT1 -
LatticeECP2 CORDIC-P2-U1 CORDIC-P2-UT1 -
LatticeEC/ECP CORDIC-E2-U1 CORDIC-E2-UT1 -
LatticeSC/M CORDIC-SC-U1 CORDIC-SC-UT1 -
LatticeXP2 CORDIC-X2-U1 CORDIC-X2-UT1 -
LatticeXP CORDIC-XM-U1 CORDIC-XM-UT1 -

To download a full evaluation version of this IP, go to the IP Server in Lattice Radiant. This IP core supports Lattice’s IP hardware evaluation capability, which makes it possible to generate the IP core and operate in hardware for a limited time (approximately four hours) without requiring an IP license.

To find out how to purchase the CORDIC IP core, please contact your local Lattice Sales Office.

Documentation

Quick Reference
Information Resources
TITLE NUMBER VERSION DATE FORMAT SIZE
Select All
CORDIC IP Core - Lattice Radiant Software
FPGA-IPUG-02136 1.3 12/5/2022 PDF 711.6 KB
CORDIC IP Core User Guide
FPGA-IPUG02044 1.4 7/16/2018 PDF 1000.5 KB
TITLE NUMBER VERSION DATE FORMAT SIZE
Select All
IPexpress Quick Start Guide
8/5/2010 PDF 304.8 KB

*By clicking on the "Notify Me of Changes" button, you agree to receive notifications on changes to the document(s) you selected.