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