You are on page 1of 32

Cours (0010)2

On pourrait appeler ce cours :


«Codes, erreurs et la logique de Boole»

Cette semaine on apprendra :


Binary Coded Decimal, Gray Code, ASCII, etc...
d'où viennent des erreurs dans la transmission numérique
comment détecter et corriger ces erreurs (parité, Hamming, etc...)
tables de verité
portes logiques (ET, OU, OUX, OOPS, NET, NOU, NOUX)
des théorèmes booléens en masse
simplification d'équations logiques
la réalisation de circuits logiques

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Pourquoi on apprend ça ?
Bon, la matière de ce cours est important parce-que :
les circuits logiques communiquent en codes – il faut les
apprendre pour pouvoir parler leur langue
c'est certain que vous connaissez des circuits logiques qui
subissent à des erreurs (votre ordinateur chez vous ?)
la logique booléenne est à la base de toutes les circuits logiques et
numériques
il faut simplifier des équations logiques pour pouvoir les
implémenter dans le minimum de matériel
je vous présente des transistors pour vous faire peur, mais aussi
pour vous faire apprécier les vrais CIRCUITS logiques
ce dernier vous donne aussi une idée de qu'est-ce-que vous allez
apprendre au long de votre bac.

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Une quantité fixe de codes
On a vu au premier cours le phénomène de dépassement qui se
produit quand on ne peut pas représenter le résultat attendu dans le
nombre de bits donnés.

Dans le système binaire, pour un «mot» de n-bits, il n'existe que :


2n permutations différentes

Le système ASCII utilise 7 bits, alors il a _______ codes différentes.


(voir www.asciitable.com)

Le système UNICODE utilise 16 bits, alors il a ____ codes différentes


(voir www.unicode.org/charts/)

Évidemment, il existe beaucoup d'autre systèmes que ces derniers...

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
BCD : Binary Coded Decimal
Dans le système «Binary Coded Decimal», on utilise 4 bits pour
représenter les 10 chiffres décimaux :

69 Décimal

01101001 BCD

Puisque ce code n'utilise que 10 des 24=16 permutations possibles, il-


y-a alors 6 codes qui ne servent à rien. Est-ce-efficace ?

Ce système est parfois utilisé dans des applications qui affichent des
nombres décimaux sur des écrans LCD ou 7-seg.

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Code de Gray
Ici on compte de zéro à sept en binaire et en code de Gray en
regardant le nombre de bits qui changent (BQC) entre codes
successives :
Binaire BQC Gray BQC
000 N/A 000 N/A
001 1 001 1
010 2 011 1
011 1 010 1 toujours un seul
bit en transition
100 3 110 1
101 1 111 1
110 2 101 1
111 1 100 1
Binaire : problème de valeurs intermédiares pour transitions décalés !
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Codes alphanumériques
À date, on n'a vu que des codes numériques qui représentent des
nombres positifs, négatifs, des fractions etc... Mais comment pourrai-
je dire mon nom en binaire ???

Jeff

4A 65 66 66 (en hexadécimal)

Ici j'ai utilisé l'ASCII (American Standard Code for Information


Interchange). Ce code est toujours très répandu aujourd'hui même si
des efforts se font pour adopter l'Unicode (qui utilise assez de bits
pour représenter les symboles Chinois, Japonais, Cherokee, etc...)

Fini les codes !


ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Contrôle des erreurs
Dans la communication vocale, des bruits et des interférences
affectent négativement la transmission de données. C'est pareil pour
la transmission de données binaires...

Source de bruit

Canal de communication
Émetteur Recepteur

Pour les données binaires, les interférences font que des 1


deviennent des 0, et des 0 deviennent des 1. Comment est-ce-qu'on
peut détecter et corriger ces transformation inattendues ???

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Parité
Un système simple pour la détection d'erreurs est le parité. On ajoute
un bit (p) au code pour que l'ensemble suit une des règles suivants :
il-y-a un nombre pair de 1 dans le code (très commun)
il-y-a un nombre impair de 1 dans le code
il-y-a un nombre pair de 0 dans le code
il-y-a un nombre impair de 0 dans le code

En suivant la première règle on a : 0000


0011
Code original
0101 bit de parité
0110 (ajouté)
1001 Notez qu'il-y-a toujours
1010 un nombre pair de 1
dans ces codes
1100 comme dit la 1ere règle
etc...
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Puis, la parité sert à quoi ?
Si le récepteur reçoit le code 0111, il sait que le code n'est pas valable
puisqu'il contient un nombre impair de 1. Il a pu détecter l'erreur, mais
il ne peut pas le corriger.

