Search

EP-4738048-A1 - TUNED FREQUENCY SYNCHRONIZER FOR CLOCK DOMAIN CROSSING

EP4738048A1EP 4738048 A1EP4738048 A1EP 4738048A1EP-4738048-A1

Abstract

Dans un contexte de croisement de domaine d'horloge, un synchroniseur à bascules présente un nombre réduit de bascules (110, 113) mises en série, recevant en entrée des données (A_q) d'un premier domaine d'horloge (107) et fournissant en sortie (120) des données dans le deuxième domaine d'horloge (114). Le deuxième signal d'horloge est à fréquence variable ajustée à une fréquence cible, par un facteur de division (k0). Les bascules (110, 113) sont cadencées par un signal d'horloge (CLK_k) sous-échantillonnant le deuxième signal d'horloge (CLK_B) par un facteur k1. Le signal d'horloge sous-échantillonné est généré par un diviseur de fréquence (301) propageant une impulsion du signal (CLK_B) toutes les k1 impulsions d'horloge, en gardant les fronts alignés. Des bascules théoriquement supplémentaires (111, 112) sont évitées.

Inventors

  • Lacan, Jérôme
  • Eva, Christophe

Assignees

  • STMicroelectronics International N.V.

Dates

Publication Date
20260506
Application Date
20251021

Claims (10)

  1. Unité de synchronisation (300, 601, 602) entre un premier domaine d'horloge (107, 607) cadencé par un premier signal d'horloge (CLK_A, CLK_C) et un deuxième domaine d'horloge (114) asynchrone au premier domaine d'horloge et cadencé par un deuxième signal d'horloge (CLK_B), l'unité de synchronisation comprenant : un jeu de bascules (110, 113, 610, 611, 612) mises en série comprenant une première bascule reliée au premier domaine d'horloge et recevant en entrée des données (A_q) du premier domaine d'horloge et comprenant une dernière bascule fournissant en sortie (120, 620) des données dans le deuxième domaine d'horloge, dans laquelle le deuxième signal d'horloge (CLK_B) est à fréquence variable ajustée à une fréquence cible (f B ) pour alimenter un signal d'horloge cadençant les bascules (110, 113, 610, 611, 612) et/ou les bascules (110, 113, 610, 611, 612) sont cadencées par un signal d'horloge (CLK_k) sous-échantillonnant le deuxième signal d'horloge (CLK_B).
  2. Unité de synchronisation (300, 601, 602) selon la revendication 1, comprenant un sous-échantillonneur (301, 400) configuré pour sous-échantillonner un signal en entrée par un facteur de sous-échantillonnage (k1), entier supérieur ou égal à 2, le sous-échantillonneur recevant, comme signal d'entrée, le deuxième signal d'horloge (CLK_B).
  3. Unité de synchronisation (300, 601, 602) selon la revendication 1 ou 2, dans laquelle une source du deuxième signal d'horloge comprend un diviseur d'horloge (301, 400) configuré pour ajuster le deuxième signal d'horloge par un facteur de division (k0), entier supérieur ou égal à 2.
  4. Unité de synchronisation (300, 601, 602) selon les revendications 2 et 3, dans laquelle le sous-échantillonneur (301, 400) comprend un module d'adaptation du facteur de sous-échantillonnage (k1) à un ajustement d'une fréquence (f B ) du deuxième signal d'horloge (CLK_B) par le facteur de division (k0).
  5. Unité de synchronisation (300, 601, 602) selon la revendication 2 ou 4, dans laquelle le sous-échantillonneur (301, 400) comprend une cellule de déclenchement d'horloge (410) couplée à un compteur (420) d'impulsions dans le signal en entrée.
  6. Unité de synchronisation (300, 601, 602) selon l'une des revendications précédentes, dans laquelle le jeu de bascules comporte deux bascules en série uniquement (110, 113).
  7. Unité de synchronisation (300, 601, 602) selon l'une des revendications précédentes, dans laquelle lorsqu'une formule de temps moyen de bon fonctionnement (MTBF) souhaité lie un nombre théorique N sync de bascules à une première fréquence (f A ) du premier signal d'horloge (CLK_A) et une deuxième fréquence (f B ) du deuxième signal d'horloge (CLK_B), un facteur de sous-échantillonnage k est fixé à un facteur k2 choisi parmi les facteurs de N sync -1.
  8. Système de synchronisation (600) comprenant : une première unité de synchronisation (601) selon l'une des revendications précédentes entre un premier domaine d'horloge (107) cadencé par un premier signal d'horloge (CLK_A) et un deuxième domaine d'horloge (114) asynchrone au premier domaine d'horloge et cadencé par un deuxième signal d'horloge (CLK_B), une deuxième unité de synchronisation (602) selon l'une des revendications précédentes entre un troisième domaine d'horloge (607) cadencé par un troisième signal d'horloge (CLK_C) distinct du premier signal d'horloge (CLK_A) et le deuxième domaine d'horloge (114) asynchrone au troisième domaine d'horloge (607), dans lequel un sous-échantillonneur partagé (301, 400) fournit le même signal d'horloge (CLK_k) sous-échantillonnant le deuxième signal d'horloge (CLK_B), aux bascules (110, 113, 610, 611, 612) des première et deuxième unités de synchronisation (601, 602).
  9. Procédé de synchronisation entre un premier domaine d'horloge (107, 607) cadencé par un premier signal d'horloge (CLK_A, CLK_C) et un deuxième domaine d'horloge (114) asynchrone au premier domaine d'horloge et cadencé par un deuxième signal d'horloge (CLK_B), le procédé comprenant les étapes suivantes : obtenir (710) au moins un facteur de division d'horloge (k0) ou de sous-échantillonnage d'horloge (k1), ajuster, à l'aide du facteur de division d'horloge, une fréquence variable du deuxième signal d'horloge à une fréquence cible pour alimenter un signal d'horloge cadençant les bascules et/ou générer (720), à l'aide du facteur de sous-échantillonnage d'horloge obtenu, un signal d'horloge (CLK_k) sous-échantillonnant le deuxième signal d'horloge (CLK_B), et piloter (730), avec le signal d'horloge ajusté et/ou généré (CLK_k), des bascules (110, 113, 610, 611, 612) mises en série dans une unité de synchronisation (300, 601, 602), les bascules comprenant une première bascule reliée au premier domaine d'horloge et qui reçoit en entrée des données (A_q) du premier domaine d'horloge et comprenant une dernière bascule qui fournit en sortie (120, 620) des données dans le deuxième domaine d'horloge.
  10. Système électronique comprenant une unité de synchronisation (300, 601, 602) selon l'une des revendications 1 à 7.

