Électronique numérique : Cours exercices corr circuits seqauentielles
Télécharger PDFObtenir le pack complet des cours, TDs, examens sur Électronique numérique!
Vous souhaitez maîtriser Électronique numérique ? Ne cherchez plus, nous avons le pack bien choisi pour vous.

Accédez à une collection complète des supports de cours, des travaux dirigés (TD) corrigés, examens...
Télécharger packConcevoir son microprocesseur
structure des systèmes logiques
Jean-Christophe Buisson
Collection Technosup
Ellipses
Avant-propos
Ce livre s’adresse aux étudiants en informatique de licence et maîtrise, aux élèves
ingénieurs, ainsi qu’aux professionnels de l’informatique - programmeurs ou autres -
soucieux de comprendre le fonctionnement des systèmes logiques présents dans les
dispositifs électroniques qui nous entourent, et en particulier les microprocesseurs et les
microcontrôleurs. Il est basé sur le cours, les travaux dirigés et les travaux pratiques
d’architecture des ordinateurs dispensés en 1ère année du département informatique
de l’Ecole Nationale Supérieure d’électronique, d’Informatique, d’Hydraulique et de
Télécommunications (ENSEEIHT) de Toulouse, et il est le fruit de plus de 15 ans
d’expérience dans ce domaine.
Le livre est organisé en deux grandes parties. La première (chapitres 1 à 3) présente
d’abord toutes les notions de base préalables à la compréhension : le système de
numération binaire et son utilisation dans le codage des nombres entiers naturels et relatifs,
des caractères et des nombres réels ; ses propriétés dans les opérations d’addition, de
comparaison, etc. On décrit ensuite les atomes de base des systèmes logiques que sont les
portes et les bascules, et on décrit les méthodes d’analyse et de synthèse qui permettent
d’assembler de tels éléments pour former des modules de complexité croissante. Le
lecteur est ainsi amené à créer des circuits combinatoires et séquentiels, en employant
des méthodes réutilisables dans des contextes variés. On construit des encodeurs et des
décodeurs, des compteurs, des séquenceurs de différents types pour automatismes, etc. On
examine également en détail des modules qui seront utilisés dans des microprocesseurs :
comparateurs, unités arithmétiques et logiques, multiplexeurs, mémoires, etc. Dans toute
cette partie, l’accent est mis sur la modularité et la réutilisabilité, notion aussi importante ici
que dans les disciplines logicielles.
La deuxième partie (chapitres 4 à 6) décrit le fonctionnement des microprocesseurs
et des microcontrôleurs au travers d’un processeur 32 bits spécifique à ce livre appelé
CRAPS, dont tous les organes sont des modules qui auront été étudiés dans la première
partie. Son langage machine de type RISC est un sous-ensemble de celui du SPARC, et il
est suffisamment riche pour pouvoir être utilisé dans des applications concrètes, ou pour
qu’on y incorpore un système d’exploitation comme Linux. Le but de cette partie est de
dévoiler le mystère de l’exécution d’un programme, qu’on pourra observer jusqu’à l’échelle
du bit élémentaire. De nombreux programmes écrits en assembleur CRAPS/SPARC sont
fournis, qui permettent de mettre en oeuvre des aspects importants de la vie d’un processeur :
déclenchement et prise en compte d’une interruption, dialogue avec des périphériques
d’entrées-sorties, appels de sous-programmes récursifs, etc.
Au delà de la simple compréhension, cet ouvrage a pour objectif de permettre la
conception de systèmes logiques digitaux, et il en fournit tous les moyens. De nombreuses
méthodes de conception sont présentées, parfois algébriques ou tabulaires, parfois
fonctionnelles ou intuitives ; pour chacune, plusieurs exemples détaillés sont fournis, qui
appliquent les techniques présentées à des problèmes concrets, et qui donnent au lecteur la
possibilité de se construire un véritable savoir-faire dans ce domaine. Un outil logiciel de
simulation appelé SHDL est présenté, libre et gratuit, à la fois basé sur un langage structurel
de description matérielle, et qui permet de voir fonctionner les dispositifs conçus. Un second
outil logiciel libre appelé CRAPSEMU permet de programmer le processeur décrit avec de
nombreux exemples fournis, afin que le lecteur puisse s’imprégner correctement des modes
de fonctionnement du processeur CRAPS.
Enfin, des éléments concrets sont fournis au lecteur pour lui permettre d’implémenter
tous les circuits décrits, jusque et y compris le processeur CRAPS, dans des circuits
logiques programmables de type CPLD ou FPGA, maintenant utilisables à l’aide de cartes
d’expérimentation à moindre coût.iv Table des Matières
Avant-propos. .. .. .. .. .. .. .. .. .. .. ..iii Chapitre I. Principes généraux. .. .. .. .. .. .. .. .1
1. Organisation générale d’un ordinateur.. .. .. .. .. .1
2. Bits et signaux électriques.. .. .. .. .. .. .. .3
3. Technologies de fabrication des circuits intégrés.. .. .. ..5 4. Mots binaires.. .. .. .. .. .. .. .. .. .6
5. Codage des principaux types de données.. .. .. .. ..10 6. Exercices corrigés.. .. .. .. .. .. .. .. ..15 Chapitre II. Éléments de logique combinatoire. .. .. .. .. ..18 1. Circuits combinatoires.. .. .. .. .. .. .. ..18 2. Tables de vérité.. .. .. .. .. .. .. .. .. .20
3. Algèbre et opérateurs de base.. .. .. .. .. .. ..20 4. Autres portes logiques. .. .. .. .. .. .. .. ..23 5. SHDL, un langage de description matérielle pédagogique.. .. .26
6. Circuits logiques reconfigurables ; PLD et FPGA.. .. .. ..28 7. Méthodes de simplification des fonctions combinatoires.. .. .30
8. Circuits combinatoires réutilisables.. .. .. .. .. ..37 9. Exercices corrigés.. .. .. .. .. .. .. .. ..56 Chapitre III. Éléments de logique séquentielle. .. .. .. .. ..61 1. Définition.. .. .. .. .. .. .. .. .. .. .61
2. Latch RS.. .. .. .. .. .. .. .. .. .. .62
3. Fronts et niveaux ; signaux d’horloge. .. .. .. .. .. .63
4. Circuits séquentiels synchrones et asynchrones : définitions.. ..63 5. Graphes d’états.. .. .. .. .. .. .. .. .. .64
6. Tables de transitions.. .. .. .. .. .. .. .. .66
7. Bascules synchrones.. .. .. .. .. .. .. .. .69
8. Synthèse d’un circuit séquentiel synchrone.. .. .. .. ..77 9. Chronologie d’un circuit séquentiel synchrone.. .. .. ..84 10. Circuits séquentiels réutilisables.. .. .. .. .. .. .85
11. Exercices corrigés.. .. .. .. .. .. .. .. .92
Chapitre IV. Éléments fonctionnels d’un processeur. .. .. .. ..98 1. Sorties haute-impédance.. .. .. .. .. .. .. ..98 2. Les bus parallèles.. .. .. .. .. .. .. .. ..101 3. Décodeurs.. .. .. .. .. .. .. .. .. ..103 4. Multiplexeurs.. .. .. .. .. .. .. .. .. .104
5. Encodeurs de priorité.. .. .. .. .. .. .. .. .105
6. Circuit d’extension de signe.. .. .. .. .. .. .. .107
7. Décaleur à barillet.. .. .. .. .. .. .. .. ..108 8. L’unité arithmétique et logique.. .. .. .. .. .. ..111 9. Circuit timer/PWM.. .. .. .. .. .. .. .. .114
10. RAMs et ROMs.. .. .. .. .. .. .. .. ..115 11. Exercices corrigés.. .. .. .. .. .. .. .. .122
Chapitre V. Programmation du processeur 32 bits CRAPS/SPARC. ..129 1. Le langage machine, à la frontière entre logiciel et matériel.. ..129 2. Ressources du programmeur CRAPS/SPARC.. .. .. .. .131
3. Directives d’un programme assembleur.. .. .. .. .. .145
4. Exemple de programme : crible d’Ératosthène. .. .. .. ..148 5. Appels de sous-programmes terminaux.. .. .. .. .. .152
6. Utilisation de la pile.. .. .. .. .. .. .. .. .153
7. Techniques de programmation diverses.. .. .. .. .. .158
8. Langages à structure de blocs et ’stack-frames’.. .. .. ..159 9. Programmation des entrées/sorties.. .. .. .. .. ..163 10. Programmation des exceptions.. .. .. .. .. .. .170
11. Exercices corrigés.. .. .. .. .. .. .. .. .178
Chapitre VI. Construction du processeur 32 bits CRAPS. .. .. ..186 1. Les registres.. .. .. .. .. .. .. .. .. ..186 2. L’unité arithmétique et logique.. .. .. .. .. .. ..190 3. Les bus du processeur CRAPS.. .. .. .. .. .. ..195 4. Structure du sous-système mémoire.. .. .. .. .. ..198 5. Structure du circuit d’entrées/sorties.. .. .. .. .. ..201 6. Structure du circuit timer/PWM.. .. .. .. .. .. .203
7. Structure du sous-système d’exceptions.. .. .. .. .. .205
8. Séquencement des instructions.. .. .. .. .. .. ..209 9. Exercices corrigés.. .. .. .. .. .. .. .. ..216 Références. .. .. .. .. .. .. .. .. .. .. .. .219vi Annexe A. Tables diverses. .. .. .. .. .. .. .. .. .220
Annexe B. CRAPS : guide du programmeur. .. .. .. .. .. .221
B.1. Instructions synthétiques.. .. .. .. .. .. .. .221
B.2. Jeu d’instructions du processeur CRAPS.. .. .. .. ..223 B.3. Tables des branchements conditionnels.. .. .. .. ..228 B.4. Format binaire des instructions de CRAPS.. .. .. .. .228
B.5. Directives de l’assembleur CRAPS.. .. .. .. .. .230
B.6. Cartographie mémoire de CRAPS.. .. .. .. .. ..231 B.7. Programmation des entrées/sorties.. .. .. .. .. ..231 B.8. Programmation du timer.. .. .. .. .. .. .. .231
B.9. Liste des exceptions. .. .. .. .. .. .. .. ..232 Glossaire. .. .. .. .. .. .. .. .. .. .. .. .233Index .. .. .. .. .. .. .. .. .. .. .. .. ..242 vii
Chapitre I
Principes généraux
1. Organisation générale d’un ordinateur
1.1. Le modèle de Von Neumann
La plupart des ordinateurs ont l’organisation générale de la figure I.1.
instruction #1
instruction #2
instruction #3
donnée #1
donnée #2
mémoire centraleadr#2 adr#3adr#5 adr#4adr#1 contrôleurs
de périphériques
instructiondonnées unité de contrôle= processeur
et de calcul
périphériquesdonnées données
registresr1 r2r3 Figure I.1.
Organisation générale d’un ordinateur; les flèches sont des chemins de
données.
Cette organisation est dite de ’Von-Neumann’, car elle ressemble beaucoup à la
machine conçue par
John Von Neumann
sur la machine IAS peu après la deuxième guerre
mondiale. Elle suppose et implique un certain nombre de propriétés caractéristiques des
ordinateurs actuels :
La mémoire est un composant central ; c’est un tableau de mots de taille fixe
On voit sur le schéma que la
mémoire centrale
est au départ et à l’arrivée de
l’exécution d’un programme. C’est elle qui contient le programme à exécuter et les données1 2
CHAPITREI. PRINCIPES GÉNÉRAUX
initiales ; c’est dans elle que seront stockés les résultats intermédiaires ou finaux.
C’est un tableau de mots binaires de taille fixe. Chaque mot est repéré par un nombre
appelé adresse, et les programmes feront référence aux données et aux instructions en
mémoire par leurs adresses.
Le programme exécuté est dans la mémoire centrale
Le programme qu’exécute un ordinateur n’est pas sur le disque dur, comme le
pensent beaucoup de gens. Une copie du programme est effectivement souvent stockée
sur un CDROM ou un disque dur, mais ce n’est pas avant d’avoir été copié en mémoire
centrale, comme le serait n’importe quelle autre ensemble de données, que son exécution
peut commencer.
Un programme qu’exécute un ordinateur est composé d’
instructions
sous forme de
mots mémoire. Le langage utilisé pour coder les instructions en mots binaires est appelé
langage machine
, c’est le seul que comprenne le processeur. La taille des instructions
varie beaucoup selon le type des processeurs. Parfois toutes les instructions ont la même
taille, égale à un ou plusieurs mots mémoire ; parfois elles ont des tailles variables selon la
complexité de l’instruction.
Le processeur est le coordonnateur de l’exécutionLe processeur
contrôle l’exécution des programmes, en organisant le chargement
des instructions et le détail de leur exécution ; c’est aussi lui qui effectue tous les calculs,
notamment sur les nombres entiers. Ces deux fonctions sont associées dans la même unité
car le contrôle de l’exécution nécessite souvent des calculs entiers, lorsque par exemple il
faut faire une somme pour déterminer l’adresse de l’instruction suivante.
Le processeur a besoin de garder la trace d’un certain nombre d’informations pendant
l’exécution des instructions : l’adresse de l’instruction en cours par exemple, ou le résultat
de la dernière opération arithmétique. Il utilise pour cela des
registres
, qui sont des mots
mémoire fixes, à accès très rapide.
Le processeur ne dialogue pas directement avec les périphériques
On voit sur la figure que le processeur dialogue avec des
contrôleurs de périphériques
et non avec les périphériques eux-même. Par exemple un processeur n’a aucune conscience
de l’existence d’un disque dur ; il dialogue avec un contrôleur de disque, à l’aide
d’instructions génériques d’entrées/sorties.
1.2. Organisation en bus
Les flèches entre les composants de la figure I.1 étaient à prendre dans un sens
fonctionnel; si elles devaient représenter effectivement les chemins par lesquels transitent
les données, le fonctionnement serait très inefficace. En pratique, les données circulent entre
les différents sous-systèmes d’un ordinateur sur desbus , sortes d’autoroutes, et des circuits
spécialisés jouent le rôle d’échangeurs aux carrefours de ces bus, de façon à permettre des
transferts simultanés dans certaines circonstances. La figure I.2 montre une organisation
typique d’un système de type compatible PC.
Un circuit appelé
north-bridge
règle les échanges à très grande vitesse, notamment
entre le processeur et la mémoire centrale. Il exploite de façon synchrone le bus FSB (front
side bus), encore appelé
bus système
, dont la vitesse est très corrélée à la puissance générale
1. Organisation générale d’un ordinateur3 64/256 bitsFSB 66/100/133/200 MHz
64 bits
66/100/133/200 MHz
64 bits
bus mémoire
533/800 Mo/s
mémoire RAMcache niveau 2
processeurnorth bridgeIDE southbridge LANPCI−E PCIUSB Figure I.2.
Architecture générale des bus d’un ordinateur compatible PC.
de l’ensemble. Un second circuit appelé
south-bridge
effectue quant à lui des échanges
moins rapides avec des périphériques SATA, réseau, etc.
La figure I.3 montre une photo de
carte mère
typique, avec l’emplacement physique des
différents bus. La mémoire et le north bridge sont placés très près du processeur, car ils sont
sur les bus les plus rapides. Lenorth-bridge est équipé d’un radiateur à cause de l’intensité
du travail de transfert qu’il réalise.
2. Bits et signaux électriques
L’information est stockée et véhiculée dans un ordinateur, logiquement sous forme de
chiffres binaires oubits (binary digit), et physiquement sous forme de signaux électriques.
La logique binaire est utilisée parce qu’il est plus facile de construire des systèmes
électriques possédant deux états stables, et parce qu’on a maintenant beaucoup de résultats
mathématiques en
algèbre de Boole
, mais des implémentations sur des systèmes possédant
plus de deux états stables sont envisageables.
Ces deux états sont notés ’0’ et ’1’ ; ils correspondent le plus souvent aux deux tensions
électriques 0v et +Vcc respectivement, Vcc valant exactement +5v pour des circuits utilisant
la technologie TTL, et une valeur comprise entre 2v et 15v environ en technologie CMOS
(des valeurs de Vcc=3.3v, 2.5v et 1.8v étant utilisée de plus en plus souvent). Pour tenir
compte du fait que ces signaux électriques vont être déformés lors des transmissions,
des plages de valeurs plus larges ont été affectées à ces états. Par exemple, en technologie
TTL, elles sont représentées figure I.4. Il faut noter que ces assignations sont légèrement
différentes selon qu’une tension est considérée en entrée ou en sortie d’un circuit.
Les circuits logiques qui sont utilisés pour combiner et transmettre les signaux
électriques logiques ont des caractéristiques non linéaires qui ont entre autres pour fonction
de remettre en forme un signal déformé par le bruit. On voit figure I.5 une porte ’non’ qui4 CHAPITREI. PRINCIPES GÉNÉRAUX
Figure I.3.
Carte mère typique. Les bus rouges (FSB et mémoire), très rapides, sont
gérés par le north bridge ; les bus verts (PCI, SATA, etc.), plus lents, sont gérés par le
south bridge.
’1’ logique
’0’ logique
’1’ logique0.4v + 5v2.4v interdit
’0’ logique0v0v + 5v2.4v (b)0.8v (a)
interdit
Figure I.4.
Assignation des tensions électriques aux valeurs logiques (a) en entrée de
circuit, (b) en sortie de circuit (technologie TTL).
inverse le bit d’entrée, tout en produisant un signal de sortie de meilleure qualité que le signal
d’entrée.
Les signaux pourront donc traverser un nombre quelconque d’étages de circuits
logiques sans que les déformations initiales ne soient amplifiées.
On notera sur la figure I.5 la présence d’un
temps de propagationtp HL( HL
indiquant :
de haut vers bas) qui correspond à la durée que met le circuit pour calculer sa sortie après que
ses entrées se soient modifiées. Ces temps de propagation se cumulent lors de la traversée
de plusieurs étages, et c’est finalement eux qui limiteront la vitesse de fonctionnement
maximale d’un circuit.
2. Bits et signaux électriques5 2.4v5v 0.4vtp HLE S
Figure I.5.
Remise en forme d’un signal après traversée d’une porte ’non’.
3. Technologies de fabrication des circuits intégrés
Les premiers ordinateurs ont été construits durant la deuxième guerre mondiale
avec des tubes cathodiques (des ’lampes’) comme dispositif de commutation. En 1947,
les laboratoires Bell inventent le premier
transistor
, qui va très vite supplanter la lampe
et apporter un facteur de réduction de taille important. Mais la véritable révolution
n’interviendra qu’avec l’invention des circuits intégrésVLSI dans les années 1970, qui
amèneront à la réalisation des premiers microprocesseurs.
Un grand nombre de technologies de fabrication de circuits intégrés existent, qui
se distinguent par des qualités différentes en termes de vitesse de propagation, densité
d’intégration, consommation et dissipation thermique. On va ébaucher rapidement dans
cette section les trois familles les plus connues, en terminant par celle qui est actuellement
la plus répandue et la plus significative, la familleCMOS .
Technologie TTL
La technologieTTL était la technologie standard utilisée à partir des années 1960
pour la réalisation de tous les types d’ordinateurs. Elle s’alimente typiquement en +5V, a
une consommation modérée, est robuste et a des règles d’interface simples. Une très grande
famille de circuits spécialisés, la famille 7400, est disponible sous forme de circuits en
boîtier DIL, et fournit des modules tout prêts : portes, bascules, compteurs, etc. Les capacités
d’intégration de circuits TTL sont faibles, et on ne peut guère mettre plus de quelques
milliers de portes TTL sur une puce de circuit intégré. On l’utilise encore aujourd’hui pour
des petites réalisations, notamment dans l’interfaçage avec d’autres circuits.
Technologie ECL
La technologieECL est caractérisée par sa très grande rapidité, mais aussi par une
consommation de courant élevée. Elle est de plus assez difficile à utiliser, notamment en
raison de l’emploi de tensions d’alimentation négatives. Elle est utilisée dans des petites
réalisations où la vitesse est critique, mais certains experts prévoient un développement de6 CHAPITREI. PRINCIPES GÉNÉRAUX
<