Élément de base des circuits séquentiels qui mémorise un bit d'information. La bascule D capture son entrée sur un front d'horloge.
Nom japonais: フリップフロップ
« Bascule (flip-flop) » apparaît dans 44 questions d'entraînement réparties sur 13 thèmes, dont Analyse temporelle et CDC, HDL et vérification, Circuits logiques.
Une bascule D échantillonne son entrée D sur le front d'horloge actif et maintient cette valeur sur Q jusqu'au front suivant ; les changements entre deux fronts sont ignorés. En interne, elle est généralement constituée de deux verrous (latches) cadencés en opposition de phase selon une architecture maître-esclave. Un verrou, au contraire, est sensible au niveau : tant qu'il est activé, il est transparent et transmet directement l'entrée vers la sortie. Le déclenchement sur front rend l'analyse temporelle bien plus simple, c'est pourquoi les bascules constituent les registres des CPU, les frontières des étages de pipeline, les machines à états et les compteurs des conceptions synchrones.
Temps d'établissement, temps de maintien et fréquence maximale
Les données doivent être stables pendant un temps d'établissement (setup) avant le front et un temps de maintien (hold) après celui-ci. Sur un chemin registre à registre, la période d'horloge doit couvrir le délai horloge-sortie, le délai de la logique et le temps d'établissement : avec 0,15 + 2,2 + 0,15 ns, la période minimale est de 2,5 ns, soit 400 MHz. Les violations de setup peuvent être corrigées en ralentissant l'horloge, mais pas les violations de hold, car cette vérification compare des données lancées et capturées sur le même front ; les concepteurs ajoutent plutôt des buffers de retard. Un décalage d'horloge (skew) qui retarde l'horloge de capture favorise le setup mais pénalise le hold.
Métastabilité et synchroniseurs
Si les données changent dans la fenêtre setup-hold, comme c'est le cas pour des signaux issus d'une horloge non liée, la bascule peut devenir métastable, sa sortie restant entre 0 et 1. La probabilité qu'elle ne soit pas résolue décroît exponentiellement avec le temps mais n'atteint jamais zéro. Un synchroniseur de deux bascules ou plus en série laisse au premier étage une période d'horloge complète pour se stabiliser, ce qui repousse le temps moyen entre défaillances à des milliers d'années ou plus. Les valeurs sur plusieurs bits franchissent les domaines d'horloge via des FIFO asynchrones ou des poignées de main (handshakes), et les outils de vérification CDC (clock domain crossing) contrôlent la présence de ces structures.
Autres types et usages
Une bascule JK se met à 1 avec J = 1, se remet à 0 avec K = 1, conserve son état avec les deux à 0 et bascule avec les deux à 1, ce qui donne un sens à l'entrée interdite d'une bascule SR. En reliant les entrées au niveau haut, on obtient une bascule T qui change d'état à chaque front, divisant la fréquence d'horloge par deux avec un rapport cyclique de 50 pour cent ; des chaînes de telles bascules forment des compteurs asynchrones et des diviseurs. La logique moderne utilise presque exclusivement des bascules D. Pour le test, la conception par scan ajoute un multiplexeur à l'entrée de chaque bascule afin de pouvoir les enchaîner en registres à décalage pour charger et observer les états internes.
AElle transmet en permanence les variations de l'entrée telles quelles à la sortie
BElle produit le OU exclusif de deux entrées
CElle capture la valeur de l'entrée D au front d'horloge et la maintient jusqu'au front suivant
Afficher la réponse et l'explication
Réponse : C. Elle capture la valeur de l'entrée D au front d'horloge et la maintient jusqu'au front suivant
La bascule D capture la valeur de l'entrée D au front montant (ou descendant) de l'horloge et la maintient jusqu'au front suivant. Ne regardant que l'instant du front, sa sortie ne change pas si l'entrée varie entre deux fronts. Elle est à la base des circuits séquentiels : registres des CPU, séparation des étages de pipeline, compteurs ; elle est constituée en interne de deux verrous montés en maître-esclave. Pour une capture correcte, les temps de setup et de hold doivent être respectés.
ALe temps minimal pendant lequel la donnée doit être maintenue après le front d'horloge
BLe temps minimal pendant lequel l'entrée de données doit être stable avant le front d'horloge
CLe temps entre la mise sous tension et le début du fonctionnement
Afficher la réponse et l'explication
Réponse : B. Le temps minimal pendant lequel l'entrée de données doit être stable avant le front d'horloge
Pour qu'une bascule capture correctement, la donnée doit être stable depuis un certain temps avant le front d'horloge : c'est le temps de setup. Si le délai du chemin de données dépasse la période d'horloge moins le temps de setup, il y a violation, que l'on résout en ralentissant l'horloge. Le temps pendant lequel la donnée doit être maintenue après le front est le temps de hold ; le non-respect de l'un ou de l'autre provoque la capture d'une valeur erronée ou la métastabilité.
Questions fréquentes
Quelle différence entre un latch et une bascule (flip-flop) ?
Un latch est sensible au niveau et transmet son entrée à la sortie tant qu'il est activé, tandis qu'une bascule est déclenchée sur front et n'échantillonne son entrée qu'au front d'horloge. Une bascule D typique est construite à partir de deux latches activés sur des phases d'horloge opposées.
Pourquoi ne peut-on pas corriger une violation de hold en baissant la fréquence d'horloge ?
La vérification de hold compare des données lancées et capturées sur le même front d'horloge : la période d'horloge n'y intervient donc pas. La correction consiste à ajouter du retard sur le chemin court, généralement avec des buffers.
Comment calculer la fréquence d'horloge maximale d'un chemin entre bascules ?
On additionne le délai horloge-sortie, le pire délai combinatoire et le temps d'établissement, en corrigeant du décalage d'horloge, pour obtenir la période minimale ; la fréquence maximale en est l'inverse. Le plus lent de ces chemins sur la puce, le chemin critique, fixe la limite de la puce.
« Bascule (flip-flop) » dans les explications
La bascule D capture la valeur de l'entrée D au front montant (ou descendant) de l'horloge et la maintient jusqu'au front suivant.
La bascule JK effectue une mise à 1 pour J = 1, K = 0, une remise à 0 pour J = 0, K = 1, un maintien pour J = K = 0, et une inversion (toggle) pour J = K = 1.
Si le chemin entre une bascule et la suivante est trop court, la nouvelle donnée mise à jour au même front arrive trop tôt à l'étage suivant, d'où une violation.