Qu'est-ce-qui se passe si deux bits changent à cause du bruit ?


Qu'est-ce-qui se passe si trois bits changent à cause du bruit ?
Qu'est-ce-qui se passe si toutes les bits changent à cause du bruit ?

Évidemment, ce système est loin de parfait, mais c'est quand-même


utile. Comment est-ce-qu'on pourrait améliorer ce système pour
détecter plus d'erreurs et peut-être même les corriger ?

Avez-vous des idées ?

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Parité orthogonale
Si on ajoute des bits de parité en fonction des mots consecutives on a
la parité orthogonale :
Mots à envoyer : 111 110 011 001

1111
1100 Notez qu'il-y-a toujours
un nombre pair de 1
0110 dans chaque colonne
et chaque rangée
0011 comme dit la 1ere règle
0110
bits de parité

Mots envoyés : 1111 1100 0110 0011 0110

Avec ce système c'est possible de corriger un seul erreur

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Correction par parité orthogonale
Imagine que le recepteur reçoit les mots suivants encodés avec le
système de parité orthogonale :
Mots reçus : 1111 1000 0110 0011 0110

intersection = 1111
bit érroné
1000 Notez que le parité ne
suit pas la 1ere règle
0110 dans la deuxième
colonne et la deuxième
0011 rangée.
0110

Après correction / décodage : 111 110 011 001

Ici, on a pu détecter et corriger l'erreur

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Code d'Hamming
Le code d'Hamming utilise trois bits de parité pour quatre bits de
données :
b4b3b2p3b1p2p1

Comme dans la parité orthogonale, c'est possible de corriger un


erreur sur un seul bit. On saute les détails, mais en décodant, on
obtient trois «check bits» qui nous indiquent quel bit a l'erreur :

c3c2c1 = 000 Il-n'y-a pas d'erreur

c3c2c1 = 101 Il-y-a un erreur dans le 5e bit du mot (b2)

Cependant, comme dans toutes les systèmes qu'on vient de voir, s'il-
y-a plus qu'un bit d'erreur, ça décode mal.
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Théorie de la détection d'erreurs
C + D = M – 1 (où C ≤ D)

C = nombre de bits érronés pouvant être corrigés


D = nombre de bits érronés pouvant être détectés
M = distance minimale entre deux codes

La distance minimale entre deux codes est le minimum nombre de


bits qu'il faut inverser pour changer de l'un vers l'autre.

M D C
Binaire naturel 1 0 0
Parité 2 1 0
Parité ortho. 3 1 1
Jean-Guy Parité Hamming 3 1 1 Richard Hamming

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Fini les codes et les erreurs !
On prend un 'ti pause ?

Après la pause on commence l'algèbre de Boole...

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Tables de vérité
On utilise des tables de vérité pour décrire des fonctions logiques :

variables fonctions

a b a·b a+b
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 1

Ça marche bien jusqu'à 3 ou 4 variables. Plus que ça, une page est
vite remplie !

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Fonctions logiques de base (+)
On vient juste de voir les fonctions logiques ET et OU. Une autre
fonction logique est le OU-EXCLUSIF :
ET OU OUX

a b a·b a+b a b
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

ET OU OUX

Anglais : AND, OR, XOR

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Fonctions logiques de base (-)
Maintenant, les mêmes fonctions logiques, mais inversées :

a b a·b a+b a b
0 0 1 1 1 Notez que la barre
indique inversion pour
0 1 1 0 0 une fonction logique,
1 0 1 0 0 et la boule indique
inversion pour une
1 1 0 0 1 porte logique.

NET NOU NOUX

Anglais : NAND, NOR, XNOR

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Oops, on a oublié une porte !
a b a b
0 0 1 1
0 1 1 0 (OOPS = Inverseur)
1 0 0 1
1 1 0 0 Anglais : NOT

OOPS OOPS
Mais Jeff, on a vu seulement 6 portes à deux entrées, tandis-qu'il-y-a
24 = 16 combinaisons possibles :

Quelles combinaisons ne sont pas couvertes ?

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Des entrées en masse
Il existe aussi des portes logiques avec plus que deux entrées :

NET4 (NAND4) : A1 · A2 · A3 · A4

En réalité, il-y-a des limitations physiques qui empêchent d'avoir une


quantité infini d'entrées.

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Algèbre booléenne
Ne paniquez pas – l'algèbre à deux valeurs est beaucoup plus facile
que l'algèbre que vous apprenez au sécondaire...

x + !x · y = x + y

George Boole

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Axiomes (facile)
Voilà les axiomes. Ils sont pas mal évidents, non ?

