Introduction au croisement de domaines d’horloge: Double Flopping
Cet article discutera d’une technique bien connue appelée “double flopping” pour transférer un signal de commande à un seul bit entre deux domaines d’horloge.
Il est courant d’utiliser plusieurs signaux d’horloge dans un système numérique. Étant donné que les signaux d’horloge de différents domaines d’horloge sont en général indépendants, le transfert de données entre les différents domaines d’horloge peut être une tâche difficile. Cet article traitera d’une technique bien connue appelée “double flopping” pour transférer un signal de contrôle à un bit entre deux domaines d’horloge.
Pourquoi Avons-Nous Besoin De Plusieurs Horloges?
La méthodologie générale de conception numérique recommande d’utiliser un signal d’horloge pour l’ensemble du système principalement parce qu’elle simplifie à la fois la procédure de conception et l’analyse de la synchronisation du système. Cependant, cette méthodologie ne donne pas toujours la solution la plus efficace et parfois il n’est même pas possible d’avoir une seule horloge pour l’ensemble du système. Par exemple, considérons une conception FPGA fonctionnant à 20 MHz qui communique avec deux périphériques externes à l’aide d’interfaces fonctionnant à 100 MHz et 150 MHz. Ici, nous devons faire face à trois fréquences d’horloge différentes. Notez que la fréquence d’horloge des interfaces peut être prédéfinie et que nous ne pourrons peut-être pas la choisir en fonction de l’horloge utilisée à l’intérieur du FPGA.
Parfois, nous pouvons être en mesure de choisir la fréquence d’horloge pour les différentes parties du système mais, même dans ce cas, ce n’est peut-être pas une bonne idée de faire fonctionner l’ensemble du système à une fréquence d’horloge donnée. Par exemple, supposons que l’ensemble du système peut fonctionner à 20 MHz à l’exception d’un sous-système qui nécessite une horloge à 100 MHz. Si nous décidons d’utiliser un signal d’horloge pour l’ensemble du système, nous devrons alors faire fonctionner le système à 100 MHz pour accueillir la fréquence d’horloge la plus élevée disponible dans le système. Évidemment, ce n’est pas raisonnable car non seulement nous avons surdimensionné une grande partie du système (des pièces pouvant fonctionner à 20 MHz), mais nous avons également augmenté inutilement la consommation d’énergie dynamique du système. Comme vous pouvez le voir, il existe de nombreuses circonstances dans lesquelles nous devons utiliser des fréquences d’horloge différentes pour différentes parties du système.
Une section de la conception dans laquelle tous les éléments synchrones, tels que les bascules et les vérins, utilisent le même signal d’horloge est appelée domaine d’horloge. Avoir différents domaines d’horloge peut être bénéfique, mais n’est pas aussi facile qu’il y paraît. La section suivante traite de certains des problèmes auxquels nous pouvons être confrontés lors de l’utilisation d’un système à horloge multiple.
Le problème de métastabilité
Suppose que nous avons deux sections de logique, A et B, qui fonctionnent respectivement à 50 MHz et 100 MHz. Ceci est illustré à la figure 1.
Figure 1
Dans notre exemple simple, la section B a une entrée, En_In, qui est connectée à la sortie En_Out de la section A. Cette connexion correspond à un signal d’activation actif-élevé qui initie un algorithme en B après qu’une opération particulière est effectuée par A. La figure 1 montre le registre générant le signal d’activation en A et le registre le recevant en B.
Supposons que les formes d’onde de l’horloge sont comme le montre la figure 2 et que le système est déclenché par le front montant. Puisque le signal En_Out est généré par le domaine d’horloge A, sa transition de bas en haut peut se produire après un front montant de clk1 comme indiqué sur la figure. Le retard entre le front montant clk1 et la transition En_Out correspond au retard d’horloge à Q (TT_{clk-à-Q, DFF1}$$) de la bascule dans la section logique A. Maintenant, nous nous attendons à ce que le registre DFF2 dans le domaine B échantillonne le signal d’activation au prochain front montant de clk2 à $$t = t_2$$. L’échantillonnage se produira avec succès à condition que les exigences de synchronisation du DFF2 soient satisfaites, c’est-à-dire $$t_1 +T_{clk-to-Q, \; DFF1}\leq t_2-T_{setup, \; DFF2}$$.
Figure 2
Dans la figure 2, la conditiontt_1 + T_{clk-to-Q, \;DFF1}\leq t_2-T_{setup, \;DFF2} is est satisfaite mais ce n’est pas toujours le cas. Notez que les signaux d’horloge de différents domaines d’horloge sont indépendants en général. Nous ne connaissons pas leur relation de phase et les formes d’onde peuvent être comme indiqué sur la figure 3. Dans ce cas, la transition de bas en haut du signal d’activation est si proche du front montant de clk2 que la conditiontt_1 +T_{clk-à-Q, \;DFF1}\leq t_2-T_{setup, \;DFF2} is n’est pas satisfaite.
Figure 3
Étant donné que les données d’entrée de DFF2 ont changé pendant le temps de configuration, le comportement du registre sera imprévisible. En raison de la violation du temps d’installation, la tension de sortie du registre peut être la valeur représentant une haute logique, une basse logique, ou pire encore une valeur entre les tensions haute logique et basse logique. Ces trois cas sont possibles alors que les données d’entrée étaient en fait logiques élevées au front d’horloge correspondent. De même, la valeur de sortie du registre sera imprévisible, lorsque le temps de maintien du registre est violé, c’est-à-dire que En_Out change dans une fenêtre temporelle après le front d’horloge actif défini par le temps de maintien du registre. Lorsque la sortie du registre devient suspendue à une tension entre les tensions logiques haute et basse, on dit que la bascule est entrée dans un état métastable.
Examinons les trois cas possibles de violation du timing de la figure 3 individuellement:
- Dans le premier cas, supposons que la valeur de sortie du DFF2 passe à la valeur logique élevée avec le front montant clk2 à $$t = t_2$$. Dans ce cas, il n’y a pas d’erreur et la bascule contient des données valides bien que nous ayons eu une violation du temps de configuration. Les transitions de données comme prévu sans erreur.
- Le deuxième cas: supposons que la sortie DFF2 passe à la logique basse avec le front montant clk2 à $$t = t_2$$. Dans ce cas, le signal d’activation n’est pas échantillonné avec succès dans le domaine d’horloge B. Cependant, ce ne sera pas un problème car En_Out provient du domaine d’horloge A et il sera élevé pendant au moins une période de clk1 comme le montre la figure 3. Par conséquent, le front montant suivant de clk2 àtt = t_3 sample échantillonnera correctement la valeur En_Out. Pour ce front d’horloge, les exigences de synchronisation de DFF2 seront satisfaites car En_Out n’a pas changé pendant plus d’une période de clk2. Dans ce cas, nous échantillonnons En_Out environ une période d’horloge plus tard qu’elle n’a réellement fait la transition. Cependant, ce n’est pas un problème car les horloges des deux domaines d’horloge étaient supposées indépendantes et nous n’avons fait aucune hypothèse sur l’heure d’arrivée du signal En_Out. En effet, le circuit dans le domaine d’horloge B réalise la fin des calculus du domaine d’horloge A avec un retard supplémentaire d’une période clk2.
- Supposons ensuite que le registre DFF2 entre dans l’état métastable. Dans ce cas, la sortie du registre devient suspendue à une tension comprise entre les tensions logiques haute et basse mais celle-ci sera temporaire. La bascule finira par quitter l’état métastable et passera à la logique haute ou à la logique basse. Le temps nécessaire pour quitter l’état métastable est connu sous le nom de temps de résolutionTT_r$$. Ceci est illustré à la figure 4. Sur cette figure, la violation du temps de configuration s’est produite et la bascule est entrée dans l’état métastable pendant un intervalle de temps deTT_r$$. Après $$T_r$$, le flip flop sortie passez à la logique haut ($$Q2_{méta-à-1}$$) ou de la logique bas ($$Q2_{méta-à-0}$$).
Figure 4
Le temps de résolution n’est pas déterministe et est décrit comme une fonction de distribution de probabilité
$$P(T_r) = e^{\frac{-T_r}{\tau}}$$
Où $$\tau is est la “constante de temps de décroissance” et est déterminée par les caractéristiques électriques de la bascule. Une valeur typique pour ce paramètre sera d’environ une fraction de nanoseconde.
L’équation ci-dessus donne la probabilité de rester à l’état métastable pendant un intervalle de temps égal àTT_r after après le front d’horloge d’échantillonnage. En raison de la caractéristique exponentielle de l’équation, la probabilité diminuera rapidement lorsque nous augmenterons la valeur deTT_r$$. Par exemple, pour la somme de$\tau =0.5$$ ns et $$T_r = 5$$ ns, on obtient une probabilité de $$\approx 4.5 \times 10^{-5}$$.
Pour résumer, nous ne pouvons pas empêcher la métastabilité de se produire car les signaux d’horloge des deux domaines d’horloge sont indépendants l’un de l’autre. Cependant, si nous fournissons à la bascule un temps de résolution suffisamment important, elle se résoudra à un état stable avec une probabilité élevée. Par conséquent, si notre conception inclut des bascules qui pourraient entrer dans l’état de métastabilité, nous devrions donner à la bascule suffisamment de temps pour quitter la métastabilité. Ensuite, nous pouvons propager en toute sécurité la valeur de la bascule aux cellules logiques en aval. Notez que l’utilisation d’une valeur métastable peut conduire l’ensemble du système dans un état inconnu. Cela peut entraîner un flux de courant élevé et même un épuisement des copeaux dans le pire des cas. Par conséquent, nous devrions éviter d’alimenter le système en données instables.
Double Flopping
Nous avons vu que donner à la bascule un temps suffisant peut réduire considérablement les chances de rester à l’état métastable. Voyons comment cela peut être utilisé pour éviter de propager des données métastables dans le système. Considérons le schéma de principe de la figure 5. Ceci montre un chemin typique dans le domaine d’horloge B de la figure 1 qui reçoit et traite le signal En_In.
Figure 5
La période d’horloge minimale qui peut être utilisée pour faire fonctionner ce circuit sera
$$T_{clk,\;min} = T_{clk-to-Q} +T_{comb, \; max} + T_{installation}$$
où $$T_{clk-à-Q}$$ et $$T_{installation}$$ sont l’horloge-à-Q et le temps d’installation des flip-flops et des $$T_{peigne, \; max}$$ est le délai maximum que les circuits combinatoires, “Peigne.”, exposition. Cette équation est obtenue en supposant que les données de sortie de DFF2 sont stables. Si ce n’est pas le cas, nous devons considérer un certain temps de résolution comme dans l’équation suivante:
TT_{clk,\;min} = T_{clk-to-Q} + T_r + T_{comb, \; max} + T_ { configuration}$$
La valeur du temps de résolution déterminera la probabilité de sortir de l’état métastable. Supposons que la période de clk2 soitTT_{clk2}$$. Ensuite, la valeur du temps de résolution disponible sera
TT_r= T_{clk2}-\big(T_{clk-to-Q} + T_{comb,\;max} +T_{setup}\big )$$
Pour réduire la probabilité de rester dans un état métastable, nous devrions augmenterTT_r$$. Avec une période d’horloge donnéeTT_{clk2},, la seule option de conception sera de minimiser le paramètreTT_{comb, \;max}$$. Par conséquent, nous ferions mieux de mettre le “Peigne.” bloquer après la bascule DFF3 comme le montre la figure 6. De cette façon,TT_{comb, \;max} will sera théoriquement nul pour le chemin entre DFF2 et DFF3. Par conséquent, nous aurons le temps de résolution maximum possible.
Figure 6
Cette technique est appelée double flopping et est largement utilisée lors du transfert de signaux de commande comme le signal d’activation ci-dessus entre deux domaines d’horloge. Notez que le registre supplémentaire introduira un autre délai d’une période d’horloge au signal d’activation capturé par le domaine d’horloge B. Cependant, ce retard vaut l’avantage d’éviter les états métastables dans le système.
Cet article traite du passage d’un signal d’activation d’un domaine d’horloge lente à un domaine d’horloge rapide. Vous devrez peut-être vous familiariser avec plusieurs autres techniques telles que le passage d’un signal de commande du domaine d’horloge rapide au domaine d’horloge lente, la technique de tremblement de la main et le transfert de données basé sur la FIFO entre les domaines d’horloge. Vous trouverez quelques détails dans le Chapitre 16 de la Conception matérielle RTL en utilisant VHDL: Codage pour l’efficacité, la portabilité et l’évolutivité et le Chapitre 6 de la Conception FPGA avancée: Architecture, Implémentation et optimisation.
Résumé
- Il existe de nombreuses circonstances dans lesquelles nous devons utiliser des fréquences d’horloge différentes pour différentes parties du système.
- Étant donné que les signaux d’horloge de différents domaines d’horloge sont indépendants en général, le transfert de données entre les différents domaines d’horloge peut être une tâche difficile.
- La valeur de sortie d’un registre sera imprévisible lorsqu’une violation du temps de configuration ou du temps d’attente se produit. Il pourrait contenir la valeur représentant une logique haute, une logique basse, ou pire encore une valeur entre les tensions logique haute et logique basse.
- Le temps nécessaire pour quitter l’état métastable est connu sous le nom de temps de résolutionTT_r$$.
- Si notre conception inclut des bascules qui pourraient entrer dans l’état de métastabilité, nous devrions donner à la bascule suffisamment de temps pour quitter la métastabilité.
- La technique du “double flopping” est largement utilisée pour transférer des signaux de contrôle à un bit entre deux domaines d’horloge.
Pour voir la liste complète de mes articles, veuillez visiter cette page.