• Aucun résultat trouvé

Architecture des Circuits Travaux Dirigés Année

N/A
N/A
Protected

Academic year: 2022

Partager "Architecture des Circuits Travaux Dirigés Année"

Copied!
8
0
0

Texte intégral

(1)

Architecture des Circuits Travaux Dirigés

Année 2021-2022

Préambule

Ce document contient les sujets des deux séances de travaux dirigés du cours d’Architecture des Circuits Numérique (3IF-AC). Il est rédigé de façon à vous permettre de réaliser les TD pas à pas de façon autonome (ce qui, bien évidemment, ne vous interdit en rien de poser un maximum de questions à votre enseignant lors des TD, il est là pour ça).

Table des matières

Table des matières 1

1 TP1, première partie – Circuits combinatoires 2

1 Introduction . . . 2

2 Prise en main de Digital . . . 2

3 Additionneur 1 bit . . . 3

4 Additionneur 4 bits . . . 3

2 TP1, deuxième partie – Registres et mémoires 4 1 Registres . . . 4

1.1 Latch et flip-flop . . . 4

1.2 Flip-flop avec reset . . . 5

1.3 Registre à commande de chargement . . . 5

1.4 Registre à 4 bits . . . 5

2 Mémoires adressables . . . 5

2.1 Réalisation d’un démultiplexeur (“demux”) 1 vers 4 de 1 bit . . . 5

2.2 Réalisation d’un multiplexeur (“mux”) 4 vers 1 de 4 bits . . . 6

2.3 Construction d’une mémoire de 4 mots de 4 bits . . . 6

3 TP1, troisième partie – ALU 7 1 Opérations logiques . . . 7

1.1 Opérateurs logiques unaires . . . 7

1.2 Opérateurs logiques binaires . . . 7

2 Opérations arithmétiques : Additionneur et Soustracteur 4 bits . . . 7

3 Implémentation d’une ALU 4 bits . . . 8

(2)

Chapitre 1

TP1, première partie – Circuits combinatoires

1 Introduction

Au cours de cette séance de travaux pratiques, vous allez utiliser un simulateur (“Digital”) pour “réaliser”

vos premiers circuits numériques. De façon à éviter de perdre trop de temps à “tirer des fils” (ce qui est rapidement un brin rébarbatif), nous limiterons la taille des mots manipulés par nos circuits à 4 bits1. Avant d’aller plus loin, vérifiez que vous êtes bien conscient.e qu’il n’y a pas de différence conceptuelle entre un circuit 4 bits et un circuit 8, 16 ou 32 bits. Si vous n’en êtes pas sûr.e, n’hésitez pas à demander ... Notez que la largeur du mot manipulé “physiquement” (en matériel) par une machine ne limite pas la taille des mots qu’il peut manipuler “en pratique” (il faudra juste du logiciel pour assembler les mots matériels). Mais c’est une autre histoire ...

Cette séance se compose de trois parties à peu près équivalentes (correspondant aux trois premiers chapitres de ce document) : dans un premier temps, vous allez vous intéresser à des circuits combinatoires simples (nous prendrons comme exemple l’additionneur 4 bits) et vous en profiterez pour vous familiariser avec Digital. Vous passerez ensuite aux circuits séquentiels simples (registres 4 bits et mémoire adressable).

Enfin, dans la troisième partie, nous reviendrons aux circuits combinatoires pour réaliser une ALU (Arithmetic and Logic Unit) 4 bits.

2 Prise en main de Digital

Digital est un simulateur de circuits numériques que nous allons utiliser dans les TP AC pour développer des circuits numériques (des circuits combinatoires puis séquentiels simples dans un premier temps, après quoi nous passerons à des circuits dîts « complexes »). Il sera ensuite réutilisé dans le cadre du cours d’AO (Architecture des Ordinateurs) pour simuler une machine de calcul.

Digital est installé sur les plateformes Linux du département IF2, ici : /opt/Digital/

Pour lancer Digital, il suffit de lancerDigital.shdans le répertoire ci-dessus.

QUESTION1IAfin de vous permettre de prendre en main l’outil, suivez le tutoriel de la documentation de Digital (menuHelp→Documentation, sectionA1.2, First steps). Dès que quelque chose vous énerve, allez chercher la sérénité dans la FAQ de ce même document. Notez que la configuration standard de Digital utilise une représentation simplifiée pour les portes logiques. Vous pouvez passer à la version « classique » utilisée en cours via le menuEdit→Settings→Use IEEE 91-1984 shapes.

