Université de Bordeaux
Licence STS
ARCHITECTURE DES ORDINATEURS
TD : 17
Cosinus, digicode
Exercice 1 : Calcul de Cosinus
On rappelle que la fonction cosinus peut s’écrire sous la forme de la série suivante :
cos(x) =
∞
X
n=0
(−1)n
(2n)! ∗x2n= 1 −x2
2! +x4
4! −x6
6! +...
L’objectif est de réaliser un circuit séquentiel calculant une approximation de cos(x)à un certain
rang en un certain nombre de cycles.
On supposera avoir à disposition les circuits combinatoires calculant la somme, la soustraction, le
produit et le quotient de deux nombres, et l’on supposera que les nombres sont encodés sous une forme
flottante adaptée.
Question 1
Réalisez un circuit x**2 comprenant une entrée recalc, une entrée x, et dont la seule sortie produit
x2: tant que l’entrée recalc est à 0, la sortie conserve la dernière valeur x2calculée. Lorsque recalc
passe à 1, le circuit prend en compte son entrée xpour calculer un nouvel x2, disponible en sortie au
front montant d’horloge suivant.
Question 2
Réalisez un circuit ncomprenant seulement une entrée reset, et dont la seule sortie produit n: tant
que l’entrée reset est à 1, la sortie est 0(avant même le front montant suivant), mais lorsque l’entrée
reset passe à 0, au front montant suivant la sortie passe à 1, puis au front montant suivant elle est à 2,
etc.
Question 3
Modifiez votre circuit pour calculer n! : tant que l’entrée reset est à 1, la sortie est 0! (avant même
le front montant suivant), mais lorsque l’entrée reset passe à 0, au front montant suivant la sortie passe
à1!, puis au front montant suivant elle est à 2!, etc. On pourra bien sûr utiliser deux registres, l’un
stockant la dernière sortie calculée, et l’autre le dernier nutilisé.
Question 4
Modifiez votre circuit pour calculer à la place (2n)! : tant que l’entrée reset est à 1, la sortie au
front montant suivant est 0!, mais lorsque l’entrée reset passe à 0, au front montant suivant la sortie
passe à 2!, puis au front montant suivant, elle est à 4!, etc.
1