CIRCUITS NUMERIQUES POUR INTERFACES MICROPROCESSEUR RESUME Concevoir une interface matérielle pour un microprocesseur ou une application spécialisée fait appel à un large éventail de compétences. A la maîtrise des méthodes traditionnelles des systèmes logiques doit s’ajouter la connaissance d’un vaste choix de solutions et d’une technologie en constante évolution. Les circuits étudiés dans ce livre ne sont pas uniquement numériques, mais l’optique est toujours d’interconnecter des blocs fonctionnels n’ayant que des interconnexions logiques les uns avec les autres. Le terme d’interface a ici essentiellement le sens d’interface entre un microprocesseur, ses circuits supports et le monde extérieur. Cet ouvrage traite à la fois les problèmes de technologie, de connectif, de choix dans des catalogues volumineux, les méthodes de représentation et de synthèse ainsi que des solutions des astucieuses. Cet ouvrage s’adresse aux étudiants de second et troisièmes cycles des universités et plus largement à tous ceux qui désirent connaître l’état de l’art du développement des interfaces numériques. TABLE DES MATIERES Avant-propos XII 1 1 1 1 3 4 5 5 6 6 6 8 8 10 11 12 13 13 14 14 14 15 15 15 16 17 17 17 18 19 19 Technologies des circuits intégrés 1.1 Eléments électroniques 1.1.1 Composants passifs 1.1.2 Transistors bipolaires 1.1.3 Transistors MOS 1.1.4 Logique à diode 1.1.5 Caractéristiques statiques et dynamiques 1.1.6 Dispersion des caractéristiques 1.2 Familles logiques principales 1.2.1 Famille "74" 1.2.2 Evolution 1.2.3 Circuits TTL 1.2.4 Emetteur et collecteur ouvert 1.2.5 Sorties à trois états 1.2.6 Circuits CMOS 1.2.7 Sorties CMOS ouvertes et à trois états 1.2.8 Compatibilité CMOS ‑ TTL 1.3 Autres technologies 1.3.1 Circuits NMOS 1.3.2 Logique dynamique 1.3.3 Circuits ECL 1.3.4Circuits GaAs 1.3.5 Logique fluide et optique 1.3.6 Interfaces spéciales 1.4 Mise en œuvre 1.4.1 Conditions de bon fonctionnement 1.4.2 Effet thyristor 1.4.3 Problèmes électrostatiques 1.5 Réalisations physiques 1.5.1 Puces 2 3 1.5.1 Puces 1.5.2 Boîtiers 1.5.3 Circuits imprimés Systèmes combinatoires 2.1 Signaux et fonctions logiques 2.1.1 Signaux logiques 2.1.2 Logique positive et négative 2.1.3 Décomposition d'un système logique 2.1.4 Portes logiques 2.1.5 Equivalences 2.1.6 Importance des règles de dessin 2.1.7 Règle des ronds d'inversion 2.1.8 Temps de montée et de propagation 2.2 Réalisation d'un système combinatoire 2.2.1 Expression logique 2.2.2 Réalisation avec des transistors 2.2.3 Librairie VLSI standard 2.2.4 Réseaux pré diffusés 2.2.5 Famille "74" 2.2.6 Logique programmable 2.2.7 PROM 2.3 Transformation des fonctions logiques 2.3.1 Tables de Karnaugh 2.3.2 Exemple 2.4 Circuits combinatoires standards 2.4.1 Fonctions disponibles 2.5 Portes simples 2.5.1 Catalogue des portes 2.5.2 Exercice 2.5.3 Portes spéciales 2.6 Portes à entrées spéciales 2.6.1 Entrées à faible charge 2.6.2 Entrées à seuil d'hystérèse 2.6.3 Portes bascules de Schmitt disponibles 2.7 Portes à sorties spéciales 2.7.1 Sorties musclées 2.7.2 Sorties à un état 2.7.3 Application des portes en collecteur ouvert 2.7.4 Passeurs en collecteur ouvert 2.7.5 Sorties à trois états 2.7.6 Terminaison des bus 2.7.7 Passeurs et muscleurs à trois états 2.7.8 Passeurs de commande de lignes 2.7.9 Passeurs analogiques 2.8 Aiguillages et codeurs 2.8.1 Multiplexeurs 2.8.2 Décodeurs 2.8.3 Décodeurs pour affichages 2.8.4 Encodeurs prioritaires 2.8.5 Générateurs de parité 2.8.6 Détecteurs et correcteurs d'erreurs 2.9 Comparateurs et circuits arithmétiques 2.9.1 Comparateur parallèle 2.9.2 Comparaison série 2.9.3 Additionneurs 2.9.4 Unités arithmétiques et logiques 2.9.5 Report anticipé 2.9.6 Multiplieurs 2.9.7 Décaleur en barillet 2.9.8 Autres circuits Systèmes séquentiels 3.1 3.2 19 19 22 23 23 23 24 25 25 26 27 28 30 31 31 31 33 33 34 35 36 37 37 38 39 41 41 42 43 43 44 44 44 44 45 45 45 46 46 46 47 48 49 50 50 50 51 52 53 54 54 55 55 56 56 56 57 57 58 58 59 Systèmes séquentiels asynchrones 3.1.1 Oscillateurs 59 59 3.1.2 Bascules bistables SR 3.1.3 Arbitre élémentaire 3.1.4 Etats métastables 3.1.5 Verrou 3.1.6 Verrou adressable 3.1.7 Conception des systèmes asynchrones 3.1.8 Aléa statique 3.1.9 Exemple d'application Bascules synchrones 3.2.1 Horloge 3.2.2 Remarque 59 61 61 62 63 64 64 65 66 66 66 4 3.2.2 Remarque 3.2.3 Horloge multiphases 3.2.4 Bascule D 3.2.5 Convention pour les sorties 3.2.6 Condition de bon fonctionnement 3.2.7 Probabilité de métastabilité 3.2.8 Double synchronisation 3.2.9 Bascules D standards 3.2.10 Bascules JK 3.2.11 Bascules JK standards 3.2.12 Bascules SR dynamiques 3.2.13 Bascules T 3.2.14 Bascules T standards 3.2.15 Universalité des bascules D et JK 3.2.16 Attrapeur de 1 3.2.17 Double bascule 3.2.18 Repérage d'une opération 3.2.19 Préleveur de période 3.3 Synthèse des systèmes séquentiels 3.3.1 Synthèse d'un système quasi synchrone 3.3.2 Synthèse d'un système synchrone 3.3.3 Principe de la méthode 3.3.4 Conclusion 3.4 Circuits séquentiels complexes 3.4.1 Fonctions séquentielles standards 3.4.2 Inhibition de l'horloge 3.4.3 Remise à zéro asynchrone et synchrone 3.4.4 Chargement asynchrone et synchrone 3.5 Registres 3.5.1 Registres parallèles 3.5.2 Registre à relecture 3.5.3 Registre série-parallèle 3.5.4 Registres dits universels 3.5.5 Analyse d'un cas 3.6 Compteurs 3.6.1 Compteurs asynchrones 3.6.2 Compteurs par 2n 3.6.3 Compteurs synchrones 3.6.4 Compteurs programmables 3.6.5 Compteurs à registre 3.6.6 Compteurs pseudo aléatoires 3.6.7 Multiplieurs programmables 3.7 Retards et impulsions 3.7.1 Lignes à retard 3.7.2 Réseau RC 3.7.3 Retards quantifiés 3.7.4 Oscillateurs analogiques 3.7.5 Oscillateurs à quartz 3.7.6 Mono stables 3.7.7 Remise à zéro à l'enclenchement 3.8 Symboles logiques normalisés 3.8.1 Normes principales 3.8.2 Norme IEC‑617 / AIEE‑91 3.8.3 Conventions de dessin Circuits mémoire 4.1 4.2 5 Classification Mémoires mortes 4.2.1 Principe 4.2.2 Types de ROMs 4.2.3 EPROMs standards 4.2.4 PROMs standards 4.2.5 E 2 PROM 4.3 Mémoires vives 4.3.1 RAM statique 4.3.2 Mémoires série 4.3.3 Mémoires à double accès 4.3.4 Mémoires dynamiques 4.3.5 Mémoires vidéo 4.3.6 Mémoires SILO 4.3.7 Mémoires pile 4.3.8 Mémoires associatives Logique programmable 5.1 Logique régulière 5.1.1 Un exemple simple 66 67 68 68 69 69 71 71 71 73 73 73 74 74 75 75 76 77 78 78 78 79 80 80 80 81 83 83 84 84 85 85 86 86 88 88 88 89 90 91 91 92 93 94 94 94 95 96 97 98 99 99 101 102 105 105 106 106 107 108 110 110 111 111 113 113 113 115 116 116 116 117 117 117 6 7 5.1.1 Un exemple simple 5.1.2 Solution basée sur un décodeur 5.1.3 Solution complètement programmable 5.1.4 Solution partiellement programmable 5.1.5 Logique à PROMs 5.1.6 Logique à PLA 5.2 Logique à PLDs 5.2.1 PLD simples 5.2.2 Simplification des équations logiques pour PLDs 5.2.3 Corrections dans une PLD existante 5.2.4 Exemple: décodeur pour 68 008 5.2.5 Logique séquentielle asynchrone 5.2.6 Exemple: bascule de démarrage pour 68008 5.2.7 PLDs à sorties à trois états 5.2.8 Exemple d'application: remise à zéro du 68 000 5.3 PLDs à registre 5.3.1 Structure de base 5.3.2 Compteur binaire 5.3.3 Compteur Gray et spéciaux 5.3.4 Horloges indépendantes 5.3.5 Astuces 5.3.6 Registres enterrés 5.3.7 Macro cellules, EPLDs et GALs 5.3.8 PLDs existantes 5.3.9 PLDs futures Interfaces d'entrée-sortie 6.1 Entrées logiques 6.1.1 Filtrage et isolation galvanique 6.1.2 Filtrage numérique 6.1.3 Lecture de capteur en tout ou rien 6.1.4 Suppression de rebonds de contact 6.1.5 Entrées groupées 6.1.6 Codeur angulaire 6.1.7 Codeur incrémental 6.1.8 Codeur angulaire analogique 6.2 Entrées analogiques 6.2.1 Amplificateur opérationnel 6.2.2 Modèle idéal 6.2.3 Montages de base 6.2.4 Comparateur 6.2.5 Amplificateur d'instrumentation 6.2.6 Convertisseur A/N 6.2.7 Interface série 6.2.8 Capteurs analogiques 6.2.9 Conversion tension-fréquence 6.3 Interfaces de sortie 6.3.1 Sorties de microcontrôleur 6.3.2 Convertisseurs N/A 6.3.3 Commande d'affichages 117 118 119 119 120 121 121 121 123 124 125 126 126 127 128 130 130 131 132 133 134 135 135 136 137 139 139 139 140 141 142 143 144 145 146 146 146 148 148 149 149 150 151 151 152 152 152 153 153 6.3.4 Amplificateurs de puissance 6.3.5 Relais 6.3.6 Commande de moteurs 6.3.7 Commande proportionnelle 6.3.8 Moteurs sans collecteur 6.3.9 Moteur pas‑à‑pas 6.3.10 Alimentation stabilisée Test des circuits 7.1 Types de test 7.1.1 Mise au point 7.1.2 Production 7.1.3 Maintenance 7.2 Aides au test 7.2.1 Indicateur logique 7.2.2 Oscilloscope 7.2.3 Analyseur logique 7.2.4 Générateur de fonction 7.2.5 Analyseur de signature 7.2.6 Testeur industriel 7.3 Théorie du test 7.3.1 Pannes et fiabilité 7.3.2 Testabilité 7.3.3 Couverture d'un test 7.3.4 Méthodes de test 7.4 Conception en vue du test 7.4.1 Simulation 154 155 155 157 158 158 159 161 161 161 161 162 162 162 162 162 163 163 163 164 164 165 165 165 166 166 8 7.4.1 Simulation 7.4.2 Observabilité 7.4.3 Commandabilité 7.4.4 Etat initial 7.4.5 Points de test 7.4.6 Multiplexage 7.4.7 Chemin de balayage 7.4.8 Norme JTAG 7.4.9 Analyse par signature 7.5 Mise au point des prototypes 7.5.1 Test de circuits intégrés 7.5.2 Test de cartes imprimées 7.5.3 Techniques particulières 7.5.4 Tests mémoire 7.5.5 Parasites et perturbations 7.5.6 Dépannage 7.5.7 Conclusion Exemples de conception 8.1 Séquenceur simple 8.1.1 Un générateur de trains d'impulsions 8.1.2 Solution avec des décodeurs 8.1.3 Elimination des aléas 8.1.4 Solution optimisée 8.1.5 Solution générale 8.2 Diviseur de fréquence 8.2.1 Multiplieur programmable 8.2.2 Autres solutions 8.2.3 Implémentation VLSI 8.3 Séquenceur pour remise à zéro répétitive 8.3.1 Cahier des charges 8.3.2 Solutions possibles 8.3.3 Solutions simplifiées 8.3.4 Solution complète 8.3.5 Optimisation 8.4 Double tampon 8.4.1 Donnée et options 8.4.2 Cahier des charges 8.4.3 Première solution asynchrone 8.4.4 Seconde solution asynchrone 8.4.5 Solution purement asynchrone 8.4.6 Synthèse synchrone 8.4.7 Synthèse détaillée 8.4.8 Solution quasi synchrone 8.5 Multiplexage dans une interface microprocesseur 8.5.1 Registres et verrous 8.5.2 Multiplexeur et démultiplexeur 8.5.3 Démultiplexage des sorties 8.5.4 Démultiplexage par registre à décalage 8.5.5 Démultiplexage par décodeur ou PLD 8.5.6 Démultiplexage par verrou adressable 8.5.7 Démultiplexage par registre parallèle 8.5.8 Multiplexage des entrées 8.5.9 Multiplexage avec des aiguillages 8.5.10 Multiplexage avec des registres 8.5.11 Multiplexage par passeur à trois entrées 8.5.12 Multiplexage matriciel 8.5.13 Multiplexage d'entrées-sorties 8.5.14 Clavier balayé 8.5.15 Conclusion 166 167 167 168 168 168 168 169 172 172 172 173 174 175 176 177 177 179 179 179 180 180 182 183 184 184 185 186 188 188 189 190 191 192 196 196 197 198 200 201 202 203 205 206 206 207 208 208 209 210 210 212 213 213 214 214 215 215 216 Références bibliographiques 217 Annexe: Catalogue de circuits intégrés Table des matières de l'annexe Index des circuits de l'annexe 219 221 285 Index français 289 Index anglais TOP 295