1. Ce qui ne nous fait pas remonter à un passé si lointain : les processeurs 4 bits étaient encore utilisés il n’y a “pas si longtemps” (le 4004 de Intel a été fabriqué jusqu’au début des années 80, et les calculettes HP jusqu’à la HP49 vendue dans les années 2000 utilisaient un autre processeur 4 bits, le Saturn).

(3)

QUESTION2IVotre premier circuit dans ce répertoire réalisera l’addition 1 bit. Ce circuit possède trois entréesa,betc_inreprésentant respectivement les deux valeurs à additionner et la retenue entrante de l’addition. Il possède deux sorties :s, dénotant la valeur de la somme, etc_out, dénotant la valeur de la retenue de sortie.

On vous rappelle la définition desetc_out: s = (a xor b) xor c_in

c_out = (a and b) or (a and c_in) or (b and c_in)

Par défaut, les portes ont 2 entrées. Si vous avez besoin d’unANDou d’unORà trois entrée (ou plus) vous pouvez changer l’attribut correspondant d’un clic droit de la souris. Vous pouvez aussi changer l’orientation des portes, complémenter certaines entrées des portes (très utile pour implémenter multiplexeurs et démultiplexeurs), etc.

Sauvegardez ce circuit dans un fichier nomméadd1bit. Attention : il est important d’utiliser des noms informatifs car vous allez ensuite pouvoir réutiliser vos circuits pour en construire d’autres, plus complexes.

Au delà de l’exécution pas-à-pas, dirigée par le changement des valeurs d’entrées du circuit, que vous avez utilisée dans le tutoriel ci-dessus, Digital vous propose aussi un menuAnalysisqui calcule la table de vérité de votre circuit (Digitalpropose plein d’autres outils d’analyse et de test que vous êtes fortement encouragés à essayer).

Une fois votre circuit terminé et analysé, si vous n’êtes pas sûr de vous, vérifiez avec un enseignant que le comportement observé à travers les informations fournies dans la fenêtre d’analyse est bien celui attendu.

4 Additionneur 4 bits

Pour construire un additionneur 4 bits, vous n’allez surtout pas copier-coller 4 fois les portes que vous venez d’utiliser pour l’additionneur 1 bit. Plutôt, vous allez encapsuler votre additionneur 1 bit dans un composant que vous pourrez ensuite réutiliser 4 fois pour obtenir l’additionneur 4 bits (cf cours arithmétique).

QUESTION3ILisez la partie 1.4 de la doc (“Hierarchical design”). Créez un nouveau fichier Digital par File→New Embedded Circuit. Sauvez le tout de suite sous le nomadd4bitsdans le même répertoire que votreadd1bit. Ce dernier devrait apparaître dans la liste des composants disponibles, sous la rubrique Components→Custom.

Placez 4 copies du composantadd1bitsur le circuit et connectez-les pour réaliser un circuit additionneur 4 bits. Essayez de les placer intelligemment en réfléchissant dès le départ aux connexions que vous allez devoir cabler. Notez que Digital vous permet de choisir plusieurs implémentations pour les entrées-sortie du circuitadd1biten fonction de la disposition des entrées-sorties dans le circuit original ... essayez d’en tirer partie (si vous ne comprenez rien à ce paragraphe, jetez un oeil au cours “arithmétique” et/ou demandez un à enseignant ...).

Placez les ports de votre additionneur, nommez-lesa,betc_inpour les entrées etsetc_outpour les sorties et changez leur attribut “Data bits” quand nécessaire pour créer des entrées sortie de plusieurs bits (des “bus”). Pour connecter des bus à des fils « simples » (ou à des bus de largeur différente), vous allez devoir utiliser des composantsSplitter(menuComponents→Wires).

Testez votre additionneur 4 bits et sauvegardez-le.

(4)

Chapitre 2

TP1, deuxième partie – Registres et mémoires

Jusqu’à présent on s’est contenté de décrire des circuits combinatoires : la valeur des sorties de votre additionneur à un instant donnét ne dépend pas du passé, mais uniquement de la valeur de ses entrées à cet instant précis.

