VHDL and Cordic Algorithim


Published on

A basic descriptive introduction of VHDL followed by the implementation of Cordic Algorithim via VHDL.

Published in: Education, Technology, Design
  • http://www.instructables.com/id/Cordic-Algorithm-Using-VHDL/ :) full code
    Are you sure you want to  Yes  No
    Your message goes here
  • can you email me your VHDL Cordic Code, email is josh.elliott42@gmail.com
    Are you sure you want to  Yes  No
    Your message goes here
  • can u plz share ur VHDL Cordic code,my mail is: issaad.elghorri10@gmail.com thks
    Are you sure you want to  Yes  No
    Your message goes here
  • Dude you can just download it just from here. there is a button on top of this viewer which says save, just click and it downloads in .pptx format you can just edit it easily if you want.
    Are you sure you want to  Yes  No
    Your message goes here
  • Hi Subeer, can u plz share ur VHDL Cordic code to me for my assignment. My mail-id is balure_1986a@yahoo.co.in
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

VHDL and Cordic Algorithim

  1. 1. Project on VHDL and Digital Circuit Design(Implementation Of CORDIC Algorithm for trigonometric functions in VHDL) Submitted at : CEERI,Pilani Submitted By :Subeer Rangra 08EBKCS059
  2. 2. CONTENTSVHDL: HistoryVHDL: BasicsVHDL: Design UnitsCORDIC Algorithm• Key Idea• Rotations• Iterations• Rotation Mode• HardwareResultConclusion
  3. 3. VHDL: HistoryWas developed in the early 1980s for managing designproblems that involved large circuits and multiple teams ofengineers.Funded by U.S. Department of Defense.The first publicly available version was released in 1985.In 1986 IEEE (Institute of Electrical and Electronics Engineers,Inc.) was presented with a proposal to standardize the VHDL.In 1987 standardization => IEEE 1076-1987An improved version of the language was released in1994 => IEEE standard1076-1993.
  4. 4. VHDL: BasicsVHDL stands for VHSIC Hardware DescriptionLanguageHardware description language used for modelingdigital systems.It provides designing of digital systems at variouslevels of abstraction.Used to write text models that describe a logic circuit.
  5. 5. VHDL: Design Units1. Entity declaration.2. Architecture.3. Configuration.4. Package declaration.5. Package body.
  6. 6. Entities• A black box with interface definition. Inputs and Outputs• Defines the inputs/outputs of a A component (define pins).• A way to represent modularity in B E Chip VHDL. C• Similar to symbol in schematic. D• Entity declaration describes and initializes an entity.
  7. 7. Architectures• Every entity has at least one architecture.• One entity can have several architectures.• Architectures can be written using these following methodologies.. A Chip – Dataflow B E – Behavioral X – Structural (component ) C Y• Architectures can describe design on many levels D – Gate level – RTL (Register Transfer Level) – Behavioral level
  8. 8. Configurations• A configuration declaration is used to select one of the possibly many architecture bodies that an entity may have.• Configuration specifies the design entity used in place of each component instance (i.e. it plugs the chip into the chip socket and then the socket- chip assembly into the PCB).• To represent structure in that architecture body of an entity-architecture pair or by a configuration, which reside in library.
  9. 9. PackagesPackages contain information common to manydesign units.1.Package declaration – constant declarations – type and subtype declarations – function and procedure declarations – global signal declarations – file declarations – component declarations2.Package body – is not necessary needed – function bodies – procedure bodies
  10. 10. CORDIC AlgorithmCOordinate Rotation DIgital Computer CORDIC, which stands for COordinate Rotation Digital Computer, is an algorithm developed by Volder in the fifties which allows you to calculate trigonometric functions using simple shift and add operations. This is an advantage for hardware implementations were multipliers are normally resource demanding . The algorithm can be adapted to also compute fix/floating point multiply, divide, log, exponent and square root. The module computes fix point sin and cos values from a given angle.
  11. 11. CORDIC Algorithm Key Idea• If we have a computationally efficient way of rotating a vector, we can evaluate cos & sin• At each step, accumulate corresponding x and y increments• After a number of iterations, x and y increments converge to desired function values
  12. 12. Rotations
  13. 13. Rotate the vector OE (i) with end point at (x (i), y (i)) by (i)x (i+1) = x (i) cos (i)– y (i) sin (i) = (x (i) – y (i) tan (i))/(1 + tan2 (i))1/2y (i+1) = y (i) cos (i) + x (i) sin (i) = (y (i) + x (i) tan (i))/(1 + tan2 (i) ) 1/2z (i+1) = z (i) + (i)Goal: eliminate the divisions by (1 + tan2 (i)) 1/2 and choose (i) so that tan (i)is a power of 2Take the transformation x (i+1) = x (i) cos (i)– y (i) sin (i) y (i+1) = y (i) cos (i) + x (i) sin (i)Rearrange as x (i+1) = cos • ( x - y tan ) y (i+1) = cos • ( x + y tan )But we can choose the rotation angles, 1, 2, …, mSo choose, -1 -m m = tan 2so that tan m = 2-mThus the tan m factors are derived from simple shifts as 2-m corresponds tolinear binary shift.
  14. 14. Whereas a real rotation does not change the length R(i) of the vector, apseudorotation step increases its length to:R(i+1) = R(i) (1 + tan2 (i))1/2The coordinates of the new end point E (i+1) after pseudorotation is derivedby multiplying the coordinates of E(i+1) by the expansion factorx (i+1) = x (i) – y (i) tan (i)y (i+1) = y (i) + x (i) tan (i) [Pseudorotation]z (i+1) = z (i) + (i)Now the ith step, calculating (xi+1, yi+1) from (xi, yi)can be written xi+1 = Ki ( xi - yi di 2-i ) yi+1 = Ki ( yi - xi di 2-i ) 1Where Ki = cos( tan-1 2-i ) = ( 1 + 2-2i )And di = 1which is determined by the direction of the necessary correctionNow the product, Ki = ( ( 1 + 2-2i )-1 0.6073is a constant depending on the number of iterations
  15. 15. Basic CORDIC IterationsPick (i) such that tan (i) = di 2 –i, di Î {–1, 1}x(i+1) = x(i) – di y(i)2–iy (i+1) = y (i) + di x(i)2–I [CORDIC iteration]z (i+1) = z (i) – di tan–1 2–iIf we always pseudo rotate by the same set of angles(with + or – signs), then the expansion factor K is aconstant that can be pre-computed e (i) = tan –1 2-i
  16. 16. e (i) = tan –1 2-iExample: pseudo rotation for 30 degrees30.0 45.0 – 26.6 + 14.0 – 7.1 + 3.6 + 1.8 – 0.9+ 0.4 – 0.2 + 0.1 = 30.1
  17. 17. CORDIC Rotation ModeCORDIC calculations can be made in two ways• Rotation mode• Vector mode Here we use the rotation mode An input vector is rotated by a specified angle Angle accumulator is initialized with an angle This angle is reduced to zero An (x,y) pair The equations are: xi+1 = xi - yi di 2-i yi+1 = yi + xi di 2-i zi+1 = zi - di tan-1( 2-i ) and di = -1 if zi < 0 +1 otherwise
  18. 18. The results are: xn = Kn ( x0 cos z0 - y0 sin z0 ) yn = Kn ( x0 sin z0 + y0 cos z0 ) Zn = 0 Kn = ( 1 + 2-2i ) Set x0 = 1 and y0 = 0 the indicial values of x & y  And get the values ofcos(z0) and sin(z0)Note Kn is a constant - dependent only on the number of iterations The algorithm would normally be run for a fixed number of iterations A result with a known accuracy bound Note that the whole calculation requires shifts , add/ subtracts only
  19. 19. CORDIC Hardware(Basic)
  20. 20. CORDIC HardwareSerial CORDIC Module in HDL Designer
  21. 21. ResultCORDIC algorithm for finding the valuestrigonometric function sine and cosine ,wassuccessfully simulated .On taking input value of z as the angle which isto be calculated , and initializing the value of Kas 0.607252935008881256….for 10 iterations.x as 1 and y as 0,we get the answer for thevalue of cos(z) and vice versa for sin(z).
  22. 22. ConclusionCORDIC is not the fastest way to perform multiplicationsor to compute logarithms and exponentials but, sincethe same algorithm allows the computation of mostmathematical functions using very simple basicoperations, it is attractive for hardwareimplementations.
  23. 23. Thank You