Reset synchrone vs asynchrone : timing, horloge et relâchement

Ce sont deux mécanismes qui mettent une bascule à une valeur initiale déterminée, mais le moment où le reset agit diffère. Le reset synchrone capture le signal de reset au front d'horloge, comme n'importe quelle autre donnée. Le reset asynchrone utilise directement la broche de reset de la bascule et agit immédiatement, indépendamment de l'horloge. En pratique, on utilise souvent une méthode où l'activation est asynchrone et immédiate, et seul le relâchement est synchronisé sur l'horloge.

CritèreReset synchroneReset asynchrone
Moment d'actionAu front d'horloge, lorsque le reset est actifDès que le reset devient actif, sans attendre l'horloge
Horloge nécessaire ?Oui. Si l'horloge est arrêtée, le reset est impossibleNon. Agit aussi avant le démarrage de l'horloge ou lorsqu'elle est arrêtée
Écriture en Verilogalways @(posedge clk) if (!rst_n) q <= 0; else q <= d;always @(posedge clk or negedge rst_n) if (!rst_n) q <= 0; else q <= d;
Réalisation du circuitUne logique de reset est placée devant l'entrée de donnéesUtilise une bascule dotée d'une broche de reset
Surface et chemin de donnéesDes portes s'ajoutent au chemin de données, ce qui peut augmenter d'autant le délai et la surfaceLa cellule est plus grande à cause de la broche de reset, mais aucune logique ne s'ajoute au chemin de données
Tenue aux glitchesBonne. Les glitches survenant hors de l'instant du front ne sont pas capturésFaible. Un glitch sur la ligne de reset peut provoquer un reset intempestif
Largeur d'impulsion du resetDoit rester actif au moins une période d'horlogeAgit même avec une impulsion courte
Analyse temporelleAnalysable comme une entrée de données ordinaire, en setup et en holdLe timing du relâchement (temps de recovery et de removal) se vérifie séparément
Précautions au relâchementSynchronisé sur l'horloge : peu de problèmes au sein d'un même domaine d'horlogeSi le relâchement est proche d'un front d'horloge, le cycle de relâchement peut différer d'une bascule à l'autre, ou une métastabilité peut survenir. Un circuit de synchronisation du reset aligne le relâchement sur l'horloge
Circuits adaptésCircuits dont l'horloge tourne en permanence, circuits dont le signal de reset est sujet au bruitCircuits à initialiser dès la mise sous tension, circuits dont l'horloge peut s'arrêter

Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.

Quand choisir l'un ou l'autre ?

Reset synchrone
Lorsque l'horloge tourne en permanence et que le signal de reset risque de porter des glitches. Lorsque l'on veut analyser le timing du reset comme celui d'un chemin de données ordinaire.
Reset asynchrone
Pour initialiser immédiatement, même avant le démarrage de l'horloge ou lorsqu'elle est arrêtée, par exemple dans les circuits dont les sorties doivent passer rapidement dans un état sûr.
Ensemble
La méthode à activation asynchrone et relâchement synchrone (circuit de synchronisation du reset) est largement utilisée. L'activation agit immédiatement, et le relâchement est aligné sur le front d'horloge par deux bascules.

Questions fréquentes

Pourquoi synchroniser sur l'horloge le relâchement d'un reset asynchrone ?

Parce que si le relâchement survient près d'un front d'horloge, les temps de recovery et de removal ne sont pas respectés : certaines bascules démarrent au cycle courant et d'autres au cycle suivant, ou une métastabilité survient. Comme cela peut faire démarrer une machine à états dans un état illégal, on aligne le relâchement sur l'horloge avec deux bascules avant de le distribuer.

Que se passe-t-il avec un reset synchrone si l'horloge est arrêtée ?

Même si le signal de reset est activé, les bascules ne sont pas initialisées. Pour les circuits qui doivent être dans un état sûr avant la stabilisation de l'horloge, par exemple juste après la mise sous tension, on utilise un reset asynchrone.

Toutes les bascules ont-elles besoin d'un reset ?

Non. Pour les registres toujours écrits avant d'être utilisés, comme ceux du chemin de données, on omet parfois le reset pour réduire la surface et le routage. On réinitialise ceux dont la valeur initiale influe sur le fonctionnement, comme les machines à états ou les signaux de contrôle.

Vérifier vos connaissances

