Académique Documents
Professionnel Documents
Culture Documents
ElecNum T1
ElecNum T1
1er tome
Systmes combinatoires
La base du prsent manuel a t crit par M. Yves Meyer de l'cole d'ingnieurs de l'arc jurassien. J'ai repris celui-ci en apportant des modifications et en compltant certains chapitres. Jai supprim le chapitre sur le langage VHDL. A la HEIG-VD, nous disposons dun manuel spar pour ce langage (Manuel VHDL; synthse et simulation). J'ai aussi repris des parties des supports de cours crit par M. Maurice Gaumain. Finalement le manuel a t spar en plusieurs tomes. Le prsent tome comprend toute la partie sur le combinatoire. Je remercie M. Yves Meyer de sa collaboration et de m'avoir permis de rutiliser son support de cours. Je remercie tous les utilisateurs de ce manuel de mindiquer les erreurs quil comporte. De mme, si des informations semblent manquer ou sont incompltes, elles peuvent mtre transmises, cela permettra une mise jour rgulire de ce manuel.
Etienne Messerli
Contact Auteurs: e-mail : Tl: Etienne Messerli etienne.messerli@heig-vd.ch +41 (0)24 / 55 76 302 Yves Meyer yves.meyer@eiaj.ch +41 (0)32 / 930 22 61
Coordonnes la HEIG-VD : Institut REDS HEIG-VD Haute Ecole d'Ingnierie et de Gestion du Canton de Vaud Route de Cheseaux 1 CH-1400 Yverdon-les-Bains Tl : +41 (0)24 / 55 76 330 Reconfigurable & embedded Internet : http://www.reds.ch Digital Systems
R DS
Coordonnes lEIAJ : LSEM - Laboratoire de systmes embarqus Haute Ecole ARC Rue Baptiste-Savoye 26 CH-2610 St-Imier Tl : +41 32 930 11 21 Internet : http://www.he-arc.ch/
1 5
2-1. Reprsentation des nombres ........................................................................... 6 2-2. Conversion Binaire - Dcimal ......................................................................... 7 2-3. Conversion Dcimal - Binaire ......................................................................... 7 2-3.1.Conversion de la partie entire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2-3.2.Conversion de la partie fractionnaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2-4. Systme de numration Octal ....................................................................... 10 2-4.1.Conversion octal-dcimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2-4.2.Conversion dcimal-octal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2-4.3.Conversion octal-binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2-4.4.Conversion binaire-octal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2-5. Systme de numration Hexadcimal .......................................................... 11 2-5.1.Conversion hexadcimal-dcimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2-5.2.Conversion dcimal-hexadcimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2-5.3.Conversion hexadcimal-binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2-5.4.Conversion binaire-hexadcimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2-5.5.Comptage hexadcimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2-5.6.Utilit du systme hexadcimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2-6. Code BCD, soit Binary Coded Decimal ....................................................... 15 2-6.1.Comparaison entre code BCD et nombre binaire . . . . . . . . . . . . . . . . . . 15 2-6.2.Conversion BCD-binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2-6.3.Conversion binaire-BCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2-7. Rcapitulatif de diffrents codes ................................................................... 17 2-8. Les codes alphanumriques .......................................................................... 17 2-8.1.Code ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
21
I
Titre chapitre
3-1. Reprsentation des nombres entiers positifs ............................................... 22 3-2. Addition Binaire ............................................................................................. 22 3-3. Reprsentation des nombres entiers signs ................................................. 23 3-3.1.Notation en complment 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3-3.2.Notation en complment 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3-3.3.Etude de nombres binaires signs en complment 2 . . . . . . . . . . . . . . 25 3-3.4.Cas spcial de la notation en complment 2 . . . . . . . . . . . . . . . . . . . . 26 3-4. Addition en complment 2 .......................................................................... 27 3-4.1.Cas 1: deux nombres positifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3-4.2.Cas 2: nombre positif et nombre ngatif plus petit . . . . . . . . . . . . . . . . . 27 3-4.3.Cas 3: nombre positif et nombre ngatif plus grand. . . . . . . . . . . . . . . . 28 3-4.4.Cas 4: deux nombres ngatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3-4.5.Cas 5: nombres gaux et opposs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3-5. Soustraction: complment 2 ....................................................................... 28 3-5.1.Dpassement (overflow) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3-5.2.Multiplication de nombres binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3-5.3.Multiplication en complment 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3-6. Division binaire .............................................................................................. 31 3-7. Addition en BCD ............................................................................................ 32 3-7.1.Somme gale ou infrieure 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3-7.2.Somme suprieure 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
35
4-1. Dfinitions ....................................................................................................... 35 4-1.1.Les tats logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4-1.2.Les variables logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4-1.3.Les fonctions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4-2. Fonctions logiques une et deux variables .................................................. 37 4-2.1.Fonctions dune variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4-2.2.Fonctions de deux variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4-3. Tables de vrit ............................................................................................... 39 4-4. L'opration OU (OR) ..................................................................................... 40 4-4.1.La porte OU (OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4-5. L'OPRATION ET (AND) ........................................................................... 41 4-5.1.La porte ET (AND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4-6. L'opration NON (NOT) ............................................................................... 42 4-6.1.Le circuit INVERSEUR (NOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4-7. Les portes NON-OU (NOR) et NON-ET (NAND) ...................................... 42 4-7.1.La porte NON-OU (NOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4-7.2.La porte NON-ET (NAND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4-8. Circuits OU-exclusif (XOR) et NON-OU-exclusif (XNOR) ....................... 44 4-8.1.La porte OU-exclusif (XOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4-8.2.NON-OU-exclusif (XNOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4-9. Symbolique des oprations de bases ............................................................. 46
II
Titre
4-10. Mise sous forme algbrique des circuits logiques ....................................... 48 4-10.1.Circuits renfermant des INVERSEURS . . . . . . . . . . . . . . . . . . . . . . . . 49 4-11. MATRIALISATION DE CIRCUITS PARTIR D'EXPRESSIONS BOOLENNES 50 4-11.1.Description de circuits logiques en VHDL . . . . . . . . . . . . . . . . . . . . . . 50 4-12. Algbre de BOOLE ....................................................................................... 51 4-12.1.Postulats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4-12.2.Thormes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4-12.3.Thormes pour plusieurs variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4-12.4.THORMES DE DE MORGAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4-12.5.Thormes du consensus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
55
Somme de produits ........................................................................................ 55 Simplification des circuits logiques .............................................................. 56 Simplification algbrique .............................................................................. 57 Conception de circuits logiques combinatoires ........................................... 58 La mthode des tables de Karnaugh ............................................................ 59 5-5.1.La construction de la table de Karnaugh . . . . . . . . . . . . . . . . . . . . . . . . 59 5-5.2.REUNION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 5-5.3.Runion de doublets (de paires) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 5-5.4.Runion de quartets (groupes de quatre) . . . . . . . . . . . . . . . . . . . . . . . . 62 5-5.5.Runion d'octets (groupes de huit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5-5.6.Le processus de simplification au complet . . . . . . . . . . . . . . . . . . . . . . . 63 5-6. Fonctions incompltement dfinies .............................................................. 64 5-6.1.Simplification par Karnaugh des conditions indiffrentes . . . . . . . . . . . 64 5-7. Les fonctions standards combinatoires ........................................................ 65 5-8. Dcodeur (X/Y) ............................................................................................... 66 5-8.1.Extension du dcodeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5-8.2.Dcodeur en gnrateur de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5-8.3.Exemple d'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5-9. Multiplexeur (MUX) ...................................................................................... 70 5-9.1.Extension du multiplexeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5-9.2.Multiplexeur en gnrateur de fonction . . . . . . . . . . . . . . . . . . . . . . . . . 74 5-9.3.Exemple d'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5-10. Comparateur .................................................................................................. 79 5-11. Additionneur binaire parallle ..................................................................... 82 5-11.1.Conception dun additionneur complet . . . . . . . . . . . . . . . . . . . . . . . . 84
87
6-1. La reprsentation des tats logiques. ........................................................... 87 6-2. Les familles logiques ...................................................................................... 88 6-3. Terminologie des circuits numriques ......................................................... 89 6-3.1.Dfinition de la terminologie courante . . . . . . . . . . . . . . . . . . . . . . . . . . 90
III
Titre chapitre
6-3.2.Tensions d'entre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 6-3.3.Tensions de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6-3.4.Courant d'entre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6-3.5.Courant de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 6-3.6.Immunit au bruit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 6-3.7.Facteur de charge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 6-3.8.Les caractristiques temporelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Interface CMOS - TTL .................................................................................. 94 Interface TTL - CMOS .................................................................................. 95 Collecteur ouvert ............................................................................................ 95 Porte trois tats ............................................................................................... 98
Chapitre 7 Mmoires
99
7-1. ROM (Read-Only Memory) .......................................................................... 99 7-2. PROM (Programmable ROM) ................................................................... 100 7-2.1.Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 7-2.2.Ralisation pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 7-3. EPROM (Erasable PROM) ......................................................................... 102 7-3.1.Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 7-3.2.Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 7-3.3.Timing d'une EPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 7-3.4.EPROM UV ou OTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 7-3.5.Les mmoires du commerce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 7-4. Mmoires EEPROM et FLASH .................................................................. 106 7-4.1.Mmoires EEPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Exemple : la mmoire X2816 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 7-4.2.Les mmoires Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
109
8-1. Codage d'une fonction logique .................................................................... 112 8-1.1.Sommes de produits, produits de somme et matrice PLA (Programmable Logic Array) 112 8-1.2.Mmoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 8-1.3.Multiplexeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 8-2. Technologie d'interconnexions .................................................................... 116 8-2.1.Connexions programmable une seule fois (OTP : One Time Programming) 116 Cellules fusible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Cellules antifusible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 8-2.2.Cellules reprogrammables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Cellule transistor MOS grille flottante et EPROM (Erasable Programmable Read Only Memory) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 UV-EPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 EEPROM (Electrically EPROM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
IV
Titre
8-3.
8-7.
8-8.
8-9.
Flash EPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Cellules SRAM transistors MOS classique . . . . . . . . . . . . . . . . . . . . 118 Architectures utilises .................................................................................. 119 8-3.1.PLD (Programmable Logic Device) . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Dsignation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 CPLD (Complex Programmable Logic Device) ........................................ 121 FPGA (Field Programmable Gate Array) ................................................. 122 Les outils de dveloppement des CPLDs et FPGAs .................................. 123 8-6.1.Techniques de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Trois modes: fonctionnement normal, programmation et test . . . . . . . 125 Programmables in situ (ISP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 PLDs, CPLDs, FPGAs : quel circuit choisir? ............................................ 127 8-7.1.Critres de performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Puissance de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Nombre de portes quivalentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Nombre de cellules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Nombre d'entres/sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Vitesse de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Consommation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 ASIC (Application Specific Integrated Circuit) ........................................ 128 Les prdiffuss (gate arrays) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Les prcactriss (standard cell) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Les "fulls customs" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Comparaison et volution ............................................................................ 129 Mdiagraphie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Titre chapitre
VI
Chapitre 1
Introduction
L'utilisation de systmes digitaux est en pleine expansion. Pour s'en convaincre, il n'y a qu' regarder autour de nous l'explosion de la microinformatique, qui s'est mme implante dans les mnages. Un nombre de plus en plus grand de machines (tlvision, voiture, machine laver, etc.) utilisent de l'lectronique numrique. Nous trouvions, jusqu' l'apparition du microprocesseur, deux grands secteurs dans le domaine des systmes digitaux. Cette division a subsist chez les fabricants d'ordinateurs o nous trouvons encore: le dpartement matriel (hardware) le dpartement logiciel ou programmation (software) L'apparition du microprocesseur a eu pour effet de diminuer l'importance du matriel et de provoquer un dplacement des moyens de traitement des circuits aux programmes. Ce qui fait que nous nous trouvons de plus en plus face des programmes qui cernent la machine au plus prs. Cela oblige les programmeurs connatre de mieux en mieux le matriel pour mieux "coller" l'application avec le programme. Aprs avoir rduit le march de la logique cble, le microprocesseur est parti la conqute de l'lectronique basse frquence. Il a fait son entre
Chapitre 1: Introduction
dans un nombre important de secteurs (jeux, tlcommunications, automatique, etc.). L'augmentation des possibilits d'intgration (nombre de transistors par mm2) conduit une nouvelle volution. Les circuits logiques programmables deviennent abordables. La programmation des petites applications se trouve remplace par de la logique cble dans ces circuits programmables. Cette volution permet d'envisager une augmentation de la vitesse de traitement des fonctions. Jusqu' prsent, l'apprentissage de la logique se faisait travers la dcouverte des fonctions logiques lmentaires contenues dans les circuits intgrs des familles 74xxx, dont on peut voir quelques types dans figure 1- 1, page 2. Les exprimentations se limitaient aux fonctions proposes par les fabricants de ces circuits. La conception de fonctions logiques regroupant plusieurs de ces circuits ncessitait un cblage consquent, et la ralisation d'un circuit imprim de grande surface.
7400
1 2 3 4 5 6 7 GND VCC 14 13 12 11 10 9 8 1 2 3 4 5 6 7 GND
7402
VCC 14 13 12 11 10 9 8 1 2 3 4 5 6 7 GND
7404
VCC 14 13 12 11 10 9 8 1 2 3 4 5 6 7 GND
7408
VCC 14 13 12 11 10 9 8 1 2 3 4 5 6 7 GND
7410
VCC 14 13 12 11 10 9 8
7411
1 2 3 4 5 6 7 GND VCC 14 13 12 11 10 9 8 1 2 3 4 5 6 7 GND
7420
VCC 14 13 12 11 10 9 8 1 2 3 4 5 6 7 GND
7421
VCC 14 13 12 11 10 9 8 1 2 3 4 5 6 7 GND
7430
VCC 14 13 12 11 10 9 8 1 2 3 4 5 6 7 GND
7432
VCC 14 13 12 11 10 9 8
L'apparition des circuits logiques programmables de type PLD (Programmable Logic Device), CPLD (Complexe PLD, figure 1- 2, page 3) ou FPGA (Field Programmable Gate Array, figure 1- 2, page 3) a permis de s'affranchir de cette limitation. En effet, l'utilisateur peut crer, dans ces circuits, toutes les fonctions logiques qu'il souhaite avec comme seules limitations, la place disponible dans le circuit choisi et/ou la vitesse de fonctionnement de celui-ci. La taille actuelle de ces circuits permet lintgration dun systme processeur complet. En anglais, labrviation est SoPC pour System on Programmable Chip.
Electronique numrique
PLD
PLD
PLD
PLD
Programmable Interconect
PLD
PLD
PLD
PLD
(a)
(b)
= logic b lock
Les outils de dveloppement mis la disposition des utilisateurs doivent donc permettre de passer de la description du comportement d'une fonction logique son cblage dans le circuit et cela de la manire la plus simple possible. Au dbut des annes 90, la description du comportement des fonctions logiques tait faite par l'utilisation de langage dit de "description de matriel". Parmi ceux-ci, on peut citer: La premire gnration de ces langages permettaient des descriptions au niveau logique. Il a exist deux langages: Le CUPL utilis dans les annes 1980 1994. Le langage ABEL (Advanced Boolean Equation Language) utilis dans les annes 1990 1998 Ce langage a t cr par la socit DATA I/O et utilis ou imit par quasiment tous les concepteurs d'outils de dveloppement pour ce type de circuit (XABEL pour XILINX, AHDL pour ALTERA, PLD pour ORCAD, XPLA pour PHILIPS, etc..) Ce langage n'est plus utilis actuellement. L'augmentation de la complexit des circuits programmable a ncessit de disposer de langage permettant des descriptions de plus haut niveau (comportementale). Deux langages sont apparu au dbut des annes 1990 pour la conception de circuits ASIC (circuit intgr spcialis). Ils se sont imposes ds le milieu 1995 pour les circuits logiques programmables. Il s'agit: Le langage VHDL (Very High Speed Integrated Circuit, Hardware Description Language) qui a t cr pour le dveloppement de circuits intgrs logiques complexes. Il doit son succs, essentiellement, sa standardisation sous la rfrence IEEE-1076, qui a permis d'en faire un langage unique pour la description, la modlisation, la simulation, la synthse et la documentation. Le langage VERILOG qui est proche du langage VHDL et qui est surtout utilis aux Etats-Unis.
Chapitre 1: Introduction
Le but de ce cours, est dans un premier temps de prsenter les systmes logiques combinatoires et squentiels. Lobjectif principal du est de matriser la conception de tel systmes. Simultanment le langage VHDL sera utilis tout au long du cours. Toutes les fonctions de base seront expliques puis dcrites en VHDL. La description en VHDL sera pratique durant les exercices. Dans un deuxime temps, l'accent sera mis sur la mthodologie de dveloppement de systmes numrique avec le langage VHDL. Cette mthodologie sera principalement vue pendant le laboratoire. La prsentation des concepts et des instructions du langage VHDL est faite dans un support spcifique. Il sagit du "Manuel VHDL, synthse et simulation".
Chapitre 2
Le systme de numration binaire est le plus important de ceux utiliss dans les circuits numriques. Il est le seul que ces circuits soit capable dutiliser. Il ne faut pour autant pas ngliger l'importance des autres systmes. Le systme dcimal revt de l'importance en raison de son utilisation universelle pour reprsenter les grandeurs du monde courant. De ce fait, il faudra parfois convertir des valeurs dcimales en valeurs binaires avant de pouvoir les traiter dans un circuit numrique. Par exemple, lorsque vous composez un nombre dcimal sur votre calculatrice (ou sur le clavier de votre ordinateur), les circuits internes convertissent ce nombre dcimal en une valeur binaire. De mme, il y aura des situations o des valeurs binaires donnes par un circuit numrique devront tre converties en valeurs dcimales pour qu'on puisse les lire. Par exemple, votre calculatrice (ou votre ordinateur) calcule la rponse un problme au moyen du systme binaire puis convertit ces rponses en des valeurs dcimales avant de les afficher. Nous connaissons les systmes binaire et dcimal, tudions maintenant deux autres systmes de numration trs rpandus dans les circuits numriques. Il s'agit des systmes de numration octale (base de 8) et hexadcimal (base de 16) qui servent tous les deux au mme but, soit celui de constituer un outil efficace pour reprsenter de gros nombres binaires.
5
Comme nous le verrons, ces systmes de numration ont l'avantage d'exprimer les nombres de faon que leur conversion en binaire, et vice versa, soit trs facile. Dans un systme numrique, il peut arriver que trois ou quatre de ces systmes de numration cohabitent, d'o l'importance de pouvoir convertir un systme dans un autre. Le prsent chapitre se propose de vous montrer comment effectuer de telles conversions. Certaines de ces conversions ne seront pas appliques immdiatement dans l'tude des circuits numriques, mais vous constaterez au moment de l'tude des microprocesseurs que c'est une connaissance dont vous avez besoin. Ce chapitre se veut galement une introduction certains des codes binaires utiliss pour reprsenter divers genres d'information. Ces codes agencent les 0 et les 1 de manire diffrente du systme binaire.
N.B.: Il faut remarquer que le choix de symboles chiffres facilite grandement les choses, cette facilit dcoulant de notre grande habitude du systme dcimal (10 symboles). Le poids d'un chiffre dpend de sa position dans le nombre. Nous parlons de numration de position, soit: Un nombre dans une base "b" entire positive s'crit: N b = a n a n 1 a 1 a 0, a 1 a m ce qui correspond aux oprations: NB = an b + an 1 b
n n1
(1)
1 0
+ + a1 b + a0 b +
1 m
(2)
N.B.: La formule (2) donne N dans la base dans laquelle on effectue les oprations (ici la base B). Pour nous, ce sera gnralement la base 10.
Electronique numrique
1
124
1 + 123 + 8
0 + 022 + 0
1 + 121 + 2
1 + 120 + 1 = 2710
(binaire)
16
(dcimal)
Voyons un autre exemple pour un nombre ayant un plus grand nombre de bits.
binaire
128 +
32
+ 16 +
= 18110 dcimal
Vous remarquez que la mthode consiste trouver les poids (les puissances de 2) pour chaque position du nombre o il y a un 1, puis additionner le tout. Remarquez que le bit de poids le plus fort a un poids de 27 mme s'il s'agit du huitime bit; il en est ainsi parce que le bit de poids le plus faible est le premier bit et que son poids est toujours 20.
1
1102
5 +
5101
8 +
8100
Lexemple 2- 3 nest pas utilisable pour nous. Nous devrions tre capable, pour cela, de faire le calcul en base 2! Cette mthode nest pas utilisable pour nous car nous savons faire les calculs uniquement en dcimal. Il existe deux faons de convertir un nombre dcimal en son quivalent binaire. Une mthode qui convient bien aux petits nombres est une dmarche qui est base sur la numration de position en binaire. Le nombre dcimal est simplement exprim comme une somme de puissances de 2, puis on inscrit des 1 et des 0 vis--vis des positions binaires appropries. Voici un exemple: 4510 = 32 + 8 + 4 + 1 = 25 + 0 + 23 + 22 + 0 + 20 = 1 0 1 1 0 12 Notons qu'il y a un 0 vis--vis des positions 21 et 24, puisque ces positions ne sont pas utilises pour trouver la somme en question. Il sagit dune mthode par essais successifs (ttonnement).
+ + a1 b + a0 b
Si nous divisons NB par la base b, nous obtenons lexpression suivante : NB n1 n2 0 ------ = ( a n b + an 1 b + + a 1 b ) et ( a 0 ) b a0 apparat comme le reste de la division de N entier par b; a1 est le reste de la division du quotient par b; a2 est le reste de la division du nouveau quotient par b. On opre donc par divisions successives par b. Cette mthode de conversion est illustre ci-aprs pour le nombre 2510. Nous utilisons des divisions rptitives par 2 du nombre dcimal convertir. A chaque division nous obtenons un quotient et un reste. Nous devons effectuer les divisions jusqu obtenir un quotient nul. Il est important de noter que le nombre binaire rsultant s'obtient en crivant le premier reste la position du bit de poids le plus faible (LSB) et le dernier reste la position du bit de poids le plus fort (MSB).
Electronique numrique
= = = = =
12 6 3 1 0
1 0 0 1 1
+ a2 b
+ + a m 1 b
m1
+ am b
+ + a m 1 b
m2
+ a m b
m1
a-1 apparat comme la partie entire de la multiplication de N fractionnaire par b; a-2 est la partie entire de la multiplication par b du reste; a-3 est la partie entire de la multiplication par nouveau reste par b. On opre donc par multiplication successives par b. Cette mthode de conversion est illustre ci-aprs pour le nombre 0,37510. Nous utilisons des multiplications successives par 2 du nombre dcimal convertir. A chaque multiplication nous obtenons une partie entire et un reste. Il est important de noter que le nombre binaire rsultant s'obtient en crivant le premier chiffre la position du bit de poids le plus fort (MSB).
0,375 x 2 = 0,75 partie entire = 0 Poids fort (MSB) reste = 0,75 0,75 x 2 = 1,5 partie entire = 1 reste = 0,5 0,5 x 2 = 1,0 partie entire = 1 reste = 0 N10 = 0,375 correspond N2 = 0,011 Exemple 2- 5 : Conversion du nombre fractionnaire dcimal 0,375 en binaire
On peut remarquer qu'un nombre fini dans une base peut conduire une suite infinie dans une autre.
= = = =
Notez que le premier reste devient le chiffre de poids le plus faible du nombre octal et que le dernier reste devient le chiffre de poids le plus fort. Si on utilise une calculatrice pour faire les divisions, on aura comme rsultat un nombre avec une partie fractionnaire plutt qu'un reste. On calcule toutefois le reste en multipliant la fraction dcimale par 8. Par exemple, avec la calculatrice, la rponse de la division 266/8, est 33,25. En multipliant la partie dcimale par 8, on trouve un reste de 0,25 X 8 = 2. De mme, 33 / 8 donne 4,125, d'o un reste de 0, 125 X 8 = 1.
10
Electronique numrique
nombre octal en son quivalent binaire de trois chiffres. Voyez dans le tableau ci-dessous les huit symboles octaux exprims en binaire.
Chiffre octal quivalent binaire 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111
Au moyen de ce tableau, tout nombre octal est converti en binaire par la transformation de chacun des chiffres. Par exemple, la conversion de 4728 va comme suit:
4 100 7 111 2 010
Parfois, il arrivera que le nombre binaire ne forme pas un nombre juste de groupes de trois. Dans ce cas, on pourra ajouter un ou deux zros gauche du bit de poids le plus fort pour former le dernier triplet (si on lit de droite gauche). Voici une illustration de ceci avec le nombre binaire 11010110.
011 3 010 2 110 68
Notez l'ajout d'un zro gauche du bit de poids le plus fort pour obtenir un nombre juste de triplets.
11
Il ne faut surtout pas oublier que les chiffres hexadcimaux A F correspondent aux valeurs dcimales 10 15.
Hexadcimal 0 1 2 3 4 5 6 7 8 9 A B C D E F Dcimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Binaire 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
La reprsentation hexadcimale est principalement utilise pour reprsenter un nombre binaire sous forme plus compacte. Un nombre en hexadcimal comprend 4 fois moins de chiffres!
12
Electronique numrique
35616
= 3162 +5161+ 6160 = 768 + 80 + 6 = 85410 = 2162 + 10161 + 15160 = 512 + 160 + 15 = 68710
2AF16
9F216
13
que groupe son chiffre hexadcimal quivalent. Au besoin, on ajoute des zros gauche pour obtenir un dernier groupe de 4 bits.
11101001102
= 0011 3 = 3A616
1010 A
0110 6
Pour passer d'un nombre hexadcimal son quivalent binaire, il faut connatre la suite des nombres binaires de quatre bits (0000 1111) ainsi que le nombre correspondant en hexadcimal. Ds que cette correspondance devient un rflexe automatique, les conversions se font rapidement sans calculs. C'est ce qui explique pourquoi le systme hexadcimal est si pratique pour reprsenter de grands nombres binaires.
Electronique numrique
De nouveau, on voit que chaque chiffre a t converti en son quivalent binaire pur. Notez qu'on fait toujours correspondre 4 bits chaque chiffre. Le code BCD tablit donc une correspondance entre chaque chiffre d'un nombre dcimal et un nombre binaire de 4 bits. videmment, seuls les groupes binaires 0000 1001 sont utiliss. Le code BCD ne fait pas usage des groupes 1010, 1011, 1100, 1101, 1110 et 1111. Autrement dit, seuls dix des 16 combinaisons des 4 bits sont utiliss. Si l'une des combinaisons "inadmissibles" apparat dans une machine utilisant le code BCD, c'est gnralement le signe qu'une erreur s'est produite.
pas un nombre binaire pur. Quand on code selon le systme binaire pur, on prend le nombre dcimal dans son intgralit et on le convertit en binaire, sans le fractionner; par ailleurs, quand on code en BCD, c'est chaque chiffre individuel qui est remplac par son quivalent binaire. titre d'exemple, prenons le nombre 137 et trouvons son nombre binaire pur puis son quivalent BCD:
13710 = 100010012 13710 = 0001 0011 0111 (Binaire) (BCD)
Le code BCD ncessite 12 bits pour reprsenter 137 tandis que le nombre binaire pur n'a besoin que de 8 bits. Il faut plus de bits en BCD qu'en binaire pur pour reprsenter les nombres dcimaux de plus d'un chiffre. Comme vous le savez, il en est ainsi parce que le code BCD n'utilise pas toutes les combinaisons possibles de groupes de 4 bits; c'est donc un code peu efficace. Le principal avantage du code BCD provient de la facilit relative avec laquelle on passe de ce code un nombre dcimal, et vice versa. Il ne faut retenir que les groupes de 4 bits des chiffres 0 9. C'est un avantage non ngligeable du point de vue du matriel, puisque dans un systme numrique ce sont des circuits logiques qui ont la charge d'effectuer ces conversions.
Nous verrons plus tard comment une telle conversion est ralise dans un systme numrique qui fait tous les calculs en binaire!
16
Electronique numrique
sur deux dcades sur deux dcades sur deux dcades sur deux dcades sur deux dcades sur deux dcades
17
tres et les diverses fonctions que l'on retrouve sur un clavier standard de machine crire ou d'ordinateur.
0..3 0 1 2 3 4 5 6 7 8 9 A B C D E F
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 Nat A B C D E F G H I J K L M N O
6 a b c d e f g h i j k l m n o
18
Electronique numrique
Lgende:
SOH STX ETX EOT ENQ ACK DLE NAK SYN ETB BS HT LF CR DC1 DC2 DC3 DC4 Dbut d'en-tte Dbut de texte Fin de texte Fin de transmission Demande Accus de rception Echappement de transmission Accus de rception ngatif Synchronisation Fin de bloc de transmission Espace arrire Tabulateur horizontal Interligne Retour de chariot Marche lecteur Embrayage perforateur Arrt lecteur Dbrayage perforateur Nat usage national BEL SO SI CAN EM SUB ESC SP NUL DEL Sonnerie Hors code En code Annulation Fin de support Substitution Echappement Espace Nul Oblitration US RS GS RS Sparateur de sous-articles Sparateur d'articles Sparateur de groupes Sparateur de fichiers
Le code ASCII standard ninclus pas des caractres comme les lettres avec les accents , , , etc. Le nombre de bits utilis donc t augment 8. Nous disposons ainsi 256 lments cods. Lextension du code ASCII nest pas standard. En franais nous avons besoin des lettres avec des accents comme , , , ... En allemand, il y a dautres caractres comme , , .... Il existe donc autant de variantes du code ASCII tendu sur 8 bits quil y a de pays voir de rgions!
19
20
Chapitre 3
Arithmtique binaire
Les diverses oprations arithmtiques qui interviennent dans les ordinateurs et les calculatrices portent sur des nombres exprims en notation binaire. En tant que telle, l'arithmtique numrique peut tre un sujet trs complexe, particulirement si on veut comprendre toutes les mthodes de calcul et la thorie sur laquelle elle s'appuie. Heureusement, il n'est pas ncessaire d'enseigner aux ingnieurs la thorie complte de l'arithmtique numrique, tout au moins pas avant qu'ils soient devenus des programmeurs expriments. Dans ce chapitre, nous allons concentrer nos efforts sur les principes de base qui nous permettent de comprendre comment les machines numriques (c'est--dire les ordinateurs) ralisent les oprations arithmtiques de base. Nous traiterons uniquement la reprsentation des nombres entiers, celle des nombres fractionnaires sera tudie ultrieurement. D'abord nous verrons comment effectuer manuellement les oprations arithmtiques en binaire, par la suite nous tudierons les circuits logiques rels qui matrialisent quelques unes de ces oprations dans un systme numrique.
21
On commence par additionner les chiffres du rang de poids faible, ce qui donne 7. Les chiffres du deuxime rang sont ensuite additionns, ce qui donne une somme de 13, soit 3 plus un report de 1 sur le troisime rang. Pour le troisime rang, la somme des deux chiffres plus le report de 1 donne 8. Les mmes rgles s'appliquent l'addition binaire. Cependant, il n'y a que quatre cas, qui peuvent survenir lorsqu'on additionne deux chiffres binaires et cela quel que soit le rang. Ces quatre cas sont:
0 1 1 1 + + + + 0 = 0 0 = 1 1 = 10 = 0 + report de 1 sur le rang de gauche 1 + 1 = 11 = 1 + report de 1 sur le rang de gauche
Le dernier cas ne se produit que lorsque, pour un certain rang, on additionne deux 1 plus un report de 1 provenant du rang de droite. Voici quelques exemples d'additions de deux nombres binaires:
22
Electronique numrique
Il n'est pas ncessaire d'tudier des additions ayant plus de deux nombres binaires, parce que dans tous les systmes numriques les circuits qui additionnent ne traitent pas plus de deux nombres la fois. Lorsque nous avons plus de deux nombres additionner, on trouve la somme des deux premiers puis on additionne cette somme au troisime nombre, et ainsi de suite. Ce n'est pas vritablement un inconvnient, puisque les machines numriques modernes peuvent gnralement raliser une opration d'addition en quelques nanosecondes. L'addition est l'opration arithmtique la plus importante dans les systmes numriques. Les oprations de soustraction, de multiplication et de division effectues par les ordinateurs ne sont essentiellement que des variantes de l'opration d'addition.
23
A6 0 Bit de signe
A5 1
A4 1
A3 0
A2 1
A1 0
A0 0 = +5210
Grandeur = 5210
A6 1 Bit de signe
A5 1
A4 1
A3 0
A2 1
A1 0
A0 0 = -5210
Grandeur = 5210
Bien que la notation signe-grandeur soit directe, les ordinateurs et les calculatrices n'y ont gnralement pas recours, en raison de la complexit pour raliser des oprations arithmtiques avec cette notation. On utilise plutt dans ces machines, pour reprsenter les nombres binaires signs, la notation en complment 2. Avant d'aborder le droulement de tout ceci, il importe de voir comment on obtient l'quivalent en complment 1 et l'quivalent en complment deux, d'un nombre binaire.
On dit que le complment 1 de 101101 est 010010. Le complment 1 dun nombre est donc linversion de chaque bit laide de la fonction logique NON. Nous pouvons donc exprimer le complment 1 par lquation ci-dessous. Complment 1 de N : C1(N) = not N (1)
24
Electronique numrique
Nous allons voir que "1111" est la reprsentation du nombre -1 sur 4 bits. Le complment 2 d'un nombre binaire s'obtient simplement en prenant le complment 1 de ce nombre et en ajoutant 1 au bit de son rang de poids le plus faible. Voici une illustration de cette conversion pour le cas 1011012 = 4510.
101101 010010 + = 1 010011 quivalent binaire de 45 inversion de chaque bit pour obtenir le complment 1 addition de 1 pour obtenir le complment 2 le complment 2 du nombre binaire initial
On dit que 010011 est le complment 2 de 101101. Le complment 2 dun nombre est donc linversion de chaque bit laide de la fonction logique NON, puis laddition de 1. Nous pouvons donc exprimer le complment 2 par lquation ci-dessous. Complment 2 de N : C2(N) = C1(N) + 1 = not N + 1 (2) Voici la valeur du nombre -1 sur 4 bits. Nous commenons par exprimer le nombre 1 sur 4 bits puis nous appliquons la rgle de calcul du complment 2.
0001 1110
quivalent binaire de 1 sur 4 bits inversion de chaque bit pour obtenir le complment 1 addition de 1 pour obtenir le complment 2 le complment 2 du nombre 1, soit -1
+ =
1 1111
0 Bit de signe
= +4510
Grandeur exacte
1 Bit de signe
= -4510
Complment 2
25
Si le nombre est ngatif, sa grandeur est le complment 2 de la grandeur exacte et son bit de signe est un 1 gauche du bit de poids le plus fort. Voyez la figure 3- 2 la reprsentation du nombre -4510. La complmentation 2 d'un nombre sign transforme un nombre positif en un nombre ngatif et vice versa. La notation en complment 2 est employe pour exprimer les nombres binaires signs parce que, comme nous le verrons, on parvient grce elle soustraire en effectuant en ralit une addition. Cela n'est pas ngligeable dans le cas des ordinateurs, puisque avec les mmes circuits, nous parvenons soustraire et additionner. Dans de nombreuses situations, le nombre de bits est fix par la longueur des registres qui contiennent les nombres binaires, d'o la ncessit d'ajouter des 0 pour avoir le nombre de bits requis: Comme exemple nous allons exprimer +2 au moyen de 5 bits:
+2 = 00010 11101 + 1 11110 (complment 1) (ajouter 1) (complment 2 du chiffre +2 sur 5 bits)
et ainsi de suite. Nous pouvons analyser en dtails une reprsentation en complment 2 sur 8 bits. La valeur ngative la plus grande est :
10000000 = -28-1 = -27 = -128
Nous serions tent de conclure que le nombre total de valeurs exprime est de 255 valeurs (128 + 127). Cest sans compter le nombre 0 exprim par "00000000". Nous avons donc bien 256 valeurs diffrentes possibles. Par consquent, on peut affirmer que l'intervalle complet des valeurs que l'on peut crire en complment 2 au moyen de N bits : Il y a un total de 2N+1 valeurs diffrentes, en comptant le zro. Dans le cas gnral dune reprsentation sur N bits, nous avons : nombre de valeurs diffrentes 2N
26
Electronique numrique
Do la plage de variation des nombres entiers signs avec une reprsentation en complment 2 sur N bits :
-2N-1 +(2N-1-1)
Bit de signe
Remarquez que les bits de signe du cumulande et du cumulateur sont 0 et que celui de la somme est aussi 0, ce qui indique un nombre positif. Notez aussi qu'on a fait en sorte que le cumulande et le cumulateur aient le mme nombre de bits. Il faut toujours s'assurer de cela dans la notation en complment 2.
27
Dans ce cas-ci, le bit de signe du cumulateur est 1. Remarquez que les bits de signe sont aussi additionns. En fait, un report est produit au moment de l'addition du dernier rang. Ce report est toujours rejet d'o la somme finale de 00101, soit le nombre dcimal +5.
Dans ce cas-ci le bit de signe de la somme est 1, ce qui indique un nombre ngatif. Comme la somme est un nombre ngatif, la rponse est le complment 2 de la grandeur exacte. Donc 1011 est en ralit le complment 2 de la somme. Pour trouver la grandeur exacte de la somme, on doit prendre le complment 2 de 1011, ce qui donne 0101 (5); la rponse est donc 11011 = -5. On peu galement vrifier le rsultat en additionnant le poids de chaque bit, avec le bit de signe qui vaut -2N, o N est le nombre de bits de grandeur.
-124 + 123 +022 +121 +120 = -16 + 8 + 2 + 1 = -5
28
Electronique numrique
diffre peu des cas examins prcdemment. Quand on soustrait un nombre binaire (le diminuteur) d'un autre nombre (le diminuande), la marche suivre est comme suit: a. Prendre le complment 2 du diminuteur, y compris son bit de signe. Si ce dernier est un nombre positif, il deviendra un nombre ngatif dans la notation en complment 2. Si le diminuteur est un nombre ngatif, la complmentation 2 en fera un nombre positif crit en grandeur exacte. Autrement dit, nous changeons le signe du diminuteur. b. Aprs avoir complment 2 le diminuteur, on l'additionne au diminuande. Le diminuande conserve sa forme initiale. Le rsultat de cette addition reprsente la diffrence recherche. Le bit de signe de la diffrence indique si l rponse est positive ou ngative et si on est en notation binaire exacte ou en notation en complment 2. c. Rappelez-vous que les deux nombres doivent avoir le mme nombre de bits. Examinons la soustraction suivante: +9 - (+4).
diminuande (+ 9) 01001 diminuteur (+ 4) 00100
Changez le diminuteur pour sa version en complment 2 (11100), ce qui reprsente 4. Maintenant additionnez-le au diminuande.
+9 -4 +5 01001 11100 100101 La retenue est rejete, le rsultat est donc 00101 = +5
Quand on complmente 2 le diminuteur, on obtient en ralit -4, de sorte qu'on additionne +9 -4, ce qui est quivalent soustraire de +9 le nombre +4. En dfinitive, toute opration de soustraction se rsume une addition lorsqu'on utilise la notation en complment 2. Cette caractristique de la notation en complment 2 explique pourquoi c'est la mthode la plus utilise, puisqu'on peut additionner et soustraire en utilisant les mmes circuits.
29
+9 +8
0 0 1
Le bit de signe de la rponse est celui d'un nombre ngatif, ce qui est manifestement une erreur. La rponse devrait tre +17. tant donn que la grandeur est 17, il faut plus de 4 bits pour l'exprimer, et il y a donc un dpassement (overflow) sur le rang du bit de signe. Une condition de dpassement donne toujours lieu un rsultat inexact, et on la dtecte en examinant le bit de signe du rsultat et en le comparant aux bits de signe des nombres additionns. En additionnant deux nombres de signes diffrents, il ne peut pas y avoir de dpassement, par contre lorsqu'on additionne deux nombres de mme signe, on a un dpassement si le signe du rsultat est diffrent du signe des deux nombres additionns. Dans un ordinateur, il existe un circuit spcialement conu pour dtecter les conditions de dbordement et pour indiquer que la rponse est fausse.
Dans cet exemple, le multiplicande et le multiplicateur sont en notation binaire exacte et il n'y a pas de bit de signe. La marche suivre est exactement la mme que pour les multiplications dcimales. D'abord, examinons le bit de poids le plus faible du multiplicateur; dans notre exemple il s'agit d'un 1. Ce 1 multiplie le multiplicande pour donner 1001, c'est notre premier produit partiel. Ensuite, examinons le deuxime bit du multiplicateur. Il s'agit d'un 1, ce qui donne le second produit partiel. Notez qu'en crivant le second produit partiel on le dcale d'un rang vers la gauche par rapport au premier. Le troisime bit du multiplicateur est 0 et notre troisime produit partiel est 0000; ce troisime produit est aussi dcal d'un rang vers la gauche par rapport au produit partiel prcdent. Le quatrime bit du multiplicateur est 1, de sorte que le dernier produit partiel est 1001, que l'on
30
Electronique numrique
crit nouveau dcal d'un rang vers la gauche. On additionne ensuite les quatre produits partiels pour obtenir le produit final. La plupart des machines numriques ne peuvent additionner que deux nombres binaires la fois. C'est la raison pour laquelle les produits partiels d'une multiplication ne peuvent tre additionns ensemble en une seule fois. Ils sont plutt additionns deux par deux, c'est--dire que le premier est additionn au second, que leur somme est additionne au troisime et ainsi de suite.
31
1 0 1 0 ,0 1 0 0 0 0 1 0 1 0 0 0
Dans la plupart des ordinateurs modernes, les soustractions qui ont lieu durant une opration de division sont gnralement des soustractions avec complment 2, c'est--dire on complmente 2 le soustracteur puis on effectue l'addition. La division de nombres signs s'effectue de la mme faon que la multiplication. Les nombres ngatifs sont complments pour obtenir des nombres positifs puis la division est effectue. Si le dividende et le diviseur sont de signes opposs, le quotient est complment 2 pour obtenir un nombre ngatif, puis on lui ajoute un bit de signe de 1. Si le dividende et le diviseur ont le mme signe, le quotient est laiss sous sa forme positive et on lui ajoute un bit de signe de 0.
L'addition est effectue comme une addition binaire normale et la somme est 1001, soit le code BCD de 9. Voici un autre exemple: additionnons 45 33.
32
Electronique numrique
45 + 33 78 +
Dans cet exemple. Les codes de 4 bits associs 5 et 3 sont additionns selon les rgles binaires pour donner 1000, ce qui est le code BCD de 8. De mme, l'addition des chiffres dcimaux de second rang donne en binaire 0 111, ce qui est le code BCD de 7. Le total est 0111 1000, soit le code BCD de 78. Dans les exemples prcdents, aucune somme de deux chiffres dcimaux ne dpassait 9; donc, il n'y a pas eu de reports dcimaux. Dans cette situation l'addition BCD est un processus direct quivalent l'addition binaire.
La somme 1101 n'existe pas dans le code BCD; il s'agit de l'une des six reprsentations codes de 4 bits interdites ou non valides. Cette reprsentation est apparue parce qu'on a additionn deux chiffres dont la somme dpasse 9. Dans un tel cas, il faut corriger la somme en additionnant 6 (0110) afin de prendre en considration le fait qu'on saute six prsentations codes non valides:
6 + 7 13 + 0001 + 0110 0111 1101 0110 0011 BCD de 6 BCD de 7 Somme non valide en BCD Additionner 6 pour corriger BCD de 13
Comme on le montre ci-dessus, l'addition de 0110 la somme non valide donne la reprsentation BCD exacte. Notez qu'un report a lieu sur le chiffre dcimal de deuxime rang. Il est obligatoire d'additionner 0110 quand la somme de deux chiffres dcimaux dpasse 9. Voyons un autre exemple: additionnez 47 35 en BCD:
47 + 35 82 + + 0100 0011 0111 1 1000 0111 0101 1100 0110 0010 BCD de 47 BCD de 35 Somme non valide dans le 1er chiffre Additionner 6 pour corriger Somme BCD exacte
33
L'addition des codes de 4 bits pour 7 et 5 produit une somme non valide que l'on corrige en additionnant 0110. Notez que ceci produit un report de 1, qui est ajout la somme BCD des chiffres du second rang. Rcapitulation de l'addition en BCD: a. Addition binaire ordinaire des reprsentations BCD de tous les rangs. b. Pour les rangs o la somme est gale ou infrieure 9, aucune correction ne s'impose et la somme est une reprsentation BCD valide. c. Quand la somme des deux chiffres est suprieure 9, on ajoute une correction de 0110 pour obtenir la reprsentation BCD exacte. Il se produit toujours un report sur le chiffre de rang immdiatement gauche, soit lors de l'addition initiale (premire tape) ou de l'addition de la correction.
34
Chapitre 4
Tous les circuits numriques fonctionnent en mode binaire, c'est--dire un mode dans lequel les signaux ne peuvent prendre que deux valeurs, soit 0 ou soit 1. Les valeurs 0 et 1 correspondent des plages de tensions dfinies l'avance. Cette caractristique des circuits logiques nous permet de recourir l'algbre de Boole pour l'analyse et la conception de systmes numriques. Dans ce chapitre, nous tudierons les portes logiques, qui constituent les blocs lmentaires des circuits logiques et nous verrons comment il est possible de dcrire leur fonctionnement grce l'algbre boolenne. Aussi, nous vous apprendrons comment on russit construire des circuits logiques en combinant les portes et comment l'algbre de Boole parvient dcrire et analyser ces derniers.
4-1 Dfinitions
Nous allons commencer par donner quelques dfinitions.
35
36
Electronique numrique
a. La fonction logique OU (or) Nous utiliserons le symbole (#) Cette fonction est trs souvent reprsente par le symbole (+) b. La fonction logique ET (and) Nous utiliserons le symbole (.) c. La fonction logique dinversion NON (not) Nous utiliserons le symbole ( )
Variable A 0 1 F1.0 0 0
Ltude des fonctions dune variable nous fait dcouvrir la fonction NON (not). Cette fonction est prsente dans le paragraphe L'opration NON (NOT), page 42.
37
Variables A 0 0 1 1 B 0 1 0 1 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1
Fonctions F2.x 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 A B C D E 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 F 1 1 1 1
Les fonctions F2.8 F2.F sont respectivement les inverses des fonctions F2.7 F2.0. Parmi ses fonctions, nous noterons au passage :
F2.8 = NON F2.7 = NON (A OU B) = A # B = A B voir 4-7.1 page 42 F2.9 = NON F2.6 =NON (A OU-exclusif B) = A B , voir 4-8.2 page 45 F2.A = NON F2.5 = NON B = B F2.B = NON F2.4 F2.C = NON F2.3 = NON A = A F2.D = NON F2.2 F2.E = NON F2.1 = NON(A ET B) = A B = A # B , voir 4-7.2 page 43 F2.F = NON F2.0 = constante = 1
Ltude des fonctions de deux variables nous fait dcouvrir les fonctions de bases ET et OU. Nous voyons aussi les fonctions composes NON-ET, NON-OU et la fonction particulire OU-exculsive. Pour chaque fonction, il est indiqu le numro du paragraphe qui prsente celle-ci.
38
Electronique numrique
B 0 0 1 1
A 0 1 0 1 a)
X ? ? ? ?
C 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1 b)
A 0 1 0 1 0 1 0 1
X ? ? ? ? ? ? ? ?
D 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
C 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 c)
B 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
A 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
X ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Figure 4- 3 : Tables de vrit: a) table deux entres; b) table trois entres; c) table quatre entres.
Dans chacune de ces tables, toutes les combinaisons possibles de 0 et de 1 pour les entres (D, C, B, A) apparaissent gauche, tandis que le niveau logique rsultant de la sortie, X, est donn droite. Pour le moment, il n'y a que des "?" dans ces colonnes, car les valeurs de sortie sont diffrentes pour chaque type de circuit. Notez que dans la table de vrit deux entres il y a quatre lignes, que dans celle trois entres il y a huit lignes et que dans la table quatre entres, il y en a seize. Pour une table de N entres, il y a 2N lignes. De plus, vous remarquez sans doute que la succession des combinaisons correspond la suite du comptage binaire, de sorte que la dtermination de toutes les combinaisons est directe et qu'on ne peut pas en oublier.
39
Dans cette quation, le signe # indique un OU logique. La fonction de sortie est active si A OU B est actif. Le fonctionnement de cet oprateur est dfini par la table de vrit de la figure 4- 4.
B 0 0 1 1 a)
A 0 1 0 1
X= A # B 0 1 1 1 b) porte OU (OR)
A X=A # B B
Figure 4- 4 : a) Table de vrit dfinissant l'opration OU; b) symbole de circuit servant reprsenter une porte OU deux entres.
Nous nutiliserons pas cette symbolique afin de ne pas confondre loprateur logique OU avec loprateur arithmtique daddition (+). Dans la suite de ce manuel nous utiliserons le symbole # ou or pour loprateur logique OU.
40
Electronique numrique
Dans cette expression, le signe signifie l'opration boolenne ET, dont les rgles d'opration sont donnes dans la table de vrit de la figure 4- 5.
B 0 0 1 1 a)
A X = AB 0 1 0 1 0 0 0 1 b) porte ET (AND)
A X=AB B
Figure 4- 5 : a) Table de vrit dfinissant l'opration ET; b) symbole d'une porte ET deux entres.
D'aprs cette table, vous pouvez facilement dduire que la fonction logique ET correspond la multiplication en binaire. Quand A ou B est 0, le produit est nul; quand A et B sont 1, leur produit est 1. Il nous est donc possible d'affirmer que dans l'opration ET la rponse est 1 si et seulement si toutes les entres sont 1, et qu'elle est 0 dans tous les autres cas.
41
A X = A
0 1 a) 1 0
X=A
42
Electronique numrique
te OU suivie d'un INVERSEUR. L'expression de sortie d'une porte NONOU est X = A # B . La table de vrit montre la figure 4- 7 nous apprenons que la sortie d'une porte NON-OU est exactement l'inverse de celle d'une porte OU pour toutes les combinaisons des entres.
B
0 0 1 1 a)
A
0 1 0 1
X = A#B
1 0 0 0 b) porte NON-OU (NOR)
A
X=A#B
De manire gnrale, la fonction de sortie dune porte NON-OU n entres est active (niveau 1) uniquement lorsque toutes les entres sont inactives (niveau 0). La sortie dune porte NON-OU est inactive (niveau 0) si une seule des entres est active (niveau 1). Par De Morgan (voir paragraphe 4-12.4) nous pouvons montrer que la porte NOR est quivalent : X = A#B = A B
A B
4-7.2 La porte NON-ET (NAND)
X=A . B
On peut voir la figure 4- 8 le symbole d'une porte NON-ET deux entres. Vous voyez que c'est le symbole d'une porte ET sauf qu'il y a un petit rond la pointe. Encore une fois, ce petit rond correspond une opration d'inversion. Ainsi, la porte NON-ET a un fonctionnement analogue une porte ET suivie d'un INVERSEUR. L'expression de sortie d'une porte NON-ET est X = A B . La table de vrit montre la figure 4- 8 nous apprend que la sortie d'une porte NON-ET est exactement l'inverse de celle d'une porte ET pour toutes les combinaisons des entres.
43
B
0 0 1 1 a)
A X = AB
0 1 0 1 1 1 1 0 b) porte NON-ET (NAND)
A B
X=A
De manire gnrale, la fonction de sortie dune porte NON-ET n entres est active (niveau 1) si une seule des entres est inactive (niveau 0). La sortie dune porte NON-ET est inactive (niveau 0) uniquement lorsque toutes les entres sont actives (niveau 1). Par De Morgan (paragraphe 4-12.4) nous pouvons montrer que la porte NAND est quivalent : X = AB = A#B
A B
X=A # B
44
Electronique numrique
X = A B
B
Figure 4- 9 : a) Table de vrit dfinissant l'opration OU-exclusif; b) symbole d'une porte OU-exclusif.
De manire gnrale, la fonction de sortie dune porte OU-exclusif indique la diffrence entre les deux signaux dentres. La sortie est active (niveau 1) si ltat logique des entres est diffrent.
X = A B
B
Figure 4- 10 : a) Table de vrit dfinissant l'opration NON-OU-exclusif; b) symbole d'une porte NON-OU-exclusif.
De manire gnrale, la fonction de sortie dune porte NON-OU-exclusif indique lgalit entre les deux signaux dentres. La sortie est active (niveau 1) si ltat logique des entres est identique. Le fonctionnement de cette porte correspond un comparateur un bit.
45
Loprateur NON-OU-exclusif a une proprit particulire. Linversion de la sortie peut tre reporte sur lune ou lautre des entres, soit : A B= A B= A B Nous pourrons dmontrer cette proprit avec lalgbre de Boole.
1
1.a
1.c
A A A A
1.e
A
1
1.b Symboles CEI
Le grand triangle marque l'amplification, le petit triangle l'inversion. On peut remarquer que l'inversion peut prcder ou suivre l'amplification. Pour les symboles 1.e et 1.f, le rond marque l'inversion. Nous utiliserons de prfrence les symboles 1.c ou 1.d. Pour les symboles CEI, l'amplification se marque par un triangle.
46
Electronique numrique
A B A B
& 1.a 1
F= A B
A B A B 1.c
F= A B
A B
A B
F= A B 1.e F= A B
F= A B
F= A B
A B A B
1 1.a &
F= A#B
A B A B 1.c
F= A#B
A B
F= A#B
F= A#B
A B
A B A B
& 1.a 1
F=A.B
A B A B 1.c
F=A.B
A B
A B
F=A.B
F=A.B
A B A B
F=A#B
A B A B 1.c
F = A# B
A B
A
F=A#B
F=A#B
47
A B
F=A B
A B 1.b
F=A B
A B 1.c
F=A B
Symboles MIL
A B C
Figure 4- 13 : Un circuit et son quation boolenne
X = A B # C
48
Electronique numrique
Comme exemple supplmentaire, considrons le circuit de la figure 414. Le rsultat la porte OU est simplement A # B. La sortie de cette porte aboutit l'entre de la porte ET, alors que l'autre entre de cette dernire reoit le signal C. L'expression de la sortie de la porte ET est donc X = (A # B)C. Notez l'emploi des parenthses pour indiquer que loprateur OU sapplique dabord sur A et B. Ensuite loprateur ET est appliquer sur la sortie de la porte OU et lentre C. Sans les parenthses, notre interprtation serait errone, car X = A # BC signifie que A est runi dans une porte OU avec le produit BC. Loprateur ET (.) est prioritaire sur loprateur OU.
A B C
Figure 4- 14 : Un circuit logique dont l'expression de sortie comporte des parenthses.
X = (A # B) C
A B
X= A#B
A B
X=A#B
a)
Figure 4- 15 : Circuits comprenant des INVERSEURS
b)
Dans la figure 4- 15(b), la sortie de la porte OU gale A # B, sortie qui vient alimenter un INVERSEUR. La sortie de ce dernier est donc ( A # B ) , puisque toute l'expression est inverse. Voici la description en VHDL synthtisable des deux circuits de la figure 4- 15 :
a) X <= not A or B ; b) X <= not (A or B) ;
49
AC
B C
BC
Y = AC # BC # ABC
ABC
b) soitY = ( AC ) ( BC ) , en VHDL :
50
Electronique numrique
b) soit
Y = C B , en VHDL :
4-12.1 Postulats
Nous avons deux postulats : A#A = 1 AA = 0 Ces deux postulats traduisent le fait que l'inverse d'une variable ne peut jamais prendre la mme valeur que la variable. Nous apprendrons ultrieurement qu'un manquement ces postulats est possible lors de rgimes transitoires dans les circuits. Ce manquement peut entraner un comportement alatoire sur les fonctions dpendantes de ces variables.
4-12.2 Thormes
Poursuivons maintenant notre tude de l'algbre boolenne en examinant les thormes de Boole qui sont des rgles qu'on utilise pour simplifier les expressions logiques et, par le fait mme, les circuits logiques. La figure 4- 17 prsente le premier groupe de thormes dans lesquels X est une variable logique prenant soit la valeur 0, soit la valeur 1. X0 = 0 X1 = X XX = X XX = 0 X#0 = X X#1 = 1 X#X = X X#X = 1
Figure 4- 17 : Thormes de Boole pour une variable.
Avant de vous prsenter les autres thormes de Boole, nous tenons mentionner que dans les thormes (1) (8), la variable X peut correspondre une expression renfermant plus d'une variable. Par exemple, si nous
51
avons AB ( AB ) , nous pouvons affirmer, en posant X = AB et d'aprs le thorme (4), que lquation = 0.
Les thormes (9) et (10) montrent que ET et OU sont des lois de composition commutatives, donc que l'ordre de la multiplication ou de l'addition logique de deux variables n'a pas d'importance, que le rsultat reste le mme. Les thormes (11) et (12) montrent que ET et OU sont des lois de composition associatives, qui indiquent que l'on peut grouper, comme l'on veut, les variables dans une expression de multiplication ou d'addition logique. Les thormes (13) et (14) font voir que la multiplication logique est distributive par rapport l'addition logique, c'est--dire que l'on peut dvelopper une expression en la multipliant terme terme, tout comme dans l'algbre ordinaire. Ces thormes dmontrent galement que l'on peut mettre en facteur une expression. On veut dire par l que si nous avons une somme de termes, chacun renfermant une variable commune, il est possible de mettre cette variable en facteur, comme on le fait en algbre ordinaire. Il est facile de se rappeler des thormes (9) (14) puisqu'ils sont identiques ceux de l'algbre ordinaire. Par contre, les thormes (15) et (16) ne se retrouvent pas en algbre ordinaire. On peu les dmontrer en passant en revue toutes les possibilits de X et de Y. Tous ces thormes sont d'une grande utilit pour simplifier une expression logique, c'est--dire pour obtenir une expression comptant moins de termes. L'expression simplifie permet de raliser un circuit moins complexe que celui correspondant l'expression originale.
52
Electronique numrique
rvlent d'une grande utilit pour simplifier des expressions comprenant des sommes ou des produits de variables complments. Voici ces deux thormes: (X # Y) = X Y (17) (X Y) = X # Y (18) Le thorme (17) affirme que la somme logique complmente de deux variables est gale au produit logique des complments de ces deux variables. De mme, le thorme (18) stipule que le produit logique complment de deux variables est gal la somme logique des complments de ces deux variables. La dmonstration de ces deux thormes se fait simplement en considrant toutes les possibilits de X et de Y. Bien que ces thormes aient t formuls pour les variables simples X et Y, ils demeurent aussi vrais pour les cas o X et Y sont des expressions comprenant plusieurs variables. A titre d'illustration, appliquons ces thormes l'expression suivante : ( AB # C ) = ( AB ) C Le rsultat trouv peut tre simplifi une autre fois, car on y retrouve encore un produit logique complment. En vertu du thorme (18), il vient: AB C = ( A # B ) C Comme B = B , le rsultat dfinitif est alors: ( A # B ) C = AC # BC
53
54
Chapitre 5
Au chapitre prcdent, nous nous sommes penchs sur l'tude de l'ensemble des portes logiques lmentaires et avons russi, au moyen de l'algbre boolenne, dcrire et analyser des circuits matrialiss par des combinaisons de portes logiques. On peut qualifier ces circuits logiques de combinatoires du fait qu' tout moment le niveau logique recueilli en sortie ne dpend que de la combinaison des niveaux logiques appliqus aux entres. Un circuit combinatoire ne possde aucun mcanisme de rtention (mmoire); par consquent sa sortie ragit seulement aux signaux prsents sur ses entres. Dans ce chapitre, nous poursuivons notre tude des circuits combinatoires. D'abord nous poussons plus avant la simplification (minimisation) des circuits. Pour cela, nous utiliserons deux mthodes: les thormes de l'algbre boolenne et une technique graphique, les tables de Karnaugh.
Chacune de ces trois expressions d'une somme de produits est forme d'au moins deux termes d'un produit logique (terme ET) mis en relation avec loprateur OU. Chaque terme ET comprend une ou plusieurs variables exprimes sous sa forme normale ou sa forme complmente. Par exemple, dans la somme de produits ABC # ABC , le premier produit logique est constitu des variables A, B et C non complmentes, tandis que le second produit comprend la variable B non complmentes et les variables A et C complmentes. Notez que dans une somme de produits, le signe de complmentation ne peut pas surmonter plus d'une variable d'un terme (par ex. on ne peut pas avoir ABC )
B C
A
X = AB( A # BC)
a) A B b)
Figure 5- 1 : Simplification d'un circuit logique.
X = ABC
Dans les sections suivantes, nous verrons deux faons diffrentes de simplifier des circuits logiques. Une premire faon est fonde sur l'appli-
56
Electronique numrique
cation des thormes de l'algbre boolenne; cette faon, comme nous le verrons, dpend normment de l'instinct et de l'exprience. L'autre faon (les tables de Karnaugh), au contraire, suit une dmarche systmatique, semblable une recette de cuisine.
Z = ABC # AB ( AC ) Z = ABC # AB ( A # C ) Z = ABC # AB ( A # C ) Z = ABC # ABA # ABC Z = ABC # AB # ABC Z = A C ( B # B ) # AB Z = AC ( 1 ) # AB Z = AC # AB Exemple 5- 1 : Simplification algbrique
thorme 18 (De Morgan) annulation de la double complmentation distribution du ET thorme 3 mise en facteur thorme 8 thorme 2
57
Equation minterme
58
Electronique numrique
On voit qu'il y a trois combinaisons qui produisent une valeur 1 pour la sortie X. Les termes ET pour chacune de ces combinaisons figurent droite de la table de vrit. Nous pouvons numroter chaque ligne de la table de vrit. Nous parlerons de lquation dun minterme. L'expression complte s'obtient en effectuant des OU logique de ces trois mintermes, ce qui nous donne :
X = CBA # CBA # CBA
Nous pouvons crire cette expression logique sous une forme compacte en indiquant uniquement le numro des mintermes 1, soit :
X = 2, 3, 7
Nous avons maintenant une quation logique non simplifie. La premire solution est dutiliser lalgbre de Boole pour rechercher lexpression la plus simple. Cela ncessite beaucoup dexprience et de pratique. Il existe une mthode graphique efficace : la table de Karnaugh.
Les autres cellules de la table de Karnaugh contiennent des 0. Le mme raisonnement s'applique pour les tables trois et quatre variables.
B 0 0 1 1
A 0 1 0 1
X 1 0 0 1
BA BA
0 1 0
1 0 1
0 1
a)
C 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
A 0 1 0 1 0 1 0 1
X 1 1 1 0 0 0 1 0
CBA CBA CBA CBA
CB A 0 1
00
CBA
01
CBA
11
CBA
10
CBA
CBA
CBA
CBA
CBA
CB A 0 1
00 1 1
01 1 0
11 1 0
10 0 0
b)
La construction de la table de Karnaugh garanti quil ny a quune seule variable qui change entre deux cases voisines. Dans la table b) de la figure 5- 2 nous allons tudier le cas de la case situe au croisement de CB = 11 et A = 0 qui correspond au minterme = CBA . Nous avons trois cases voisines, soit : case voisine droite CB = 10 et A = 0, minterme = CBA la variable B change case voisine gauche CB = 01 et A = 0, minterme = CBA la variable C change case voisine en bas CB = 11 et A = 1, minterme = CBA la variable A change Nous voyons une autre proprit de la table de Karnaugh :
Chaque case autant de cases adjacentes quil y a de variables
60
Electronique numrique
D 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
C 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
A 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
X 0 1 0 0 0 1 0 0 0 0
DCBA DCBA
DC BA 00 01 11 10
00 0 1 0 0
01 0 1 0 0
11 0 1 1 0
10 0 0 0 0
ou C
0 1 A 0 0
0 1 0 0
0 1 1 0
0 0 0 B 0
0 0 0 1 0 1
DCBA DCBA
5-5.2 REUNION
Il est possible de simplifier l'expression de sortie X en combinant selon des rgles prcises les cellules de la table de Karnaugh qui contiennent des 1. On donne ce processus de combinaison le nom de runion.
61
CB A 0 1
00 0 0
01 1 1
11 0 0
10 0 0
Nous pouvons dmontrer la simplification de la variable A par lalgbre de Boole. Lquation logique du groupement correspond la somme logique des deux mintermes, soit :
minterme de la case du haut : CBA
minterme de la case du bas : CBA do lquation : finalement CB CBA # CBA = CB ( A # A ) = CB 1
62
Electronique numrique
DC 00 BA 00 01 11 10 0 0 1 0 a) DC 00 BA 00 0 01 0 11 0 10 0 c)
01 0 0 1 0
11 0 0 1 0
X = BA
10 0 0 1 0 CB 00 A 0 0 1 0 b) 01 0 0 11 1 1
X = C
10 1 1
01 0 1 1 0
11 0 1 1 0
X = CA
10 0 0 0 0
DC 00 BA 00 1 01 0 11 0 10 1 d)
01 0 0 0 0
11 0 0 0 0
X = CA
10 1 0 0 1
DC BA 00 01 11 10
00 0 1 1 0
01 0 1 1 0
11 0 1 1 0
10 0 1 1 0
DC BA 00 01 11 10
00 1 1 1 1
01 0 0 0 0
11 0 0 0 0
10 1 1 1 1
a)
X = A
b)
X = C
63
simplifie. Il est clair que plus une runion regroupe de 1, plus le nombre de variables limines est grand. Plus prcisment encore, une runion de deux 1 provoque l'limination d'une variable, un runion de quatre 1, l'limination de deux variables et une runion de huit 1, l'limination de trois variables et ainsi de suite. La runion de 2n 1 permet de simplifier n variables. Voici les tapes suivre pour simplifier une expression boolenne en recourant la mthode des tables de Karnaugh: a. Dessinez la table de Karnaugh et placez des 1 dans les carrs correspondant aux lignes de la table de vrit dont la sortie est 1. Mettez des 0 dans les autres carrs. b. Etudiez la table de Karnaugh et reprez tous les groupes possibles. Trouvez les plus grands. c. Commencez ensuite par encercler les 1, dit isols, qui ne font parties que d'un seul groupe. Cela signifie que pour ces 1, il n'existe qu'une seul possibilit de groupement. d. Continuer ensuite prendre les groupes les plus grands qui incluent des 1 (au minimum un seul) qui ne font pas partie d'un autre groupe. e. Vous devez prendre tous les 1 de la table de Karnaugh. Il est possible d'utiliser plusieurs fois le mme 1. f. Effectuez un OU logique entre tous les termes rsultant des runions.
64
Electronique numrique
taines situations ces combinaisons d'entre ne peuvent jamais survenir; par consquent, il est inutile de prciser pour elles une valeur de sortie.
C 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
A 0 1 0 1 0 1 0 1
Z 0 0 0 1 1 1 A A
CB 00 0 1 0 0 01 0 11 1 1 10 1
Z=A CB 00 0 1 0 0 01 0 0 11 1 1 10 1 1
En prsence de conditions indiffrentes, nous devons dcider quel - de sortie est remplac par un 0 et quel - est remplac par un 1. Le choix est donn en recherchant la faon la plus efficace de grouper les 1 adjacents de la table de Karnaugh. Lobjectif est dobtenir l'expression la plus simple.
65
l'encodage de priorit la comparaison (COMP) <,=,> les oprations arithmtiques (addition, soustraction, ...) le transcodage de nombres : BIN->BCD, BCD->BIN, BCD->7SEG, etc. ... Nous allons commencer par tudier chaque fonction standard. Nous donnerons des exemples de circuits et les symboles CEI correspondants. Nous donnerons aussi la description en VHDL.
EN Sel 0 0 1 1 0 1 0 1
Sortie1 Sortie0 0 0 0 1 0 0 1 0
Sel nSortie0 nSortie1 EN
X/Y
Sel En 1 0 EN 1 nSortie1 nSortie0
Nous remarquons que les dcodeurs ont frquemment des sorties actives basses. Nous verrons que cela est utile dans le cas de son utilisation
66
Electronique numrique
ALS139 1A 1B 1in (2) (3) (1) X/Y 0 1 2 3 (4) (5) (6) (7) (12) (11) (10) (9) 1Y0 1Y1 1Y2 1Y3 2Y0 2Y1 2Y2 2Y3
1 2 EN
La figure 5- 10 nous prsente un dcodeur 2 4. Le signal de slection comprend 2 bits. Ds lors le nombre de sorties est de 4 car il y a 22 combinaisons possibles pour la slection. Ce dcodeur dispose dautre part dun signal dactivation (enable). Lorsque celui-ci est inactif (tat logique 1, actif bas), toutes les sorties sont inactives (tat 0). Lorsque le signal dautorisation (enable) est actif, la sortie correspondant au code de la slection est active.
X/Y
0 1 2 3 Y0 Y1 Y2 Y3
Nous allons donner la description en VHDL synthtisable du dcodeur prsent sur la figure 5- 10.
67
library IEEE; use IEEE.Std_Logic_1164.all; entity Dec_2a4 is port(Sel_i : in Std_Logic_vector(1 downto 0); -- Entrees de selection EN_i : in Std_Logic ; -- Entree de validation Y_o : out Std_Logic_Vector(3 downto 0) -- sorties ); end Dec_2a4 ; architecture Flot_Don of Dec_2a4 is signal Y_s : Std_Logic_Vector(3 downto 0) ; begin -- determination de la valeur de sortie with Sel_i select Y_s <= "0001" when "00", "0010" when "01", "0100" when "10", "1000" when "11", "XXXX" when others ;-- simulation -- affectation de la valeur de sortie Y_o <= Y_s when (EN_i = '1') else "0000"; end Flot_Don; Exemple 5- 2 : Description VHDL du dcodeur 2 4 avec enable
Voici un dcodeur avec 3 bits de slection. Il permet de dcoder les 8 combinaisons d'un vecteur 3 bits.
ALS138 (1) (2) (3) (6) (4) (5) X/Y 1 2 4 & EN 0 1 2 3 4 5 6 7 (15) (14) (13) (12) (11) (10) (9) (7) Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
A B C G1 G2A G2B
Dans le circuit ALS138, l'activation des sorties dpend de EN, qui est le rsultat d'un ET entre les entres ( G 1, G 2 A , G 2 B ).
EN = G 1 G 2 A G 2 B
68
Electronique numrique
A0 A1 A2 A3 A4
Dec 3 8 1 X/Y
2 4
Dec 3 8 1 X/Y
2 4
Dec 3 8 1 X/Y
2 4
Dec 3 8 1 X/Y
En Dec 2 4 1 X/Y 0
2
En
En
En
Enable
En
1 2 3
La fonction est le rsultat d'une fonction NAND portant sur l'inverse des mintermes. Le dcodeur nous dlivrant l'inverse des mintermes, il suffira d'adjoindre une porte NAND admettant comme entres les lignes de dcodage correspondant aux 1 de la fonction. Le problme nous cotera un dcodeur plus une porte NAND n entres (n tant le nombre de 1 de la fonction) par fonction. Un dcodeur prsentera un cot avantageux si le nombre de fonctions est grand et que ces fonctions ont peu de 1.
69
A B C D '1'
1 2 4 &
X/Y
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
F1
1 2 4 & '0'
X/Y
F2
F3
F0
Ce circuit n'est pas plus conomique que la solution avec des portes. Il cote 2 pour les dcodeurs et 1 + 0,25 + 0,16 = 1,41 pour les portes. Ce qui donne un total de 3,41 contre 3,25 avec des portes.
70
Electronique numrique
MUX
TDV compacte Sel 0 1 Sortie In0 In1 In0 In1 0 Y 1 Sortie Sel 0 G 0 1
Voici un exemple de circuit standard qui remplit la fonction de multiplexage. Remarquez que nous avons 4 multiplexeurs avec le mme bloc de commande dans le circuit standard (74ALS157). Les multiplexeurs sont symboliss par les rectangles superposs, le premier est marqu MUX.
ALS157 G A/B 1A 1B 2A 2B 3A 3B 4A 4B (15) (1) (2) (3) (5) (6) (11) (10) (14) (13) EN G1 1 1 1 1 1 1 1 1 MUX (4) (7) (9) (12) 1Y 2Y 3Y 4Y
Le bloc de commande se marque par un rectangle ayant des encoches qui coiffe les 4 blocs. Une entre EN (ENable) supplmentaire apparat. La sortie des multiplexeurs n'est active que si l'entre EN=1, ce qui revient dire que la borne 15 est au niveau bas.
71
Dans le bloc de multiplexage, l'entre marque 1 indique que la sortie prendra la valeur de B si l'entre de slection G1, borne 1, prend la valeur 1 (niveau haut). L'entre A sera prise en compte pour G1=0. Les chiffres entre parenthses indiquent les numros des bornes du circuit. La figure 5- 16 nous prsente un multiplexeur 4 1. Le signal de slection comprend 2 bits. Ds lors le nombre dentres est de 4, car il y a 22 combinaisons possibles pour la commande de slection. Ce multiplexeur dispose dautre part dun signal dactivation (enable). Lorsque celui-ci est inactif (tat logique 1, actif bas), la sortie du multiplexeur est inactive (tat 0). Lorsque le signal dactivation (enable) est actif, la sortie prend la valeur de lentre slectionne.
D0
D1
D2
MUX
Sel1..0 0 1 EN 0 1 2 3
G
Sortie D3 En
0 3
En D0 D1 D2 D3
Sortie
Voici la description VHDL du multiplexeur 4 1 prsent dans la figure 5- 16. Nous utilisons linstruction with...select qui dcrit directement le fonctionnement dun multiplexeur.
72
Electronique numrique
library IEEE; use IEEE.Std_Logic_1164.all; entity Mux_4a1 is port(Sel_i : in Std_Logic_vector(1 downto 0); -- Entrees de selection EN_i : in Std_Logic ; -- Entree de validation D0_i, D1_i, D2_i, D3_i : in Std_Logic; -- Entree de donnees Y_o : out Std_Logic -- sortie ); end Mux_4a1 ; architecture Flot_Don of Mux_4a1 is signal Y_s : Std_Logic ; begin -- determination de la valeur de sortie with Sel_i select Y_s <= D0_i when "00", D1_i when "01", D2_i when "10", D3_i when "11", 'X' when others; -- simulation
-- affectation de la valeur de sortie Y_o <= Y_s when (EN_i = '1') else '0'; end Flot_Don; Exemple 5- 3 : Description VHDL du multiplexeur 4 2 avec enable
73
ALS153 A B 1G 1C0 1C1 1C2 1C3 2G 2C0 2C1 2C2 2C3 (14) (2) (1) (6) (5) (4) (3) (15) (10) (11) (12) (13) 0
0 G 3 1
EN MUX 0 1 2 3
1Y
(9)
2Y
G A B C D0 D1 D2 D3 D4 D5 D6 D7
(7) (11) (10) (9) (4) (3) (2) (1) (15) (14) (13) (12)
ALS151 0 0 1 G 7 2 0 1 2 3 4 5 6 7
(5) (6)
Y W
A0 A1 A2 A3 A4 A5
MUX 16->1
MUX 16->1
MUX 16->1
MUX 16->1
D0 D1 ...... D15
MUX 4->1
sortie
Y = G
Di ( DCBA )i
i=0
F =
i ( DCBA )i
i=0
Si l'on compare cette quation celle de la premire forme canonique d'une fonction, on remarque la similitude des deux expressions.
74
Electronique numrique
Dans un premier temps il nous sera toujours possible de raliser une fonction 4 variables avec un multiplexeur 16->1, en posant : G=1
Di = i
Pour raliser une fonction de 4 variables avec un multiplexeur 16->1, il est suffisant de rendre actif le circuit (EN=1) et de mettre sur les entres de donnes les valeurs correspondant la ligne ayant le mme numro que l'entre. L'utilisation d'un multiplexeur 8->1 est envisageable en mettant la fonction sous la forme suivante :
15 7 15
F =
F = D
i ( CBA )i # D ( i + 8 ) ( CBA )( i + 8 )
i=0 7 i=0
( D i # ( D ( i + 8 ) ) ( C BA )i )
i=0
75
Dans une premire tape, pour nous assurer que toutes nos fonctions dpendent bien de toutes les variables, nous allons utiliser la mthode de la table de Karnaugh.
0 0 1 1 D 0 1 1 0 C 0 0 - 0 1 0 0 1 - 0 - 0 1 1 0 0 - 1 1 0 - 0 - 0 B A F3 0 0 1 1 D 0 1 1 0 C 0 0 - 0 0 1 0 1 - 0 - 1 1 1 0 1 - 0 1 0 - 0 - 1 B A F2
0 0 1 1 D 0 1 1 0 C 0 0 - 0 0 0 0 1 - 1 - 1 1 1 0 0 - 0 1 0 - 1 - 1 B A
F3 = (D C) # (D B A) F2 = (C B) # (C B A) # (C A) F1 = (B A) # (B A) = A B F0 = A
0 0 1 1 D 0 1 1 0 C 0 0 - 1 1 1 0 1 - 0 - 0 1 1 0 0 - 0 1 0 - 1 - 1
F1
B A
F0
76
Electronique numrique
Nous constatons que : F3 est une fonction de D, C, B et A F2 est une fonction de C,B et A F1 est une fonction de B et A F0 est une fonction de A
Pour tablir une comparaison, nous pouvons valuer le cot avec des portes logiques.
portes Nb. entres 1 2 3 4 8 total 0,83 1,16 1,08 0,16 3,25 2 1 0,50 0,33 F3 3 2 2 F2 0,5 0,5 0,66 2 3 fonctions F1 0,33 0,75 1 F0 0,16 F3..0 3 0,50 7 1,75 3 1,00
La fonction F3 avec un multiplexeur 8->1 nous coterait 1 circuit pour le MUX, plus ventuellement un inverseur, ce qui nous donne un prix de revient de 1 1,16. La fonction F3 est plus conomique avec des portes. F3 pouvant tre mise sous la forme F3 = D & (C # B & A), l'entre D peut jouer le rle de l'entre G d'un multiplexeur 4->1, la fonction F3 revient alors 0,5 0,66 La fonction F2 qui est une fonction de 3 variables nous cote un MUX 4->1, plus ventuellement une porte non, soit un cot de 0,5 0,66 bien infrieur aux 1,16 de la ralisation en portes. Le demi-circuit restant pourra tre utilis pour raliser F1. Pour faciliter le calcul, nous tablirons dans un premier temps la table de vrit des fonctions F2 et F1 en fonction des variables C, B et A. C'est depuis cette table que nous nous livrerons au calcul des valeurs mettre sur les entres de donnes des deux multiplexeurs. Dans cette table, la variable D va disparatre, ce qui revient fusionner deux deux les lignes de notre ancienne table. Par exemple, la ligne numro 0 de la nouvelle table correspond aux combinaisons -000 pour les variables, ce qui donne les deux combinaisons 0000 et 1000. Dans ces deux lignes, la fonction F2 prend les valeurs - et 1, nous donnerons la valeur 1 dans la nouvelle table. De mme, pour F1 qui correspond aux valeurs - et 0, ce qui nous conduira un 0 pour la nouvelle table. Nous pourrons avoir les cas suivants pour les valeurs des fonctions :
77
premire table 0 et 0 (0 et 1) ou (1 et 0) (0 et -) ou (- et 0) 1 et 1 (1 et -) ou (- et 1) - et -
Num. 0 1 2 3 4 5 6 7
C 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
A 0 1 0 1 0 1 0 1
Fx
0 1
F2 1 1 1 0 0 0 0 1
F1 0 1 1 0 0 1 1 0
4 5
i 0 1 2 3
!C !C !C !C !C
C C C C C
( i + 4 )
Di !C !C !C C
1 1 1 0
0 0 0 1
78
Electronique numrique
i 0 1 2 3
!C !C !C !C !C
C C C C C
(i + 4)
Di 0 1 1 0
0 1 1 0
0 1 1 0
On peut remarquer que les valeurs des entres sur les donnes pour la fonction F1 ne dpendent pas de C, mais sont des constantes. Ceci tait prvisible car F1 est une fonction des deux variables B et A. Nous pouvons tablir le schma des deux fonctions.
0 3
MUX (7)
F2
(9)
F1
5-10 Comparateur
La fonction de comparaison de deux nombres binaires est trs frquemment utilise. Un comparateur est un circuit qui indique si deux nombres binaires sont plus grands, gaux ou plus petits. Dans le cas dun circuit modulaire, il y a trois entres afin de savoir si les bits prcdents sont plus grands, gaux ou plus petits. La figure 5- 20 a) nous donne le symbole CEI dun comparateur dgalit avec lentre = pour la chanage. La figure b) nous donne le symbole CEI dun comparateur 4 bits modulaire avec les trois sorties <, = et >.
79
P = Q
COMP P=Q
0 1 2 3 < = > 0 1 2 3
COMP P
a)
Figure 5- 20 : Symbole CEI de comparateurs
b)
entity Comp_4 is port(Nb_P_i : in Std_Logic_Vector(3 downto 0); -- Entree du nombre P Nb_Q_i : in Std_Logic_Vector(3 downto 0); -- Entree du nombre Q PG_i, EQ_i, PP_i : in Std_Logic; -- Entrees de chainage (module precedent) PG_o, EQ_o, PP_o : out Std_Logic; -- Sorties de comparaison ); end Comp_4 ; architecture Flot_Don of Comp_4 is signal PG_s, EQ_s, PP_s : Std_Logic; begin -- Comparaison de P et Q EQ_s <= '1' when unsigned(P_i) = unsigned(Q_i) else '0'; PP_s <= '1' when unsigned(P_i) < unsigned(Q_i) else '0'; PG_s <= '1' when unsigned(P_i) > unsigned(Q_i) else '0'; -- affectation de la sortie avec l'entree chainage EQ_o <= '1' when EQ_s = '1' and EQ_i = '1' else '0'; PP_o <= '1' when PP_s = '1' else '1' when EQ_s = '1' and PP_i = '1' else '0';
80
Electronique numrique
PG_o <= '1' when PG_s = '1' else '1' when EQ_s = '1' and PG_i = '1' else '0'; end Flot_don; Exemple 5- 4 : Description VHDL dun comparateur 4 bits modulaire
La fonction de comparaison de N bits peut-tre dcompose avec plusieurs comparateurs 1 bits. Cette dcomposition peut-tre srie ou parallle. La figure 5- 21 nous montre la dcomposition srie de la comparaison. Nous commenons par les bits de poids faible. Cette dcomposition ncessite moins de matriel. Par contre le temps de propagation travers le comparateur complet est plus important. Le temps de propagation est de :
tpCOMPN = N * tpCOMP1
P = Q
COMP
P=Q
tpCOMPn = n * tpCOMP1
P = Q
COMP COMP
P=Q
A(n-1) B(n-1)
P = Q
P=Q
A=B
La figure 5- 22, nous montre la dcomposition parallle de la comparaison. Chaque bit est compar puis une porte ET calcule le rsultat. Cette dcomposition ncessite une porte ET N entre. Lavantage est davoir un temps de propagation beaucoup plus petit, celui-ci est de :
tpCOMPN = 1 * tpCOMP1 + tpET
81
P = Q P = Q
COMP
P=Q
COMP
P=Q A=B
P = Q
COMP
P=Q
somme report
1 1 1 0 0 0 0 1 1 1
On commence l'addition en additionnant les bits de poids faible du cumulande et du cumulateur. Donc 1 + 1 = 10, ce qui signifie que la somme pour ce rang est 0 avec un report de 1. Ce report est ajout au bit du cumulande et du cumulateur du rang immdiatement gauche. Ainsi l'addition au deuxime rang est 1 + 0 + 1 = 10, ce qui, nouveau produit une somme
82
Electronique numrique
de 0 et un report de 1. Ce report est ajout au bit du cumulateur et du cumulande du rang immdiatement gauche et ainsi de suite pour les autres rangs. chaque tape de l'addition, nous additionnons 3 bits: le bit du cumulande, le bit du cumulateur et le bit de report provenant de l'addition des chiffres du rang prcdent. Le rsultat de l'addition de ces 3 bits est un nombre 2 bits: le bit de somme et le bit de report, ce dernier devant tre ajout au rang immdiatement gauche. Vous devez bien saisir que le mme processus se rpte pour tous les rangs du nombre. Donc, si on parvient concevoir un circuit logique qui reproduit l'opration d'addition, il nous restera alors simplement accoler des circuits identiques, un pour chaque rang binaire. C'est ce que montre la figure 5- 24.
B4 C5 AC no 4 S4 S3 C4
B3 C3 AC no 3 S2
B2 C2 AC no 2 S1
B1 C1 AC no 1 S0
B0 C0 AC no 0
A4
A3
A2
A1
A0
Figure 5- 24 : Schma fonctionnel d'un circuit additionneur parallle de 5 bits form de 5 additionneurs complets.
Sur cette figure, les variables A4, A3, A2, A1 et A0 reprsentent les bits du cumulande mmoriss dans l'accumulateur (appel galement registre A). Les variables B4, B3, B2, B1 et B0 sont les bits du cumulateur mmoriss dans le registre B. Les variables C4, C3, C2, C1 et C0 reprsentent les bits de report des rangs correspondants. Les variables S4, S3, S2, S1 et S0 sont les bits de somme de chaque rang. Les bits correspondant du cumulateur et du cumulande sont appliqus un circuit logique appel additionneur complet, de mme que le bit de report gnr par l'addition des bits du rang prcdent. L'additionneur complet utilis pour chaque rang a trois entres: une entre A, une entre B et une entre C, et deux sorties: une sortie somme et une sortie report. Sur cette figure, on additionne des nombres de 5 bits; dans les ordinateurs d'aujourd'hui les nombres s'chelonnent gnralement de 8 128 bits. Le montage de la figure 5- 24 est appel un additionneur parallle parce que tous les bits du cumulateur et du cumulande sont appliqus et additionns simultanment. Donc les additions des bits de chacun des rangs se font en mme temps. Il s'agit l d'une faon qui diffre de la technique manuelle, dans laquelle on additionne chaque rang un la fois en partant du bit de poids faible. De toute vidence l'addition parallle est extrmement rapide.
83
A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
Cen 0 1 0 1 0 1 0 1
Cs 0 0 0 1 0 1 1 1
S 0 1 1 0 1 0 0 1
A Cen AC Cs B S
La table de vrit dmontre qu'il y a 4 cas o S doit tre 1. En recourant la mthode des sommes de produits, nous pouvons crire ainsi l'expression pour S:
S = ABC en # ABC en # ABC en # ABC en
Une fois simplifi par la mthode algbrique, on obtient : (6) Maintenant intressons-nous la sortie Cs de la table de vrit, l'expression de la somme de produits correspondant Cs est :
C s = ABC en # ABC en # ABC en # ABC en = ABC en # ABC en # AB S = ( A B ) C en
Une fois simplifi par la mthode algbrique, on obtient : (7) Les expressions (6) et (7) sont matrialises par le circuit de la figure 526, qui reprsente un additionneur complet.
C s = ( A B ) C en # AB
84
Electronique numrique
A B Cen S
Cs
85
86
Chapitre 6
Dans les chapitres prcdents, nous avons abord la conception des circuits logiques sans tenir compte de leurs modes de matrialisation. Il est bon de garder en mmoire que les circuits lectroniques numriques sont rgis par les lois de l'lectronique. Ce chapitre ne traitera que des composants pour les systmes combinatoires. Les lments squentiels seront vus ultrieurement.
87
tive.
Vcc zone du niveau haut [H]VHmin zone indtermineVLmax zone du niveau bas [L]GND
La famille TTL comporte plus de 800 types de circuits diffrents. Pour faciliter son implantation (augmentation du degr d'intgration, niveau de tension, vitesse, consommation), elle a donn naissance une srie de sous-familles. Ds 1976, une nouvelle technologie apparat (MOS complmentaire). Elle porte le nom de CMOS (Complementary Metal Oxide Semiconductor). Comme la famille TTL, l'volution des technologies conduit la cration de nouvelles sous-familles. Il faut remarquer la compatibilit des numros des circuits CMOS avec ceux de la famille TTL. Deux sous-familles CMOS acceptent des tensions d'alimentation diffrentes de la tension normale (5 volts)
88
Electronique numrique
.
Srie 74 74H.. 74L.. 74S.. 74AS.. 74LS.. 74ALS 74F.. commentaire standard High speed Low power Schottky Advanced Schottky Low power Schottky Advanced LS Fast consommation (mW) 10 20 1 20 8 2 2 4 vitesse (ns) 10 5 30 3 2 10 4 3 usage dpass dpass dpass dpass dpass normal conseill ponctuel
commentaire alimentation de 3...8 V alimentation de 3...8 V broche compatible TTL High speed CMOS HC niveau compatible TTL Advanced CMOS AC niveau compatible TTL
consommation (mW) 0 0 0 0 0 0 0
89
VIH
GND
Dans ce schma, les sens des courants sont ceux des courants positifs. Les courants entrants sont positifs.
90
Electronique numrique
5,0
tension d'entre
zone du niveau haut (H)
Il convient de noter que les valeurs de VIL (max) et VIH (min) dpendent des technologies utilises.
74LS.. 20 -0,4
74ALS.. 20 -0,1
74HCT...* 1 0
74HC..* 1 0
* VCC = 5V
91
74LS.. -0,4 8
74ALS.. -0,4 8
74HCT...* -4 4
74HC.*. -24 4
* VCC = 5V
zone du niveau haut (H) VIH(min) zone indtermine VIL(max) zone du niveau bas (L)
zone indtermine VOL(max) zone du niveau bas (L) zone de tension pour une
La marge de sensibilit aux bruits au niveau haut VNH (Noise High) est dfinie comme suit : VNH = VOH (min) - VIH (min) De mme, au niveau bas, nous dfinirons VNL = VIL (max) - VOL (max)
92
Electronique numrique
IOL
IOH
IIH
VOL
Figure 6- 4 : Reprsentation du facteur de charge
Pour la sortie au niveau bas, nous aurons IOL = n IIL si n est le nombre de portes. Comme IOL < IOL (max) = 8 mA, et que IIL < IIL (max) = - 0,1 mA, on peut tirer une valeur maximum de n = 8/0,1 = 80. Pour la sortie au niveau haut, nous avons IOH = n IIH, ce qui donne pour les valeurs IOH = -0,4 mA et IIH = 20 mA n = 400/20 = 20. Nous dirons que la porte a une sortance de 20. Pour simplifier les calculs, les fabricants ont dcid d'utiliser une charge unitaire correspondant : 40 A dans l'tat haut et 1,6 mA dans l'tat bas, Ces valeurs correspondent au courant d'entre pour la srie TTL standard. A l'tat haut, IIH (max) = 40 A reprsente le courant maximum qui circule dans une entre TTL standard. De mme, l'tat bas, IIL (max) = 1,6 mA reprsente le courant maximum dans l'entre l'tat bas. Bien que ces caractristiques correspondent celles de la srie TTL standard, nous les utiliserons pour exprimer les exigences d'entre/sortie des autres sries.
Entrance (UL) haut 1 1,25 0,5 1,25 0,5 0,5 bas 1 1,25 0,1 1,25 0,25 0,06
93
Remarque: La plupart des familles ont des sortances haute et basse diffrentes. Lors de la conception des systmes, nous prendrons en compte la valeur la plus dfavorable (la plus faible). Pour les circuits CMOS, la rsistance d'entre extrmement leve fait que ces circuits ont dans leurs familles une sortance trs grande (suprieure 50).
Le sens de la commutation donn dans le nom est toujours celui de la sortie. Le niveau de la tension au point de mesure dpend de la famille logique (ALS 1,3V).
CMOS
IOL
IIL
CMOS
IOH
IIH
Au niveau bas, il nous faudra : n IIL (max) < IOL (max) et VOL < VIL Au niveau haut, il nous faudra : n IIH < IOH et VOH > VIH
94
Electronique numrique
Au niveau haut IIH = 1 A, IOH (max) = 400 A, nous aurons pratiquement IIH = IOH et le courant dans R tant pratiquement nul, la plus petite valeur de R nous conviendra.
Au niveau bas, IIL = 0 , IOL (max) = 8 mA, VO < VOL (max) (VCC - VOL) = R * IOL VCC - R * IOL = VOL < VOL (max) VCC - VOL(max) < R * IOL (VCC - VOL (max)) / IOL < R
Une autre solution consiste remplacer le circuit 74HC par un 74 HCT dont les niveaux d'entres sont compatibles.
95
Le circuit collecteur ouvert utilisera une charge extrieure dtermine par le concepteur. Cette architecture offre la possibilit de coupler plusieurs portes collecteur ouvert sur la mme charge et de raliser ainsi un oprateur cbl. Le dimensionnement de la rsistance de charge dpendra du nombre de circuits connects en entre et en sortie.
74LS00 VOH (min) (V) VOL (max) (V) VIH (min) (V) VIL (max) (V) IOL (max) (mA) IOH (max) (mA) IIL (max) (mA) IIH (max) (mA) 2.4 0.4 2 0.8 8 -0.4 -0.4 20
96
Electronique numrique
VCC Rp A B C D E F 74ALS01
Figure 6- 9 : Utilisation de portes collecteur ouvert
74ALS00
La porte en pointill marque une porte virtuelle ralise par le cblage. Ce type de portes prsente l'avantage d'avoir ses entres/sorties sur un mme conducteur, ce qui est particulirement avantageux si ces points sont disperss sur diffrentes cartes. Une seule borne d'interconnexion sera ncessaire entre ces cartes. Le dimensionnement de Rp est possible en crivant les contraintes V < VOL (max) au niveau bas, et V > VOH (min) au niveau haut. Dans le cas de l'exemple, le calcul donne :
V = VCC - Rp x ((3 x IOH) + (2 x IIH)) > VOH (min) Rp < (VCC - VOH (min) ) / (( 3 x (-IOH (max)) ) + ( 2 x IIH (max)) Rp < (5 - 2,4)) / (( 3 x (0,1)) + (2 x (0,02)) = (2,6) / (0,3 + 0,04) = 2,6 / 0,34 = 7,6 KW
Une porte au niveau bas doit garantir le niveau bas, ce qui explique le (1 x IOL) et (2 x IOH).
V = VCC - Rp x ((1 x IOL) + (2 x IOH) + (2 x IIL)) < VOL (max) Rp > (VCC - VOL (max)) / ((IOL) + (2 x IOH) + (2 x IIL)) Rp > (5 - 0,4) / ((8) + (2 x 0,1) + (2 x (-0,1))) = 4,6 / (8 + 0,2 - 0,2) = 4,6 / 8 = 575 W
En conclusion : 575 W < Rp < 7600 W Pratiquement, bien que la valeur de Rp dpende de la configuration des portes, une valeur de Rp entre 0,8 et 1 KW donne un rsultat satisfaisant.
97
E 0 0 1 1
A 0 1 0 1
0 1
Nous allons donner la description en VHDL synthtisable dune porte trois tats.
library IEEE; use IEEE.Std_Logic_1164.all; entity Trois_Etats is port(OE_i: in Std_Logic; -- Active la porte 3 etats E_i: in Std_Logic ;-- Donnee dentree S_o: out Std_Logic -- Sortie porte 3 etats ); end Trois_Etats ; architecture Flot_Don of Trois_Etats is begin S_o <= E_i Z; when (OE_i = '1') else
98
Chapitre 7
Mmoires
Une mmoire est un ensemble d'lments mmoires binaires. Ces lments binaires (ou cases mmoires) sont de type non volatile (l'information crite l'intrieur de chacune des cases mmoire n'est pas affecte lors de l'ouverture du circuit d'alimentation), c'est le cas des ROM, PROM, EPROM et EEPROM ou volatile c'est le cas des RAM.
99
Chapitre 7: Mmoires
7-2.1 Principe
L'exemple le plus simple de mmoire morte fusibles 4x5 bits peut se schmatiser de la faon suivante : un dcodeur 2 vers 4 (74139) avec sorties actives l'tat bas permet de slectionner une ligne parmi 4. Exemple: l'adresse A1 A0 = 00, la ligne note 00 est force 0 et les autres lignes sont 1. Dans ce cas les 5 bits de sortie ont la valeur 0. Avant programmation toutes les sorties sont donc 0.
+V
Adresse
1 ligne a0 parmi 2n
Aprs programmation, c'est dire aprs destruction de certains fusibles, on peut obtenir le schma suivant:
100
Electronique numrique
+V
Adresse
1 ligne a0 parmi 2n
Fonctionnement Grce la rsistance de tirage une ligne de sortie vaut 1 en l'absence de diode (liaison dtruite) entre elle et le fil d'adresse slectionne. Si par contre, une diode est prsente, elle ramne le potentiel de la ligne sortie 0. Le contenu de cette mmoire 20 bits est alors :
adresse 11 10 01 00 S4S3S2S1S0 0 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0
Remarque: Les liaisons entre les lignes de slection d'adresse (lignes horizontales de la matrice), et les lignes de donnes (lignes verticales de la matrice) ne peuvent tre de simples connexions, mais doivent tre ralises l'aide de diodes. Les diodes servent viter un retour de courant depuis la ligne slectionne vers une autre qui ne l'est pas (courtcircuit):
101
Chapitre 7: Mmoires
ligne selectionne ( 0)
Sortie
Figure 7- 3 : Liaisons entre les lignes de slection d'adresse et les lignes de donnes
102
Electronique numrique
7-3.1 Principe
Chaque lment mmoire est compos d'un transistor MOS dont la grille est compltement isole dans une couche d'oxyde. Par application d'un tension suffisamment leve, qui est appele tension de programmation, on cre des lectrons chauds ou lectrons ayant une nergie suffisamment suffisante pour traverser la mince couche d'oxyde. Ces charges s'accumulent et se retrouvent piges dans la grille, la couche d'oxyde entre la grille et le silicium tant trop paisse pour que les lectrons puissent la traverser. La cellule mmoire est alors programme. Si maintenant, on veut effacer la mmoire, on expose la puce aux rayonnements U.V. Les photons (ou particules d'nergie lumineuse) communiquent alors leur nergie aux lectrons et leur font franchir la barrire isolante dans l'autre sens. La cellule mmoire est efface.
Aprs programmation
+ + + + +
Circuit ouvert
Circuit ferm
7-3.2 Exemple
La mmoire propose ci-dessous est une mmoire EPROM 16 bits. Cette mmoire est appele mmoire NMOS car les lments mmoires sont des transistors NMOS. Le problme de ces mmoires trs peu utilises est la consommation d'nergie mme au repos ( cause des rsistances de tirage). On leur prfrera les mmoires CMOS qui ne consomment que lorsqu'elles sont sollicites (on remplace alors les rsistances de tirage par des transistors PMOS).
103
Chapitre 7: Mmoires
+VCC
3 7439 A1 A0
+ + + + + +
2
+ + +
decode 1 2 vers 4
+ + +
0
+ + +
CS OE O3 O2 O1 O0
On utilise un dcodeur 2 vers 4 pour slectionner une ligne parmi quatre. Si /CS est 0 alors le dcodeur est actif et si par exemple A1 A0 = 0 0 alors la ligne 0 est force 0 (les autres lignes restent 1) on obtient donc sur le bus de donnes O3 O2 O1 O0 = 1 1 1 0. En effet seul le transistor de la ligne 0 bit O0 est programm (grille flottante charge). On utilise un buffer 3 tats pour dconnecter la mmoire du bus de donnes externe. Pour envoyer les donnes sur le bus de donnes il faudra donc activer ce buffer 3 tats (conditions /CS = 0 et /OE =0).
ADDR
stable
stable
tAA
stable
max(tAA,tACS)
CS_L
tACS tOH
OE_L
tAA tOZ tOE tOZ tOE
DATA
valid
valid
valid
104
Electronique numrique
Le temps d'accs en lecture tacs correspond au temps qu'il faut pour fournir la donne aprs activation du botier ( CS_L = 0 ) et des sorties (OE_L = 0 ). Il faut de plus que l'adresse soit stable pendant tout ce temps. Ce temps d'accs correspond aux diffrents temps de propagation des portes du circuit.
VPP
A12 A7 A6 A5 A4 A3 A2 A1 A0 DQ0 DQ1 DQ2 Vss
1 2 3 4 5 6 7 8 9 10 11 12 13 14
28 27 26 25 24 23 22 21 20 19 18 17 16 15
Vcc PGM (P) NC A8 A9 A11 OE(G) A10 CE (E) DQ7 DQ6 DQ5 DQ4 DQ3
Il existe diffrents types de mmoires EPROM dont la taille est comprise entre 64 kbits et 4 Mbits avec un bus de donnes de taille 1, 4 ou 8 bits. Quelle que soit la taille du bus de donnes, la capacit d'une mmoire est donne en kbits ou en Mbits, donc en nombre d'units mmoire.Les temps d'accs en lecture varient entre 50 ns et 100 ns selon les constructeurs.Le circuit donn ci-contre est une mmoire trs rpandue : la 27C64 (64 kbits rparties en 8ko ou 8kbytes). Cette mmoire possde un bus d'adresse de 13 bits (213 = 8192 ) et un bus de donnes de 8 bits. On retrouve les signaux de contrle actif l'tat bas CE (activation du botier) et OE (Output Enable : ouverture des sorties mmoires sur le bus de donnes).
Le cycle d'criture se fait avec un programmateur d'EPROM. L'criture dans la mmoire ne peut se faire qu'aprs avoir effac celle-ci dans une lampe UV (temps d'exposition entre 5 et 10 minutes). Lors de la phase d'criture (quelques secondes) la broche /PGM est force 0 et les tensions Vpp=12,7V et Vcc=6,25V sont appliques.
105
Chapitre 7: Mmoires
1 2 3 4 5 6 7 8 9 10 11 12
24 23 22 21 20 19 18 17 16 15 14 13
On peut voir une EEPROM (ou E2PROM) de 2 faons : soit comme une EPROM effaable lectriquement, ayant donc les mmes caractristiques en lecture qu'une EPROM et pouvant mme tre programme par un programmateur d'EPROM (on remarquera que la broche /PGM de l'EPROM est remplace par la broche /WE). Pour programmer la mmoire EEPROM, le circuit gnre les tensions de programmation partir du 5 V de l'alimentation. Nul besoin donc de fournir une tension externe de programmation. soit comme une mmoire SRAM dont le temps de lecture trc = 100 ns et le temps d'criture twc=1 10 ms. On retrouve donc les mmes chronogrammes qu'une mmoire SRAM, avec comme seule diffrence le temps d'criture qui est lev. Remarque: On peut retrouver une compatibilit entre les brochages d'une SRAM 6264, d'une EPROM 2764 et d'une E2PROM 2864. Ces mmoires (64kbits) peuvent donc tre interchanges sur une carte,
106
Electronique numrique
condition de respecter les chronogrammes de fonctionnement propres chacune des mmoires. Les mmoires EEPROM sont moins utilises que les mmoires EPROM (OTP) car bien plus chres. En effet une cellule mmoire en technologie E2PROM prend plus de place qu'en technologie EPROM.
X BUFFERS LATCHES AND DECODER A0-A10 ADDRESS INPUTS Y BUFFERS LATCHES AND DECODER
CE OE WE
107
Chapitre 7: Mmoires
Les mmoires flash sont utilises dans les PC (BIOS), ou dans les systmes embarqus pour mmoriser les programmes importants. Les nouveaux appareils grand public (tlphones portables, cartes mmoire des appareils de photos et camscopes...) demandent de plus en plus de capacit mmoire pour les interfaces graphiques et nouvelles fonctions. Les mmoires flash sont donc en pleine expansion.
108
Chapitre 8
L'lectronique moderne se tourne de plus en plus vers le numrique qui prsente de nombreux avantages sur l'analogique : grande insensibilit aux parasites et aux drives diverses, modularit et (re)configurabilit, facilit de stockage de l'information, etc... Les circuits numriques ncessitent par contre une architecture plus lourde et leur mode de traitement de l'information met en oeuvre plus de fonctions lmentaires que l'analogique d'o dcoule des temps de traitement plus long. Aussi les fabricants de circuits intgrs numriques s'attachent-ils fournir des circuits prsentant des densits d'intgration toujours plus leve, pour des vitesses de fonctionnement de plus en plus grandes. D'abord ralises avec des circuits SSI (Small Scale Integration) les fonctions logiques intgres se sont dveloppes avec la mise au point du transistor MOS dont la facilit d'intgration a permis la ralisation de circuits MSI (Medium Scale Integration) puis LSI (Large Scale Integration) puis VLSI (Very Large Scale Integration). Ces deux dernires gnrations ont vu l'avnement des microprocesseurs et micro-contrleurs. Bien que ces derniers aient rvolutionn l'lectronique numrique par la possibilit de raliser n'importe quelle fonction par programmation d'un
109
composant gnrique, ils traitent l'information de manire squentielle (du moins dans les versions classiques), ne rpondant pas toujours aux exigences de rapidit. Au dbut des annes 70 sont apparus les premiers composants (en technologie bipolaire) entirement configurable par programmation. La nouveaut rsidait dans le fait qu'il tait maintenant possible d'implanter physiquement par simple programmation, au sein du circuit, n'importe quelle fonction logique, et non plus de se contenter de faire raliser une opration logique par un microprocesseur dont l'architecture est fige. D'abord ddis des fonctions simples en combinatoire (dcodage d'adresse par exemple), ces circuits laissent aujourd'hui au concepteur la possibilit d'implanter des composants aussi divers qu'un inverseur et un microprocesseur au sein d'un mme botier ; le circuit n'est plus limit un mode de traitement squentielle de l'information comme avec les microprocesseurs. L'intgration des principales fonctions numriques d'une carte au sein d'un mme botier permet de rpondre la fois aux critres de densit et de rapidit (les capacits parasites tant plus faibles, la vitesse de fonctionnement peut augmenter). La plupart de ces circuits sont maintenant programms partir d'un simple ordinateur type PC directement sur la carte o ils vont tre utiliss. En cas d'erreur, ils sont reprogrammables lectriquement sans avoir extraire le composant de son environnement. De nombreuses familles de circuits sont apparues depuis les annes 70 avec des noms trs divers suivant les constructeurs : des circuits trs voisins pouvaient tre appels diffremment par deux constructeurs concurrents, pour des raisons de brevets et de stratgies commerciales. De mme une certaine inertie dans l'volution du vocabulaire a fait que certains circuits technologiquement diffrents ont le mme nom. Le terme mme de circuit programmable est ambigu, la programmation d'une FPGA ne faisant pas appel aux mmes oprations que celle d'un microprocesseur. Il serait plus juste de parler pour les PLD, CPLD et FPGA de circuits architecture programmable ou encore de circuits rseaux logiques programmables. Ce domaine de l'lectronique est aussi celui qui a certainement vu la plus forte volution technologique ces dernires annes : en moins de 15 ans la densit d'intgration a t multiplie par 200 (2000 20 000 portes en 85 pour 72 000 4 000 000 en 2000) en moins de 10 ans la vitesse de fonctionnement a t multiplie par 6 (40 MHz en 91 pour 240 MHz en 2000) la taille d'un transistor est passe de 1,2 m en 91 0,18 m en 2000. les technologies de conception ont fortement volu, tel cons-
110
Electronique numrique
tructeur initiateur d'un procd l'abandonne pour un autre, alors que le concurrent le reprend son compte. la tension d'alimentation est passe de 5 V 1,8 V diminuant ainsi la consommation. Aussi est-il trs difficile de s'y retrouver et de donner des ordres de grandeurs qui puissent tre compars. Nous tenterons dans cet expos une clarification des choses dont la volont de simplification pourra tre facilement prise en dfaut. Paralllement ces circuits, on trouvera les ASIC (Application Specific Integrated Circuits) qui sont des composants o le concepteur intervient au niveau du dessin de la pastille de silicium en fournissant des masques un fondeur. On ne peut plus franchement parler de circuits programmables. Les temps de dveloppement long ne justifient leur utilisation que pour des grandes sries. Les circuits prdiffuss peuvent tre dvelopps aussi rapidement qu'une FPGA. Le temps de fabrication est plus long (3 semaines pour le MD100) pour un temps de dveloppement de 8 semaines (selon le circuit et sans la fabrication). Ils sont surtout utiliss pour la faible consommation (quelques A voire mme nA) et pour les circuits analogiques/numriques (oscillateurs, sources de courants, comparateurs, etc...). Les PLD, CPLD et FPGA sont parfois considrs comme des ASIC par certains auteurs. Le tableau ci-aprs tente une classification possible des circuits numriques :
74HC.. ...
microprocesseurs microcontroleurs
Nous nous intresserons surtout aux circuits architecture programmable faible temps de dveloppement. Le principe de base des circuits nous intressant ici consiste raliser des connexions logiques programmables entre des structures prsentant des fonctions de bases. Le premier problme va donc tre d'tablir ou non suivant la volont de l'utilisateur, un contact lectrique entre deux points. Aussi, nous intresserons nous, avant de
111
passer aux circuits proprement dits et leur programmation, ces technologies d'interconnexion. Mais avant toutes choses, rappelons comment coder une fonction logique.
8-1.1 Sommes de produits, produits de somme et matrice PLA (Programmable Logic Array)
N'importe quelle fonction peut tre code par une somme de produit, par un produit de somme ou un mlange des deux. On peut immdiatement en dduire une structure de circuits, appel matrice PLA (Programmable Logic Array). La figure suivante reprsente une matrice PLA 4 entres et 4 sorties :
112
Electronique numrique
I3
I2
I1
I0 matrice OU programmable
matrice ET programmable O 3 O 2 O 1 O 0
Chacune des 4 entres et son complmentaire arrive sur une des 16 portes ET 2x4=8 entres. Afin de simplifier la reprsentation, les 8 lignes ont t reprsentes par une seule, chaque croix reprsentant une connexion programmable (un fusible par exemple). La figure suivante propose un principe de ralisation des fonctions de la matrice ET; la mise au niveau logique 0 (NL0) d'une des entres IX impose un NL0 en sortie :
I0 I1 Vcc S ET I0 I 1 S ET
113
et de la matrice OU, sur laquelle une entre au NL1 impose un NL1 en sortie :
S ET
SET
S ET
S ET
O0
O0
Ce type de structure est utilis dans certains circuits ASIC (Application Spcific Integrated Circuit) et demande une densit d'intgration importante : en effet pour n variables en entres, il faut 2n fonctions ET 2n entres et au moins un OU 2n entres (il y a en effet 2n combinaisons possibles, chaque combinaison dpendant de l'entre et de son complmentaire). La plupart des applications n'exigent pas une telle complexit et on peut se contenter d'une matrice ET programmable et d'une matrice OU fige. De mme, il est peu probable d'utiliser tous les termes produits et on peut alors limiter le nombre d'entres de la fonction OU. C'est le principe utilis par les circuits programmable, appels au dbut PAL (Programmable Array Logic), mais plus communment dsigns aujourd'hui sous le terme PLD (Programmable Logic Device).
8-1.2 Mmoires
Une fonction combinatoire associe chacune de ces combinaisons d'entre une valeur en sortie dcrite par sa table de vrit. C'est le principe de la mmoire o pour chaque adresse en entre, on associe une valeur en sortie, sur un ou plusieurs bits. La structure physique des mmoires fait appelle une matrice PLA dont la matrice ET est fige et sert de dcodeur d'adresse et dont la matrice OU est programme en fonction de la sortie dsire
114
Electronique numrique
I3
I2
I1
I0
matrice OU programmable
matrice ET fixe
O3 O2
O1 O0
Lorsqu'une adresse est prsente, par exemple I3 I2 I1 I0 = 1111, la porte ET concerne passe au NL1 (celle du bas dans l'exemple) et suivant les fusibles laisss intacts sur la matrice OU, on a un mot diffrent en O3 O2 O1 O0 (0000 si tous les fusibles sont "grills" par exemple). Ce principe utilis pour les mmoires, l'est aussi dans les CPLDs (Complex Programmable Logic Devices), mais surtout dans les FPGAs (Field Programmable Gate Arrays) sous le nom de LUT (Look Up Table).
8-1.3 Multiplexeur
Le multiplexeur permet galement de coder une fonction combinatoire, comme le montre la figure suivante :
115
A chaque valeur des entres E0 et E1 est associ un niveau logique dfini dans la table de vrit pour la sortie S. Ce niveau logique est impos sur l'entre de programmation correspondante. Ce principe est utilis dans les FPGA.
8-2.1 Connexions programmable une seule fois (OTP : One Time Programming)
Cellules fusible Ce sont les premires avoir t utilises et elles ont aujourd'hui disparu au profit de technologies plus performantes. Leur principe consistait dtruire un fusible conducteur par passage d'un courant fourni par une tension suprieure l'alimentation (12 25 V). Cellules antifusible En appliquant une tension importante (16 V pendant 1 ms) un isolant entre deux zones de semi-conducteur fortement dopes, ce dernier diffuse dans l'isolant et le rend conducteur. Chaque cellule occupe environ 1,8
116
Electronique numrique
m2 (700 m2 pour un fusible) ; cette technologie trs en vogue permet une haute densit d'intgration. Hormis la non reprogrammabilit, c'est la meilleure technologie (vitesse et surtout densit d'intgration).
117
Par contre, la simplicit de la cellule lmentaire n'autorise pas une reprogrammation slective (ventuellement par secteur), ce qui n'est pas gnant pour le type de circuits qui nous intresse. La tension de programmation et d'effacement est de 12 V, avec un temps de programmation de quelques dizaines de s pour un temps d'effacement de quelques milli-secondes. Un des inconvnients des cellules flash et EEPROM, la ncessit dune alimentation supplmentaire pour la programmation et l'effacement, est palli par les constructeurs en intgrant dans le circuit un systme pompe de charge fournissant cette alimentation. Le composant peut alors tre programm directement sur la carte o il est utilis. On parle alors de composants ISP : In Situ Programmation ou encore suivant les sources, In System Programmation.
reprogrammation ventuelle
Cellules SRAM transistors MOS classique Ce principe est classiquement choisi pour les FPGA. Le fait d'utiliser une mmoire de type RAM (donc volatile) impose la recharge de la configuration chaque mise sous tension : une PROM srie mmorise gnralement les donnes. Ce qui peut paratre un inconvnient devient un avantage si on considre l'aspect volutif du systme qui peut s'adapter un environnement extrieur changeant et modifier sa configuration en fonction des besoins. On pourra d'autre part facilement intgrer de la mmoire RAM dans le circuit. Le choix d'une cellule SRAM (Static Read Only Mmory) 6 transistors permet de bnficier d'un accs slectif et rapide (quelques ns) en cours d'utilisation. La taille d'une cellule n'est que deux fois plus forte (50 m2 par cellule) qu'avec une flash EEPROM. Cette technologie, utilise pour les autres circuits VLSI (contrairement aux EEPROM et Flash EPROM et leurs transistors grille flottante) permet de bnficier directement des progrs importants raliss dans ce domaine.
118
Electronique numrique
Comme nous venons de la voir, la programmation sur site de ces circuits est une ncessit absolue.
La partie nomme OLMC (Output Logic MacroCell, dnomination Lattice) sur la figure peut tre: combinatoire, une simple connexion relie alors la sortie du OU l'entre du buffer de sortie, dont la sortie est rinjecte sur le rseau programmable ; squentielle, le bloc OLMC tant alors une simple bascule D ; versatile, il est alors possible par programmation de choisir entre les deux configurations prcdentes. Les PLDs de dernire gnration utilisent des OLMCs versatiles, dont on donne ci-aprs la structure :
119
Le multiplexeur 4 vers 1 permet de mettre en circuit ou non la bascule D, en inversant ou pas les signaux. Le multiplexeur 2 vers 1 permet de rinjecter soit la sortie, soit l'entre du buffer de sortie vers le rseau programmable. Dsignation Elle est de la forme PAL EE T SS o EE reprsente le nombre d'entres, SS le nombre de sorties et T le type du PAL: exemple : PAL 22V10. Pour les dernires gnrations, on trouvera plutt la rfrence de type GAL EE T SS, (GAL pour Generic Array Logic) pour dsigner un circuit transistor MOS grille flottante, donc reprogrammable lectriquement. Programmation Les tapes de programmation sont assistes par ordinateur et prsentent la chronologie suivante : description de la fonction souhaite par entre schmatique ou syntaxique; dans ce dernier cas on utilise un langage appropri appel HDL (Hardware Description Language) comme le langage ABEL ou ventuellement VHDL (Very high speed integrated circuit HDL). On en profite pour dfinir des vecteurs de test de la fonction ralise. simulation logique puis temporelle de la fonction ralise et ventuellement retour l'tape prcdente. compilation et gnration d'un fichier de programmation (fichier au standard JEDEC). programmation et test physique du composant.
120
Electronique numrique
L'tablissement des liaisons (routage) entre les diffrentes macrocellules est encore moins critique : un seul point de connexion -cause du retardrelie les LAB entre eux. Le temps de propagation des signaux est parfaitement prdictible avant que le routage ne soit fait. Ce dernier n'influence donc pas les performances du circuit programm. Dans l'outil de synthse, la partie s'occupant du placement et du routage est appele le "fitter" (to fit : placer, garnir). La technologie de connexion utilise est gnralement l'EEPROM (proche de celle des PLDs) ou EEPROM flash.
121
Le passage d'un bloc logique un autre se fera par un nombre de points de connexion (responsables des temps de propagation) fonction de la position relative des deux blocs logiques et de l'tat "d'encombrement" de la matrice. Ces dlais ne sont donc pas prdictibles (contrairement aux CPLDs) avant le placement routage. De la phase de placement des blocs logiques et de routage des connexions dpendront donc beaucoup les performances du circuit en terme de vitesse. Sur la figure suivante, pour illustrer le phnomne, on peut voir une liaison entre deux blocs logiques (BA et BL) loigns, mais passant par peu de points de connexion, donc introduisant un faible retard. une liaison entre deux blocs proches (BD et BH) mais passant par de nombreux points de connexion, donc introduisant un retard important.
122
Electronique numrique
BA
BD BH BL
L'utilisation optimale des potentialits d'intgration d'un FPGA conduira un routage dlicat et pnalisant en terme de vitesse. Il convient de noter que ces retards sont dus l'interaction de la rsistance de la connexion et de la capacit parasite; cela n'a rien voir avec un retard d la propagation d'un signal sur une ligne tel qu'on le voit en haute frquence. Ces composants permettent une forte densit d'intgration. La petitesse des blocs logiques autorise une meilleure utilisation des ressources du composant (au prix d'un routage dlicat) Il devient alors possible d'implanter dans le circuit des fonctions aussi complexes qu'un micro-contrleur. Ces fonctions sont fournies sous forme de programme (description VHDL du composant) par le constructeur du composant et appeles "megafunction" ou "core". Le terme gnrique classiquement utilis pour les dsigner est "proprit intellectuelle" ou IP (Intelectual Property). Les FPGAs utilisent gnralement les technologies SRAM ou antifusible, selon les fabricants, Xilinx utilisant la technologie SRAM et ACTEL tout comme ALTERA la technologie antifusible de prfrence.
123
Description en VHDL
Synthse (traduction)
Le synthtiseur nous fournit une liste d'interconnexion de primitives. Celles-ci seront dfinies pour la technologie choisie.
Le placeur-routeur permet de raliser le placement routage de la liste d'interconnexion pour une technologie donne. Cet outil est fourni par le fabricant des circuits utiliss.
Programmation circuit
Le programmateur permet de programmer le circuit, FPGA ou CPLD, avec le fichier de programmation cr par l'outil prcdent. Le fabricant propose un programmateur, mais il existe des solutions gnrales.
La compilation va permettre dans un premier temps vrifier la cohrence de la description et la syntaxe du langage utilis, puis d'effectuer une simulation fonctionnelle dans un premier temps. Aprs avoir fait une simulation fonctionnelle approfondie (l'outil utilis pour la simulation est ModelSim), c'est dire avoir valid la conception et la description, le synthtiseur gnre la netlist du circuit logique dj fonction du circuit cible utilis. Le synthtiseur n'est pas forcment propritaire du fabricant de chip. Le "placeur-routeur" effectue ensuite le placement et routage des blocs logiques. Dans le cas des CPLDs et FPGAs, le "placeur-routeur" est en gnral propritaire du fabricant de ces circuits logiques. La dernire tape, pas toujours applique, pour autant que le design soit synchrone, est la vrification du timing ou le simulateur importe les temps de propagation calculs en fonction du placement routage. On utilise gnralement le mme testbench que pour la simulation fonctionnelle.
124
Electronique numrique
Vient enfin la programmation du circuit et la vrification du fonctionnement sur la carte. Si la simulation et la vrification on t faites correctement, aucune erreur de fonctionnement ne doit apparatre.
125
L'utilisation premire de ce sous-ensemble de test est la vrification des connexions d'une carte. Quand le mode de test est activ, via des commandes ad hoc sur les entres TMS et TRST, le fonctionnement normal du circuit est inhib. Les broches du circuit sont connectes des cellules d'entre-sortie ddies aux tests, chaque cellule est capable de piloter une broche en sortie et de capturer les donnes d'entre. Toutes les cellules de test sont connectes en un registre dcalage, tant l'intrieur d'un circuit qu'entre les circuits, constituant ainsi une chane de donnes, accessible en srie, qui parcourt l'ensemble des broches de tous les circuits compatibles JTAG d'une carte. Les oprations de test sont programmes via des commandes passes aux automates et des donnes entres en srie. Les rsultats des tests sont rcuprables par la dernire sortie srie. Les automates de test permettent d'autres vrifications que celles des connexions il est possible de les utiliser pour appliquer des vecteurs de test internes aux circuits, par exemple. C'est souvent de cette faon que sont effectus certains des tests la fabrication. L'ide tait sduisante d'utiliser la mme structure pour configurer les circuits programmables. C'est ce qui est en train de se faire : la plupart des fabricants proposent des solutions plus ou moins drives de JTAG pour viter l'utilisateur d'avoir recours un appareillage extrieur. Programmables in situ (ISP) Les circuits programmables in situ se dveloppent dans le monde des PLDs et CPLDs en technologie FLASH. Du simple 22V10, des composants de plus de 1 million de portes quivalentes, il est possible de programmer (et de modifier) l'ensemble d'une carte, sans dmontage, partir d'un port parallle de PC. Les technologies FLASH (CPLD) conservent leur configuration en l'absence d'alimentation. Reconfigurables dynamiquement, les FPGAs cellules SRAM offrent des possibilits multiples de chargement de la mmoire de configuration: Chargement automatique, chaque mise sous tension, des donnes stockes dans une mmoire PROM. Les donnes peuvent tre transmises en srie, en utilisant peu de broches du circuit, ou en parallle octet par octet, ce qui acclre la phase de configuration mais utilise, temporairement du moins, plus de broches du circuit. Plusieurs circuits d'une mme carte peuvent tre configurs en coopration, leurs automates de chargement assurent un passage en mode normal coordonn, ce qui est videmment souhaitable. Chargement, en srie ou en parallle, partir d'un processeur matre. Ce type de structure autorise la modification rapide des configurations en cours de fonctionnement. Cette possibilit est intressante, par exemple, en traitement de signal.
126
Electronique numrique
127
lule capable de traiter peu prs tout calcul dont la complexit est en relation avec le nombre de bascules qu'elle contient (une ou deux suivant les architectures). Trois repres chiffrs : un 22V10 contient 10 bascules, la famille des CPLDs va de 32 bascules quelques centaines et celle des FPGAs s'tend d'une centaine quelques dizaines de milliers. Dans les circuits architectures cellulaires, il est souvent trs rentable d'augmenter le nombre de bascules si cela permet d'allger les blocs combinatoires (pipe line, codages one hot, etc.). Nombre d'entres/sorties Le nombre de ports de communication entre l'intrieur et l'extrieur d'un circuit peut varier dans un rapport deux, pour la mme architecture interne, en fonction du botier choisi. Les chiffres vont de quelques dizaines quelques centaines de broches d'entre-sorties. Vitesse de fonctionnement Les comportements dynamiques des FPGAs et des PLDs simples prsentent des diffrences marquantes. Les premiers ont un comportement prvisible, indpendamment de la fonction programme; les limites des seconds dpendent de la fonction, du placement et du routage. Une difficult de jeunesse des FPGAs a t la non-reproductibilit des performances dynamiques en cas de modification, mme mineure, du contenu d'un circuit. Les logiciels d'optimisation et les progrs des architectures internes ont pratiquement supprim ce dfaut; mais il reste que seule une analyse et une simulation post-synthse, qui prend en compte les paramtres dynamiques des cellules, permet rellement de prvoir les limites de fonctionnement d'un circuit. Consommation Les premiers circuits programmables avaient plutt mauvaise rputation sur ce point. Tous les circuits actuels ont fait d'importants progrs en direction de consommations plus faibles. Exemple marquant la famille CPLD CoolRunner II de Xilinx.
128
Electronique numrique
Les prdiffuss (gate arrays) Ils contiennent une nbuleuse de transistors ou de portes interconnecter avec les problmes de routage et de dlais que cela comporte. Les prcactriss (standard cell) On utilise cette fois des bibliothques de cellules standards placer sur le semiconducteur Les "fulls customs" Ils sont entirement dfinissables par le client. Ces circuits conduisent la ralisation de tous les composants VLSI comme les microprocesseurs.
129
circuit MSI ( titre de comparaison) nombre de portes (ordre de grandeur) vitesse de fonctionnement (ordre de grandeur) technologie de connexion codage des fonctions 100 100 MHz
PLD
CPLD
FPGA
La notion de nombre de portes supposant implicitement que toutes sont utilises, on prfre souvent parler de portes quivalentes ou utilisables (usable gates) pour caractriser la densit d'un circuit. Il existe un rapport 2 4 entre ces deux termes. L'utilisation des proprits intellectuelles (IP) gratuite ou payante se gnralise de plus en plus, et permet facilement l'intgration de fonctions complexes comme les microprocesseurs au sein des circuits. Ces fonctions se prsentent comme un programme, optimis ou non pour un composant. De mme, l'intrieur des FPGAs on trouve maintenant des zones optimises pour implanter de la mmoire (20 kbits dans un FLEX10K par exemple) et des microprocesseurs trs performants comme des PowerPCs dans les Virtex Pro de Xilinx. L'utilisation de FPGA SRAM reconfigur en cours d'utilisation pour s'adapter l'volution de l'environnement devient galement courante.
130
Electronique numrique
PLD
Circuits logiques programmables (Programmabble Logic Device)
SPLD
Simple PLD ~ 0 500 gates PROM
PAL, MMI 1970
CPLD
Complex PLD ~ 500 100'000 gates EPROM (UV) EEPROM
ALTERA : MAX 7000 MAX 3000 ATMEL : ATF, ATV LATTICE : ispLSI 2000, 5000,
et 8000; ispMACH4A
Field Programmable Gate Array ~ 5000 250'000 gates SRAM, Anti-fuse EPROM
ACTEL : MX, SX, A/SX ALTERA : ACEX 1K, FLEX 10K, FLEX 6000 ATMEL : AT40K XILINX :
FPGA
System Programmable Gate Array ~ 100000 5'000000 gates SRAM, Anti-fuse FLASH-EPROM
ACTEL : ProASIC 500K ALTERA : APEX 20K APEX II Excalibur (ARM)
SPGA
EEPROM
GAL, LATTICE 1985 (structure standard) LATTICE, ATMEL VANTIS :
PHILIPS :
ATMEL FPSLIC (AVR) Spartan, XC3000, XC4000, XC5200, QUICLOGIC : ESP (PCI) XILINX : Virtex, Virtex II
QUICKLOGIC, ICT
131
132
Annexe 1
Bibliographie
Floyd Thomas-L, Villeneuve Martin - Systemes Numeriques; 9e dition. Reynald Goulet Ronald J.Tocci -Circuits numriques (thorie et applications) 2me dition. Dunod Mesnard Emmanuel - Du binaire au processeur; 2004, Ellipse Philippe Larcher -Introduction la synthse logique. Eyrolles Jacques Weber, Maurice Meaudre -Le langage VHDL (cours et exercices) 2me dition. Dunod Nol Richard -Electronique numrique et squentielle (pratique des langages de description de haut niveau). Dunod John F.Wakerly -Digital design (principles & practice) third edition updated. Prentice Hall Maurice Gaumain - Cours de systmes logiques; Fonctions standards combinatoires; Aspects techniques Etienne Messerli -Manuel VHDL EIVD Philippe Darche -Architecture des ordinateurs. Vuibert 133
Annexe 1:
Mdiagraphie
http://www.xilinx.com/ http://jeanlouis.salvat.free.fr/A7/coursWeb/ROM http://perso.wanadoo.fr/xcotton/electron/coursetdocs.htm http://artemmis.univ-mrs.fr/iufm-genelec-forum/VHDL/page_html/ 1_asic_fpga_cpld_w2000_html.htm
134
Annexe 2
Lexique
ABEL : langage de programmation des circuits de faible densit d'intgration. ASIC (Application Specific Integrated Circuit) : circuit non programmable configur lors de sa fabrication pour une application spcifique. CPLD (Complex Programmable Logic Device) : circuit intgrant plusieurs PLD sur une mme pastille. EEPROM ou E2PROM (Electrical Erasable Programmable Read Only Memory) : mmoire ROM programmable et effaable lectriquement. E2PAL (Electrical Erasable PAL) : voir GAL EPLD (Erasable PLD) : voir GAL. EPROM (Erasable PROM) : PROM effaable par UV. Flash EEPROM : EEPROM utilisant 2 transistors par point mmoire ; utilis pour les connexions dans les CPLD. FPGA (Field Programmable Logic Array) : rseau programmable haute densit d'intgration. FPLD (Fiel Programmable Logic Device) : terme gnrique pour les CPLD et FPGA. FPLS (Fiel Programmable Logic Sequencer) : ancien nom des PAL registre. GAL (Generic Array Logic) : PLD programmable et effaable lectriquement ISP (In Situ Programmable) : caractrise un circuit reprogrammable sur l'application. JEDEC : organisme de normalisation, donnant son nom aux fichiers de programmation des PLD. 135
Annexe 2:
LSI (Large Square Integration) : circuits intgrants quelques centaines quelques milliers de transistors. LUT (Lock Up Table) : nom donn aux cellules mmoire ralisant les fonctions combinatoires dans les CPLD et FPGA. MSI (Medium Square Integration) : circuits intgrants quelques centaines de transistors. MUX : abrviation pour multiplexeur PAL (Programmable Array Logic) : ancien nom des PLD. PLA (Programmable Logic Array) : rseau matrice ET et OU permettant la ralisation de fonctions combinatoires. PLD (Programmable Logic Device) : circuit logique programmable intgrant une matrice ET programmable, une matrice OU fixe et plusieurs cellules de sortie. PROM (Programmable Read Only Mmory) : mmoire ROM programmable. SPLD (Simple PLD) : par opposition aux FPLD, voir PLD. SRAM (Static Random Acess Memory) : technologie utilise pour les connexions dans les CPLD et FPGA. SSI (Small Square Integration) : circuits intgrant quelques portes. Verilog : langage de synthse des circuits numriques VHDL (Very high speed or scale integrated circuits Hardware Description Language) : langage de modlisation et de synthse des circuits numrique.
136