Vous êtes sur la page 1sur 12

Calcul de fonctions trigonométriques

ave l algo ith e CORDIC et so i pl e tatio

Pierre Langlois

http://creativecommons.org/licenses/by-nc-sa/2.5/ca/

INF3500 : Conception et implémentation de systèmes numériques


CORDIC
Sujets de ce thème

• Origines
• P i ipe de ase: otatio d u ve teu
• Clé de la réalisation matérielle efficace
• D oule e t de l algo ith e
• I pl e tatio de l algo ith e et he i des do es

INF3500 : Conception et implémentation de systèmes numériques 2


Calculer le sinus et le cosinus avec CORDIC

• CORDIC: COordinate Rotation DIgital Computer,


proposé par Jack Volder, un ingénieur américain,
en 1959.
• L algo ith e CORDIC pe et de al ule les
fonctions trigonométriques avec une suite
d op atio s a ith ti ues t s si ples: additio ,
soustraction et décalage.
• Utilisé dans les calculatrices de poche, Intel 80x87,
80486 et Motorola 68881.
• L algo ith e CORDIC a t g alis pou al ule
des fonctions exponentielles, la division, la
multiplication et la racine carrée.

INF3500 : Conception et implémentation de systèmes numériques 3


Principe de base

• U e otatio da s le pla peut s effe tue à l aide de l uatio suiva te:

 xi 1  cos  i  sin  i   xi 
 y    sin  cos  i   yi 
 i 1   i

 1  tan  i   xi 
 cos  i   y 
 tan  i 1  i 

xi 1  cos  i ( xi  yi tan  i )
yi 1  cos  i ( yi  xi tan  i )

INF3500 : Conception et implémentation de systèmes numériques 4


Principe de base

• On peut décomposer une rotation en plusieurs sous-rotations.


– La gle glo al de otatio est gal à la so e des a gles des sous-rotations.
– Les angles des sous-rotations peuvent être positifs ou négatifs.

 x3 
 y   cos  2 cos 1 cos  0 
 3
 1  tan  2   1  tan 1   1  tan  0   x0 
 tan 
 2 1   tan 1 1   tan  0 1   y0 

 xn   1  tan  n 1   1  tan  n 2   1  tan  0   x0 


 y   K   tan    tan     tan  1   y0 
 n  n 1 1  n2 1   0
n 1
K   cos  i
0

INF3500 : Conception et implémentation de systèmes numériques 5


Clé de la réalisation matérielle efficace

• La clé de la réalisation matérielle simple de


l’algo ith e CORDIC est u’o choisit ta (i) = 2-i. i tan(i) i (degrés)
• Da s l i pl e tatio des uatio s, la 0 1.000 45.0000
multiplication par tan(i) peut donc être effectuée 1 0.500 26.5651
par un simple décalage de bits. 2 0.250 14.0362
• Comme on choisit les i, o peut al ule d ava e 3 0.125 7.1250
les cos i ainsi que K, le produit des cos i.

 xn   1  tan  n 1   1  tan  n 2   1  tan  0   x0 


y     tan    tan   
1   y0 
K
 n  n 1 1  n2 1   tan  0
n 1
K   cos  i
0

INF3500 : Conception et implémentation de systèmes numériques 6


D oule e t de l algo ith e

• Pou o te i le si us et le osi us d u a gle, o


n 1
z   di i , di   1,1
prend le vecteur (1, 0) comme point de départ et
o le fait tou e pa l a gle d si .
• Les coordonnées (x, y) obtenues sont le cosinus et 0
le si us de l a gle, espe tive e t.
• Da s l algo ith e CORDIC, o p e d le ve teu K,
0) comme point de départ.
• Il reste à trouver la somme des angles i qui est
gale à l a gle d si z.

cos z   1  d n 1 tan  n 1   1  d n  2 tan  n  2 


 sin z   d tan   d tan   
   n 1 n 1 1   n2 n2 1 
 1  d 0 tan  0   K 
  0 
 0
d
INF3500 : Conception et implémentation de systèmes numériques
tan  0 1   7
D oule e t de l algo ith e

• E p ati ue, o p o de à l e ve s: o pa t de y x(0),y (0)


l a gle z et o fait des otatio s pa les a gles i
positives ou gatives jus u à e u o a ive à .
• On calcule zi+1 = zi - di i
x(2),y (2)
–45
• Le signe de la rotation di est égal au signe de 30
–14 x(10) x
l a gle ou a t zi.
+26.6
• E e ple des t ois p e i es otatio s pou l a gle x(3),y (3)
z = 30 degrés.
x(1),y (1)
B. Parhami, Computer Arithmetic, Oxford University Press, 2000.

INF3500 : Conception et implémentation de systèmes numériques 8


Déroulement de l algo ith e

• On obtient finalement trois équations à


implémenter.
• Les opérations requises sont xi 1  ( xi  d i yi tan  i )
l additio /soust a tio et le d alage.
• Un tableau doit contenir les i, mais on note que yi 1  ( yi  d i xi tan  i )
pour i petit, tan i = i = 2-i par choix.
• Il faut d te i e le o e d it atio s à fai e, zi 1  zi  d i i
on obtient environ un bit de précision par
itération.

INF3500 : Conception et implémentation de systèmes numériques 9


A al se du p o l e pou l i pl e tatio

• Les ports du circuit de transmission sont: • Besoin de cinq éléments à mémoire:


– reset, clk – trois registres pour x, y et z
– theta_rad e t e : l a gle z e p i e adia s, – u egist e d tats:
limité entre -/4 et /4. • en train de faire les calculs: pret <= et o a epte
– go e t e : i di ue ue l a gle do t o veut o te i pas de nouvel angle
le sinus et le cosinus est placé sur le port theta_rad • en attente: pret <= et on accepte un nouvel angle
et que les calculs peuvent débuter – un compteur interne pour déterminer si on a fait
– pret (sortie): indique que les calculs sont terminés toutes les itérations
– costheta et sintheta (sorties): les résultats
• Toutes les valeurs sont fractionnaires.

INF3500 : Conception et implémentation de systèmes numériques 10


CORDIC
Chemin des données

xi 1  ( xi  d i yi tan  i )
yi 1  ( yi  d i xi tan  i )
zi 1  zi  d i i
d i  sgn( zi )

INF3500 : Conception et implémentation de systèmes numériques 11


Vous dev iez ai te a t t e apa le de …

• E pli ue les p i ipes de l algo ith e CORDIC. B


• Cal ule le si us et le osi us d u o e à l aide de l algo ith e CORDIC. B

Code Niveau (http://fr.wikipedia.org/wiki/Taxonomie_de_Bloom)


B1 Connaissance - o ise de l i fo atio .
B2 Compréhension – i te p te l i fo atio .
B3 Application – confronter les connaissances à des cas pratiques simples.
B4 Analyse – décomposer un problème, cas pratiques plus complexes.
B5 Synthèse – expression personnelle, cas pratiques plus complexes.
INF3500 : Conception et implémentation de systèmes numériques 12

Vous aimerez peut-être aussi