« Fonctionnement d'un ordinateur/Les circuits de calcul flottant » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 39 :
[[File:Interpolation memory.PNG|centre|vignette|upright=2|''Interpolation memory''.]]
 
===L'algorithme CORDIC===
 
Sur du matériel peu puissant, les fonctions trigonométriques peuvent être calculées avec l''''algorithme CORDIC'''. Celui-ci est notamment très utilisé dans les calculatrices modernes, qui possèdent un circuit séquentiel ou un logiciel pour exécuter cet algorithme. Cet algorithme fonctionne par approximations successives, chaque itération de l'algorithme permettant de s’approcher du résultat final. Il utilise les mathématiques du cercle trigonométrique (qui sont considérées acquises dans ce qui suit). Cet algorithme représente un angle par un vecteur unitaire dans le cercle trigonométrique, plus précisément par l'angle que forme le vecteur avec l'axe des abscisses. Le cosinus et le sinus de l'angle sont tout simplement les coordonnées x et y du vecteur, par définition. En travaillant donc directement avec les coordonnées du vecteur, l'algorithme peut connaitre à chaque itération le cosinus et le sinus de l'angle. Dit autrement, pour un vecteur <math>V</math> de coordonnées (x,y) et d'ange <math>\gamma</math>, on a :
Ligne 53 :
[[File:CORDIC-illustration.png|centre|500px|CORDIC-illustration]]
 
====PrincipesLes principes mathématiques de CORDIC====
 
Cette rotation peut se calculer assez simplement. Pour un vecteur de coordonnées <math>(x , y)</math>, la rotation doit donner un nouveau vecteur de coordonnées <math>(x' , y')</math>. Pour une rotation d'angle <math>\gamma</math>, on peut calculer le second vecteur à partir du premier en multipliant par une matrice assez spéciale (nous ne ferons pas de rappels sur la multiplication matricielle ou les vecteurs dans ce cours). Voici cette matrice :
Ligne 87 :
: <math> y' = K (x >> i + y) </math>
 
====CircuitsLes circuits CORDIC====
 
Ainsi, une rotation demande juste de décaler x et y et d'ajouter le tout aux valeurs avant décalage d'une certaine manière. Voici le circuit qui dérive de la matrice précédente. Ce circuit prend les coordonnées du vecteur et lui ajoute/retranche un angle précis. On obtient ainsi le circuit de base de CORDIC.