1
Chapitre 1
Numériser: c'est pour se présenter les choses, images nombres, mots parlés, par des symboles.
ex: 10 chiffres - 10 doigts
ex: image TV: 250,000 points image-pixel-30ms
ex: lettres de l'alphabet
→ en design numérique: représentation BINAIRE - base 2
→ numérique: revient à catégoriser tout avec 2 états
1.1 Continu au discret
0 10 contient un nombre infini de points car domaine continu
(peut être numérisé en divisant par 2 et en assignant symbole 0 et 1
<5 5 >5
0 0 1 10
et on poursuit car cette division est approximative
00 01 10 11 000 001 010 011 100 101 110 111
et
0 2.5 5 7.5 10 0 1.25 2.5 3.75 5 6.25 7.5 8.75 10
en ajoutant des 0 et des 1. Ici on a 8 nombres disponibles dans cette représentation. C'est en fait une
conversion A/N!
• • • • • • • •
000 001 010 011 100 101 110 111
Pourquoi numériser?
On vit dans un monde numérique: calculs scientifiques, transactions banquaires, enregistrements
numériques, bientôt, la télévision, "l'âge de l'information" → l'âge du code binaire.
-beaucoup d'avantages (+que d'inconvénient)
2
1 Les données numériques sont moins sensibles au bruit (P/r à data analogue) pour l'acquisition,
la transmission et la mémorisation de données).
ex signal: A[ν] = signal + bruit
fantôme image TV, disque, gravé musique
signal radio contaminé
code anti-bruit redondant
zone de bruit
0 011 100 101 }changement de status si bruit >
largeur de zone
2 Traitement (mémorisation par circuits à semi conducteur à coût raisonnable:
-millions de transistors ou interruptions sur une puce silicium
-changent des millions des fois par seconde
-consomment peu d'énergie
coût µ$/switch
3 Combinaison facile avec théorème booléens
-1854 Geroge Boole -publie théorie mathématique à ce propos
ensemble de théorèmes avec des relation vrai-faux
-algèbre de Boole permet de minimiser l'usage du hardware.
-2 états: vrai - faux et 1-0
1.2 Avantages de 2 états
1 − fermé
-disponibilité d'interrupteurs dans les ic
0 − ouvert
-interrupteurs à la base des portes, à la base des circuits numériques arithmétiques.
Encodage: consiste à représenter quelque choses par un code
Question encoder ex: chiffre
l'ensemble 3≤4
{0,1,2,3} en binaire 0 1 2 3
⇒2bits suffisent
b b b b
00 01 10 11
3
Terminologie • nibble - 4 bits
• byte -8 bits(ou octet)
•1 string: suite de bits (ou chaîne)
1.3 Représentation binaire
-important: chaque position à une signification particulière
01010 ≠ 00110
-en binaire le codage se limite à 2 symboles
-d'autres bases existent: 10,8,16... (hexadéainal),...
-conversion base B dans base D
i max
D= ∑ PB
i=o
i
i
← base imax: nombre de positions -1 dans la base B.
P: Poids
ex: convertir le nombre 728 dans la base 10
Po=2, P1=7
D= 2 x 80 +7 x 81 = 2 + 56 = 5810
ex: convertir le nombre (1234)5 dans la base 10
D= 4 x 50 + 3 X 51 + 2 X 52 +1 X 53
=4 + 15 + 50 +125 = 19410
ex: convertir le nombre (1234)16 dans la base 10
D = 1 x 163 + 2 x 162+ 3 x 161 + 4 x 160
=4096 + 2 x 256 + 3 x 16 + 4
=466010
4
Représentations
Décimal Binaire Hexadécimal Octal
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 8 10
BCP 9 1001 9 11
10 1010 A 12
11 1001 B 13
12 1100 C 14
13 1101 15
D
14 1110 E 16
15 1111 17
F
16 10000 10 20
Exemple:
10H= 1 X 161 + 0 X 160 = 1610
208 = 2 X 81 + 0 X 80= 1610
4 bits permettent de coder 42 = 16 états, de 0 à 1510
symboles octal: {0,1,2,3,4,5,6,7} total 8 symboles
hexadécimal {0,1.........9, A,B,C,D,E,F} total 16 symboles
•BCD : Binary Coded Decimal: code les nombres décimaux sur 4 bits
On emploit 1 ensemble de 4 bits par chiffre
0001 0000
, donc 5 bits en BCD
9910
9910 = 1001 1001 en BCD (8 bits)
Utile dans les calculatrices notamment (évite les conversions fastidieuses, conversions directes).
ex BCD 102410 en BCD? [0001 0000 0010 0100]2
•Gray code: d'un code à l'autre le code Gray ne change que d'un bit, il y a aussi une certaine
symétrie .
5
1 − 0000
2 15
2 − 0001
0001 1001
3 − 0011
3 14
4 − 0010 0011 1011
5 − 0110
6 − 0111
4 13
7 − 0101 0010 1010
axe de
8 − 0100 ' '
symétrie
9 − 1100 ' '
10 − 1101 ' '
11 − 1111
12 − 1110 8 9
0100 1100
13 − 1010
14 − 1011
Utilité: encoder des entrées multiples qui
15 − 1001 changent 1 à la fois
16 − 1000
0 0 0 0
0 0 0 0
0 1 1 0
,,,
,,,,,
,,, ,,,
,,,,,
,,,
0 0 1 1
,,,,, ,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,, symétrie
Représentation de grands nombres en binaire
On rajoute simplement des bits
conversion octale ← binaire aisée: simplement faire des groupements de 3 ou
hex← binaire ou 4 bits.
exemple: (10 10 11 01 01)2 en hex et octal
{ 010
octal : 001 { 110 { → 12658
{ 101
1 2 6 5
{ 1011
hex : 0010 { → 2 B5 H
{ 0101
2 B 5
vérifions: 12658 = 1 x 83 + 2 X 82 + 6 X 81 + 5 X 80 =512 + 2 x 64 + 48 +5
= 69310
6
et 2B5H = 2 x 162 + 11 x 161 + 5x 160 =2 x 256 + 176 +5
=69310
exemple convertir 2B5H en binaire et octal
groupes de 3 et de 4 ⇒ 001
{ 010
{ 110 { ⇒ (0010
{ 101 { 1011
{ 0101
{
1 2 6 5 2 B 5
⇒ 126588
C'est ce qu'on appelle le codage positionnel puisque la position du code influence sa valeur. On
verra plus tard le codage en point flottant.
1.4 Méthodes:conversion binaire à décimal:
1 On emploie la relation
N −1
D = ∑ Bi 2 i Bi = 0 ou 1, le i ième digit et N = le nombre de bits
i=o
ex: 10102 ici N=4
n = 1 x 23 + 0 x 2 2 + 1 x 21 + 0 x 20
n = 8+ 0 + 2+ 1010
ex: ((1010 11 101)2 = ? en base 10
1 28 + 0 27 +1 26 + 0 25 + 1 24 +1 23 +1 1.22 + 0 21 + 1 20
256 + 0 + 64 + 0 + 16 +8 + 4+ 0 +1= 34910
2 binaire→déc. on peut aussi d'abord convertir en hex puis en décimal
ex (101011101)2 = 15DH
{ = 1 x 16 + 5 x 16 + 13 x 16
2 1 0
{ 0101
0001 { 1101
1 5 DH
= 256 + 80 +13
ˆ résultat, moins de risque d' erreur
= 34910 m
3 méthode 3: calculatrice ou Mathlab ou calculette sur windows
7
Calcul de fractions, c'est en fait le même procédé, mais avec des exposants négatifs.
1
ex: (0.1)2 = 0 x 20 + 1 x 2-1 = 0 + = 0.510
2
ex: (0.1010)2 = 0 x 20 + 1 x 2-1 + 1 x 2-3 = 0.5 + 0.125 = (0.625)10
2-1 = 0.5 Expression générale:
2-2 = 0.25
2-3 = 0.125
+m
Dn = ∑ Bk 2 k
k =− N
pour le nombre
Bm Bm-1 ... B2B1B0. B-1 B-2 ... B-n
1.5 Conversion Base→ 10 au binaire
1 Méthode par soustraction successive de la plus grande puissance de 2 on décompose
le nombre en somme de puissance de 2.
ex: 3310 =(?)2
3310 = 32 + 1 = 25 + 20= (10001)2
ex: 199710 = (?)2
1997 = 1024 + 512 +256 +128 +64 + 8 + 4 + 1
= 210 + 29 + 28 + 27+26+23+22+20
1 1 1 1 1 0 0 1 1 0 1
(11111001101)2
10 9 8 7 6 5 4 3 2 1 0
2 Méthode par division successive. On peut diviser* par 2 ou plus simplement par 16
pour convertir en hex directement
ex: (33)10 33/16 = 2 *avec la plus grande puissance
possible
161 = 16 donc 2 x 16 + 1 = 33
162 = 256 (21)hex = 0010 0001 (10 0001)2
163 = 4096
ex (1997)10 =1997/256 = 7 reste 205, 205/16 = 12 reste 13
{ { 1101
=7CDH = (01111100 {) 2
7 12 13
ex: 32110 = (?)2
8
321/256 = 1 reste 65, 65/16 = 4 reste 1
321 = (141)H (0001 0100 0001)2
rép. (101000001)2
En divisant par 16, ça va plus vite que par 2 et la conversion Hex → Binaire est directe.
Conversion de fractions
Le processus peut être sans fin, il faut donc spécifier une résolution ex: sur 8,16, 32 bits.
-Les mêmes méthodes s'appliquent.
ex (0.4)10 = (?)2
0.4 = 0.25 + 0.125 + 0.015625 +......
=[0.390625]
=2-2 + 2-3 + 2-6 +... Table 1.4 Table des fractions
0.0 1 1 0 0 1 2-1 - 0.5
donc 2-2 - 0.25
−1 −2 −3 −4 −5 6
2-3 = 0.125
2-4 = 0.0625
(0.011001)2 2-5 = 0.03125
2-6 = 0.015625
1.6 Troncature et arrondissement
Si on stoppe simplement le calcul de la fraction après un nombre arbitraire de chiffres, on parle de
"troncature".
ex 3.14159 ↔π tronqué à 5 chiffres après le point
On peut aussi compléter, arrondir la dernière position pour + de précision
.1416 plus précis que 3123
Ex 3123 .1415
arrondir tronquer
Sujet traité plus en détail en "Analyse numérique pour ingénieur."
1.7 Addition de nombres binaires non-négatifs
Avec la somme de 2 bits:
0 + 0 = 0 ↵ somme
0 + 1 = 1
4 cas 1 + 0 = 1
1 + 1 = 0 retenue somme
1 o
En additionnant 2 nombres binaire de plusieurs bits, cela revient au fond à additionner 3 bits (avec la
retenue). Examinons les cas possibles:
9
0 0 0 0 1 1 1 1}
Retenue
0 0 1 1 0 0 1 1} nombre A
0 +1 +0 +1 +0 +1 +0 +1} Nombre B
résultat: retenue et somme
00 01 01 10 01 10 10 11
ex additionner 710 + 2210 en binaire
00111
22 16+4+2= 10110
(11101)2 = 1DH = 16 + 13 = 2910
1.7 Addition modulaire
On peut représenter l'addition de 2 bits par un bloc
A B somme retenue C'est le
0 0 0 0 A- demi -
somme
0 1 1 0 B- additionneur -retenue
1 0 1 0 ou Half-
Adder
1 1 0 1
On verra plus tard comment réaliser ce bloc en portes discrètes et maintenant l'additionneur complet
sur 1 bit ( 1 bit Full adder) 1BFA
Cin A B somme retenue
10
0 0 0 0 0 Table du demi − additionneur
0 0 1 1 0
0 1 0 1 0 C in HA (Half - Adder)
0 1 1 0 1 B
1 0 0 1 0
1 0 1 0 1 CIN 1 BFA
,,,,
1 1 0 0 1
1 1 1 1 1
,,,,
,,,,
B
,,,,
,,,,
somme
,,,,
SOMME
,,,,
A
,,,,
,,,, RETENUE
retenue
ou
carry
out
On peut tout de suite voir le développement du 1BFA en termes de HA
carry in SOM C
HA E
SOM D
A CARRY
HA
B carry out Table de vérité ou
CARRY
CD E
00 0
01 1
Ce qui se voit bien de la table du IBFA en considérant le cas avec Cin=0 10 1
(on revient à un et puis le cas avec le carry à 1=Cin ou l'on fait: somme 11 1
partielle + Cin
Pour des additions généralisées, on juxtapose des 1BFA puisque sur (4 bits): {B3,B2,B1,B0} +
{A3,A2,A1,A0} = {tout, S3,S2,S1}
B3 A3 B2 A2 B1 A1 B0 A0
Cout Cin = 0
1 BFA 1 BFA 1 BFA 1 BFA
S3 S2 S1 S0
C'est un exemple de bon design, puisque modulaire (ie concevoir un système à partir de sous-
systèmes génériques). Requiert peut-être plus de composants qu'une approche directe, mais + facile
à traiter/réparer) moins coûteux à long terme.
1.8 Soustraction et modulaité
11
A-B = A+(-B) donc on peut employer une approche avec IBFA modulaire en exprimant en binaire
un nombre négatif (-B) Par les compléments 2:
10- choisir un nombre max de bits
20- poser que le bit à gauche (le + significatif): bit de signe
30-inverser tous les bits du chiffre puis additionner 1
Sur 4 bits ça peut se représenter par une roue:
0000
1111 0001
-1 0 1 ex:-7=? +7 0111
1110 0010
-2 2 ⇓ 1000 + 1
1101
-3 3
0011 −7← 1001
1100 -4 4 0100
1011 -5
5 0101
-6 6
1010 0110
-7 -8 7
1001 0111 ex: avec zéro: 0000: +0
1000
1111
1
0000-0
exemple: calculer 7-3?
7-3-= 7+(-3) = (0111)+(1101)
+3: 0011 0111 +7
1100 + 1101 -3
+ 1 0100 +4
-3 1101 notre notation est sur 4 bits,
-on rejette donc le 5ième bit.
exemple calculer 7+3
0111: +7
+ 0011: +3
1010: -6!!!! c'est qu'en notation complément 2 sur 4 bits,+ 10 n'existe pas.
Les valeurs possibles vont de [-8,+7] (7+3=10) C' est ce qu'on appelle un overflow ou
dépassement. Pour l'éviter ici, on aurait dû travailler sur une notation com. 2 à 5 bits plutôt.
Détection d'overflow: comparer les signes des nombres additionnés ensemble:
si on additionne 2nb de m̂
signe, et que le signe de la somme est différent, c'est qu'il y a eu overflow!.
"carrry out", "overflow" sont des bits de status, utiles pour le système.
note: •overflow: indique une erreur
12
•carry out: peut servir pour des calculs subséquents
important notation en complément 2 (C2) permet d'employer les modules vus précédemment pour
réaliser des +, -, mais il faut bien déterminer un préalable la longueur max des mots.
1.9 Addition de fractions binaires
Le mêne procédé d'addition avec ou sns C2 demeure valide)
Ex1 (.75 + 1.25)10 =210 0.1 2-1 0.5
0.01 2-2 0.25
0.001 -3 0.125
2
↓ ↓ 1.01
0.5+0.25 1.01 et +0.11
0.11 10.00=+210
Ex2 Calculez (1.25 -0.75) avec C2 en On choisit un
binaire système à 4 bits
pour éviter les
overflow.
+1.2510↔(1.01)2
+0.7510↔C2 : 11.01
1.25 01.01
+(-.75) 11.01
00.10 =0.5 qui est
correct
1.8 Codes et Encodage
On a vu les codes suivants: - binaire positionnel
-Gray
-BCD
-C2 pour nombre signés
d'autres sont disponibles: -musique
-code morse (1840) inventeur 20 mots/minutes du télégraphe
-code à Barres (ex UPC: 10 digits)
-ASCII: 7 bits code représentant 128 caractères
(a...z, A....Z,0,....9), symboles typographiques un 8 bit sert pour la
parité (#total bit à 1 est pair ou impair)
(note en ASCII les chiffres sont encodés en BCD sur 8 bits.)
Pour récupérer le nombre BCD, il suffit donc simplement de "stripp off" (un pack) tous les bits sauf
B3 ~ Bo
exemple 0 ↔ 30 Hex 0110000 donc 011 et 0000
9 ↔ 39 Hex 0111 001 donc 011 et 1001
Caractéristiques d'un bon code
-s'il est : "standard", accepté par tous ⇒ meilleur
13
-rapidité: (pour encoder) (décoder)
-fiabilité: limite les erreurs lors du codage si rapide ⇒ moins de risque d'erreur
-compression de l'entrée: i.e. moins de lignes de sortie que de lignes d'entrées, critique pour par ex:
compression de signaux TV ex BCD pour nombre 0 à 99 ⇒ 8 bits
alors qu'en binaire 9910 = 64+32+2+1=100011 ⇒ 7 bits seulement.
-compatibilité "acquiscement"
-sécurité: encryptage avec une clé
Code
représentations représentations
Encodeur Décodeur
1.10 Des interrupteurs aux portes
-interrupteurs/robinets/valves: connus depuis des lustres
ex: aqueduc, instruments de musique
ouvert/fermé: 2 états - différents niveaux d'ouverture
ex: manette de toilette ex: -potentiomètres, robinet de douche
-gradateur d'intensité
utile facilement réalisable en silicium
-commutable à grande vitesse >106 fois/s
-dissipe: peu d'énergie
-occupe: peu de place (microns)
coûte presque rien
Pour comprendre l'électronique numérique ça commence avec les interrupteurs.
1 0
ouvert- fermé
comme un robinet: fermé l'eau ne passe pas
ouvert l'eau passe - électrons, photons, etc.
Distinction entre interrupteurs normaux et interrupteurs numériques: capacité d'un SW de
commander un autre SW (effet en cascade) + interconnexions.
donc pour un SW, schéma + général:
Si C >seuil ⇒ SW fermé
Si C < seuil ⇒ SW ouvert
seuil ~2.5 volt (pour famille TTL, 5 volt)
Porte=Circuit avec un ou plusieurs SW qui a une fonction particulière et versatile pour être un bloc
d'un système, plus grand.
ne pas confonde avec la gate d'un transistor MOS
14
1 INVERSEUR: porte inverseuse
+5 V entrée sortie
0 1
R c' est un inverseur
1 0
+
SW
entrée V
0
e _
e S
symbole
entrée sortie
INVERSEUR
2 TAMPON (BUFFER)
TAMPON BUFFER
+5 V = VCC
S1 S2
e1
e1 = S2 Buffer du tampon
e1 S2
3 PORTE ET et NON-ET (NAND)
15
VCC
Table de vérité
sortie
A A B S(ET) S(NON-ET)
0 0 0 1
0 1 0 1
1 0 0 1
B
1 1 1 0
NON - ET
A A sortie
S S
B B
ET bulle
TABLE DE
4 PORTE NON- OU (NOR) VÉRITÉ
A B S(OU) S(NON-OU)
0 0 0 1
symboles: 0 1 1 0
1 0 1 0
A A 1 1 1 0
S S
B B
OU NON - OU
(OR) (NOR)
5 On peut aussi avoir des portes à entrées multiples
A
A B
B S C S
D
C
6 Porte ou Exclusif (XOR) Porte plus complexe
Symbole XOR
A
S
B
Symbole (NXOR)
16
A
S A B S(XOR) S(NXOR)
B
0 0 0 1
0 1 1 0
1 0 1 0
1 1 0 1
Table de vérité
1.11 Multiplexeurs
On veut ici créer un circuit qui permet de "passer/transférer" un signal numérique d'une ou de l'autre
origine A au B.
contrôle/commande
contrôle sortie S
A 1 A
S 0 B
B
équivalent en portes:
ET
A
c'est en fait un SPDT "single pole - double
throw"
contrôle sortie A
S
B
OU
B
ET
A S
1
A
MUX S P/rapport au SPST plus simple
B 0
contrôle
exemple: d'utilisation circuits d'escalieur "three-way"
on veut réaliser un circuit permettant d'éclairer un luminaire à partir de 2 SW
17
Le circuit emploie 2 SPDT SW
hot
neutre
hot
neutre
un SPDT est un MUX 2 à 1 (2 entrées 1 sortie)
Il existe aussi des MUX plus importants:
7
MUX S
S0 S1 Sg
15
MUX S
S0 S1 S2 S4
1.12 Sortie flottante
Problème: un simple SW a sa sortie flottante si ouvert. Cela n'est pas très pratique car cela mène à
des incertitudes! Ce problème peut se régler au moyen de circuits à TOTEM POLE
C'est ce qu'on appelle un arrangement qui peut être compris de la façon suivante: 2 interrupteurs en
cascades.
18
+5V
upper
lower
symbole
On peut le connecteur comme ceci: Si les 2 SW sont ouverts ou fermés jamais en
même temps, la sortie est toujours définie Hi ou
Lo.
Vcc
e S
Cet arrangement se construit bien en CMOS (complementary Metal Oxide Semi-conducteur).
1.13 Troisième état
Lors de la connexion de plusieurs portes ensemble, on a souvent besoin d'un 3ième état "haute
impédance" ou "état flottant" pour éviter d'endommager un circuit.
ça revient à notre arrangement "Totem Pole" avec les 2 SW ouverts.
Exemple d'utilisation Mémoires, Buses
1.14 Circuits pour additionneurs
A B Somme Retenue
Co
19
0 0 0 0
On a vu 0 1 1 0
que:
1 0 1 0 on remarque que
1 1 0 1 Co=AB
Somme = A ⊕
B
avec donc le design suivant
A B
XOR SOMME
ET C0
On verra dans les chapitres suivants des méthodes systématiques de design.
pour par exemple -minimiser la taille des design
-minimiser les délais des propagation ("glitches")
20
1.15. CAD pour circuits design
2 approches -traditionnelles (utile petit circuit), à la main
-CAD (utile pour grand circuit)
Les méthodes traditionnelles
emploient -MSI sur PCB wirewrap
-ex: 7400 séries TTL
voir livre TTL databook de Texas Instruments.
-méthodes sur papier, gros design: on découpe en sous bloc
-changement → travail de re-design majeur
Encore employée pour la "glue logic" entre parties plus importantes réalisées en CAD
Méthodes CAD
-temps de mise au point rapide pour
- systèmes importants
e.g. contrôleur numérique d'autos
-emploie des chips programmables, coût réduit
-fiabilité
-utilisation de langage CAD e.g. ABEL, VHDL, Verilog
Étapes:
Highlevel design outils de synthèse simulateur Hardware
programmable
EX: TTL 0.50$ trouve problème -FPGA
FPGA 10$ (FPGA= de timing -PROM
50TTL) de conception -ROM
de charge -PAL
D'autres cours en gel-gif traitent de ces domaines
21
Familles logiques - Considérations pratiques.
Les portes simples sont disponibles dans la famille TTL sous formes des circuits SSI (small scale
intégration)
2 entrées
ET 7400
NON-ET
7408
NAND
NON 7404
OU 7432
NON 7402
OU NOR
XOR 7486
La Famille TTL nécessite une alimentation entre les pins 14 et 7
Les numéros de circuits ci sont 74LSXX
D'autres familles sont disponibles:
-CMOS, série 4000
-en version 3.3 volt DC aussi
Le labo portera sur une première familiarisation avec les portes éléemtaires SSI.
+5 V
+5 V
14 14
74LSXX
7 74LS04
1 2 7
Dans le logiciel Xilinx Foundation, les circuits TTL se retrouvent sous l'appellation "x74xxx".