Cours 2 - Polytechnique Montréal

Transcription

Cours 2 - Polytechnique Montréal
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 - Automne 2005
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
certain vous connaissez des circuits logiques qui subissent des
erreurs (votre ordinateur chez vous ?)
la logique booléenne est à la base de toutes 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-que vous allez
apprendre au long de votre bac.
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Automne 2005
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 - Automne 2005
BCD : Binary Coded Decimal
Dans le système «Binary Coded Decimal», on utilise 4 bits pour
représenter les 10 chiffres décimaux :
69
01101001
Décimal
BCD
Puisque ce code n'utilise que 10 des 24=16 permutations possibles, ily-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 - Automne 2005
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
100
3
110
1
101
1
111
1
110
2
101
1
111
1
100
1
toujours un seul
bit en transition
Binaire : problème de valeurs intermédiares pour transitions décalés !
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Automne 2005
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 pourraije 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 - Automne 2005
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
Émetteur
Canal de communication
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 - Automne 2005
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 :
Code original
0000
0011
0101
0110
1001
1010
1100
etc...
bit de parité
Notez qu'il-y-a toujours
un nombre pair de 1
dans
ces
codes
comme dit la 1ere règle
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Automne 2005
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-que se passe si deux bits changent à cause du bruit ?
Qu'est-ce-que se passe si trois bits changent à cause du bruit ?
Qu'est-ce-que 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 - Automne 2005
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
dans chaque colonne
et
chaque
rangée
comme dit la 1ere règle
0110
0011
0110
bit 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 - Automne 2005
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'ily-a plus qu'un bit d'erreur, ça décode mal.
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Automne 2005
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 l'un vers l'autre.
Jean-Guy Parité
Binaire naturel
Parité
Parité ortho.
Hamming
M
1
2
3
3
D
0
1
1
1
C
0
0
1
1
Richard Hamming
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Automne 2005
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 - Automne 2005
Tables de vérité
On utilise des tables de vérité pour décrire des fonctions logiques :
variables
a
0
0
1
1
b
0
1
0
1
fonctions
a·b a+b
0
0
0
1
0
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 - Automne 2005
Fonctions logiques de base (+)
On vient juste de voir les fonctions logiques ET et OU. Une autre
fonction logique est le OU-EXCLUSIF :
a
0
0
1
1
ET
b
0
1
0
1
a·b a+b a b
0
0
0
0
1
1
0
1
1
1
1
0
OU
OUX
Anglais : AND, OR, XOR
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Automne 2005
Fonctions logiques de base (-)
Maintenant, les mêmes fonctions logiques, mais inversées :
a
0
0
1
1
NET
b
0
1
0
1
a·b a+b a b
1
1
1
1
0
0
1
0
0
0
0
1
NOU
Notez que la barre
indique inversion pour
une fonction logique,
et la boule indique
inversion pour une
porte logique.
NOUX
Anglais : NAND, NOR, XNOR
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Automne 2005
Oops, on a oublié une porte !
a
0
0
1
1
b
0
1
0
1
a
1
1
0
0
OOPS
b
1
0
1
0
(OOPS = Inverseur)
Anglais : NOT
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 - Automne 2005
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 - Automne 2005
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 - Automne 2005
Axiomes (facile)
Voilà les axiomes. Ils sont pas mal évidents, non ?
0·0=0
1·1=1
0·1=1·0 =0
1+0=0+1=1
0+0=0
1+1=1
x = 0 <==> !x = 1
x = 1 <==> !x = 0
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Automne 2005
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·1=x
x·x=x
x+x=x
!(!x) = x
x+0=x
x+1=1
x · !x = 0
x + !x = 1
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Automne 2005
Propriétés (moins facile)
Ceux-ci sont peut-être un peu moins évidents...
Commutativité
x·y=y·x
x+y=y+x
x · (y · z) = (x · y) · z
x + (y + z) = (x + y) + z
Distributivité
x · (y + z) = x · y + x · z
x + y · z = (x + y) · (x + z)
Combinaison
x · y + x · !y = x
(x + y) · (x + !y) = x
Associativité
Absorption
x+x·y=x
x · (x + y) = x
Yada, yada, yada...
x + !x · y = x + y
x · (!x + y) = x · y
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Automne 2005
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 - Automne 2005
Simplification
À quoi servent toutes ces théories ? 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 - Automne 2005
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 limitations) physiques :
Min
VIH High-level input voltage =
Typ
Max
2.0V
VIL Low-level input voltage =
0.8V
Ceci
n'est
qu'un
exemple
pour
une
puce donnée. Chaque
puce a ses propres
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
tPHL High to low fall time =
10ns 15ns
15ns
On trouve cette information sur le datasheet du composant
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Automne 2005
Logique positive et négative
À date on n'a présenté que la logique positive. C'est à dire que hautetension 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 - Automne 2005
CMOS
Maintenant, je vais vous montrer des transistors pour vous faire peur.
Normalement, vous touchez aux transistors plus tard dans d'autre
cours. Ceci n'est que pour vous montrer à quoi consiste une porte...
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Automne 2005
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 - Automne 2005
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 - Automne 2005
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 - Automne 2005
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 - Automne 2005