0·0=0 0·1=1·0 =0
1·1=1 1+0=0+1=1

0+0=0 x = 0 <==> !x = 1
1+1=1 x = 1 <==> !x = 0

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Théorèmes (assez facile)
Les théorèmes sont des équations à une variable. Ça fait qu'il faut
penser un petit peu, mais ils sont toujours évidents, non ?

x·0=0 x·x=x
x·1=x x+x=x

!(!x) = x

x+0=x x · !x = 0
x+1=1 x + !x = 1

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Propriétés (moins facile)
Ceux-ci sont peut-être un peu moins évidents...
Commutativité Associativité
x·y=y·x x · (y · z) = (x · y) · z
x+y=y+x x + (y + z) = (x + y) + z
Distributivité Absorption
x · (y + z) = x · y + x · z x+x·y=x
x + y · z = (x + y) · (x + z) x · (x + y) = x
Combinaison Yada, yada, yada...
x · y + x · !y = x x + !x · y = x + y
(x + y) · (x + !y) = x x · (!x + y) = x · y
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
DeMorgan
Voilà le théorème d'Augustus DeMorgan :

x·y=x+y

x+y=x·y

Ce théorème est très utile pour


plusieurs conversions qu'on
verra plus tard. Apprenez-le par
coeur !

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Simplification
À quoi servent toutes ces théorèmes ? On les utilise pour simplifier
des équations logiques.

Exemple : !a!b!c + b!c + abc

!a!b!c + !ab!c + ab!c + abc

!a!c + ab

Ce n'est pas évident ce que je viens de faire ? Vos devoirs ont


beaucoup de bonnes exercises pour vous aider à devenir des experts
en simplification booléenne.

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Réalisation technique
On finit maintenant avec quelques acétates concernant la réalisation
technique des circuits logiques. En premier, appréciez que les circuits
logiques ont des charactéristiques (et des limitations) physiques :

Min Typ Max Ceci n'est qu'un


exemple pour une
VIH High-level input voltage = 2.0V puce donnée. Chaque
puce a ses propres
VIL Low-level input voltage = 0.8V charactéristiques.

VOH High-level output voltage = 2.7V 3.3V


VOL Low-level output voltage = 0.3V 0.4V
tPLH Low to high rise time = 9ns 15ns
tPHL High to low fall time = 10ns 15ns
On trouve cette information sur le datasheet du composant

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Logique positive et négative
À date on n'a présenté que la logique positive. C'est à dire que haute-
tension représente logique-1, et basse-tension représente logique-0.

Mais, par contre, on pourrait utiliser basse-tension pour représenter


logique-1 et haute-tension pour représenter logique-0. Ceci est la
logique négative.

On va toujours continuer à utiliser la logique positive. Il ne faut


qu'apprécier que d'autres systèmes / conventions existent.

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
CMOS
Maintenant, je vais vous montrer des transistors pour vous faire peur.
Normalement, vous touchez aux transistors plus tard dans d'autres
cours. Ceci n'est que pour vous montrer à quoi consiste une porte...

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Transistor comme commutateur
Dans les circuits logiques, les transisors fonctionnent comme des
commutateurs. Alors, en les branchant comme ci-bas, on est capable
de sortir soit basse-tension (GND) ou haute-tension (VDD). C'est à dire
qu'on sort logique-1 ou logique-0 en fonction des entrées des
transistors.

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
NET et NOU en CMOS
Voilà l'implémentation en CMOS de NET (gauche) et NOU (droite).
Vous êtes maintenant capable de transformer les transistors en
commutateurs en fonction de leur tension d'entrée. Impressionnant !
En trois acétates vous avez appris comment faire du ITGÉ numérique !

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Sommaire (par Monsieur T)
Jeunes ingénieurs, il faut comprendre les
codes comme le BCD et Gray. Mais plus
important, il faut apprendre toutes les
axiomes, théorèmes, etc... jusqu'au point où
ça vous sent naturel de les utiliser. Dans un
examen vous n'avez pas le temps de penser,
alors apprenez-le en faisant vos devoirs
maintenant. Il faut être capable de simplifier
vite – ceci n'est pas facile – il faut faire
beaucoup d'exemples. Vous n'avez qu'à
apprécier les acétates sur la réalisation
technique.

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Lecture et devoirs
Lecture recommandé :
2.10 – 2.12, 3.1 – 3.3, 3.71, 3.91 – 3.92,
3.96 – 3.97

Et, si vous n'avez rien d'autre à faire :


3.10

Problèmes pertinents :
2.41, 2.42, 3.1abe

I pity the fool who don't do his devoirs!

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006

You might also like