1 Couche physique: circuits logiques
1.1 Portes logiques et algèbre de Boole
La forme la plus élémentaire de circuit est la porte logique. Son
comportement est dit binaire car il est caractérisé par deux états:
l'état 0, qui représente la valeur logique faux et l'état 1, qui
représente la valeur logique vrai.
Les constructeurs utilisent dans certains cas une logique dite
positive: l'état 1 correspond à une tension comprise entre 2 et 5
volts (niveau haut) et l'état 0 à une tension comprise entre 0 et 1
volt (niveau bas). Dans d'autres cas, ils utilisent une logique dite
négative où l'état 1 correspond au niveau bas, tandis que l'état 0
correspond au niveau haut1.
La transmission n'est pas instantanée: le délai de traversée d'une
porte correspond au temps de propagation des signaux de l'entrée vers
la sortie (de l'ordre de quelques nanosecondes pour la porte la plus
simple2).
La porte logique la plus simple est celle qui réalise une inversion
logique. Elle est symbolisée par:
Elle est construite à l'aide d'un transistor, selon deux techniques
possibles: le transistor à jonctions (technologie dite bipolaire) ou
le transistor à effet de champ (technologie dite unipolaire). Dans la
première famille on trouve par exemple les circuits RTL
(Resistor Transistor Logic), TTL
(Transistor Transistor Logic), DTL
(Diode Transistor Logic) ou encore ECL
(Emitter Coupled Logic). La deuxième famille est
celle des circuits MOS (Metal Oxyde
Semiconductor) qui sont en général moins rapides, sauf les plus
récents comme HMOS ou XMOS3.
Un transistor fonctionne comme un interrupteur4:
-
Si la tension d'entrée Ve est inférieure à une valeur
critique, le transistor se bloque et n'est pas conducteur;
l'interrupteur est ouvert et la tension de sortie Vs est proche
de Vcc, donc à un niveau haut.
- Si la tension d'entrée Ve est supérieure à la valeur
critique, le transistor bascule, ce qui le rend conducteur;
l'interrupteur est fermé et la tension de sortie est au niveau bas,
proche de la masse. La résistance R est conçue pour limiter le
courant à travers le transistor, dans ce dernier cas.
1.1.2 Porte NON-ET
La porte NON-ET est réalisée en reliant deux transistors en série,
selon le schéma suivant:
Symbole logique de la porte NON-ET:
On vérifie facilement que la tension de sortie Vs est au niveau bas
si et seulement si V1 et V2 sont au niveau haut.
1.1.3 Porte NON-OU
Sur le même principe, le montage de deux transistors en parallèle
permet d'obtenir une porte NON-OU:
Sur le schéma précédent, on vérifie que Vs est au niveau bas si et
seulement si l'une des deux tensions V1 ou V2 est au niveau
haut.
Le symbole logique de cette porte est:
Ainsi, pour réaliser un OU (respectivement un ET), il faut relier un
NON-OU avec un inverseur (respectivement un NON-ET avec un inverseur).
Ces portes sont utilisées pour construire des fonctions booléennes à
variables booléennes, qui sont décrites soit par une table de vérité,
soit en utilisant une notation fonctionnelle où le symbole +
remplace OU, le point ou aucun symbole représente ET et une variable
comme A surmontée d'une barre représente NON A.
Exemple 1
Construire la fonction f définie par f (A, B, C) = M, où M=1
si et seulement si au moins deux des variables valent 1.
Remarque 2
Avec une porte de type NON-OU (ou NON-ET), on peut réaliser
n'importe quelle fonction booléenne.
On cherche souvent à réduire le nombre de portes, en utilisant les
propriétés algébriques des opérations logiques, par exemple la
distributivité de ET sur OU: A (B+C) = AB+AC.
En fait, on dispose de circuits qui réalisent directement des
fonctions logiques complexes.
1.2 Principe des circuits logiques
Un circuit intégré est une plaquette de silicium sur laquelle sont
intégrées les portes du circuit. La plaquette est encapsulée dans un
boîtier avec sur les côtés des broches permettant les connexions
électriques.
Ces circuits sont classés suivant la densité d'intégration,
c'est-à-dire le nombre de portes ou transistors par circuits (ou par
mm2):
SSI |
Small Scale Integration |
1 à 10 portes par circuit |
MSI |
Medium Scale Integration |
10 à 100 |
LSI |
Large Scale Integration |
100 à 100 000 |
VLSI |
Very Large Scale Integration |
plus de 100 000 et jusqu'à 1 million5 |
Exemple 3
Un circuit SSI dans un boîtier à 14 broches: circuit TTL 7400 de
Texas Instruments.
Bien entendu, plus l'échelle d'intégration augmente, plus il y a de portes
par rapport au nombre de broches.
-
MSI: de 5 à 10 portes par broche;
- LSI: de 25 à 100;
- VLSI: plusieurs milliers.
On distingue plusieurs catégories de circuits MSI qui vont être
décrits dans les paragraphes suivants.
1.3 Les circuits combinatoires
Dans ces circuits, la sortie est une expression logique des valeurs
d'entrée.
1.3.1 Multiplexeur
Un multiplexeur comporte 2n entrées, 1 sortie et n lignes de
sélection. La configuration des n lignes de sélection fournit une
valeur parmi les 2n entrées et connecte cette entrée à la sortie.
Par exemple, une conversion parallèle-série utilise un multiplexeur de
la façon suivante: une information de 8 bits arrive sur les 8
lignes d'entrée appelées D0, D1, ..., D7. Sur les trois lignes
de sélection A, B, C, on diffuse séquentiellement les valeurs
binaires dans l'ordre 000=0 à 111=7, de sorte que les 8 bits du
mot d'entrée sont transmis en série sur la ligne de sortie.
Un décodeur comprend n entrées et 2n sorties, la sortie activée
correspondant à la configuration binaire du mot formé par les n
entrées. Un tel circuit sert à sélectionner des adresses de la
mémoire.
Un décodeur 3 vers 8 (n=3) est réalisé par:
Un tel décodeur est utilisé pour une mémoire de 8 mots. Pour une
mémoire composée de 8 circuits de 8K chacun6, le
circuit 0 contient les octets d'adresses 0 à 8 × 1 024−1 =
8 192−1 = 8 191, le numéro 1 de 8 192 à 16 383, etc. On
sélectionne suivant les 3 bits de poids fort pour avoir le numéro de
circuit.
1.3.3 Comparateur
Un comparateur à 2n entrées et 1 sortie, les 2n entrées formant
deux mots de n bits: A et B. La sortie vaut 1 si le mot
A=B, sinon7.
1.3.4 Circuits FPLA
Ce sont des réseaux logiques programmables (Field
Programmable Logic Array) qui permettent de
réaliser des fonctions lorsqu'elles sont sous la forme d'une somme de
produits.
Considérons par exemple 20 broches dont 12 correspondent à des
entrées et 6 à des sorties. Les 12 entrées sont inversées, ce qui
fournit 24 variables internes. Ces 24 variables sont toutes
connectées à 50 portes ET, ce qui donne 1 200 fusibles, au départ
intacts.
Programmer le circuit consiste alors à détruire certains fusibles pour
obtenir les produits de la fonction à programmer. Les 6 sorties
proviennent de 6 portes OU qui reçoivent chacune les sorties des
50 portes ET. On obtient ainsi 300 fusibles dont certains sont
détruits pour obtenir la somme des termes de la fonction.
1.4 Les circuits de calcul
Un décaleur est formé de (n+1) entrées D1, ..., Dn, C et de
n sorties S1, ..., Sn et opère un décalage de 1 bit sur les
entrées D1, ..., Dn. Si C=1, il s'agit d'un décalage à droite
et si C=0, d'un décalage à gauche8.
1.4.2 Additionneur
Pour réaliser des additions de 2 mots de 16 bits, on utilise 16
additionneurs à 1 bit, reliés pour gérer la propagation éventuelle
de retenues. Ces additionneurs sont eux-mêmes formées à l'aide de
demi-additionneurs.
Ce demi-additionneur est donc constitué de deux portes, un OU exclusif
pour le résultat et un ET pour la retenue:
Table de vérité:
|
A |
B |
S |
R |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
|
Afin de permettre une liaison de plusieurs additionneurs en série, un
additionneur doit avoir une retenue en entrée Re en plus de la
retenue en sortie Rs:
|
A |
B |
Re |
S |
Rs |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
|
On peut vérifier que le circuit suivant réalise correctement
l'additionneur.
En représentant les deux demi-additionneurs par des carrés contenant
le signe +, on obtient une représentation simplifiée de
l'additionneur 1 bit:
1.4.3 Unité arithmétique et logique
Exemple d'une UAL (Unité Arithmétique et Logique)
à un bit qui réalise ET, OU, NON, SOMME9.
1.5 Circuits logiques à mémoire: les bascules
Appelés également circuits séquentiels ou flip-flops, les bascules
mémorisent l'état antérieur des variables de sortie et permettent
ainsi de mémoriser un bit.
1.5.1 Bascules RS (avec portes NON OU)
Ces circuits ont deux entrées: S (set) qui correspond à la mise à
1 et R (reset) qui correspond à la remise à 0. Ils ont
également deux sorties: Q1 et Q2.
Une bascule doit en principe mémoriser celle des deux entrées R et
S qui a été mise à 1 le plus récemment.
|
S |
R |
Q1 |
Q2 |
|
0 |
0 |
0 |
1 |
E1 |
0 |
0 |
0 |
1 |
E'1 |
0 |
0 |
1 |
0 |
E'2 |
1 |
0 |
1 |
0 |
E2 |
1 |
1 |
0 |
0 |
inutilisé |
|
Si S=0 et R=1, on vérifie qu'on passe dans l'état stable E1 où
Q1=0 et Q2=1. À partir de l'état E1, si R passe à 0, on
obtient S=0, R=0, Q1=0, Q2=1, donc pas de
changement10.
À partir de ce même état, si S passe à 1, on arrive à un état
stable E2: S=1, R=0, Q1=1, Q2=0. Si S repasse à 0,
cet état est inchangé.
On remarque que si S=R=0, il est possible d'avoir soit Q1=1,
Q2=0, soit l'inverse, ce qui conduit à n'utiliser que les états
E1, E2, E'1, E'2, et pas R=S=1.
Le fonctionnement et les états de la bascule sont représentés par un
automate:
En général, on représente Q1 et Q2 comme Q et non Q, car
dans les états utiles, Q2 est la négation de Q1. Il
suffit alors de se donner une sortie Q et la table de vérité d'une
bascule décrit la valeur de l'état suivant en fonction de la valeur de
l'état courant.
|
S |
R |
Qn+1 |
(état suivant) |
0 |
1 |
0 |
|
1 |
0 |
1 |
|
0 |
0 |
Qn |
(état suivant=état précédent) |
1 |
1 |
indéfini |
|
1.5.2 Bascules RS (à horloges)
Quand H=0, R'=S'=0, il n'y a aucun changement d'état possible,
quelles que soient les valeurs des entrées R et S. En revanche,
quand H=1, R'=R et S'=S.
Le nouvel état Qn+1 est obtenu uniquement à l'issue d'un signal
(H=1) d'horloge.
1.5.3 Bascules D
La bascule D est obtenue à partir de ce qui précède en utilisant une
seule entrée D, avec S=D, R= non D.
Cette bascule fournit en Q la valeur de D jusqu'à la prochaine
impulsion de l'horloge. Ce mécanisme lève l'ambiguïté puisqu'on n'a
jamais R=S=1. Bien entendu, il y a encore d'autres bascules.
1.5.4 Bascules JK
Les bascules JK règlent aussi le problème de l'état indéterminé.
On a la table de transitions suivantes. L'état Q ne change
que lorsque l'entrée d'horloge H est mise à 1.
|
J |
K |
Qn+1 |
0 |
0 |
Qn |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
non Qn |
|
1.6 Structure d'une mémoire
En réunissant plusieurs bascules sur un même signal d'horloge, on peut
fabriquer un circuit qui constitue un registre, d'où la possibilité de
construire des mémoires11. Le problème est de
minimiser le nombre de broches.
Exemple 4
Une mémoire de quatre mots de 3 bits chacun, M0, ..., M3 dans
un boîtier à 14 broches, chaque mot de 3 bits étant formé à
partir de 3 bascules12.
8 entrées:
-
3 entrées de données I0, I1, I2;
- 2 entrées d'adresses A0, A1 (4 mots);
- 3 entrées de commande:
-
CS: sélection du boîtier (“chip select”) si CS=1;
- RD: lecture/écriture (1/0);
- OE: activation des sorties (“output enable”).
3 sorties de données D0, D1, D2.
Les lectures et les écritures sont réalisées de la manière suivante:
-
si RD=1, le mot lu à l'adresse indiquée par A0 A1 est
positionné en sortie;
- si RD=0, le mot d'entrée est chargé dans celui sélectionné
par A0 A1.
Remarquons que A0 A1 et les entrées des quatre mots forment un
décodeur.
Sur les lignes de sortie, on utilise des circuits qui jouent le rôle
d'interrupteurs13 et
comportent 3 états: 0, 1, et un état de haute impédance qui
déconnecte le circuit lorsque la commande vaut 0. Circuit 3
états:
Si les 3 signaux RD, CS, OE sont à 1, les sorties sont
activées, sinon elles sont déconnectées par les circuits trois
états.
Ce schéma se généralise avec un nombre de mots égal à 2n en
utilisant n lignes d'adresses A0, ..., An−1. La taille d'un
mot correspond au nombre de bascules, au nombre d'entrées et au nombre
de sorties.
La structure décrite ci-dessus concerne les mémoires statiques. Pour
les mémoires dynamiques, la structure interne n'utilise pas des
bascules mais des condensateurs14. La
capacité est plus grande, mais la charge électrique baisse avec le
temps, d'où la nécessité de rafraîchir. Il existe différentes
variantes intermédiaires entre les mémoires dynamiques15 et les mémoires à
lecture seulement (ROM, “read only memory”), programmables une seule
fois à la fabrication16.
1.7 Microprocesseur
Il est relié aux mémoires et aux circuits d'entrée-sortie par des bus,
c'est-à-dire des lignes groupées: au moins n lignes d'adresses dans
le bus d'adresses pour 2n mots mémoire et p lignes de données
dans le bus de données si les mots ont chacun p bits.
Exemple 5
Le microprocesseur Z8017: 16 lignes d'adresses A0, ..., A15 permettant
d'adresser 64 Koctets18, des mots de 8 bits
correspondant à 8 lignes de données D0, ..., D7, 13 lignes
de commande.
Les bus de d'adresses et de données sont actifs au niveau haut
(1), tandis que les signaux de commande sont actifs au niveau bas
(0). Commandes:
-
MEMREQ: demande d'accès mémoire;
- IORQ: demande d'accès entrée-sortie;
- RD: lecture;
- WR: écriture;
- WAIT: attente de l'activation d'un
circuit;
- BUSRQ: demande du bus par un circuit
d'entrée-sortie;
- BUSAK: attribution du bus à ce circuit;
- INT: interruption masquable;
- NMI: interruption non masquable;
- RESET: mise à 0;
- RFSH: rafraîchissement;
- HALT: arrêt (pour l'extérieur);
- M1: décodage du code opération d'une
instruction.