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