Description

DOMAINE TECHNIQUE Des modes de réalisation et de mise en œuvre concernent le domaine de la synchronisation de données dans des systèmes ayant des domaines d'horloge asynchrones. CONTEXTE TECHNIQUE Un système numérique est souvent composé de plusieurs sous-systèmes numériques. Lorsque ces sous-systèmes numériques fonctionnent de manière synchrone avec la même horloge, la synchronisation des signaux circulant entre ces sous-systèmes numériques n'est pas nécessaire. En revanche, si ces sous-systèmes numériques sont asynchrones, i.e., fonctionnent avec des horloges asynchrones au moins en phase, les signaux circulant entre ces sous-systèmes numériques doivent être synchronisés. Par exemple, un système informatique peut fonctionner à une fréquence donnée, alors que le processeur peut fonctionner à une autre fréquence. Un circuit d'interface qui permet le transfert de données d'un domaine d'horloge à un autre est appelé unité de synchronisation ou « synchroniseur ». La FIG.1 illustre un synchroniseur à bascules 100 selon l'état de l'art pour synchroniser un signal de données SIG_1. La bascule (« flip-flop » en langue anglo-saxonne) A 105 fonctionne dans le domaine d'horloge d'origine A 107. Le jeu de bascules B fonctionnent dans le domaine d'horloge cible B 114. De façon connue, une bascule est un circuit logique mettant en œuvre un opérateur entre ses entrées et maintenant les valeurs de sa ou ses sorties - évaluées à un front d'horloge - pendant la durée du cycle d'horloge. Le domaine d'horloge A 107 et le domaine d'horloge B 114 sont des domaines d'horloge asynchrones. La bascule A 105 reçoit le signal d'entrée SIG_1 à l'entrée de données « d » et est cadencée à une première fréquence d'horloge fA, par le premier signal d'horloge CLK_A à l'entrée d'horloge. La FIG.1 illustre un jeu de quatre bascules B1 110, B2 111, B3 112 et B4 113 fonctionnant en série ou « cascade » (la sortie « q » de la bascule précédente alimentant l'entrée « d » de la suivante). Un autre nombre de bascules peut être envisagé. Notamment, des synchroniseurs à deux bascules B sont largement connus. Le signal d'entrée SIG_1 est transféré à la sortie « q » de la bascule A 105 par l'action du premier signal d'horloge CLK_A. Les bascules du jeu B sont cadencées à une deuxième fréquence d'horloge fB, par le deuxième signal d'horloge CLK_B, et le signal de sortie à la sortie « q » de la bascule A 105 est transféré en série via chacune des bascules du jeu B jusqu'à la sortie « q » finale au niveau du nœud de sortie 120. Si une source d'horloge (par exemple fB) présente une fréquence d'opération maximale (fBmax), elle peut cependant être de fréquence variable dans le cas où un utilisateur peut ajuster la fréquence du domaine au travers d'un diviseur d'horloge intégré à la source d'horloge. La FIG.2 illustre un diagramme temporel 200 des signaux du synchroniseur 100. Sont représentés, le signal A_q 205 en sortie de bascule A 105 - c'est-à-dire en entrée du domaine d'horloge cible B 114 -, le signal d'horloge CLK_B 207 du domaine d'horloge cible B 114, le signal B1_q 210 en sortie de la première bascule B1 110, le signal B2_q 211 en sortie de la bascule suivante B2 111, le signal B3_q 212 en sortie de la bascule encore suivante B3 112 et le signal B4_q 213 en sortie de la dernière bascule B4 114. Le signal B4_q correspond ici au signal de sortie SORTIE 120. Chaque signal Bi_q de sortie d'une bascule intermédiaire Bi correspond au signal B(i+1)_d d'entrée de la bascule intermédiaire suivante B(i+1). Il existe une probabilité que lors de l'échantillonnage du signal A_q par la bascule B1 110 dans le domaine d'horloge cible 114, la sortie B1_q de la bascule B1 puisse passer dans un état métastable. Cette probabilité - qui décroit dans le temps - est illustrée symboliquement par le dégradé après chaque front. La bascule suivante B2 aura une probabilité plus faible de faire de même (illustrée symboliquement par le dégradé), et ainsi de suite. Ces risques d'état métastable sont fonction des paramètres des bascules et de la fréquence cible fB de l'horloge CLK_B. La mise en série des quatre bascules permet de réduire ce risque d'état métastable en sortie 120, au prix d'un échantillonnage décalé d'un nombre de cycles d'horloge correspondant au nombre de bascules additionnelles (par exemple par rapport à un synchroniseur à deux bascules). Le nombre Nsync de bascules B à utiliser est généralement déterminé par la formule suivante : MTBF=et/trN.fA.fB.Tw où t, le temps de résolution, vaut t=Nsync−1.1fB−Tsetup−Tcp→q−Tuncertainty MTBF est le temps moyen de bon fonctionnement souhaité (« Mean Time Between Failures » en langue anglo-saxonne). tr (temps de résolution d'une bascule), Tw (fenêtre de métastabilité), N (nombre total de bascules dans le synchroniseur ou système de synchronisation), Tsetup (durée de setup d'une bascule), Tcp→q (temps de latence CP - impulsion d'horloge - à Q - sortie - d'une bascule), Tuncertainty (constante) sont des paramètres fixés, liés