Apprendre › Chapitre 12
Chronogrammes, glitchs et aléas statiques
8 min de lecture · Équipe bitGateLab
Sur le papier, une porte répond instantanément ; en réalité, chaque porte met quelques nanosecondes. Cette différence n'a presque jamais d'importance pour la table de vérité, mais elle en a pour le chronogramme : deux chemins de retards différents peuvent produire de fausses impulsions, appelées glitchs, qui font avancer un compteur ou déclenchent un verrou alors qu'ils ne le devraient pas. Vous apprendrez ici à lire un chronogramme, à calculer des retards, puis à détecter et à éliminer les aléas statiques avec le tableau de Karnaugh.
Comment lire un chronogramme
Un chronogramme représente chaque signal par une ligne qui monte (1) ou descend (0) le long d'un axe horizontal de temps commun. Une ligne verticale imaginaire tracée à un instant quelconque vous donne la valeur de tous les signaux. Les fronts des entrées sont les causes ; l'écart entre un front d'entrée et le changement qu'il provoque en sortie est le retard. Dans les circuits à horloge, lisez les valeurs juste avant chaque front actif, c'est-à-dire au moment où les bascules échantillonnent.
Temps de propagation et chemin critique
Le temps de propagation est la durée qui sépare un changement à l'entrée du changement qui en résulte à la sortie, mesurée entre les points à 50 % de chaque transition. On distingue deux valeurs :
- tPLH : retard lorsque la sortie passe de l'état bas à l'état haut.
- tPHL : retard lorsque la sortie passe de l'état haut à l'état bas.
Dans la famille 74HC alimentée en 5 V, les retards d'une porte simple sont de l'ordre de 10 ns ; ils augmentent avec la charge capacitive et lorsque la tension d'alimentation diminue.
Le retard d'un circuit est celui du chemin le plus lent entre une entrée quelconque et la sortie, appelé chemin critique. On le calcule en additionnant les retards des portes de chaque chemin et en retenant le plus grand.
Exemple : F = A·B + A·C avec tNOT = 5 ns, tAND = 10 ns et tOR = 10 ns.
- Chemin de B ou de C : AND + OR = 20 ns.
- Chemin de A par la AND du haut : AND + OR = 20 ns.
- Chemin de A par l'inverseur : NOT + AND + OR = 25 ns.
Le chemin critique est celui de A à travers l'inverseur, avec 25 ns. Aucun changement d'entrée ne met plus de temps que cela à stabiliser F.
Glitchs et aléas statiques
Il y a un aléa statique à 1 lorsque la sortie devrait rester à 1 pendant un changement d'entrée, mais peut tomber brièvement à 0. Un aléa statique à 0 est le cas inverse : la sortie devrait rester à 0 et présente un pic bref à 1. Tous deux apparaissent lorsqu'une variable et son complément atteignent la sortie par des chemins de retards différents.
Reprenez le circuit de l'exemple précédent avec B = C = 1. Logiquement, F = A + A = 1 en permanence. Mais lorsque A descend de 1 à 0, le terme A·B s'éteint avant que A·C ne s'allume, parce que A doit d'abord traverser l'inverseur.
Chronologie du glitch (B = C = 1, A descend à t = 0) :
- t = 5 ns : l'inverseur fait monter A.
- t = 10 ns : la AND de A·B fait descendre sa sortie (elle a répondu au changement de A à t = 0).
- t = 15 ns : la AND de A·C fait monter sa sortie (elle a répondu au changement de A à t = 5).
- Entre 10 et 15 ns, les deux entrées de la OR valent 0. La OR répond 10 ns plus tard : F vaut 0 de t = 20 à t = 25 ns.
La largeur du glitch est la différence de retard entre les deux chemins : 5 ns, celui de l'inverseur. Si A monte, A·B s'allume à t = 10 et A·C s'éteint à t = 15 ; les deux valent 1 pendant cet intervalle et il n'y a pas de glitch.
Il existe aussi des aléas dynamiques : la sortie devrait changer une seule fois et elle change trois fois ou plus (par exemple 1 → 0 → 1 → 0). Ils apparaissent dans la logique à plusieurs niveaux, lorsque la même variable emprunte trois chemins ou plus de retards différents.
Détecter et éliminer les aléas avec Karnaugh
Dans le tableau de Karnaugh d'une somme de produits, un aléa statique à 1 apparaît lorsque deux cases à 1 sont adjacentes mais couvertes par des groupes différents, sans qu'aucun groupe ne les couvre toutes les deux. Passer d'une case à l'autre revient à changer une seule variable, et pendant ce changement le circuit « saute » d'un terme à l'autre.
La solution consiste à ajouter le terme de consensus : un groupe supplémentaire qui couvre les deux cases. Il est redondant du point de vue logique (il ne modifie pas la table de vérité), mais il maintient la sortie à 1 pendant la transition.
Exemple : F = A·B + A·C.
- A·B couvre les cases ABC = 110 et 111. A·C couvre 001 et 011.
- Les cases 011 et 111 sont adjacentes (seule A change) et se trouvent dans des groupes différents : c'est l'aléa que nous avons vu, avec B = C = 1.
- Le groupe qui couvre les deux est B·C, le consensus de A·B et A·C : on retire la variable qui apparaît directe dans un terme et complémentée dans l'autre, et l'on multiplie ce qui reste.
- Circuit sans aléa : F = A·B + A·C + B·C. Avec B = C = 1, le terme B·C vaut 1 en permanence et la OR ne peut plus descendre.
Pour un produit de sommes, le raisonnement est dual : on cherche des zéros adjacents situés dans des groupes différents et l'on ajoute la somme de consensus pour éliminer l'aléa statique à 0. Par exemple, F = (A + B)·(A + C) présente un aléa lorsque B = C = 0, et on le corrige en ajoutant le facteur (B + C).
Erreurs fréquentes
- Penser qu'un circuit dont la table de vérité est correcte ne peut pas dysfonctionner : la table ne dit rien du comportement pendant les transitions.
- Supprimer le terme de consensus « parce qu'il est superflu » en simplifiant, dans un circuit qui attaque une horloge ou un reset.
- Additionner les retards de toutes les portes du circuit au lieu de ceux du seul chemin le plus lent.
- Croire que le consensus élimine les glitchs lorsque deux entrées changent en même temps : il ne couvre que les changements d'une seule variable.
Essayez dans le simulateur
Sur le chronogramme, vous pouvez voir le pic et constater qu'il disparaît lorsque l'on ajoute le consensus.
- Placez un inverseur, deux AND et une OR, et réalisez F = A·B + A·C.
- Fixez B = 1 et C = 1, et reliez A à une entrée que vous pouvez changer ou à un signal d'horloge lent.
- Ouvrez le chronogramme et faites passer A de 1 à 0 plusieurs fois ; observez F au moment de la transition et voyez s'il apparaît une impulsion brève ou un avertissement de glitch.
- Ajoutez une troisième AND pour B·C et reliez-la à la OR.
- Refaites le changement de A et observez que F reste à 1.
Exercices
- Trouvez l'aléa statique de F = A·C + B·C et écrivez la version sans aléa.
Réponse
A·C couvre 100 et 110 ; B·C couvre 011 et 111. Les cases 110 et 111 sont adjacentes (C change) et se trouvent dans des groupes différents, avec A = B = 1. Consensus : A·B. F = A·C + B·C + A·B.
- Dans le circuit de l'exercice 1, avec tNOT = 4 ns, tAND = 8 ns et tOR = 8 ns, A = B = 1, sur quelle transition de C le glitch apparaît-il, à quel moment et combien de temps dure-t-il ?
Réponse
Lorsque C descend à t = 0 : B·C descend à t = 8, C monte à t = 4 et A·C monte à t = 12. Entre 8 et 12 ns, la OR voit deux zéros ; F vaut donc 0 de t = 16 à t = 20 ns : 4 ns. Lorsque C monte, il n'y a pas de glitch.
- Quel est le chemin critique de F = A·C + B·C avec les retards de l'exercice 2 ?
Réponse
De C à travers l'inverseur : 4 + 8 + 8 = 20 ns.
- Pour F = (A + B)·(A + C), quelle valeur la sortie devrait-elle avoir lorsque B = C = 0, et quel glitch peut apparaître ?
Réponse
Avec B = C = 0, F = A·A = 0. Lorsque A change, un pic bref à 1 peut apparaître (aléa statique à 0). On l'élimine en ajoutant le facteur (B + C).