Cours exercices corr circuits seqauentielles - électronique

Électronique numérique : Cours exercices corr circuits seqauentielles

Télécharger PDF

Obtenir 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.

pack complet des cours, TDs, TPs et examens exercices sur Électronique numérique

Accédez à une collection complète des supports de cours, des travaux dirigés (TD) corrigés, examens...

Télécharger pack

Concevoir 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

<