FR 3053859 A1 20180112 FR 1656466 A 20160706 B14957 - DD16304ST 1 CIRCUIT ET PROCEDE DE CONTROLE DE FLUX BASE SUR LE CREDIT Domaine de l'invention La présente description concerne le domaine des procédés et des systèmes de communication entre des circuits, et en 5 particulier un procédé et un circuit de contrôle de flux basé sur le crédit. Exposé de l'art antérieur Pour des liaisons de communication entre des circuits intégrés, ou entre des circuits se trouvant dans un circuit 10 intégré, il est généralement souhaitable de-limiter le nombre de fils afin de réduire la surface de la puce. Une solution pour réduire le nombre de fils est de créer une pluralité de canaux virtuels qui partagent un seul canal physique. Cela est par exemple obtenu en multiplexant dans le temps une pluralité de flux 15 de données. Dans le cas de liaisons de communication synchrones, on utilise un signal d'horloge au niveau du récepteur afin de recevoir correctement les flux de données transmis. Ce signal d'horloge est en général transmis sur la liaison de communication 20 aux côtés des données. Une telle solution est relativement robuste vis-à-vis des variations de délai de propagation sur la liaison 3053859 B14957 - DD16304ST 2 de communication, puisque les délais de propagation des flux de données et du signal d'horloge vont rester sensiblement égaux. Dans de telles liaisons de communication synchrones, on a proposé de mettre en oeuvre un contrôle de flux utilisant un système de crédits. Un tampon, comme un tampon FIFO (premier entré, premier sorti) est présent sur le côté émetteur pour mémoriser des données attendant d'être envoyées sur la liaison de communication, et un autre tampon, qui est aussi par exemple un FIFO, est présent sur le côté récepteur pour mémoriser les données reçues sur la liaison de communication. Si le débit de transmission de données sur la liaison de communication est trop élevé, le FIFO du côté récepteur va devenir plein, conduisant à une interruption de la transmission de données sur la liaison de communication. Ce problème est résolu par un contrôle de flux basé sur des crédits, selon lequel le circuit d'émission peut émettre une valeur de données sur la liaison de communication seulement en réponse à un crédit reçu du circuit de réception. Le circuit de réception délivre un crédit à chaque fois qu'une valeur de données est lue dans son FIFO. Bien que les solutions existantes pour le contrôle de flux à base de crédit soient relativement efficaces pour empêcher un débordement du FIFO du circuit de réception, elles ont tendance à demander des FIFO relativement grands, et des circuits volumineux pour gérer les crédits. Il y a donc un besoin dans la technique d'une solution de contrôle de flux à base de crédits répondant à ces problèmes. Résumé Un objet de modes de réalisation de la présente description est de répondre au moins partiellement à un ou 30 plusieurs besoins de l'art antérieur. Selon un aspect, on prévoit un circuit de réception d'une liaison de communication, le circuit de réception comprenant : un premier tampon de données agencé pour recevoir en entrée, sous le contrôle d'un premier signal d'horloge, des 35 données d'un premier flux de données transmis par un circuit 3053859 B14957 - DD16304ST 3 d'émission, et pour générer un signal de déclenchement de crédit indiquant le moment où une valeur de données est lue dans le premier tampon de données, des données étant lues dans le premier tampon de données, ou dans un autre tampon de données couplé à la 5 sortie du premier tampon de données, sous le contrôle d'un deuxième signal d'horloge ; et un circuit de génération de crédit agencé pour générer, sur la base du signal de déclenchement de crédit, un signal de crédit pour transmission au circuit d'émission sous le contrôle du premier signal d'horloge, le signal 10 de crédit indiquant qu'une ou plusieurs autres valeurs de données du premier flux de données peuvent être transmises par le circuit d'émission. Selon un mode de réalisation, le circuit de réception comprend en outre : un démultiplexeur agencé pour démultiplexer 15 une pluralité de flux de données, comprenant le premier flux de données et un deuxième flux de données transmis par le circuit d'émission, et pour fournir le premier flux de données au premier tampon de données et le deuxième flux de données à un deuxième tampon de données. 20 Selon un mode de réalisation, le circuit d'émission transmet en outre un signal de sélection de canal pour contrôler le démultiplexeur pour sélectionner le premier ou le deuxième tampon de données. Selon un mode de réalisation, le premier tampon de 25 données est un tampon de données synchrone, et le circuit de réception comprend en outre un autre tampon de données couplé à la sortie du premier tampon de données, l'autre tampon de données étant un tampon de données bi-synchrone qui est lu sous le contrôle du deuxième signal d'horloge. Selon un mode de réalisation, le premier tampon de données est un tampon de données bi-synchrone, le premier tampon de données comprenant un circuit de génération de crédit agencé pour générer le signal de déclenchement de crédit sur la base d'un pointeur de lecture du premier tampon de données et sous le contrôle du premier signal d'horloge. 3053859 B14957 - DD16304ST 4 Selon un mode de réalisation, le circuit de génération de crédit est agencé pour générer le signal de crédit et incrémenter une valeur de compte en réponse à une incrémentation du pointeur de lecture. 5 Selon un autre aspect, on prévoit une liaison de communication comprenant : le circuit de réception susmentionné ; et un circuit d'émission agencé pour transmettre le premier flux de données au circuit de réception, le circuit d'émission comprenant un circuit de gestion de crédit agencé pour transmettre 10 des valeurs de données du premier flux de données en réponse au signal de crédit. Selon un mode de réalisation, le circuit d'émission comprend en outre un circuit de génération d'horloge adapté à générer : un troisième signal d'horloge pour recevoir le signal 15 de crédit ; et un quatrième signal d'horloge à transmettre au circuit de réception, le premier signal d'horloge étant une version du quatrième signal d'horloge retardée d'un délai de propagation. Selon un mode de réalisation, le circuit d'émission est 20 adapté à transmettre les valeurs de données du premier flux de données sur la base d'un cinquième signal d'horloge. Selon un mode de réalisation, le circuit de génération d'horloge comprend : un premier élément à retard variable agencé pour générer le troisième signal d'horloge sur la base du 25 cinquième signal d'horloge ; et un deuxième élément à retard variable agencé pour générer le quatrième signal d'horloge sur la base du cinquième signal d'horloge. Selon un autre aspect, on prévoit une procédé de contrôle de flux sur une liaison de communication, le procédé 30 comprenant : introduire dans un premier tampon de données sous le contrôle d'un premier signal d'horloge, des valeurs de données d'un premier flux de données transmis par un circuit d'émission ; générer, par le premier tampon de données, un signal de déclenchement de crédit indiquant le moment où une valeur de 35 données est lue dans le premier tampon de données, des données 3053859 B14957 - DD16304ST 5 étant lues dans le premier tampon de données, ou dans un autre tampon de données couplé à la sortie du premier tampon de données, sous le contrôle d'un deuxième signal d'horloge ; et générer, par un circuit de génération de crédit sur la base du signal de 5 déclenchement de crédit, un signal de crédit pour transmission au circuit d'émission sous le contrôle du premier signal d'horloge, le signal de crédit indiquant qu'une ou plusieurs autres valeurs de données du premier flux de données peuvent être transmises par le circuit d'émission. 10 Selon un mode de réalisation, le procédé comprend en outre la génération, par un circuit de génération d'horloge, d'un troisième signal d'horloge pour la réception du signal de crédit par le circuit d'émission, et d'un quatrième signal d'horloge à transmettre au circuit de réception, le premier signal d'horloge 15 étant une version du quatrième signal d'horloge retardée d'un délai de propagation. Brève description des dessins Les caractéristiques et avantages susmentionnés et d'autres apparaîtront clairement à la lecture de la description 20 détaillée suivante de modes de réalisation, donnés à titre d'illustration et non de limitation, en faisant référence aux dessins joints dans lesquels : la figure 1 illustre schématiquement une liaison de communication selon un exemple de réalisation ; 25 la figure 2 illustre schématiquement un récepteur d'une liaison de communication selon une variante de réalisation par rapport à la figure 1 ; la figure 3 illustre schématiquement une liaison de communication selon un exemple de réalisation de la présente 30 description ; la figure 4 est un chronogramme illustrant des signaux dans la liaison de communication de la figure 3 selon un exemple de réalisation ; la figure 5A illustre un FIFO bi-synchrone selon un 35 exemple de réalisation ; 3053859 B14957 - DD16304ST 6 la figure 5B est un diagramme représentant le fonctionnement du FIFO bi-synchrone de la figure 5A selon un exemple de réalisation _; la figure 6 illustre schématiquement un module de 5 génération de crédits d'un FIFO bi-synchrone selon un exemple de réalisation ; et la figure 7 est une vue en coupe d'un circuit 3D selon un exemple de réalisation. Description détaillée 10 Dans la description qui suit, on donnera aux termes suivants les définitions suivantes : "valeur de données" : groupe de bits de données remplissant un emplacement de mémorisation dans un tampon de données et autorisé à être transmis sur la liaison de 15 communication en réponse à la réception d'un crédit. Par exemple, le groupe de bits de données correspond à un ou plusieurs multiplets de données transmis en parallèle ou en série. "signal de crédit" : signal électronique indiquant à un émetteur qu'une ou plusieurs valeurs de données d'un ou plusieurs 20 canaux virtuels peuvent être transmises. La figure 1 illustre un exemple d'une liaison de communication 100 selon un mode de réalisation qui a été proposé. Un circuit ayant certaines similarités avec le circuit de la figure 1 est par exemple décrit dans la publication intitulée "ARM 25 CoreLink TLX-400 Network Interconnect Thin Links, Revision rOp3, Supplement to ARM CoreLink NIC-400 Network Interconnect Technical Reference Manual", disponible sur www.arm.com. La liaison de communication 100 comprend un circuit d'émission (TX) 102 et un circuit de réception (RX) 104. 30 Le circuit d'émission 102 reçoit une pluralité de flux de données 105 dans des tampons correspondants 106, dont trois sont représentés en figure 1. Les tampons 106 sont des tampons FIFO (premier entré, premier sorti) bi-synchrones, des données étant introduites dans ces tampons sous le contrôle d'un signal 35 d'horloge CLK T d'un domaine d'horloge 107 du circuit d'émission, 3053859 B14957 - DD16304ST 7 et des données étant fournies par ces tampons sous le contrôle d'un signal d'horloge CLK de la liaison de communication. Chacun des tampons 106 a sa sortie couplée à une entrée correspondante d'un multiplexeur 108, qui applique un multiplexage 5 temporel aux flux de données provenant des tampons 106 afin de fournir une pluralité de canaux virtuels sur la liaison de communication. Le multiplexeur 108 est contrôlé par un signal de sélection de canal CHANNEL fourni par une machine d'états finis (FSM) 110. La sortie du multiplexeur 108 est couplée à une bascule 10 112 synchronisée par le signal d'horloge CLK de la liaison, qui transmet le flux de données sous la forme d'une charge utile de données (PAYLOAD) au circuit de réception 104, sur un ou plusieurs fils. Le signal de sélection de canal CHANNEL est fourni par l'intermédiaire d'une autre bascule 114, aussi synchronisée par 15 le signal d'horloge CLK, au circuit de réception 104, sur un ou plusieurs autres fils. Le signal d'horloge CLK est aussi transmis au circuit de réception 104 sur un ou plusieurs autres fils. Le circuit de réception 104 comprend une bascule 118 recevant la charge utile, et une bascule 120 recevant le signal 20 de sélection de canal CHANNEL. Les bascules 118, 120 sont synchronisées par le signal d'horloge CLK' reçu du circuit d'émission 102. Les données de charge utile et le signal de sélection de canal sont mémorisés dans un FIFO bi-synchrone 122, les données étant introduites dans le FIFO 122 sous le contrôle 25 du signal d'horloge CLK', et les données étant fournies par le FIFO 122 sous le contrôle d'un signal d'horloge CLK R d'un domaine d'horloge 123 du circuit de réception 104. Les données de charge utile provenant du FIFO 122 sont fournies à l'entrée d'un démultiplexeur 124 contrôlé par le signal 30 de sélection de canal CHANNEL à la sortie du FIFO 122. Les sorties du démultiplexeur 124 sont couplées à des FIFO 126 respectifs synchronisés par le signal d'horloge CLK R, un FIFO 126 étant fourni pour chaque flux de données 105' reçu sur la liaison de communication. 3053859 B14957 - DD16304ST 8 La machine FSM 110 se trouvant dans le circuit d'émission peinet aux valeurs de données d'un canal d'être transmises seulement si un crédit correspondant a été reçu du circuit de réception 104. Les crédits sont générés par le circuit 5 de réception 104 sur la base de la sortie de données provenant des tampons FIFO synchrones 126. Les crédits étant générés dans le domaine d'horloge 123 du circuit de réception, ils sont transmis au circuit d'émission 102 par l'intermédiaire d'un canal virtuel d'une autre liaison de communication constituée d'un 10 circuit d'émission 128 et d'un circuit de réception 130, qui sont similaires aux circuits 102 et 104 respectivement. Un inconvénient de la liaison de communication 100 de la figure 1 est que l'utilisation des circuits d'émission et de réception 128, 130 pour la transmission de crédits vers le circuit 15 d'émission 102 introduit une latence significative. Cela conduit à avoir des FIFO dans le circuit qui sont relativement gros. En effet, la taille des FIFO, et donc le nombre de crédits qui sont disponibles, doivent être supérieurs au nombre de cycles d'horloge nécessaires pour une transmission de données vers l'extérieur et 20 pour la transmission de crédits qui reviennent. Dans le circuit de la figure 1, les bascules 112, 118 des circuits 102, 104 et les bascules correspondantes des circuits 128, 130, vont introduire chacune un retard d'un cycle d'horloge, et le FIFO bisynchrone 122, et ceux des circuits 128, 130, vont introduire 25 chacun un retard allant jusqu'à trois cycles, ce qui conduit à un retard global d'environ 17 cycles. La figure 2 illustre un circuit de réception 204 selon une variante de réalisation par rapport au circuit de réception 104 de la figure 1. De nombreux éléments du circuit de réception 30 204 sont identiques à ceux du circuit 104, et les éléments similaires portent les mêmes références et ne seront pas décrits de nouveau en détail. Dans le circuit de réception 204, le FIFO bi-synchrone 122 est omis, et les FIFO 126 sont remplacés par des FIFO bi-synchrones 206. Bien qu'une telle solution permette de 3053859 B14957 - DD16304ST 9 réduire la latence d'un cycle dans chaque sens, la latence est encore relativement élevée. La figure 3 illustre schématiquement une liaison de communication 300 selon un exemple de réalisation de la présente 5 description. La liaison de communication 300 comprend par exemple un circuit d'émission (TX) 302 et un circuit de réception (RX) 304. Le circuit d'émission 302 reçoit par exemple une pluralité de flux de données 305 dans des tampons 306 10 correspondants, dont trois sont représentés dans l'exemple de la figure 3. Le nombre de FIFO 306 va dépendre du nombre de flux de données, et pourrait être égal à un ou plus. Les FIFO 306 sont par exemple des FIFO bi-synchrones, des données étant introduites dans ces tampons sous le contrôle d'un signal d'horloge CLK T d'un 15 domaine d'horloge 307 du circuit d'émission, et des données étant fournies par ces tampons sous le contrôle d'un signal d'horloge CLK V de la liaison de communication. Chacun des FIFO 306 a par exemple sa sortie couplée à une entrée correspondante d'un multiplexeur 308, qui applique un 20 multiplexage temporel aux flux de données provenant de chaque tampon 306 afin de fournir une pluralité de canaux virtuels sur la liaison de communication. Le multiplexeur 308 est par exemple contrôlé par un signal de sélection de canal CHANNEL fourni par un circuit de gestion de crédits, mis en oeuvre par exemple par 25 une machine d'états finis (FSM) 310. La sortie du multiplexeur 308 est par exemple couplée à une bascule 312 synchronisée par un signal d'horloge CLK V de la liaison, qui transmet le flux de données sous la forme d'une charge utile de données (PAYLOAD) au circuit de réception 304, sur un ou plusieurs fils. Le signal de 30 sélection de canal CHANNEL est fourni par l'intermédiaire d'une autre bascule 314, elle aussi synchronisée par le signal d'horloge CLK V, au circuit de réception 304, par exemple sur un ou plusieurs autres fils. Des crédits (CREDITS) sont par exemple reçus du circuit de réception 304 sur un ou plusieurs fils d'entrée 315, 3053859 B14957 - DD16304ST 10 ces fils étant couplés à l'entrée d'une bascule 316 synchronisée par un signal d'horloge CLK V"' Dans certains modes de réalisation, le signal d'horloge CLK V est transmis au circuit de réception 304. Toutefois, dans 5 le mode de réalisation de la figure 3, un autre signal d'horloge CLK V' est transmis au circuit de réception 304. Chacun des signaux d'horloge CLK V' et cl_my"' est par exemple généré par un circuit de génération d'horloge 318 sur la base du signal d'horloge CLK V. Le circuit 318 comprend par exemple la connexion 10 en série d'un élément à retard variable 320 et d'un élément inverseur 322 pour fournir le signal d'horloge cuu"', et la connexion en série d'un élément à retard variable 324 et d'un élément inverseur 326 pour fournir le signal d'horloge CLK V'. Les éléments à retard variable 320, 324 reçoivent chacun par 15 exemple le signal d'horloge CLK V. Les éléments inverseurs 322, 326 inversent sélectivement par exemple les signaux d'horloge. L'élément inverseur 322 comprend par exemple un multiplexeur ayant une entrée non-inverseuse et une entrée inverseuse, chacune étant couplée à la sortie de l'élément à retard variable 320. De façon 20 similaire, l'élément inverseur 326 comprend par exemple un multiplexeur ayant une entrée non-inverseuse et une entrée inverseuse couplées chacune à la sortie de l'élément à retard variable 324. Les retards introduits par les éléments 320, 324, et l'inversion ou la non inversion de chacun des signaux par les 25 éléments 322, 326 sont par exemple contrôlés par un circuit de commande (CTRL) 328. Par exemple, le circuit de commande 328 est agencé pour étalonner les signaux d'horloge CLK V' et CLKV"' sur la base d'un motif d'étalonnage transmis sur la liaison de communication, 30 la synchronisation étant ajustée jusqu'à ce que le motif d'étalonnage soit reçu correctement. En plus ou à la place, un taux d'erreur binaire (BER) des signaux de données reçus par l'intermédiaire de la liaison de communication peut être calculé, et le circuit de commande 328 étalonne par exemple la 35 synchronisation des signaux d'horloge CLK V' et CLK V'" de telle 3053859 B14957 - DD16304ST 11 sorte que le BER soit réduit et/ou minimisé. Dans encore une autre possibilité, un détecteur de stabilité basé sur des signaux d'erreur ou d'avertissement d'avance et de retard peut être mis en oeuvre comme cela est décrit plus en détail dans la demande de 5 brevet de la même demanderesse, du même inventeur et ayant la même date de dépôt que la présente demande, et intitulée "Method and device for improving synchronization in a communications link" (B14958, DD16938ST), dont le contenu est inclus ici comme référence dans les limites autorisées par la loi. 10 Le circuit de réception 304 comprend une bascule 330 recevant la charge utile, et une bascule 332 recevant le signal de sélection de canal CHANNEL. Les bascules 330, 332 sont par exemple synchronisées par le signal d'horloge CLKV' reçu du circuit d'émission 302, qui est renommé CLK V" dans le récepteur, 15 le signal CLK V" comprenant le retard introduit par le fil entre les circuits d'émission et de réception 302, 304. Les données de charge utile sont par exemple fournies à l'entrée d'un démultiplexeur 334, qui dirige les valeurs de données reçues vers l'un d'une pluralité de FIFO 336 correspondant 20 à chacun des canaux virtuels. Cette sélection est par exemple basée sur le signal de sélection de canal CHANNEL fourni par la bascule 332. Les FIFO 336 sont par exemple synchronisés par le signal d'horloge CLK V". Les FIFO 336 sont par exemple des dispositifs synchrones sous le contrôle d'un seul signal 25 d'horloge, plutôt que des dispositifs bi-synchrones comme les FIFO 206 de la figure 2. La sortie de chaque FIFO 336 est par exemple couplée à l'entrée d'un autre FIFO 338 correspondant. Les FIFO 338 sont par exemple des FIFO bi-synchrones, des valeurs de données étant 30 introduites dans les FIFO 338 sous le contrôle du signal d'horloge cLEur, et des données étant fournies par ces FIFO 338 sous le contrôle du signal d'horloge CLK R d'un domaine d'horloge 340 du circuit de réception 304. Les FIFO 338 fournissent les flux de données 305' récupérés dans la liaison de communication. 3053859 B14957 - DD16304ST 12 Dans le mode de réalisation de la figure 3, un circuit de génération de signal de crédit (CREDIT GEN) 342 génère des crédits sur la base des états des FIFO synchrones 336. Par exemple, le circuit 342 reçoit un signal de déclenchement de crédit à 5 partir de chaque FIFO 336, indiquant le moment où une opération de lecture d'une valeur de données mémorisée dans le FIFO a eu lieu. Par exemple, dans certains modes de réalisation ce signal correspond au pointeur de lecture du FIFO, et une opération de lecture est indiquée par und incrémentation de ce pointeur de 10 lecture. Le circuit de génération de signal de crédit 342 est par exemple synchronisé par le signal d'horloge CLKV", et fournit les crédits, sous le contrôle de ce signal d'horloge, sur les fils 315 pour transmission au circuit d'émission 302. On peut utiliser un certain nombre de modes de codage 15 différents pour coder les informations de crédit sur les fils 315. Par exemple, dans certains modes de réalisation on utilise l'un des modes de codage suivants : - Un VC (canal virtuel) / Un crédit : un cycle du signal de crédit fournit un seul crédit au canal virtuel unique ; 20 - Un VC / Plusieurs crédits : un cycle du signal de crédit fournit un certain nombre de crédits au canal virtuel unique ; - Plusieurs VC / Un crédit : un cycle du signal de crédit fournit un seul crédit à son canal virtuel associé. Chaque canal 25 virtuel comporte un signal de crédit associé ; - Plusieurs VC / Plusieurs crédits : un cycle du signal de crédit fournit un ou plusieurs crédits à son canal virtuel associé, et ainsi le signal de crédit indique, pour chaque canal à créditer, le nombre de crédits à appliquer à ce canal. 30 Le nombre de bits utilisés pour coder le signal de crédit sur chaque cycle va dépendre du nombre de canaux virtuels et du mode de codage de crédit particulier qui est adopté. Dans le circuit d'émission 302, les crédits sont par exemple reçus par la machine FSM 310 par l'intermédiaire de la 35 bascule 316. La machine FSM 310 comprend par exemple un compteur 3053859 B14957 - DD16304ST 13 associé à chaque canal virtuel, et incrémente le compteur correspondant pour chaque crédit qui est reçu pour le canal virtuel donné. Lorsqu'une valeur de données est en attente dans l'un des FIFO 306, et au moins un crédit est disponible dans le 5 compteur correspondant de la machine FSM 310, la machine FSM 310 commande par exemple le multiplexeur 308 pour sélectionner cette valeur de données à transmettre au récepteur. Par exemple, chaque FIFO 306 envoie par exemple un signal à la machine FSM 310 indiquant la disponibilité de données à transmettre. Un crédit 10 est ensuite déduit pour ce canal virtuel, par exemple en décrémentant la valeur de compte du compteur correspondant dans la machine FSM 310. Un avantage du mode de réalisation de la figure 3 est que des crédits sont générés sur la base d'opérations de lecture 15 dans les FIFO faites dans le domaine d'horloge de la liaison de communication, en d'autres termes sur la base de l'horloge CLKV. Ainsi les crédits peuvent être transmis au circuit d'émission 302 en utilisant le même signal d'horloge que celui utilisé pour recevoir les valeurs de données au niveau du circuit de réception 20 304. Cela réduit notablement le nombre de cycles d'horloge entre l'émission d'une valeur de données et la réception par le circuit d'émission 302 du crédit correspondant. Par exemple, alors que le retard dans le mode de réalisation des figures 2 et 3 était d'environ 15 ou 17 cycles, dans le cas de la figure 3, le retard 25 est de seulement 6 cycles d'horloge. Ainsi la taille des FIFO 306 et 336, et le nombre de bits représentant chaque crédit, peuvent être relativement faibles. On va maintenant décrire plus en détail le fonctionnement du circuit de la figure 3 en faisant référence au 30 chronogramme de la figure 4. La figure 4 illustre le signal CLKV, la charge utile (PAYLOAD) fournie par le circuit d'émission 302, le signal d'horloge CLK V' généré par le circuit 318, le signal d'horloge CLK V" reçu par le circuit de réception, les données (RECEIVED 35 DATA) reçues par le circuit de réception, les crédits (SEND 3053859 B14957 - DD16304ST 14 CREDITS) générés par le circuit 342, le signal d'horloge CLKV"' et les crédits (RECEIVED CREDITS) reçus par le circuit d'émission 302. Dans l'exemple de la figure 4, la charge utile comprend 5 des valeurs de données DATAI, DATA2, etc., transmises sur les fronts montants du signal d'horloge CLK V. En outre, dans l'exemple de la figure 4 le signal d'horloge CLKV' est une simple inversion du signal d'horloge CLK V. Le signal d'horloge CLK V" correspond au signal d'horloge CLKV' retardé d'un retard DpRopi, 10 égal au retard introduit par le canal de transmission entre le circuit d'émission 302 et le circuit de réception 304. Dans l'exemple de la figure 4, les fronts montants du signal d'horloge CLK V" sont utilisés pour synchroniser les données reçues, ces données ayant été reçues après sensiblement le même retard que le 15 délai de propagation DpRopi du signal d'horloge CLK V'. L'élément de retard 324 de la figure 3 peut être utilisé pour corriger des petites différences entre les délais de propagation du signal de données PAYLOAD et du signal d'horloge CLK V'. Des crédits CREDIT1, CREDIT2, etc., sont par exemple 20 générés sur chaque front montant du signal d'horloge CLKV", et transmis au circuit d'émission 302. Les crédits sont par exemple reçus après un délai de propagation DpRop2, qui est par exemple sensiblement égal au délai de propagation DpRopi. Les crédits reçus sont par exemple synchronisés par des fronts montants du 25 signal d'horloge CLK V'". La synchronisation relative des signaux d'horloge CLK V et CLK V"' est par exemple choisie de telle sorte que les crédits puissent être reçus correctement au niveau du circuit d'émission. Dans l'exemple de la figure 4, les fronts montants du signal d'horloge CLK V'" sont par exemple ajustés, 30 par le circuit 318 de la figure 3, pour tomber environ au niveau du point intermédiaire entre les transitions du signal de données de crédit reçu. Dans une variante de réalisation par rapport à la figure 3, les FIFO synchrones 336 pourraient être remplacés par des FIFO 35 bi-synchrones, permettant d'omettre les FIFO bi-synchrones 338, 3053859 B14957 - DD16304ST 15 de façon similaire au mode de réalisation de la figure 2. Toutefois, dans un tel cas, les FIFO bi-synchrones sont par exemple modifiés pour fournir un signal de déclenchement de crédit, synchrone avec l'horloge CLK V", indiquant le moment où 5 une opération de lecture est survenue, comme on va le décrire maintenant plus en détail en faisant référence aux figures 5A, 5B et 6. De cette manière, les crédits peuvent être générés et transmis au circuit d'émission 302 sans traverser d'un domaine d'horloge vers un autre. 10 La figure 5A illustre un FIFO bi-synchrone modifié 500 selon un exemple de réalisation. Un tel circuit met en oeuvre par exemple chacun des FIFO bi-synchrones du circuit de réception 302. Comme avec les FIFO bi-synchrones 338 de la figure 3, le FIFO bisynchrone 500 introduit des valeurs de données sous le contrôle 15 du signal d'horloge CLKV", et fournit des valeurs de données sous le contrôle du signal d'horloge CLKR. Le FIFO bi-synchrone 500 comprend en plus un circuit de génération de déclenchement de crédit 502. Le circuit 502 détermine par exemple, sur la base d'un pointeur de lecture du FIFO 500, le moment où une opération de 20 lecture est survenue, et active le signal de sortie S CREDIT en conséquence. La figure 5B représente les emplacements de mémorisation et les pointeurs de lecture et d'écriture du FIFO 500 selon un exemple de réalisation. Dans l'exemple de la 5B, le FIFO 500 25 comprend 8 emplacements de mémorisation, chacun étant capable de mémoriser une valeur de données, et qui sont représentés par des segments d'un anneau en forme de beignet. Bien sûr, en pratique le FIFO 500 pourrait comprendre un nombre d'emplacements de mémorisation plus grand ou plus petit. Un pointeur d'écriture i 30 pointe vers l'emplacement de mémorisation dans lequel on écrit, et un pointeur de lecture j pointe vers l'emplacement de mémorisation qui est lu, et les x dans la figure désignent des emplacements de mémorisation mémorisant des données. Comme cela a été indiqué précédemment, le Pointeur d'écriture est par exemple 3053859 B14957 - DD16304ST 16 synchrone avec l'horloge CLK V", alors que le pointeur de lecture est par exemple synchrone avec l'horloge CLK R. La figure 6 illustre le module de génération de crédits 502 du FIFO 500 plus en détail selon un exemple de réalisation. 5 Le module 502 reçoit par exemple un signal d'horloge CLK V" et le pointeur de lecture j. Deux bascules 602, 603 couplées en série sont par exemple utilisées pour resynchroniser la valeur du pointeur j avec le signal d'horloge CLKV". Le pointeur de lecture resynchronisé j' sur la sortie de la bascule 603 est par 10 exemple fourni à un soustracteur 604, qui soustrait de la valeur j' une valeur de compte m, et fournit le résultat d à un comparateur 608. Le comparateur 608 détermine si le résultat d est supérieur à zéro, et si oui, active le signal S CREDIT pour générer un crédit. Ce signal provoque aussi l'incrémentation de 15 la valeur de compte m. Par exemple, la valeur de compte m est fournie à un additionneur 610, qui incrémente la valeur de compte m à chaque fois que le signal S CREDIT est activé. Le résultat m' de l'addition réalisée par l'additionneur 610 est par exemple fourni à une bascule 612, qui mémorise la valeur m' sur chaque 20 front d'horloge significatif du signal d'horloge CLKV". Ainsi un incrément du pointeur de lecture j va provoquer, à la suite d'un front significatif suivant du signal d'horloge CLK V", l'émission d'un crédit, et l'incrémentation de la valeur de compte m de telle sorte qu'aucun autre crédit ne va être délivré jusqu'à ce que j' 25 soit de nouveau incrémenté. La valeur de compte m est par exemple initialisée à zéro à la suite d'une réinitialisation du module 502. La figure 7 est une vue en coupe d'un circuit 3D 700 selon un exemple de réalisation. 30 Le circuit comprend par exemple des circuits élémen- taires 702, dont trois sont illustrés dans l'exemple de la figure 7. Chaque circuit élémentaire 702 est par exemple monté sur un interposeur 704, qui assure une fonction de tampon active ou passive entre les circuits élémentaires, et par exemple met en 3053859 B14957 - DD16304ST 17 oeuvre la liaison de communication décrite ici. L'interposeur 704 est par'exemple monté sur un boîtier 706. Dans des variantes de réalisation, la liaison de communication décrite ici pourrait être appliquée à d'autres 5 applications, comme à des interfaces de communication dans un même circuit intégré, entre des circuits d'un NoC (de l'anglais Network-On-Chip, réseau sur une puce), ou pour interconnecter plusieurs NoC. Un avantage des modes de réalisation décrits ici est que 1Q le délai pour la transmission d'une valeur de données sur une liaison de communication et pour le retour d'un crédit correspondant peut être notablement réduit par rapport à des solutions existantes. Cela permet de réduire la taille d'au moins certains des FIFO de la liaison de communication, 15 réduire la taille des compteurs de crédits. Avec la description ainsi faite d'au réalisation illustratif, diverses altérations, et aussi de moins un mode de modifications et améliorations apparaîtront facilement à l'homme de l'art. Par exemple, alors que dans le mode de réalisation de la figure 3 le 20 signal d'horloge CLK V' est transmis au circuit de réception 304, dans des variantes de réalisation aucun signal d'horloge ne pourrait être transmis, et à la place un signal d'horloge pourrait être récupéré par le circuit de réception à partir du flux de données. 25 En outre, bien que l'exemple de réalisation de la figure 3 présente une mise en oeuvre à simple débit de données (SDR), il sera clair pour l'homme de l'art que l'architecture pourrait être modifiée pour obtenir une mise en oeuvre à double débit de données (DDR). Dans un tel cas, la moitié des données de charge utile est 30 par exemple transmise pendant l'état haut du signal d'horloge CLK V, et l'autre moitié des données est envoyée pendant l'état bas du signal d'horloge CLK V. Les registres 312 et 314 par exemple verrouillent la moitié de la charge utile sur les fronts montants et l'autre moitié de la charge utile sur les fronts descendants. 35 Les registres 330, 332 sur le côté récepteur fonctionnent de 3053859 B14957 - DD16304ST 18 manière similaire, verrouillant les données sur les fronts montants et descendants. Cela a pour résultat un multiplexage temporel qui permet de réduire d'un facteur deux le nombre de fils de la charge utile. En effet, la charge utile complète peut être 5 envoyée pendant un cycle d'horloge complet en utilisant la moitié du nombre de fils. En variante, pour un même nombre de fils de charge utile, la quantité de données transmise peut être augmentée d'un facteur deux. En outre, il apparaîtra clairement à l'hommé de l'art 10 que tous les FIFO décrits dans les circuits des figures 3 et 5A pourraient être mis en oeuvre, dans des variantes de réalisation, par d'autres types de tampons. REVENDICATIONS1. Circuit de réception d'une liaison de communication, le circuit de réception comprenant : un premier tampon de données (336, 500) agencé pour recevoir en entrée, sous le contrôle d'un premier signal d'horloge (CLK V"), des données d'un premier flux de données transmis par un circuit d'émission (302), et pour générer un signal de déclenchement de crédit indiquant le moment où une valeur de données est lue dans le premier tampon de données (336, 500), des données étant lues dans le premier tampon de données (336, 500), ou dans un autre tampon de données (338) couplé à la sortie du premier tampon de données (336, 500), sous le contrôle d'un deuxième signal d'horloge (CLKR) ; et un circuit de génération de crédit (342) agencé pour générer, sur la base du signal de déclenchement de crédit, un 15 signal de crédit pour transmission au circuit d'émission (302) sous le contrôle du premier signal d'horloge (CLK V"), le signal de crédit indiquant qu'une ou plusieurs autres valeurs de données du premier flux de données peuvent être transmises par le circuit d'émission. 20 2. Circuit de réception selon la revendication 1, comprenant en outre : un démultiplexeur (334) agencé pour démultiplexer une pluralité de flux de données, comprenant le premier flux de données et un deuxième flux de données transmis par le circuit 25 d'émission (302), et pour fournir le premier flux de données au premier tampon de données (336, 500) et le deuxième flux de données à un deuxième tampon de données. 3. Circuit de réception selon larevendication 2, dans lequel le circuit d'émission transmet en outre un signal de 30 sélection de canal (CHANNEL) pour contrôler le démultiplexeur (334) pour sélectionner le premier ou le deuxième tampon de données (336, 500). 4. Circuit de réception selon l'une quelconque des revendications 1 à 3, dans lequel le premier tampon de données 3053859 B14957 - DD16304ST 20 (336, 500) est un tampon de données synchrone, et le circuit de réception comprend en outre un autre tampon de données (338) couplé à la sortie du premier tampon de données, l'autre tampon de données étant un tampon de données bi-synchrone qui est lu sous 5 le contrôle du deuxième signal d'horloge (CLKR). 5. Circuit de réception selon l'une quelconque des revendications 1 à 4, dans lequel le premier tampon de données (500) est un tampon de données bi-synchrone, le premier tampon de données comprenant un circuit de génération de crédit (502) agencé 10 pour générer le signal de déclenchement de crédit sur la base d'un pointeur de lecture (j) du premier tampon de données et sous le contrôle du premier signal d'horloge (CLKV"). 6. Circuit de réception selon la revendication 5, dans lequel le circuit de génération de crédit (502) est agencé pour 15 générer le signal de crédit et incrémenter une valeur de compte en réponse à une incrémentation du-pointeur de lecture (j). 7. Liaison de communication comprenant : le circuit de réception de l'une quelconque des revendications 1 à 6 ; et 20 un circuit d'émission (302) agencé pour transmettre le premier flux de données au circuit de réception, le circuit d'émission comprenant un circuit de gestion de crédit (310) agencé pour transmettre des valeurs de données du premier flux de données en réponse au signal de crédit. 25 8. Liaison de communication selon la revendication 7, dans lequel le circuit d'émission (302) comprend en outre un circuit de génération d'horloge (318) adapté à générer : un troisième signal d'horloge (cLxy"') pour recevoir le signal de crédit ; et 30 un quatrième signal d'horloge (CLKV') à transmettre au circuit de réception, le premier signal d'horloge (CLKV") étant une version du quatrième signal d'horloge (CLKV') retardée d'un délai de propagation. 9. Liaison de communication selon la revendication 8, 35 dans laquelle le circuit d'émission est adapté à transmettre les 3053859 B14957 - DD16304ST 21 valeurs de données du premier flux de données sur la base d'un cinquième signal d'horloge (CLKV). 10. Liaison de communication selon la revendication 9, dans laquelle le circuit de génération d'horloge (318) comprend : 5 un premier élément à retard variable (320) agencé pour générer le troisième signal d'horloge (CLK V"') sur la base du cinquième signal d'horloge (CLKV) ; et un deuxième élément à retard variable (324) agencé pour générer le quatrième signal d'horloge (CLK V') sur la base du 10 cinquième signal d'horloge (cLxy). 11. Procédé de contrôle de flux sur une liaison de communication, le procédé comprenant : introduire dans un premier tampon de données (336, 500) sous le contrôle d'un premier signal d'horloge (CLKV"), des 15 valeurs de données d'un premier flux de données transmis par un circuit d'émission (302) ; générer, par le premier tampon de données, un signal de déclenchement de crédit indiquant le moment où une valeur de données est lue dans le premier tampon de données (336, 500), des 20 données étant lues dans le premier tampon de données (336, 500), ou dans un autre tampon de données (338) couplé à la sortie du premier tampon de données (336, 500), sous le contrôle d'un deuxième signal d'horloge (CLK_R) ; et générer, par un circuit de génération de crédit (342) 25 sur la base du signal de déclenchement de crédit, un signal de crédit pour transmission au circuit d'émission (302) sous le contrôle du premier signal d'horloge (CLKV"), le signal de crédit indiquant qu'une ou plusieurs autres valeurs de données du premier flux de données peuvent être transmises par le circuit d'émission. 30 12. Procédé selon la revendication 11, comprenant en outre la génération, par un circuit de génération d'horloge (318) : d'un troisième signal d'horloge (CLK V"') pour la réception du signal de crédit par le circuit d'émission (302) ; 35 et 3053859 B14957 - DD16304ST 22 d'un quatrième signal d'horloge (CLK V') à transmettre au circuit de réception, le premier signal d'horloge (CLK V") étant une version du quatrième signal d'horloge (CLK V') retardée d'un délai de propagation.