VHDL and Cordic Algorithim
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

VHDL and Cordic Algorithim

  • 5,058 views
Uploaded on

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

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

More in: Education , Technology , Design
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
5,058
On Slideshare
5,058
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
171
Comments
2
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. CONTENTSVHDL: HistoryVHDL: BasicsVHDL: Design UnitsCORDIC Algorithm• Key Idea• Rotations• Iterations• Rotation Mode• HardwareResultConclusion
  • 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. 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. VHDL: Design Units1. Entity declaration.2. Architecture.3. Configuration.4. Package declaration.5. Package body.
  • 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. 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. 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. 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. 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. 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. Rotations
  • 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. 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. 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. 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. 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. 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. CORDIC Hardware(Basic)
  • 20. CORDIC HardwareSerial CORDIC Module in HDL Designer
  • 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. 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. Thank You