C’est très bien, mais on ne va pas aller très loin avec ça. Très vite, on va vouloir faire des calculs qui vont nécessiter plusieurs opérationssuccessives: à chaque étape, une opération combinatoire produira un résultat temporaire qui sera une opérande d’une opération à l’étape suivante. Ces étapes sont les fameux instants successifs de l’exécution de notre programme et de tels circuits sont appeléscircuits séquentiels et seront abordés plus en détails dans les chapitres??et??.

Pour pouvoir construire de tels circuits, il va nous falloir des petits circuits pour mémoriser des valeurs,d’un instant sur l’autre. Vous allez maintenant découvrir comment on construit de tels composants qu’on nomme registres, en partant d’éléments simples appelésverrous(en anglaislatch), eux-mêmes construits à partir de portes logiques. Ce chapitre aborde la construction de ces éléments.

1 Registres

NB : Créez chacun des circuits demandés séparément dans Digital, notamment pour pouvoir facilement les réutiliser plus tard.

1.1 Latch et flip-flop

QUESTION4IConstruisez un verrou (latch) ainsi qu’un registre 1 bit (flip-flop) dans Digital.

Dans le poly du cours (chapitre 4.2) ainsi que dans les transparents, vous trouverez une description de ces deux composants. Vous trouverez le multiplexeur dans la bibliothèque de composants de Digital (rubrique Plexers).

QUESTION5IRemplissez le chronogramme suivant pour vous assurer que vous comprenez le comporte- ment du flip-flop.

out

clock

in

(5)

reset. Il existe deux grandes catégories de Reset : le Reset synchrone, qui est pris en compte lors du prochain front d’horloge et le Reset asynchrone qui est pris en compte immédiatement. Ici nous vous demandons d’implémenter un Reset synchrone. Attention : l’objectif premier du Reset n’est pas de mettre à zéro la sortie de votre circuit (même si c’est ce qui va se passer) mais bien lecontenude votre mémoire de 1 bit.

1.3 Registre à commande de chargement

QUESTION7IAjoutez une commande de chargement à votre registre.

Pour cela, encapsulez votre flip-flop à reset, et étendez-le avec une entrée supplémentaireenable : la valeur du registre n’est modifiée pour prendre la valeur d’entrée que sienableest vrai. Sinon, la sortie conserve sa valeur actuelle.

Remarque : Vous venez de construire un registre complet à 1 bit, qui vous permet de conserver une information sur plusieurs cycles d’exécution et de changer cette information à la demande, grâce à la commandeenable.

1.4 Registre à 4 bits

On ne sait pour l’instant que mémoriser 1 bit. Pour aller plus loin, il va nous falloir de quoi mémoriser des paquets de bits. En pratique, la taille des registres est très liée à d’autres éléments de l’architecture concernée : taille des bus, taille de la mémoire. Pour ce TP, nous nous limiterons à des registres 4 bits.

Contrairement aux différents verrous et flip-flop que nous avons construits jusque-là, la complexité ne se situe pas dans le comportement temporel mais dans le nombre des boîtes et des connexions constituant le circuit.

QUESTION8IConstruisez un registre 4 bits en collant côte-à-côte 4 registres 1 bit. Veillez à la synchroni- sation de l’ensemble.

2 Mémoires adressables

Lorsqu’on veut stocker beaucoup de données en même temps, utiliser des registres indépendants implique une trop grande complexité d’interconnexion (i.e. il y a trop de filasse). On invente alors (tadam) des mémoires adressables.

Dans cette partie, vous allez implémenter une telle mémoire adressable. Elle sera petite (4 mots de 4 bits), mais vous constaterez également qu’étendre ce composant à des capacités plus grandes est simple.

ATTENTION :si à ce stade du TP vous êtes en retard, sautez les sections 2.1 et 2.2 pour passer directement à la section 2.3. Dans ce cas, utilisez les muliplexeurs et démultiplexeurs de la bibliothèque Digital mais prenez tout de même le temps, hors séance, de faire ces deux sections ...

2.1 Réalisation d’un démultiplexeur (“demux”) 1 vers 4 de 1 bit

Un dé-multiplexeur “1 versn” est un composant qui réalise un aiguillage. On se donne 1 entrée dedonnées, k=dlog2neentrées de sélection etnsorties dedonnées. À l’intérieur, il faut trouver la bonne combinaison de portes logiques ....

