FR2858434A1 - Systeme et procede pour synchroniser plusieurs controleurs synchronisateurs - Google Patents
Systeme et procede pour synchroniser plusieurs controleurs synchronisateurs Download PDFInfo
- Publication number
- FR2858434A1 FR2858434A1 FR0406448A FR0406448A FR2858434A1 FR 2858434 A1 FR2858434 A1 FR 2858434A1 FR 0406448 A FR0406448 A FR 0406448A FR 0406448 A FR0406448 A FR 0406448A FR 2858434 A1 FR2858434 A1 FR 2858434A1
- Authority
- FR
- France
- Prior art keywords
- clock
- synchronizing
- bus
- signal
- core
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
L'invention propose un système et un procédé pour coordonner des contrôleurs synchronisateurs (122, 124) disposés dans des domaines d'horloge différents, par exemple un domaine d'horloge de coeur et un domaine d'horloge de bus, dans lesquels un arrangement synchronisateur d'horloge est employé pour effectuer un transfert de données au travers une frontière d'horloge située entre ceux-ci. Un contrôleur synchronisateur d'horloge de bus (122) opérable dans le domaine d'horloge de bus inclut une circuiterie (300) pour engendrer un jeu de signaux de commande de relation d'horloge entre contrôleurs (314, 316, 318), qui sont fournis à un contrôleur synchronisateur d'horloge de coeur (124). Sensible aux signaux de commande de relation d'horloge entre contrôleurs (314, 316, 318), une circuiterie (400) dans le contrôleur synchronisateur d'horloge de coeur (124) est opérable pour synchroniser les informations de cycle et de séquence de l'horloge de coeur (106) relativement au signal de l'horloge de bus (108).
Description
ARRIÈRE-PLAN DE L'INVENTION
Les systèmes électroniques numériques, par exemple des systèmes informatiques, ont souvent besoin de communiquer en utilisant diverses interfaces, chacune 5 opérant à une vitesse optimisée pour fournir une meilleure performance. De manière typique, plusieurs signaux d'horloge ayant des fréquences différentes sont utilisés pour fournir un cadencement convenable aux interfaces. En outre, les fréquences de tels signaux 10 d'horloge sont en général en reliées l'une à l'autre d'une manière prédéterminée. Par exemple, une horloge de coeur ou horloge système opérant à une fréquence particulière (Fc) peut être utilisée comme horloge maîtresse dans un système informatique typique pour 15 fournir une base de temps par rapport à une partie spécifique de sa circuiterie numérique. D'autres parties de la circuiterie numérique du système informatique (telles qu'un segment de bus et la circuiterie logique disposées sur celui-ci) peuvent 20 être cadencées en utilisant des signaux de cadencement dérivés de l'horloge maîtresse, les fréquences dérivées (FD) suivant la relation Fc/ FD 2 1.
Du fait de la nature asynchrone - bien que liée des parties constituantes d'une circuiterie numérique, 25 une circuiterie de synchronisateur est souvent utilisée dans des systèmes informatiques pour synchroniser des opérations consistant à transférer des données à travers une frontière de domaine d'horloge de manière à éviter les erreurs portant sur les données et liées au 30 cadencement. De manière typique, on exige d'une telle circuiterie de synchronisateur qu'elle possède une faible latence (ce qui nécessite une prise de contrôle précise des horloges asynchrones qui cadencent respectivement les parties du circuit dans deux - 2 domaines d'horloge différents). En outre, puisque les boucles à verrouillage de phase (PLL) utilisées dans les arrangements classiques pour produire des horloges de fréquences différentes bien que reliées peuvent 5 avoir une importante gigue d'entrée/ sortie (I/O), il est essentiel que la circuiterie du synchronisateur soit capable de tolérer de grandes différences de phase à basse fréquence (ou, défauts d'alignement) entre les horloges qu'elles engendrent.
RÉSUMÉ DE L'INVENTION Selon un premier aspect, l'invention propose un système pour coordonner des contrôleurs synchronisateurs disposés dans un arrangement synchronisateur d'horloge, ledit arrangement synchronisateur d'horloge permettant d'effectuer un transfert de données entre un domaine d'horloge de coeur et un domaine d'horloge de bus, dans lequel ledit système d'horloge de coeur est opérable avec un signal d'horloge de coeur et ledit domaine d'horloge de bus est 20 opérable avec un signal d'horloge de bus, lesdits signaux d'horloge de coeur et d'horloge de bus présentant un certain rapport, le système, comprenant une circuiterie disposée dans une partie contrôleur synchronisateur de l'horloge de bus, pour engendrer un 25 jeu de signaux de commande de relation d'horloge entre contrôleurs et une circuiterie disposée dans une partie contrôleur synchronisateur d'horloge de coeur opérant en réponse au dit jeu de signaux de commande de relation d'horloge entre contrôleurs pour synchroniser des 30 informations de cycle et de séquence associées au dit signal d'horloge de coeur, relativement au dit signal d'horloge de bus.
Dans une variante du mode de réalisation de ce premier aspect, l'invention propose que ladite circuiterie disposée dans ladite partie contrôleur synchronisateur d'horloge de bus pour engendrer un jeu de signaux de commande de relation d'horloge entre contrôleurs puisse être opérable en réponse à une 5 impulsion SYNC qui est échantillonnée dans ledit domaine d'horloge de bus par ledit signal d'horloge de bus.
Dans cette variante de mode de réalisation, l'invention propose que ladite impulsion SYNC puisse 10 être engendrée par une boucle à verrouillage de phase (PLL) quand un front montant dans ledit signal d'horloge de coeur coïncide au moins de manière sensible avec un front montant dans ledit signal d'horloge de bus.
Dans ces deux variantes de mode de réalisation, l'invention propose que ladite circuiterie disposée dans ladite partie contrôleur synchronisateur d'horloge de coeur puisse être opérable en réponse à ladite impulsion SYNC qui est échantillonnée dans ledit 20 domaine d'horloge de coeur par ledit signal d'horloge de coeur.
Selon un deuxième aspect, l'invention propose un procédé pour coordonner des contrôleurs synchronisateurs disposés dans un arrangement 25 synchronisateur d'horloge, ledit arrangement synchronisateur d'horloge permettant d'effectuer un transfert de données entre un domaine d'horloge de coeur et un domaine d'horloge de bus dans lequel ledit système d'horloge de coeur est opérable avec un signal 30 d'horloge de coeur et ledit domaine d'horloge de bus est opérable avec un signal d'horloge de bus, lesdits signaux d'horloge de coeur et d'horloge de bus présentant un certain rapport, le procédé comprenant les étapes consistant à engendrer un jeu de signaux de 35 commande de relation d'horloge entre contrôleurs dans - 4 une partie contrôleur synchronisateur d'horloge de bus, et à synchroniser, en étant sensible au dit jeu de signaux de commande de relation d'horloge entre contrôleurs, des informations de cycle et de séquence 5 associées au dit signal d'horloge de coeur relativement au dit signal d'horloge de bus dans une partie contrôleur synchronisateur d'horloge de coeur.
Dans une variante du mode de réalisation de ce deuxième aspect, l'invention propose que, dans le 10 procédé pour coordonner des contrôleurs synchronisateurs disposés dans un arrangement synchronisateur d'horloge, lesdits signaux de commande de relation d'horloge entre contrôleurs soient engendrés en réponse à une impulsion SYNC qui est 15 échantillonnée dans ledit domaine d'horloge de bus par ledit signal d'horloge de bus.
Dans cette variante du procédé de l'invention, ladite impulsion SYNC peut être engendrée par une boucle à verrouillage de phase (PLL) quand un front 20 montant dans ledit signal d'horloge de coeur coïncide au moins de manière sensible avec un front montant dans ledit signal d'horloge de bus.
Dans ces deux variantes du procédé de l'invention, ladite opération consistant à synchroniser des 25 informations de cycle et de séquence associées au dit signal d'horloge de coeur relativement au dit signal d'horloge de bus peut être effectuée en dépendance de ladite impulsion SYNC qui est échantillonnée dans ledit domaine d'horloge de coeur par ledit signal d'horloge de 30 coeur.
Dans une variante différente du mode de réalisation du procédé de l'invention et de ses trois variantes, l'invention propose que ledit jeu de signaux de commande de relation d'horloge entre contrôleurs 35 puisse inclure un signal de commande indicatif d'un - 5 rapport de fréquence des horloges associées au dit signal d'horloge de bus et au dit signal d'horloge de coeur.
Dans ce cas, l'invention propose que le procédé 5 puisse en outre inclure une étape consistant à déterminer que ledit rapport de fréquence des horloges associées au dit signal d'horloge de bus et au dit signal d'horloge de coeur est stable pour synchroniser des informations de cycle et de séquence associées au 10 dit signal d'horloge de coeur.
BRÈVE DESCRIPTION DES DESSINS
La figure 1 représente un schéma par blocs d'un mode de réalisation système synchronisateur programmable pour effectuer un transfert de données au 15 travers d'une frontière d'horloge; La figure 2 représente un diagramme de cadencement de deux domaines d'horloge présentant un rapport de fréquence de 5: 4 dans lequel le système synchronisateur programmable de la figure 1 peut être 20 utilisé pour effectuer un transfert de données au travers de la frontière d'horloge; La figure 3 représente un diagramme par blocs d'un mode de réalisation d'un contrôleur synchronisateur d'horloge de bus pour prendre le contrôle d'un circuit 25 de synchronisateur bus-vers-coeur fourni comme une partie du système synchronisateur programmable montré à la figure 1; La figure 4 représente un diagramme par blocs d'un mode de réalisation d'un contrôleur synchronisateur 30 d'horloge de coeur pour prendre le contrôle d'un circuit synchronisateur coeur-vers-bus fourni comme une partie du système synchronisateur programmable montré à la figure 1; La figure 5A représente un diagramme par blocs - 6 d'un mode de réalisation d'un bloc logique échantillonnant SYNC; La figure 5B représente un diagramme par blocs d'un mode de réalisation d'un bloc échantillonnant un 5 rapport de synchro fourni comme une partie du contrôleur synchronisateur d'horloge de coeur montré à la figure 4; La figure 5C représente un diagramme par blocs d'un mode de réalisation d'un bloc échantillonnant une 10 séquence fourni comme une partie du contrôleur synchronisateur d'horloge de coeur montré à la figure 4; La figure 5D représente un diagramme par blocs d'un mode de réalisation d'un bloc échantillonnant 15 syncbO fourni comme une partie du contrôleur synchronisateur d'horloge de coeur montré à la figure 4; La figure 5E représente un diagramme par blocs d'un mode de réalisation d'un bloc détecteur d'une 20 impulsion de synchro fourni comme une partie du contrôleur synchronisateur d'horloge de coeur montré à la figure 4; et La figure 6 est un organigramme des différentes opérations d'un procédé conforme à un mode de 25 réalisation de l'invention pour coordonner deux contrôleurs synchronisateurs disposés dans des domaines d'horloge différents.
DESCRIPTION DÉTAILLÉE DE L'INVENTION
Dans les dessins, des éléments identiques ou 30 similaires sont désignés par des références numériques identiques tout au long des différentes vues de ceux-ci et les divers éléments décrits ne sont pas nécessairement dessinés à l'échelle. En nous reportant à présent à la figure 1, nous y décrivons un mode de - 7 réalisation d'un système synchronisateur programmable 100 pour effectuer un transfert de données au travers d'une frontière d'horloge entre un premier domaine d'horloge (c'est-à-dire un domaine d'horloge 5 rapide ) ayant N cycles d'horloge et un deuxième domaine d'horloge (par exemple un domaine d'horloge lente ) ayant M cycles d'horloge, avec N/ M > 1. De manière typique, M = (N - 1) et à titre d'exécution exemplaire, le système synchronisateur 100 peut être 10 fourni comme une partie d'un système informatique pour transférer des données entre un domaine d'horloge de coeur plus rapide (opérant par exemple avec un signal d'horloge de coeur de fréquence 250 Mhz) et un domaine d'horloge de bus plus lent (opérant par exemple avec un 15 signal d'horloge de bus de fréquence 200 Mhz), présentant un rapport de fréquence de 5: 4. En conséquence, pour les objets de la présente demande de brevet, les expressions première horloge et horloge de coeur seront utilisées de manière 20 synonymique en rapport à un domaine d'horloge rapide; de même, les expressions deuxième horloge et horloge de bus seront utilisées en rapport à un domaine d'horloge lente.
Une circuit 104 formant une boucle à verrouillage 25 de phase (PLL) est opérable pour engendrer une impulsion SYNC 110 et un signal d'horloge de bus (c'est-à-dire une deuxième horloge) 108 (désigné par le busclock) basés sur une horloge de coeur (c'est-à-dire la première horloge) 106 (désigné par core_ clock) qui 30 lui sont fournis. Comme nous le verrons plus loin, l'impulsion SYNC 110 fournit un point de référence pour coordonner des opérations consistant à transférer des données et est piloté à l'état HAUT quand les signaux busclock et core clock présentent des fronts montants 35 en coïncidence. Les deux signaux d'horloge 106, 108 et -- 8 -l'impulsion SYNC 110 sont fournis à un block synchronisateur/ contrôleur 102 qui enjambe la frontière d'horloge entre un premier domaine d'horloge (c'est-à-dire le domaine de l'horloge de coeur) et un 5 deuxième domaine d'horloge (c'est-à-dire le domaine de l'horloge de bus) pour effectuer un transfert de données au travers de la frontière. Les références numériques 103A et 103B se rapportent à une circuiterie disposée dans le premier et le deuxième domaine 10 d'horloge, respectivement, par exemple une logique de domaine de l'horloge de coeur et une logique de domaine de l'horloge de bus, qui émettent et reçoivent des données entre elles, en étant facilité par des synchronisateurs 105A et 105B qui seront décrits de 15 manière plus détaillée plus loin.
Chacun des signaux core_ clock et busclock 106, 108 est en premier lieu fourni à un bloc formant un arbre de distribution de l'horloge respectif pour engendrer un signal d'horloge distribué qui est fourni 20 à diverses parties du bloc synchronisateur/ contrôleur 102. La référence numérique 112 se rapporte l'arbre de distribution de l'horloge opérable avec le signal core_ clock 106 pour engendrer le signal core clock distribué, qui est étiqueté c et montré avec la 25 référence numérique 106' à la figure 1. De même, la référence numérique 114 se rapporte l'arbre de distribution de l'horloge opérable avec le signal busclock 108 pour engendrer le signal bus_ clock distribué, qui est étiqueté b et montré avec la 30 référence numérique 108' à la figure 1. Celui qui a des compétences dans la technique reconnaîtra immédiatement que les signaux d'horloge distribués sont essentiellement les mêmes que les signaux d'horloge fournis en entrée. En conséquence, le signal core clock 35 106 et sa contrepartie distribuée c 106' sont traités comme étant équivalents ci-après. De même, le signal busclock 108 et sa contrepartie distribuée b 108' sont traités comme étant équivalents.
Un bloc logique échantillonnant SYNC 116 est 5 opérable en réponse aux signaux d'horloge distribuée 106', 108' et au signal d'impulsion SYNC 110, pour engendrer une paire d'impulsions SYNC échantillonnées qui sont acheminées à une circuiterie de contrôleur synchronisateur convenable. Comme nous le montrons de 10 manière plus détaillée en référence à la figure 5A, les impulsions SYNC échantillonnées sont élaborées comme suit dans une mode de réalisation. L'impulsion SYNC 110 est échantillonnée deux fois par deux éléments formant des bascules ( élément(s) FF cidessous) qui sont 15 cadencées sur le front montant du signal core clock distribué c 106'. Comme on pourra l'apprécier, un échantillonnage à l'aide de deux éléments FF est efficace pour éliminer une métastabilité associée à l'impulsion SYNC 110 (qui peut se produire du fait d'un 20 défaut d'alignement entre le signal d'entrée, le signal core_ clock 106 et le signal de sortie, SYNC 110).
L'impulsion SYNC échantillonnée deux fois est désignée par signal sync 118 à la figure 1, lequel est fourni à un premier contrôleur synchronisateur (ou 25 contrôleur synchronisateur d'horloge de coeur) 124 opérant dans le premier domaine d'horloge.
Par rapport au deuxième domaine d'horloge (c'està-dire le domaine de l'horloge de bus), l'impulsion SYNC 110 est échantillonnée dans le bloc logique 30 échantillonnant SYNC 116 par un seul élément FF (montré à la figure 5A) qui est cadencé sur le front montant du signal bus clock distribué b 108'. Pour signifier que l'échantillonnage est effectué en utilisant le bus_clock, l'impulsion SYNC échantillonnée est désignée 35 par signal sync B 120, qui est fourni à un deuxième - 10 contrôleur synchronisateur 122 opérant dans le deuxième domaine d'horloge auquel nous faisons aussi référence sous le nom de synchronisateur d'horloge de bus à la figure 1.
Le contrôleur synchronisateur d'horloge de bus 122 est opérable en réponse au bus_ clock distribué, b 108' et à l'impulsion échantillonnée syncB 120 pour engendrer une pluralité de signaux de commande de synchronisateur, une partie desquels signaux est 10 dirigée vers un premier moyen formant un circuit synchronisateur 105A opérant pour commander un transfert de données de la première circuiterie 103A (c'est- à-dire la logique du domaine d'horloge de coeur) vers la deuxième circuiterie 103B (c'est-à-dire la 15 logique du domaine d'horloge de bus). La référence numérique 132 se rapporte au chemin de signal de cette partie des signaux de commande émanant du contrôleur synchronisateur d'horloge de bus 122. Une autre partie des signaux de commande de synchronisateur engendrés 20 par le contrôleur synchronisateur d'horloge de bus 122 est dirigée (par l'intermédiaire du chemin de signal 134) vers un deuxième moyen formant un circuit synchronisateur 105B opérant pour commander un transfert de données de la deuxième circuiterie 103B 25 vers la première circuiterie 103A. En cohérence avec la nomenclature utilisée dans la présente demande de brevet, il est aussi possible faire référence au premier et au deuxième circuit synchronisateur comme étant des circuits synchronisateur coeur-vers-bus et 30 synchronisateur bus-vers- coeur, respectivement. En outre, le contrôleur synchronisateur d'horloge de bus 122 engendre aussi un jeu de signaux de commande entre contrôleurs qui sont fournis au premier contrôleur synchronisateur 124 (qui est le contrôleur synchronisateur d'horloge de coeur) de telle sorte que - 1l les deux contrôleurs puissent travailler ensemble. La référence numérique 128 se rapporte au chemin du signal (ou des signaux) de commande de relation d'horloge entre contrôleurs fourni(s) au contrôleur synchronisateur d'horloge de coeur 124. Comme nous le verrons d'une manière détaillée plus loin, une partie de la fonctionnalité des signaux de commande de relation d'horloge entre contrôleurs est de fournir une information de relation d'horloge au contrôleur 10 synchronisateur d'horloge de coeur 124 pour qu'il puisse engendrer ses signaux de commande de synchronisateur à une époque convenable par rapport aux signaux d'horloge de bus et de coeur.
D'une manière similaire à l'opération du 15 contrôleur synchronisateur d'horloge de bus 122, le contrôleur synchronisateur d'horloge de coeur 124 est opérable en réponse au core_ clock distribué, c 106', aux signaux de commande entre contrôleurs et à l'impulsion sync échantillonnée 118 pour engendrer une 20 pluralité de signaux de commande de synchronisateur, une partie desquels signaux est dirigée vers le premier moyen formant un circuit synchronisateur 105A et une autre partie desquels signaux est dirigée vers le deuxième moyen formant un circuit synchronisateur 105B. 25 Les références numériques 138 et 140 se rapportent aux chemins des signaux respectifs concernant ces signaux de commande. Le contrôleur synchronisateur d'horloge de coeur 124 engendre aussi des signaux de commande pour émettre/ recevoir des données qui sont fournis à la 30 logique du domaine d'horloge de coeur 103A par l'intermédiaire du chemin de signal 136 pour que la logique du domaine d'horloge de coeur 103A sache quand elle peut envoyer des données à la logique du domaine d'horloge de bus 103B (c'est-à-dire des opérations 35 d'émission valides) et quand elle peut recevoir des - 12 données de la logique du domaine d'horloge de bus 103B (c'est-à-dire des opérations de réception valides).
Tous les signaux de commande issus du contrôleur synchronisateur d'horloge de bus 122 et vers la premier 5 et le deuxième synchronisateur 105A, 105B sont organisés à travers d'un ou de plusieurs éléments FF qui sont cadencés avec le bus_ clock distribué, b 108'.
De la même manière, les signaux de commande issus du contrôleur synchronisateur d'horloge de coeur 124 sont 10 organisés au travers un certain nombre d'éléments FF cadencés par le core_ clock distribué, c 106', avant d'être fournis au diverses parties du système synchronisateur 100. Par conséquent, comme nous le verrons de manière plus détaillée plus loin, les divers 15 signaux de commande associés au système synchronisateur peuvent être désignés avec une étiquette de signal qui est concaténée avec un suffixe _ff ou ff B pour indiquer le processus d'alignement subi par le coreclock distribué ou le bus_ clock distribué.
Un détecteur de phase 130 détecte des différences de phase (c'est-à-dire des défauts d'alignement) entre les deux signaux d'horloge en opérant en réponse aux signaux bus_ clock et coreclock échantillonnés. Cette information est fournie au contrôleur synchronisateur 25 d'horloge de coeur 124, lequel peut compenser le défaut d'alignement ou déterminer des époques convenables pour coordonner avec le contrôleur synchronisateur d'horloge de bus 122.
Comme nous le verrons de manière plus détaillée 30 plus loin, là où le signal d'horloge de bus est stable par rapport à l'impulsion SYNC, les signaux de commande de relation d'horloge entre contrôleurs sont engendrés par le contrôleur synchronisateur d'horloge de bus 122 qui fournit des informations relatives au rapport de 35 fréquence du premier signal d'horloge et du deuxième - 13 signal d'horloge, des informations de séquence d'horloge et de retard de SYNC, lesquelles sont transmises au contrôleur synchronisateur d'horloge de coeur 124 pour synchroniser son signal d'horloge de coeur 5 conformément à ceux-ci. Par contre, là où le signal d'horloge de coeur est stable par rapport à l'impulsion SYNC, les signaux de commande de relation d'horloge entre contrôleurs sont engendrés par le contrôleur synchronisateur d'horloge de coeur 124 pour transmission 10 au contrôleur synchronisateur d'horloge de bus 122 de sorte que les deux contrôleurs synchronisateurs puissent être synchronisés d'une manière convenable. En outre, une interface pour configurer SYNC 126, étiquetée SYNC_config à la figure 1, est fournie comme 15 une partie du système synchronisateur programmable 100 pour configurer le contrôleur synchronisateur d'horloge de coeur 124 de manière qu'il puisse être programmé pour des tolérances de défaut d'alignement, des latences et des modes d'opération différents. Dans un mode de 20 réalisation, l'interface de configuration 126 peut être exécutée comme un registre ayant une pluralité de bits.
Dans un autre mode de réalisation, un réglage basé sur une mémoire, par exemple des réglages stockés en EPROM, peut être fourni comme interface pour configurer SYNC. 25 Comme nous l'avons exposé plus haut, le système synchronisateur d'horloge 100 est opérable pour être configuré pour différentes tolérances de défaut d'alignement et latences, de sorte qu'un transfert de données à haute vitesse puissent avoir lieu de manière 30 convenable même là où il y a un défaut d'alignement élevé ou une contrainte de latence faible. En outre, le système synchronisateur 100 peut opérer avec l'un quelconque des deux domaines d'horloge présentant un rapport de N cycles de la première horloge à M cycles 35 de la deuxième horloge, où N/ M 2 1. Pour des objets - 14 d'illustration, l'opération d'un mode de réalisation du système synchronisateur programmable 100 et de son arrangement contrôleur (c'est- à-dire la partie contrôleur synchronisateur d'horloge de bus 122 et la 5 partie contrôleur synchronisateur d'horloge de coeur 124), incluant un système et un procédé pour coordonner les parties constituantes du contrôleur est exposée en détail plus loin pour des domaines d'horloge présentant un rapport de fréquence de 5: 4.
En nous reportant maintenant à la figure 2, nous décrivons un diagramme de cadencement 200 associé à deux domaines d'horloge présentant un rapport de fréquence de 5: 4. A titre d'exemple, le signal core_ clock 106 est fourni comme l'horloge rapide et le 15 signal busclock 108 est fourni comme l'horloge lente.
Par conséquent, pour chaque cinq coups de core_ clock, il y a quatre coups de bus clock. Comme nous y avons fait allusion plus haut, l'impulsion SYNC 110 est engendrée quand un front montant du signal core_ clock 20 106 coïncide avec un front montant du signal busclock 108, ce qui commence une fenêtre de séquence de cadencement 204 pour le transfert des données, qui peut comprendre des données larges de k bits (k 2 1), depuis un domaine d'horloge à l'autre domaine d'horloge. Un 25 compte de cycles 202 se rapporte à la numérotation des cycles de core clock dans une séquence de cadencement particulière 204.
Comme nous l'avons remarqué plus haut, l'impulsion SYNC est pilotée à l'état HAUT sur des coïncidences de 30 fronts montants des signaux d'horloge et les opérations de transfert de données au travers de la frontière d'horloge entre les deux domaines d'horloge sont cadencées en référence à l'impulsion SYNC. Dans une condition normale où il n'y a pas de défaut 35 d'alignement (ou gigue, comme on y fait parfois référence) entre les signaux d'horloge, les fronts coïncidents se produisent sur les fronts montants du premier cycle (cycle 0) comme nous le montrons à la figure 2. Puisqu'il y a cinq cycles core_ clock et 5 seulement quatre cycles bus_ clock, la circuiterie du premier domaine d'horloge ne peut pas émettre de donnée pendant un cycle, en provoquant ce qui est connu sous le nom de coup mort , puisque la circuiterie du deuxième domaine d'horloge n'a pas la fenêtre 10 temporelle en correspondance pour le recevoir. De manière typique, le cycle qui est le moins tolérant à un défaut d'alignement est celui où la donnée n'est pas émise. De la même manière, du fait d'un cycle supplémentaire (où la donnée est indéterminée et/ ou 15 invalide), la circuiterie du premier domaine d'horloge ne peut pas recevoir de donnée pendant un cycle. A nouveau, c'est le cycle qui est le moins tolérant à un défaut d'alignement pendant lequel la donnée n'est pas reçue par la circuiterie du premier domaine d'horloge. 20 Un défaut d'alignement entre les signaux d'horloge peut provoquer, par exemple, un désaccord dans le placement de l'impulsion SYNC ce qui affecte les opérations de transfert entre les deux domaines. Dans le scénario du rapport de fréquence de 5: 4 exemplaire 25 cité plus haut, si bus clock 108 devance core clock 106 d'un quart de cycle par exemple, alors au lieu de coïncider au départ du cycle 0, les fronts coïncideront au départ du cycle 1. D'une manière similaire, si le signal bus clock 108 suit le signal core clock 106 d'un 30 quart de cycle, les fronts coïncideront au départ du dernier cycle (c'est-à-dire du cycle 4). Indépendamment du défaut d'alignement entre les cycles d'horloges, cependant, il y aura un cycle où une donnée ne peut pas être émise et un cycle où une donnée ne peut pas être 35 reçue, dans la perspective de la circuiterie du domaine - 16 de l'horloge de coeur.
Les demandes de brevet des Etats-Unis qui font suite, déposées par le même titulaire et en cours de dépôt, décrivent les différents blocs et sous-systèmes 5 fonctionnels du système synchronisateur d'horloge programmable 100 de manière plus détaillée en ce qui concerne la fourniture de la fonctionnalité globale consistant à prendre le contrôle des synchronisateurs d'horloge de bus et d'horloge de coeur de manière à 10 synchroniser convenablement des opérations de transfert de données même sous des contraintes de défaut d'alignement et de latence variables: (i) Programmable Clock Synchroniser (Synchronisateur programmable pour horloge), déposée le demande numéro; (Extrait numéro 200207722-2), au(x) nom(s) de Richard W. Adkison; (ii) Controller Arrangement for a Programmable Clock Synchroniser (Arrangement contrôleur pour un synchronisateur d'horloge programmable), déposée le 20; demande numéro; (Extrait numéro 200207723-1), au(x) nom(s) de Richard W. Adkison; (iii) System and Method for Maintaining a Stable Synchronisation State in a Programmable Clock Synchroniser (Système et procédé pour maintenir un 25 état de synchronisation stable dans un synchronisateur d'horlogeprogrammable), déposée le demande numéro; (Extrait numéro 200208008-1), au(x) nom(s) de Richard W. Adkison; (iv) System and Method for Compensating for Skew between a 30 First Clock Signal and a Second Clock Signal (Système et procédé pour compenser un défaut d'alignement entre un premier signal d'horloge et un deuxième signal d'horloge), déposée le; demande numéro (Extrait numéro 200208009-1), au(x) 35 nom(s) de Richard W. Adkison; et (v) Phase Detector - 17 for a Programmable Clock Synchroniser Signal (Détecteur de phase pour synchronisateur d'horloge programmable), déposée le; demande numéro; (Extrait numéro 200208010-1), au(x) nom(s) de Richard W. Adkison.
Dans l'exposé présenté immédiatement ci-dessous, un système et un procédé pour coordonner deux contrôleurs synchronisateurs disposés dans des domaines d'horloge différents, par exemple un contrôleur 10 synchronisateur d'horloge de bus disposé dans le domaine d'horloge de bus et un contrôleur synchronisateur d'horloge de coeur disposé dans le domaine d'horloge de coeur, seront maintenant décrits selon une manière particulièrement détaillée.
La figure 3 représente un diagramme par blocs d'un mode de réalisation d'une partie contrôleur synchronisateur d'horloge de bus 300 qui est opérable comme contrôleur synchronisateur 122 pour prendre le contrôle du circuit synchronisateur bus-vers-coeur 105B 20 montré à la figure 1. Comme nous l'illustrons, plusieurs blocs fonctionnels, qui peuvent être exécutés en utilisant une circuiterie logique quelconque, sont fournis comme une partie de la partie contrôleur synchronisateur d'horloge de bus 300 pour engendrer un 25 certain nombre de signaux de commande de relation d'horloge entre contrôleurs, dont une partie est utilisée de manière interne pour engendrer un jeu de signaux de commande de synchronisateur du domaine du bus vers les synchronisateurs bus-vers- coeur et coeur30 vers-bus. Un bloc compteur de synchro 302 est opérable en réponse au SYNC échantillonné, c'est-à-dire sync_B 120, ainsi qu'à bus clock distribuée, b 108' (non montré dans cette figure) pour engendrer un signal large de M bits qui indique un compte d'impulsions 35 SYNC. En général, M = log2(N + 1), où N est le nombre - 18 de cycles dans le domaine d'horloge lente. Par exemple, là où un rapport d'horloge de [8: 7] est employé, M = log2(7 + 1) = 3, et on engendre un signal large de 3 bits. Un bloc détecteur de rapport 304 opère en réponse 5 au signal large de M bits ainsi qu'aux signaux sync_B 120 et b 108' pour déterminer le rapport de fréquence des horloges employées dans le système synchronisateur 100 et engendre un signal de commande de relation d'horloge, c'est-à-dire un signal de rapport de 10 fréquence d'horloge, désigné ici par syncratioB 314.
Comme nous le verrons plus loin, ce signal et un autre signal de commande de relation d'horloge entre contrôleurs sont fournis à la partie contrôleur synchronisateur d'horloge de coeur pour coordonner sa 15 fonctionnalité relativement au signal bus_ clock.
Un bloc générateur de cycle 306 est opérable en réponse au signal syncratioB 314 ainsi qu'aux signaux sync B 120 et b 108' pour engendrer un signal d'information de cycle 307 indicateur d'un cycle 20 courant de bus d'horloge. Un bloc générateur de séquence 308 est fourni pour engendrer un autre signal de commande de relation d'horloge entre contrôleurs, sequence_B 316, en réponse au signal sync_ratio_B 314 ainsi qu'aux signaux syncB 120 et b 108'. Celui qui a 25 des compétences dans la technique appréciera que les signaux d'information de cycle et sequenceB opèrent pour identifier de manière unique des horloges de bus différentes dans le système synchronisateur 100. Un bloc retardateur de synchro 312 est chargé d'engendrer 30 un autre signal de commande de relation d'horloge entre contrôleurs, syncbOB 318, vers la partie contrôleur synchronisateur d'horloge de coeur de l'arrangement contrôleur. A titre d'exécution, le bloc retardateur de synchro 312 est opérable pour retarder le signal syncB 35 d'un certain nombre de cycles d'horloge de bus pour - 19 identifier le début attendu d'un cycle d'horloge de bus initial.
Un bloc générateur de signal de commande de synchronisateur du domaine de bus 310 est opérable en 5 réponse au signal d'information de cycle (qui numérote chaque cycle d'horloge de bus), au signal sequence_B, (qui numérote une séquence coups d'horloge de bus) et au signal syncratio B 314 pour engendrer un jeu de signaux de commande de synchronisateur du domaine de 10 bus, soit des signaux bO_ sel_ B et blsel B vers le synchronisateur bus-vers-coeur 105B et un signal bussel B vers le synchronisateur ceur-vers-bus 105A, qui fonctionnent comme nous l'avons décrit dans les demandes de brevets des Etats-Unis objet des références 15 croisées présentes. Comme nous l'y avons exposé, le bloc générateur de signal de commande du synchronisateur du domaine de bus 310 opère essentiellement pour engendrer un motif fixe sur ces signaux de commande pour chaque horloge de bus 20 différente (sur la base des entrées de cycle, de séquence et de rapport d'horloge).
En opération, le bloc compteur de synchro 302 est opérable pour compter le nombre de cycles pendant lesquels le signal sync B 120 est à l'état BAS après 25 l'apparition de l'impulsion SYNC. Le compteur 320 se vide par conséquent lorsque sync_B est à un et ne dépasse pas le rapport maximum. Comme nous l'avons remarqué plus haut, cette information est utilisée par le bloc détecteur de rapport 304 (qui se charge lorsque 30 sync_B est à un) pour déterminer le rapport de fréquence de l'horloge de coeur à l'horloge de bus. Par exemple, trois durées à l'état BAS seraient détectées dans l'exemple 5: 4 montré à la figure 2. Par suite, le nombre de cycles d'horloge de bus est de 3 + 1 = 4 35 et par conséquent, le rapport est de 4 + 1: 4 soit - 20 5: 4. Si le SYNC était constamment à l'état HAUT ou BAS, le rapport serait de 1: 1.
Ceux qui ont de compétences dans la technique apprécieront en outre que la précédente méthodologie 5 consistant à déterminer des rapports d'horloge (sur la base de l'opération du compteur de synchro 302 et du détecteur de rapport 304 de la partie du contrôleur synchronisateur d'horloge de bus 300 pour échantillonner le signal SYNC) fonctionne bien pour 10 tous les rapports N + 1: N sauf pour le rapport 2: 1.
Ainsi la fonctionnalité consistant à échantillonner SYNC par un bloc compteur de synchro et détecteur de rapport peut être fournie dans une partie contrôleur synchronisateur d'horloge de coeur, laquelle échantillonne le signal SYNC (ou sa variante sync) en utilisant le core_ clock pour déterminer le nombre de cycles pendant lequel le signal de synchro est à l'état BAS.
Le bloc générateur de cycle est 306 est opérable 20 comme un compteur qui se vide sur le premier cycle (quand sync_B est à un) et qui autrement compte les cycles. Par conséquent, le bloc générateur de cycle 306 identifie chaque cycle de bus d'horloge. Le bloc générateur de séquence 308 fournit en sortie tout 25 d'abord une séquence de zéros mais bascule à chaque fois que sync_B est à l'état HAUT. En conséquence, cette opération définit une séquence initiale, qui peut être identifiée de manière arbitraire comme séquence 0, suivie par une séquence 1, puis par une séquence 0, et 30 ainsi de suite.
Comme nous y avons fait allusion plus haut, le bloc retardateur de synchro 312 retarde syncB d'un certain nombre de cycles de bus d'horloge basé sur le rapport d'horloge de telle manière que sa sortie, 35 c'est-à- dire un signal delayedsync ( synchro - 21 retardée ) qui est désigné par syncb_O 318, soit à l'état HAUT sur le cycle 0 de l'horloge de bus (le cycle que suit le passage de SYNC à l'état HAUT) . Par conséquent, les composants logiques de la partie 5 contrôleur synchronisateur d'horloge de bus 300 opèrent pour définir le rapport de fréquence des horloges, le cycle initial (c'est-à-dire le cycle 0), et la séquence initiale, (c'est-à-dire la séquence 0), lesquelles information sont transmises à une partie contrôleur 10 synchronisateur d'horloge de coeur par l'intermédiaire des signaux de relation entre contrôleurs (syncratio_B 314, sequence_B 316 et syncbO_ 318), qui s'aligne alors sur le cycle O et la séquence O de sorte que les signaux de commande de bus et de coeur soient 15 synchronisés d'une manière convenable.
En nous reportant maintenant à la figure 4, nous décrivons sous forme d'un diagramme par blocs un mode de réalisation d'une partie contrôleur synchronisateur d'horloge de coeur 400, opérable comme contrôleur 20 synchronisateur 124 du système synchronisateur programmable 100 présenté plus haut. Plusieurs blocs fonctionnels sont illustrés pour capturer de manière concise la fonctionnalité globale de la partie contrôleur synchronisateur d'horloge de coeur 400, 25 laquelle opère, pour l'essentiel, pour engendrer un jeu de signaux de commande de synchronisateur du domaine de coeur vers les synchronisateurs respectifs 105A, 105B en réponse à l'impulsion sync échantillonnée 118, aux signaux de commande de relation d'horloge 30 entre contrôleurs 314, 316, 318 et aux informations de configuration fournies par l'intermédiaire l'interface pour configurer SYNC 126. Ces signaux de commande de synchronisateur de domaine de coeur fonctionnent comme nous l'avons décrit dans les précédentes demandes de 35 brevets des Etats-Unis objets des références croisées, - 22 pour effectuer un transfert de données synchronisé. En outre, comme nous le verrons plus loin, les signaux de commande de relation d'horloge entre contrôleurs sont utilisés par des composants sélecteurs de la partie 5 contrôleur synchronisateur d'horloge de coeur pour coordonner le cycle et la séquence du signal d'horloge de coeur relativement au signal d'horloge de bus, comme une partie de la fonctionnalité globale de la partie contrôleur synchronisateur d'horloge de coeur même où 10 des rapports d'horloge différents sont employés sous des contraintes de défaut d'alignement ou de latence variables.
Un bloc échantillonnant le rapport de synchro 402 reçoit le sync_ratio_B large de M bits 314 de la partie 15 contrôleur synchronisateur d'horloge de bus 300 pour engendrer un signal syncratio qui est échantillonné dans le domaine d'horloge de coeur en utilisant le core_ clock distribué c 106'. La figure 5B décrit un mode de réalisation exemplaire du bloc échantillonnant 20 le rapport de synchro 402 qui synchronise les signaux syncratio B issus du domaine d'horloge de bus en les échantillonnant deux fois (pour éliminer une métastabilité) avec deux étages de bascules cadencées dans le domaine d'horloge de coeur pour engendrer un 25 signal sync_ratio 143. Puisque le rapport de fréquence des horloges ne doit pas changer une fois que le rapport est détecté dans le domaine d'horloge de bus (et échantillonné dans le domaine d'horloge de coeur), le système pour coordonner les contrôleurs 30 synchronisateurs d'horloge de bus et d'horloge de coeur assure que la valeur est stable en utilisant un bloc détecteur d'état stable 412 de la partie contrôleur synchronisateur d'horloge de coeur. Comme nous l'avons décrit dans la demande de brevet des Etats-Unis dont le 35 titre est System and Method for Maintaining a Stable - 23 Synchronisation State in a Programmable Clock Synchroniser (Système et procédé pour maintenir un état de synchronisation stable dans un synchronisateur d'horloge programmable), déposée le demande numéro; (Extrait numéro 200208008-1), le bloc détecteur d'état stable 412 attend tout d'abord que le rapport d'horloge soit stabilisé en déterminant que les signaux syncratio ne changent pas pendant un certain nombre de cycles 10 d'horloge dans le domaine d'horloge de coeur.
La partie contrôleur synchronisateur d'horloge de coeur 400 synchronise le signal sequence_B 316 issu du domaine d'horloge de bus en utilisant un bloc échantillonneur de séquence 404 qui en réponse à 15 sequence_B 316 opère pour engendrer des signaux sequencecr (en échantillonnant sur le front montant de l'horloge c) et sequencecf (en échantillonnant sur le front descendant de l'horloge c), de références numériques 420A et 420B, respectivement, qui sont 20 utilisés par un bloc détecteur de séquence de précision 422 et un générateur de cycle et de séquence 414. De la même manière, un bloc échantillonnant delayedsync ou un bloc échantillonnant syncb0_B 408 opère en réponse à syncb0_B 318 pour engendrer des signaux syncb0_cr et 25 syncb0_cf 424A, 424B. Les figures 5C et 5D représentent, respectivement, les modes de réalisation du bloc échantillonnant les séquences 404 et du bloc échantillonnant syncbO_B 408.
L'impulsion sync 118 fournie par la logique 30 échantillonnant SYNC 116 est détectée par un bloc détecteur d'impulsion de synchro 410 pour engendrer un signal de synchro interne, sync_redge ( front montant de la synchro ) 426. La figure 5E montre un mode de réalisation du bloc détecteur d'impulsion de synchro 35 410 pour détecter une séquence 010 sur l'impulsion - 24 de synchro, indiquant une impulsion de synchro fiable (sinon, il peut y avoir trop de défaut d'alignement de l'horloge).
Sur la base de l'exposé précédent, on reconnaîtra 5 que le bloc échantillonnant le rapport de synchro 402, le bloc échantillonnant une séquence 404, le bloc échantillonnant synb0 408, en conjonction avec le bloc détecteur d'impulsion de synchro 410, opèrent pour engendrer un jeu de signaux de commande internes (ou 10 des signaux de commande intermédiaires utilisés de manière interne par rapport à la partie contrôleur synchronisateur d'horloge de coeur 400) qui fournissent le fonctionnalité nécessaire pour coordonner le signal core_ clock relativement au signal bus clock. La partie 15 contrôleur synchronisateur d'horloge de coeur 400 est opérable pour aligner son cycle sur l'information d'horloge fournie par le contrôleur synchronisateur d'horloge de bus, en faisant en sorte que son bloc générateur de cycle et de séquence 414 utilise 20 syncredge 426 (quand la sortie du bloc détecteur d'état stable 412, c'est-à-dire le signal stable state ( état stable ) est à zéro) pour charger le cycle attendu, lequel dépend de syncratio et du nombre de registres disposés entre SYNC et syncredge. Sinon, c'est-à-dire si le signal stable state n'est pas égal à zéro ou si syncredge n'est pas à l'état vrai, un zéro est chargé sur le dernier cycle (à nouveau selon le sync_ratio), sinon le compteur de cycle est incrémenté.
En opération normale, la partie contrôleur 30 synchronisateur d'horloge de coeur aligne la séquence de l'horloge de coeur par rapport à la séquence de l'horloge de bus en la chargeant à partir de la sequencecf 420 au milieu de la séquence (qui dépend des informations syncratio et cycle). Cette valeur de 35 séquence est simplement inversée sur le dernier cycle 25 (à nouveau selon les valeurs de sync_ratio et de cycle). Comme nous le montrons à la figure 5C, sequence_B 316 est échantillonné à la fois sur les fronts montants et descendants du signal core_ clock 5 dans des chaînes échantillonnant en parallèle de manière à minimiser les écarts d'impulsion d'horloge ou SYNC. Pour d'autres modes d'opération du contrôleur synchronisateur qui poursuivent le défaut d'alignement de l'horloge d'une manière plus précise, d'autres 10 signaux intermédiaires, par exemple, sequencecr 420B, syncbOcr 424A et syncb0_cf 424B, peuvent être utilisés pour charger une valeur de séquence alignée de manière convenable par rapport au signal core_ clock. Ces opérations peuvent être effectuées dans le bloc 15 générateur de cycle et de séquence 414 qui est opérable en réponse aux divers signaux de commande internes pour engendrer des signaux de cycle et de séquence convenables valides pour le domaine d'horloge de coeur qui identifient de manière unique des cycles d'horloge 20 de coeur différents.
Outre la circuiterie logique décrite plus haut, la partie contrôleur synchronisateur d'horloge de coeur 400 inclut aussi un détecteur d'état de défaut d'alignement 416 (fourni pour engendrer un signal de commande d'état 25 de défaut d'alignement, un signal de détection de phase (pdz) et un signal sync_locked ( synchro verrouillée ), qui sont fournis à divers blocs fonctionnels décrits plus haut pour engendrer d'autres signaux de commande internes) et un générateur de 30 signal de synchronisateur de domaine de coeur 418 qui est opérable en réponse à un signal de commande skew state ( état de défaut d'alignement ) (indicatif d'une relation courante de défaut d'alignement entre les signaux d'horloge de bus et d'horloge de coeur), une 35 information de configuration (par l'intermédiaire du - 26 signal syncconfig) et les signaux de commande internes, c'est-à-dire les signaux d'horloge et de séquence et le signal syncratio échantillonné (indicatif de la valeur du rapport d'horloge, par 5 exemple 5: 4, 4: 3, 1: 1 et cetera), pour engendrer un jeu de signaux de commande de synchronisateur du domaine de coeur vers les synchronisateurs respectifs 105A, 105B. Des détails supplémentaires concernant la fonctionnalité globale de ces blocs et signaux peut 10 être trouvés dans les demandes de brevets des EtatsUnis objets des références croisées mentionnées plus haut.
La figure 6 représente un organigramme des différentes opérations d'un procédé conforme à un mode 15 de réalisation de l'invention pour coordonner deux contrôleurs synchronisateurs disposés dans des domaines d'horloge différents. D'une manière grossière, le procédé pour coordonner consiste à engendrer un jeu de signaux de commande de relation d'horloge entre 20 contrôleurs dans un domaine et à les passer à l'autre domaine, par lesquels la circuiterie du contrôleur dans ce domaine peut aligner son signal d'horloge de manière convenable. Comme nous l'avons expliqué dans l'exposé précédent, là où le rapport de fréquence des horloges 25 est de N + 1: N, sauf pour 2: 1, les signaux de relation d'horloge entre contrôleurs sont engendrés dans le domaine d'horloge plus lente, par exemple un domaine d'horloge de bus, dans la circuiterie de son contrôleur synchronisateur, et ils sont ensuite 30 transmis au domaine d'horloge plus rapide, par exemple un domaine d'horloge de coeur. Par contre, là où le rapport de fréquence des horloges est de 2: 1, l'engendrement des signaux de relation d'horloge entre contrôleurs peut être effectué dans la circuiterie du 35 contrôleur synchronisateur de l'horloge plus rapide - 27 pour transmission à la circuiterie du contrôleur synchronisateur du domaine d'horloge plus lente.
Dans le mode de réalisation représenté à la figure 6, les informations de cycle d'horloge, c'est-à-dire 5 les valeurs initiales du cycle et de la séquence d'horloge, ainsi que le rapport des fréquences (c'està-dire le rapport de synchro) sont déterminés et identifiés dans le domaine d'horloge de bus par son contrôleur synchronisateur (blocs 602 et 604). Ensuite, 10 un jeu de signaux de commande de relation d'horloge entre contrôleurs, indicatif des informations du cycle du rapport et d'horloge est transmis au contrôleur synchronisateur d'horloge de coeur (bloc 606). En réponse aux signaux de commande de relation d'horloge 15 entre contrôleurs, le signal core_ clock est synchronisé sur l'horloge de bus, c'est-à-dire, le cycle et la séquence de l'horloge de coeur sont alignés relativement aux informations de cycle et de séquence de l'horloge de bus (bloc 610). En outre, des composants logiques 20 disposés dans le domaine d'horloge de coeur assurent que le rapport de synchro est stabilisé (bloc 608), ce qui fait partie du processus global pour synchroniser le contrôleur.
Sur la base de la précédente description 25 détaillée, on appréciera que le mode de réalisation de l'arrangement contrôleur présenté ici peut être programmé pour diverses tolérances de latence et de défaut d'alignement pour transférer des données à travers une frontière d'horloge entre deux domaines 30 d'horloge quelconques présentant un rapport N: M quelconque (par exemple M = N - 1) dans lequel il est avantageux d'avoir un contrôleur dans un domaine d'horloge pour prendre le contrôle de son synchronisateur et un autre contrôleur dans l'autre 35 domaine d'horloge pour prendre le contrôle de son - 28 synchronisateur.
Bien que l'invention ait été décrite de manière particulière en référence à certaines illustrations, il faut comprendre que les formes de l'invention montrées 5 et décrites ne doivent être traitées que comme des exemples de modes de réalisation. Divers changements, substitutions et modifications peuvent être réalisés sans s'éloigner de l'esprit et de la portée de l'invention telle qu'elle est définie dans les 10 revendications jointes. - 29
Claims (10)
1. Système pour coordonner des contrôleurs synchronisateurs (122, 124) disposés dans un arrangement synchronisateur d'horloge, ledit arrangement synchronisateur d'horloge permettant d'effectuer un transfert de données entre un domaine d'horloge de coeur et un domaine d'horloge de bus dans lequel ledit système d'horloge de coeur est opérable avec un signal d'horloge de coeur (106) et ledit domaine 10 d'horloge de bus est opérable avec un signal d'horloge de bus (108), lesdits signaux d'horloge de coeur et d'horloge de bus (106, 108) présentant un certain rapport, comprenant: une circuiterie disposée dans une partie 15 contrôleur synchronisateur d'horloge de bus (300) pour engendrer un jeu de signaux de commande de relation d'horloge entre contrôleurs (314, 316, 318) ; et une circuiterie disposée dans une partie contrôleur synchronisateur d'horloge de coeur (400) 20 opérant en réponse au dit jeu de signaux de commande de relation d'horloge entre contrôleurs (314, 316, 318) pour synchroniser des informations de cycle et de séquence associées au dit signal d'horloge de coeur (106) relativement au dit signal d'horloge de bus 25 (108).
2. Système pour coordonner des contrôleurs synchronisateurs (122, 124) disposés dans un arrangement synchronisateur d'horloge tel que 30 revendiqué dans la revendication 1, dans lequel ladite circuiterie disposée dans ladite partie contrôleur synchronisateur d'horloge de bus (300) pour engendrer un jeu de signaux de commande de relation d'horloge entre contrôleurs (314, 316, 318) est opérable en - 30 réponse à une impulsion SYNC (110) qui est échantillonnée dans ledit domaine d'horloge de bus par ledit signal d'horloge de bus (108).
3. Système pour coordonner des contrôleurs synchronisateurs (122, 124) disposés dans un arrangement synchronisateur d'horloge tel que revendiqué dans la revendication 2, dans lequel ladite impulsion SYNC (110) est engendrée par une boucle à 10 verrouillage de phase (PLL) (104) quand un front montant dans ledit signal d'horloge de coeur (106) coïncide au moins de manière sensible avec un front montant dans ledit signal d'horloge de bus (108).
4. Système pour coordonner des contrôleurs synchronisateurs (122, 124) disposés dans un arrangement synchronisateur d'horloge tel que revendiqué dans la revendication 2 ou la revendication 3, dans lequel ladite circuiterie disposée dans ladite 20 partie contrôleur synchronisateur d'horloge de coeur (400) est opérable en réponse à ladite impulsion SYNC (110) qui est échantillonnée dans ledit domaine d'horloge de coeur par ledit signal d'horloge de coeur (106).
5. Procédé pour coordonner des contrôleurs synchronisateurs (122, 124) disposés dans un arrangement synchronisateur d'horloge, ledit arrangement synchronisateur d'horloge permettant 30 d'effectuer un transfert de données entre un domaine d'horloge de coeur et un domaine d'horloge de bus dans lequel ledit système d'horloge de coeur est opérable avec un signal d'horloge de coeur (106) et ledit domaine d'horloge de bus est opérable avec un signal d'horloge 35 de bus (108), lesdits signaux d'horloge de coeur et - 31 d'horloge de bus (106, 108) présentant un certain rapport, comprenant les étapes consistant à : engendrer un jeu de signaux de commande de relation d'horloge entre contrôleurs (314, 316, 318) dans une partie contrôleur synchronisateur d'horloge de bus (300) ; et synchroniser, en étant sensible au dit jeu de signaux de commande de relation d'horloge entre contrôleurs (314, 316, 318), des informations de cycle 10 et de séquence associées au dit signal d'horloge de coeur (106) relativement au dit signal d'horloge de bus (108) dans une partie contrôleur synchronisateur d'horloge de coeur (400).
6. Procédé pour coordonner des contrôleurs synchronisateurs (122, 124) disposés dans un arrangement synchronisateur d'horloge tel que revendiqué dans la revendication 5, dans lequel lesdits signaux de commande de relation d'horloge entre 20 contrôleurs (314, 316, 318) sont engendrés en réponse à une impulsion SYNC (110) qui est échantillonnée dans ledit domaine d'horloge de bus par ledit signal d'horloge de bus (108).
7. Procédé pour coordonner des contrôleurs synchronisateurs (122, 124) disposés dans un arrangement synchronisateur d'horloge tel que revendiqué dans la revendication 6, dans lequel ladite impulsion SYNC (110) est engendrée par une boucle à 30 verrouillage de phase (PLL) (104) quand un front montant dans ledit signal d'horloge de coeur (106) coïncide au moins de manière sensible avec un front montant dans ledit signal d'horloge de bus (108).
8. Procédé pour coordonner des contrôleurs - 32 synchronisateurs (122, 124) disposés dans un arrangement synchronisateur d'horloge tel que revendiqué dans la revendication 6 ou la revendication 7, dans lequel ladite opération consistant à 5 synchroniser des informations de cycle et de séquence associées au dit signal d'horloge de coeur (106) relativement au dit signal d'horloge de bus (108) est effectuée en dépendance de ladite impulsion SYNC (110) qui est échantillonnée dans ledit domaine d'horloge de 10 coeur par ledit signal d'horloge de coeur (106).
9. Procédé pour coordonner des contrôleurs synchronisateurs (122, 124) disposés dans un arrangement synchronisateur d'horloge tel que 15 revendiqué dans la revendication 5, la revendication 6, la revendication 7 ou la revendication 8, dans lequel ledit jeu de signaux de commande de relation d'horloge entre contrôleurs (314, 316, 318) inclut un signal de commande (314) indicatif d'un rapport de fréquence des 20 horloges associées au dit signal d'horloge de bus (108) et au dit signal d'horloge de coeur (106).
10. Procédé pour coordonner des contrôleurs synchronisateurs (122, 124) disposés dans un 25 arrangement synchronisateur d'horloge tel que revendiqué dans la revendication 9, incluant en outre une étape consistant à déterminer que ledit rapport de fréquence des horloges associées au dit signal d'horloge de bus (108) et au dit signal d'horloge de 30 coeur (106) est stable pour synchroniser des informations de cycle et de séquence associées au dit signal d'horloge de coeur (106).
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/629,989 US7194650B2 (en) | 2003-05-09 | 2003-07-30 | System and method for synchronizing multiple synchronizer controllers |
Publications (1)
Publication Number | Publication Date |
---|---|
FR2858434A1 true FR2858434A1 (fr) | 2005-02-04 |
Family
ID=34063418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0406448A Pending FR2858434A1 (fr) | 2003-07-30 | 2004-06-15 | Systeme et procede pour synchroniser plusieurs controleurs synchronisateurs |
Country Status (2)
Country | Link |
---|---|
US (1) | US7194650B2 (fr) |
FR (1) | FR2858434A1 (fr) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7100065B2 (en) * | 2003-05-09 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Controller arrangement for synchronizer data transfer between a core clock domain and bus clock domain each having its own individual synchronizing controller |
US7272736B2 (en) * | 2004-03-03 | 2007-09-18 | Intel Corporation | Method and system for fast frequency switch for a power throttle in an integrated device |
US7340631B2 (en) * | 2004-07-23 | 2008-03-04 | Hewlett-Packard Development Company, L.P. | Drift-tolerant sync pulse circuit in a sync pulse generator |
US7983372B2 (en) * | 2008-02-14 | 2011-07-19 | International Business Machines Corporation | Method, system and computer program product for an even sampling spread over differing clock domain boundaries |
WO2013100976A1 (fr) * | 2011-12-28 | 2013-07-04 | Intel Corporation | Transfert de données entre des domaines d'horloge asynchrones |
JP6368034B2 (ja) * | 2015-03-20 | 2018-08-01 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
US12026510B1 (en) * | 2023-01-10 | 2024-07-02 | SiMa Technologies, Inc. | Using cycle counts to serve compute elements executing statically scheduled instructions for a machine learning accelerator |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US199124A (en) * | 1878-01-08 | Improvement in adjustable hammers for fire-arms | ||
US158671A (en) * | 1875-01-12 | Improvement in feed-rollers for planing-machines | ||
US51509A (en) * | 1865-12-12 | colbuen | ||
US5539345A (en) * | 1992-12-30 | 1996-07-23 | Digital Equipment Corporation | Phase detector apparatus |
US5721886A (en) * | 1995-11-30 | 1998-02-24 | Ncr Corporation | Synchronizer circuit which controls switching of clocks based upon synchronicity, asynchronicity, or change in frequency |
US6084934A (en) * | 1997-03-06 | 2000-07-04 | International Business Machines Corporation | Natural throttling of data transfer across asynchronous boundaries |
US6175603B1 (en) * | 1997-08-07 | 2001-01-16 | Cisco Technology, Inc. | System for managing signals in different clock domains and a programmable digital filter |
GB9720811D0 (en) * | 1997-09-30 | 1997-12-03 | Sgs Thomson Microelectronics | Dual port buffer |
US6075832A (en) * | 1997-10-07 | 2000-06-13 | Intel Corporation | Method and apparatus for deskewing clock signals |
US6037809A (en) * | 1998-06-02 | 2000-03-14 | General Electric Company | Apparatus and method for a high frequency clocked comparator and apparatus for multi-phase programmable clock generator |
US6166963A (en) * | 1998-09-17 | 2000-12-26 | National Semiconductor Corporation | Dual port memory with synchronized read and write pointers |
US6369624B1 (en) * | 1998-11-03 | 2002-04-09 | Altera Corporation | Programmable phase shift circuitry |
US6448820B1 (en) | 1998-11-04 | 2002-09-10 | Altera Corporation | Fast locking phase frequency detector |
US6114915A (en) * | 1998-11-05 | 2000-09-05 | Altera Corporation | Programmable wide-range frequency synthesizer |
US6161188A (en) * | 1998-11-17 | 2000-12-12 | Ip-First, L.L.C. | Microprocessor having fuse control and selection of clock multiplier |
US6157233A (en) * | 1998-12-16 | 2000-12-05 | Intel Corporation | Always-deterministic phase-locked loop |
JP2001051747A (ja) * | 1999-08-12 | 2001-02-23 | Fujitsu Ltd | クロック制御回路 |
US6516362B1 (en) * | 1999-08-23 | 2003-02-04 | Advanced Micro Devices, Inc. | Synchronizing data between differing clock domains |
JP3919990B2 (ja) * | 1999-11-10 | 2007-05-30 | 富士通株式会社 | タイミング同期システム、そのシステムに用いられる装置およびタイミング同期方法 |
DE10048590B4 (de) | 2000-09-30 | 2008-02-28 | Infineon Technologies Ag | Phasenregelkreis |
US20020199124A1 (en) | 2001-06-22 | 2002-12-26 | Adkisson Richard W. | System and method for synchronizing data transfer across a clock domain boundary |
US7096377B2 (en) * | 2002-03-27 | 2006-08-22 | Intel Corporation | Method and apparatus for setting timing parameters |
-
2003
- 2003-07-30 US US10/629,989 patent/US7194650B2/en active Active
-
2004
- 2004-06-15 FR FR0406448A patent/FR2858434A1/fr active Pending
Also Published As
Publication number | Publication date |
---|---|
US7194650B2 (en) | 2007-03-20 |
US20040225909A1 (en) | 2004-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7239681B2 (en) | System and method for maintaining a stable synchronization state in a programmable clock synchronizer | |
EP3375092B1 (fr) | Procédé de synchronisation de convertisseurs de données par un signal transmis de proche en proche | |
CA2046241C (fr) | Dispositif de serialisation et de deserialisation de donnees et systeme de transmission numerique de donnees en serie en resultant | |
JP4808769B2 (ja) | 多ピンの非同期シリアル・インターフェースで転送されるデータを同期化するための方法及び装置 | |
EP1441443A2 (fr) | Boucle de verrouillage de phase numérique et procédé | |
JP5086014B2 (ja) | データリカバリ方法およびデータリカバリ回路 | |
JP2004506974A (ja) | 複数クロックシステムにおいてスキップパターンを同期させ、クロック送りインターフェイスを初期設定するためのシステムおよび方法 | |
JP4141885B2 (ja) | シリアル通信装置 | |
FR2742614A1 (fr) | Appareil pour la resynchronisation de donnees numeriques a grande vitesse | |
FR2522903A1 (fr) | Procede et circuit pour produire des signaux d'horloge synchrone | |
FR2734966A1 (fr) | Diviseur programmable rapide | |
FR2858434A1 (fr) | Systeme et procede pour synchroniser plusieurs controleurs synchronisateurs | |
US7194057B2 (en) | System and method of oversampling high speed clock/data recovery | |
US7100065B2 (en) | Controller arrangement for synchronizer data transfer between a core clock domain and bus clock domain each having its own individual synchronizing controller | |
EP3716523B1 (fr) | Procédé de synchronisation de données numériques envoyées en série | |
FR2865326A1 (fr) | Procede et dispositif de division de frequence | |
KR101517719B1 (ko) | 신호 처리 장치 및 방법 | |
US6928574B1 (en) | System and method for transferring data from a lower frequency clock domain to a higher frequency clock domain | |
JP5000635B2 (ja) | 多ピン非同期シリアル・インタフェース全体に転送されるデータをビット同期する方法および装置 | |
US6571346B1 (en) | Elastic interface for master-slave communication | |
JP3973149B2 (ja) | データリカバリ回路とデータリカバリ方法 | |
EP4033680A1 (fr) | Procédé de synchronisation de domaines temporels d'un système sur puce | |
EP0082901B1 (fr) | Dispositif de synchronisation d'horloge et de données dans un système de transmission | |
US20010028693A1 (en) | Method and circuit for glithch-free changing of clocks having different phases | |
JP2019213197A (ja) | 共通基準信号に対するマルチチップタイミングアライメント |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
CD | Change of name or company name |