bitGateLab Digital · Apprendre
Français
Ouvrir le simulateur

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 :

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.

A Ā A·B Ā·C F 0 5 10 15 20 25 t (ns)
Avec B = C = 1, A descend à t = 0. Entre 10 et 15 ns, les deux entrées de la OR valent 0, et F tombe de 20 à 25 ns : un glitch de 5 ns.

Chronologie du glitch (B = C = 1, A descend à t = 0) :

  1. t = 5 ns : l'inverseur fait monter A.
  2. t = 10 ns : la AND de A·B fait descendre sa sortie (elle a répondu au changement de A à t = 0).
  3. t = 15 ns : la AND de A·C fait monter sa sortie (elle a répondu au changement de A à t = 5).
  4. 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.

  1. A·B couvre les cases ABC = 110 et 111. A·C couvre 001 et 011.
  2. 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.
  3. 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.
  4. 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).

L'ajout de termes de consensus élimine les aléas statiques dus au changement d'une seule variable. En conception synchrone, l'autre parade consiste à ne pas regarder la logique combinatoire pendant qu'elle se stabilise : les bascules n'échantillonnent que sur le front d'horloge, lorsque les glitchs sont déjà terminés. Les glitchs sont en revanche dangereux sur les horloges, les resets asynchrones et les validations de verrou.

Erreurs fréquentes

Essayez dans le simulateur

Sur le chronogramme, vous pouvez voir le pic et constater qu'il disparaît lorsque l'on ajoute le consensus.

  1. Placez un inverseur, deux AND et une OR, et réalisez F = A·B + A·C.
  2. Fixez B = 1 et C = 1, et reliez A à une entrée que vous pouvez changer ou à un signal d'horloge lent.
  3. 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.
  4. Ajoutez une troisième AND pour B·C et reliez-la à la OR.
  5. Refaites le changement de A et observez que F reste à 1.

Exercices

  1. 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.

  2. 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.

  3. 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.

  4. 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).