QUESTION9IRéalisez un démultiplexeur 1 vers 4 à 1 bits.

(6)

2.2 Réalisation d’un multiplexeur (“mux”) 4 vers 1 de 4 bits

Cet aiguillage se fait aussi dans l’autre sens, pour pouvoir envoyer une desnentrées vers l’unique sortie.

QUESTION10IRéalisez ce composantmultiplexeur n vers 1, avecn= 4, pour des entrées booléennes (1 bit chacune) et une sortie booléenne (multiplexeur 4 vers 1 de 1bit)

Cet aiguillage manipule des fils (entrées et sortie) de taille 1, on parle de multiplexeur 4 vers 1 à 1 bit.

On peut le généraliser pour que les informations à sélectionner soient de taille quelconque. Ça se fait de manière hiérarchique, par exemple en encapsulant deux multiplexeurs dembits pour faire un multiplexeur de 2mbits.

QUESTION11IRéalisez un multiplexeur 4 vers 1 à 2 bits. Puis à 4 bits.

2.3 Construction d’une mémoire de 4 mots de 4 bits

QUESTION12IConcevez maintenant une mémoire de 4 mots de 4 bits.

Vous avez tous les composants nécessaires. Elle sera d’une taille considérable : 16 bits en tout (2 octets) ! Pour vous aider un peu, elle aura les entrées suivantes :

— une entrée d’adresseA.

— un entrée de donnéesDI(pourData In).

— une entrée de contrôleWE(pourWrite Enable) qui permet de décider quand on veut écrire la donnée présente sur le busDIà l’adresseA.

— une entréereset, pour réinitialiser la mémoire.

— une entréeclk, pour piloter la mise a jour de la mémoire.

Votre mémoire aura aussi une sortie de donnéesDO(pour Data Out) sur laquelle on peut lire la valeur contenue à l’adresseA. Notez que vous pouvez connecter des “probes” sur les sorties des registres afin de visualiser leur contenu (menuComponents→I0).

(7)

TP1, troisième partie – ALU

Rappel : si vous ne savez pas ce qu’est une ALU (ou une UAL), commencez par nous poser la question ...

Notre ALU pourra calculer deux opérations arithmétiques à deux opérandes1(ADDetSUB) et cinq opérations logiques à un ou deux opérandes (AND,OR,XOR,NOT,LSR). LesAND,OR,XORetNOTse comprennent bit à bit, par exemple leANDréalise 4 AND binaires en parallèle, et calcule doncs0 =a0ANDb0,s1=a1ANDb1, etc.

l’ALU calculera aussi 4 drapeaux ouflags2 en sortie :Z,C,N.

QUESTION13IÀ votre avis, pourquoi notre ALU implémente-t-elle leLSR(“Logical Shift Right”) mais pas leLSL(“Logical Shift Left”).

QUESTION14 I Quelle est la différence entre un LSR et une ASR (“Arithmetic Shift Right”) ? Indice :

“Arithmetic” est ici un raccourci malheureux pour “Arithmétique en complément à 2”.

1 Opérations logiques

ATTENTION :si à ce stade du TP vous êtes en retard, ne réalisez qu’une partie des opérations logiques (a minima une opération binaire et une opération unaire) puis passez directement à l’intégration de l’ALU (section 3). Prenez tout de même le temps, hors séance, de terminer votre ALU ...

1.1 Opérateurs logiques unaires

QUESTION15IImplémentez et intégrez (séparément) deux modules réalisant respectivement un NOT bit-à-bit et unLSRsur un mot de 4 bits. Attention : le bit sortant à droite lors duLSRdoit être fourni en sortie en plus du résultat duLSR. Pour ces modules comme pour les suivants, veillez à utiliser des entrées-sorties de 4 bits (et non 4 entrées-sorties de 1 bit).

1.2 Opérateurs logiques binaires

QUESTION16IImplémentez et intégrez trois modules réalisant respectivement les opérations logique bit à bitAND,ORetXORsur un mot de 4 bits.

2 Opérations arithmétiques : Additionneur et Soustracteur 4 bits

Nous avons déjà implémenté un additionneur 4 bits. Vous pouvez donc le réutiliser dans votre ALU mais aussi pour réaliser un soustracteur. Pour cela il suffit de passer par le complément à deux puisque S =A−B =A+ (−B). En complément à deux, on a :−B =NOT(B) + 1. Profitez de ces deux équations pour

