TD : 17 Cosinus, digicode Exercice 1 : Calcul de Cosinus

publicité
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 :
∞
X
x4
x6
(−1)n
x2
cos(x) =
∗ x2n = 1 −
+
−
+ ...
(2n)!
2!
4!
6!
n=0
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 x2 calculée. Lorsque recalc
passe à 1, le circuit prend en compte son entrée x pour calculer un nouvel x2 , disponible en sortie au
front montant d’horloge suivant.
Question 2
Réalisez un circuit n comprenant 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 n utilisé.
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
Question 5
Modifiez votre circuit pour calculer à la place 1/(2n)! : tant que l’entrée reset est à 1, la sortie au
front montant suivant est 1/0!, mais lorsque l’entrée reset passe à 0, au front montant suivant la sortie
passe à 1/2!, puis au front montant suivant, elle est à 1/4!, etc.
Question 6
En vous aidant du circuit réalisé ci-dessus, réalisez un circuit calculant x2n /(2n)! : tant que l’entrée
reset est à 1, la sortie est à 1 (avant le front montant suivant). Lorsque l’entrée reset passe à 0, au
front montant suivant la sortie passe à x2 /2!, puis au front montant suivant elle est à x4 /4!, etc.
Question 7
En vous aidant des circuits réalisés ci-dessus, réalisez le circuit calculant une approximation de cos(x)
à un certain rang en un certain nombre de cycles. On aura deux entrées x et reset (qui fait repartir le
calcul de zéro), et une sortie cos(x).
2
Exercice 2 : digicode
Nous allons construire un digicode, c’est-à-dire un circuit possédant des boutons de 0 à 9 et un bouton
A, et ayant pour unique sortie Success qui indique si l’utilisateur a entré le bon code (i.e. la bonne série
de n chiffres puis A), commandant ainsi l’ouverture d’une porte, typiquement.
Chiffre 1
4
Chiffre 2
Chiffre n
4
4
4
Succcess
Chiffre
A
Clk
Fonctionnement des entrées
L’appui sur un des boutons déclenche un front montant sur l’entrée Clk, le chiffre du bouton enfoncé
étant disponible (sur 4 bits) sur l’entrée Chiffre.
L’appui sur le bouton A fait passer l’entrée Valid à 1, sans toucher à l’entrée Clk. Il permet à
l’utilisateur d’indiquer qu’il a fini de taper sa séquence de chiffres, et de faire tester si elle est correcte,
Success passant à 1 si c’est le cas.
Matériel disponible
On suppose notamment disposer de
— Une série de circuits Chiffre1, Chiffre2, ..., Chiffre n, n’ayant qu’une sortie sur 4 bits codant
un chiffre entre 0 et 9. La bonne série de chiffres validée par le digicode sera donc donnée par ces
n circuits.
— Des registres pour stocker les chiffres déjà tapés.
— Tous les circuits combinatoires usuels.
Indications
Commencez par faire une version sans vous soucier du bouton A.
Que se passe-t-il si l’on tape plus de chiffres que nécessaire ?
3
Téléchargement