Extrait de l'article Wikipedia Metastability in electronics :
La métastabilité en électronique est la capacité d'un système électronique numérique à persister pendant une durée illimitée dans un équilibre instable ou un état métastable. Dans des états métastables, le circuit peut ne pas être en mesure de s'installer dans un niveau logique stable «0» ou «1» dans le temps nécessaire au bon fonctionnement du circuit. Par conséquent, le circuit peut agir de manière imprévisible et entraîner une défaillance du système.
Cela semble être une bonne définition, mais qu'est-ce que cela signifie dans une application?
Du point de vue d'un concepteur d'électronique, quels sont quelques exemples de cas où cela pourrait se produire et où ce type de défaillance devrait-il être préoccupant?
Existe-t-il une définition plus pragmatique ou appliquée - quelque chose en termes plus spécifiques?
Réponses:
Réponse rapide: Si vous violez la configuration et maintenez le temps à l'entrée d'une bascule, la sortie sera imprévisible pendant un certain temps. Cette sortie imprévisible est appelée méta-stable (ou métastabilité).
Réponse longue: Lorsque la sortie est imprévisible, je veux dire qu'elle est imprévisible. Ce pourrait être élevé, ce pourrait être bas, ce pourrait être quelque part entre les deux, ou il pourrait osciller. Après cette période métastable, la sortie sera élevée ou faible, mais nous ne savons pas dans quelle direction cela ira jusqu'à ce qu'il se produise.
La durée pendant laquelle elle est imprévisible est cependant quelque peu prévisible. Il y a deux facteurs principaux qui déterminent la longueur de la période métastable: la vitesse de la bascule et la façon dont "près du bord" vous avez obtenu le timing.
La plupart des temps métastables sont assez courts, bien que la probabilité d'avoir un temps long soit non nulle. Théoriquement, vous pourriez avoir un temps métastable de l'ordre de quelques secondes, bien que les chances que cela se produise sont incroyablement rares. À mesure que la vitesse de la bascule augmente, le temps métastable moyen diminue - toutes choses étant égales par ailleurs.
Il y a un temps "imaginaire" dans la bascule, par rapport au bord de l'horloge, où vous êtes le plus susceptible aux problèmes de métastabilité. Exactement lorsque cela dépend de nombreux facteurs tels que la température, la tension, le processus, la phase de la lune, les sacrifices d'animaux et le parti politique auquel vous êtes affilié. Chaque fois que ce temps est, plus votre front d'entrée de données est proche de ce temps, plus le temps de métastabilité sera long.
La meilleure façon de gérer la métastabilité est de rendre toute votre logique synchrone et de ne violer aucun de vos temps de configuration et de maintien. Ceci est, bien sûr, difficile voire impossible pour des circuits de toute complexité. Donc, ce que nous faisons, c'est essayer de limiter les endroits où la métastabilité pourrait être un problème, puis traiter ces endroits.
La méthode normale serait de "doubler" les données. Cela signifie que deux bascules D en série avec la sortie du premier alimentant l'entrée du second. L'espoir est que si la première bascule devient métastable, la période métastable serait terminée avant qu'elle ne viole le temps de configuration / maintien de la seconde. En pratique, cela fonctionne assez bien. Dans les applications super critiques, il peut y avoir un "triple-clocking" en cours.
la source
Un état métastable est similaire à un équilibre instable. Un exemple courant d'équilibre instable est un pendule inversé . Si vous pouvez équilibrer le pendule en position verticale, c'est un état stable. Cependant, si quelque chose pousse le levier d'un côté ou de l'autre (courants d'air ou vibrations du sol, par exemple), le pendule ne se remettra pas en position verticale, il tombera. Contraste avec un pendule régulier qui, s'il est poussé d'un côté, finira par se redresser à la verticale.
Des équilibres stables sont utilisés dans les systèmes électriques pour créer des éléments de stockage. Les équibria instables ne font pas de bons éléments de stockage (car ils perdent facilement leur état), mais existent souvent comme état parasite.
Un élément de stockage numérique commun est une paire d'onduleurs à couplage croisé:
L'élément de stockage a deux états stables, l'un où le nœud à gauche est à la tension d'alimentation et le nœud à droite est à la masse, et l'autre dans la condition opposée. Il existe également un état instable, dans lequel chaque nœud est à une tension intermédiaire.
Pour mieux comprendre comment survient l'état instable, rappelez la fonction de transfert d'un onduleur. Le tracé de la fonction de transfert montre la tension de sortie de l'onduleur pour une tension d'entrée donnée.
L'onduleur est non linéaire; une façon simple d'obtenir une solution approximative d'un circuit non linéaire consiste à tracer les caractéristiques du circuit; les intersections des tracés sont les solutions, ou en d'autres termes, les points où les caractéristiques électriques de tous les composants du circuit sont satisfaites. Normalement, cela se fait avec des tracés iv comme dans cet exemple de diode sur Wikipedia . Cependant, pour les onduleurs, nous le ferons avec des tracés vv. Superposition d'une deuxième fonction de transfert de l'onduleur sur le tracé (avec les axes inversés, car le deuxième onduleur est à l'envers:
Il y a trois intersections des parcelles: une à (0, Vs), une à (Vs, 0) et une à (Vs / 2, Vs / 2). L'état (Vs / 2, Vs / 2) est métastable. Après une petite perturbation de l'un ou l'autre des nœuds, le circuit se stabilisera presque toujours dans l'un des états stables plutôt que de revenir à (Vs / 2, Vs / 2).
La façon d'écrire une valeur sur l'élément de stockage à double onduleur consiste à forcer l'un des nœuds à la valeur souhaitée à l'aide d'un pilote plus fort que les onduleurs. Une façon courante de le faire est d'utiliser un transistor de passage:
Si vous connectez la grille du transistor de passage à l'horloge, vous avez un verrou D (je laisse de côté la structure de sortie). Lorsque l'horloge est élevée, ce qui permet au transistor de passage, le verrou est transparent - l'entrée passe directement à la sortie. Lorsque l'horloge est basse, le verrou conserve la valeur précédente. La métastabilité survient au moment où les échantillons de verrouillage sont détectés. Si l'entrée est une tension haute ou basse stable lorsque le verrou échantillonne, cela fonctionnera correctement. Cependant, si l'entrée se situe autour du point Vs / 2 lorsque les échantillons de verrouillage, il est possible que le verrouillage se retrouve dans l'état métastable (Vs / 2, Vs / 2). Une fois qu'il est dans l'état métastable, il peut y rester indéfiniment (en supposant que le verrou n'est plus synchronisé), mais comme il s'agit d'un équilibre instable, quelque chose se produit généralement assez rapidement pour le faire sortir de l'état métastable.
Quand s'inquiéter de la métastabilité
Si vos éléments de stockage deviennent métastables, vous perdez au moins une partie du budget de synchronisation pour la logique en aval. La logique ne peut pas effectuer l'évaluation souhaitée tant que l'état métastable n'est pas résolu. Dans le pire des cas, l'état métastable persiste ou se propage via la logique, et les éléments de stockage en aval deviennent également métastables, ou plusieurs éléments de stockage associés capturent des valeurs incohérentes.
Une logique synchrone correctement conçue et fonctionnelle n'a pas de problèmes de métastabilité. La période d'horloge est plus longue que le temps d'évaluation pour la logique, toutes les entrées de bascule sont stables au bord d'horloge suivant (exigence de configuration satisfaite), et elles chargent toutes une valeur valide.
Certaines des situations courantes où la métastabilité est un problème sont les suivantes:
la source
Un signal métastable est un signal qui peut arbitrairement sembler être haut ou bas dans n'importe quel modèle arbitraire pendant une durée arbitraire. Si le signal alimente plusieurs portes directement ou indirectement, il est possible que certaines de ces portes le «voient» haut tandis que d'autres le voient bas. Trucs méchants.
Pour les systèmes avec une seule horloge, les signaux métastables peuvent souvent être traités en passant par deux verrous. Un problème plus délicat survient lors du déclenchement des horloges. Il existe de nombreux circuits (en particulier à l'aide de verrous RS) qui fonctionneraient à merveille si la métastabilité n'était pas possible, mais qui peuvent, si la métastabilité se produit, finir par générer des impulsions d'horloge runt (qui à leur tour peuvent provoquer une métastabilité en aval).
Par ailleurs, un autre point important à faire concernant la métastabilité: le temps de propagation d'un verrou indique quand, si les temps d'échantillonnage et de maintien sont respectés , la sortie sera stable à sa nouvelle valeur. Si les temps de configuration et de maintien ne sont pas respectés, rien ne garantit si ou quand la sortie commutera ou non, jusqu'à ce que le verrou reçoive un événement de synchronisation valide. Même si la sortie «semble» passer proprement, il n'y a aucune garantie qu'elle ne reviendra pas spontanément.
la source
Le cas classique est si vous violez les temps de configuration / maintien pour un verrou synchrone, et c'est un problème dont vous devez être conscient lors de la conception de FPGA (je suis sûr que Xilinx et Altera auront des annexes à ce sujet). Si un signal peut arriver à n'importe quel moment aléatoire, vous ne pouvez jamais être sûr que lorsque vous le synchronisez, il ne change pas dans les spécifications de la fenêtre de temps de configuration / maintien. Ce qui peut arriver, c'est qu'au lieu que la sortie de verrouillage augmente ou diminue à l'heure spécifiée après le front d'horloge, elle peut trembler pendant un certain temps avant de se stabiliser. La façon normale d'éviter cela est d'utiliser un verrou à 2 étages, avec la même horloge ou une horloge retardée ou déphasée en fonction de l'équilibre entre vos besoins de latence et la probabilité de métastabilité. Cela permet au premier temps de verrouillage de se stabiliser avant que le second verrou ne verrouille un état stable. Incidemment, c'est quelque chose que les microcontrôleurs doivent gérer en interne, car les signaux d'E / S externes sont généralement asynchrones à l'horloge du processeur, de sorte que les ports d'E / S ont souvent des dispositions de verrouillage doubles pour éviter les problèmes, et le logiciel n'a pas à s'en soucier. . Un rappel vague de la lecture il y a de nombreuses années d'un problème avec le 6502, où une lecture de données de bus qui a changé en dehors de la spécification de temps de configuration / maintien pourrait entraîner une branche vers une adresse qui n'était ni la cible de la branche ni l'instruction suivante, comme certains internes l'état est devenu métastable. Cette vidéo montre quelques exemples: Un rappel vague de la lecture il y a de nombreuses années d'un problème avec le 6502, où une lecture de données de bus qui a changé en dehors de la spécification de temps de configuration / maintien pourrait entraîner une branche vers une adresse qui n'était ni la cible de la branche ni l'instruction suivante, comme certains internes l'état est devenu métastable. Cette vidéo montre quelques exemples: Un rappel vague de la lecture il y a de nombreuses années d'un problème avec le 6502, où une lecture de données de bus qui a changé en dehors de la spécification de temps de configuration / maintien pourrait entraîner une branche vers une adresse qui n'était ni la cible de la branche ni l'instruction suivante, comme certains internes l'état est devenu métastable. Cette vidéo montre quelques exemples:http://www.youtube.com/watch?v=tKHCwjWMMyg
Une analogie est que si vous lancez une balle à quelqu'un - la plupart du temps, elle l'attrape ou la laisse tomber / manque, donc après un certain temps après le lancer, il la tiendra ou non. Mais de temps en temps, ils tâtonnent pendant un certain temps avant de l'attraper ou de le laisser tomber, de sorte que leur état ne tient ni ne tombe - c'est l'état métastable!
la source