1. toujours sur 4 bits.

2. Un “Flag” est une information binaire permettant à l’ALU de sortir un compte-rendu minimal sur le résultat du calcul qu’elle vient d’effectuer. Les ALUs sortent généralement quatre flags différents :Z(Zero : le résultat du calcul est nul),N(Negative : le résultat du calcul, interprété en complément à 2 est négatif),C(Carry : le calcul a produit une retenue à gauche) etV(oVerflow : le résultat du calcul, interprété en complément à 2, est invalide car il y a eu un dépassement de la capacité du complément à 2).

Il faut bien comprendre que N et V n’ont de sens que si le résultat de l’ALU est interprété en complément à 2. En binaire non signé, le drapeau qui indique le dépassement de capacité de l’addition estC, et celui qui indique le dépassement de capacité de la soustraction estN.

(8)

implémenter une soustraction en réutilisant votre additionneur 4 bits et votreNOT4 bits (on se rappellera aussi que pour effectuer l’opération A+B + 1, il suffit d’utiliser un additionneur et d’activer son entrée Carry_in(en plus des deux opérandes bien sûr !).

QUESTION17IRéalisez un soustracteur 4 bits à partir des indications précédentes.

3 Implémentation d’une ALU 4 bits

Maintenant que vous disposez de modules capables de calculer toutes les opérations arithmétiques et logiques, vous allez pouvoir passer à la réalisation de votre ALU. Celle-ci recevra en entrée deux mots de 4 bits (les opérandesAetB) ainsi que 4 bits de commande (permettant de sélectionner l’opération à effectuer). Elle fournira en sortieSun mot de 4 bits (résultat de l’opération), ainsi que les quatre drapeaux de 1 bits de la note de pied de page précédente. Attention : si les flagsZetNont un sens pour toutes les opérations de l’ALU, ce n’est pas le cas des flagsCetV. Vous les mettrez donc à zéro lorsque l’opération en cours ne peut leur donner de valeur. Dans le cas particulier de l’opérationLSR, le flagCcontiendra le bit sorti à droite.

QUESTION18ILe tableau ci-dessous indique le codage des commandes de l’ALU. Intégrez vos sept (+1) opérations dans une ALU et testez-la. Vérifiez en particulier que vos flags sont bien positionnés ...

CodeOp Opération 0000 S = A + B 0001 S = A - B 0010 S = A AND B 0011 S = A OR B 0100 S = A XOR B 0101 S = LSR A 1000 S = NOT A 1001 S = B

QUESTION19I(facultative) À ce stade ce n’est pas beaucoup plus compliqué de passer sur 8 bits ... en gros il suffit de doubler tous les modules ...

QUESTION20I(facultative) Là c’est un peu plus compliqué. En doublant certains modules, réalisez une ALU 8 bits plus rapide que la précédente ...

Références

Documents relatifs

On y montre notamment que le rang de ces matrices est lié à l’ordre de la récurrence satisfaite par la suite et que les éléments du noyau de l’une de ces matrices sont

Entre Barbier & Mariage, passage de la verve à sombre réflexion, constat amer (roman picaresque autobio dc décalage entre picaro ds l’act° / celui qui fait bilan au momt

1) La perturbation des sédiments à la surface, des nodules polymétalliques et de la faune associée sur des zones de quelques dizaines à quelques centaines de km 2. Les

L’évaluation de cette partie prend en compte : la pertinence de la présentation par rapport à la problématique, les connaissances scientifiques, la culture

mettant chacune au même dénominateur et, ensuite, appliquer le produit en croix pour ne plus avoir de dénominateur. En déduire l'équation de l'hyperbole

Néanmoins, il faut dire que la notion était relativement peu exploitée dans le problème en tant que telle et que même un candidat l’ignorant tout à fait

Les teintes de Newton sont délicates à obtenir, placez-vous à proximité du contact optique (Si vous n’avez pas charioter le miroir M1 dans le IV-2, c’est le cas). - Remplacez

Le temps d attente d un client lorsqu il prend le train, exprimé en minutes, peut être modélisé par une variable aléatoire T qui suit la loi uniforme sur l'intervalle [1 20]..