Quelle est la différence entre réinitialisation synchrone et asynchrone ?

  1. ALa réinitialisation synchrone agit indépendamment de l'horloge, l'asynchrone seulement sur front d'horloge
  2. BLa réinitialisation synchrone n'agit que sur front d'horloge, l'asynchrone agit immédiatement indépendamment de l'horloge
  3. CLes deux ont exactement le même comportement, seul le nom diffère
Afficher la réponse et l'explication

Réponse : B. La réinitialisation synchrone n'agit que sur front d'horloge, l'asynchrone agit immédiatement indépendamment de l'horloge

La réinitialisation synchrone capture le signal de réinitialisation sur front d'horloge comme les autres entrées ; l'analyse temporelle est simple, mais la réinitialisation est impossible si l'horloge ne fonctionne pas. La réinitialisation asynchrone utilise directement la broche de réinitialisation de la bascule et agit immédiatement même sans horloge ; mais si sa levée survient près d'un front d'horloge, l'instant de levée risque de varier d'une bascule à l'autre.

Dans un circuit à réinitialisation asynchrone, pourquoi synchronise-t-on la levée de la réinitialisation (passage de 0 à 1) sur l'horloge par deux bascules avant de la distribuer ?

  1. APour retarder de deux cycles l'application de la réinitialisation par sécurité
  2. BPour doubler la vitesse du signal de réinitialisation
  3. CParce qu'une levée proche d'un front d'horloge peut décaler le cycle de levée d'une bascule à l'autre ou la rendre instable ; on aligne donc la levée sur l'horloge
Afficher la réponse et l'explication

Réponse : C. Parce qu'une levée proche d'un front d'horloge peut décaler le cycle de levée d'une bascule à l'autre ou la rendre instable ; on aligne donc la levée sur l'horloge

Si la levée d'une réinitialisation asynchrone survient juste avant ou après un front d'horloge, les contraintes temporelles de levée ne sont pas respectées, et une bascule peut démarrer au cycle courant et une autre au cycle suivant. Une machine d'états peut alors démarrer dans un état illégal. Le circuit de synchronisation de réinitialisation applique celle-ci immédiatement, et n'aligne sur l'horloge par deux bascules que sa levée avant de la distribuer.

En simulation, un registre sans réinitialisation vaut initialement X. Que se passe-t-il vraisemblablement dans la puce réelle ?

  1. AIl prend 0 ou 1 à la mise sous tension, sans que l'on sache lequel
  2. BIl reste bloqué à une tension intermédiaire entre 0 et 1, même dans la puce réelle
  3. CIl vaut toujours 0 dans la puce réelle
Afficher la réponse et l'explication

Réponse : A. Il prend 0 ou 1 à la mise sous tension, sans que l'on sache lequel

Une bascule réelle se stabilise à la mise sous tension dans l'état 0 ou 1, mais lequel dépend de la puce, de l'emplacement, de la température, etc., et n'est pas déterminé. Le X de la simulation exprime ce « on ne sait pas lequel ». Si cette valeur influe sur le fonctionnement du circuit, il faut la fixer par réinitialisation. Pour les registres toujours écrits avant usage, comme ceux du chemin de données, la réinitialisation est parfois omise.

  1. Quel est le type et le comportement de la réinitialisation dans la description ci-dessus ?
  2. Comment appelle-t-on l'état dans lequel, lorsqu'une bascule reçoit un signal asynchrone sans que les temps de setup ou de hold soient respectés, la sortie n'est temporairement ni 0 ni 1 ?

Questions d'entraînement sur HDL et vérification

Termes clés expliqués

Réinitialisation synchrone
Réinitialisation qui initialise les bascules en capturant le signal de reset sur un front d'horloge. L'analyse temporelle est facilitée, mais elle n'agit pas si l'horloge est arrêtée.
Réinitialisation asynchrone
Réinitialisation qui initialise immédiatement les bascules dès que le signal de reset devient actif, indépendamment de l'horloge. Le relâchement est en principe synchronisé sur l'horloge.
Synchroniseur de reset
Circuit qui applique immédiatement un reset asynchrone mais ne distribue sa libération à tout le circuit qu'après l'avoir synchronisée sur l'horloge par deux bascules.
Métastabilité
État où, en cas de violation des temps de setup ou de hold d'une bascule, la sortie reste un moment indéterminée entre 0 et 1. On y remédie en synchronisant les signaux asynchrones par deux bascules en série.
Glitch (impulsion parasite)
Impulsion indésirable et brève apparaissant en sortie, due par exemple aux différences de délai entre chemins. En logique combinatoire, on parle aussi d'aléa ; dans un CNA, elle survient lors des changements de code.

Comparatifs associés