FR 2849228 A1 20040625 FR 0216491 A 20021223 -1 Dispositif de transfert de données entre deux soussystèmes asynchrones disposant d'une mémoire tampon Domaine technique de l'invention La présente invention concerne les circuits électroniques et plus spécifiquement un dispositif de transfert de données entre deux soussystèmes asynchrones disposant d'une mémoire de stockage tampon. Etat de la technique 1 5 De nombreux circuits électroniques comportent des sous ensembles indépendants qui fonctionnent au rythme d'horloges parfaitement asynchrones les unes par rapports aux autres C'est le cas lorsque, par exemple, un processeur à haute vitesse effectue un traitement des données et doit ensuite communiquer avec un autre système fonctionnant à une allure moindre Les horloges des deux 20 systèmes peuvent être sans relation de phase l'une par rapport à l'autre Cette situation peut même se rencontrer au sein d'un même circuit semi-conducteur dans lequel on aura aménagé deux différents sous-systèmes parfaitement indépendants et fonctionnant au rythmes d'horloges parfaitement asynchrones les unes par rapport aux autres. Des techniques sont bien connues pour permettre une communication entre des systèmes asynchrones. La figure 1 illustre une technique classique, basée sur un drapeau en 30 émission, qui accompagne la transmission d'une donnée depuis un système 100 vers un système 150. ST 02-GR 2-275 A cet effet, on organise, dans le sous-ensemble 100, le transfert de données depuis une entrée 101 (next_data) dans un registre 102 via un multiplexeur 103, lequel est commandé par un signal de commande 114 (txsend) Le drapeau est généré au moyen d'une porte XOR 104 et d'une bascule 105 assurant un changement d'état pour chaque nouvelle donnée transmise. De l'autre côté, dans le sous-circuit récepteur 150, le signal de drapeau txflag est reçu à l'entrée d'une bascule 151, puis transmis à l'entrée d'une seconde bascule 152 et enfin à une troisième bascule 153 Les sorties respectives des bascules 152 et 153 (rx_flag) sont utilisées par une porte XOR 154 afin de générer un signal de commande (rx_receive) assurant le transfert de la donnée reçue (tx_data) dans un registre 156 via un multiplexeur 157. L'inconvénient majeur de ce premier système connu réside dans le fait que 15 l I'horloge en réception doit d'être suffisamment rapide pour assurer la réception des données transmises par le sous-ensemble 100 A défaut, il en résulterait une perte de données Plus particulièrement, il faut s'assurer de la présence de deux fronts montants d'horloge du soussystème récepteur 150 entre deux commutations successives du signal tx_flag La vitesse en réception doit par conséquent être bien 20 plus élevée que la vitesse en émission En particulier, le sous-ensemble 150 recevant les données ne dispose d'aucune possibilité de ralentir le débit des informations transmises par le sous-ensemble 100 D'une manière générale, une telle structure ne peut fonctionner que pour des vitesses lentes en émission. La figure 2 illustre plus particulièrement des chronogrammes représentatifs du fonctionnement du système décrit dans la figure 1, et notamment les signaux en émission tx_clk, tx_send, txflag et tx_data et, en réception, les signaux rx_clk, rxflag, rx_receive et rx_data. Afin de ralentir les informations transmises en émission lorsque cela s'avère nécessaire, on peut doter le sous-ensemble en réception d'un mécanisme de drapeau symétrique (que l'on désigne couramment sous la dénomination anglosaxonne handshake) Une telle technique est illustrée dans la figure 3: Le sousensemble 200 comporte, comme précédemment, un registre 202 destiné à recevoir ST 02-GR 2-275 la donnée présentée sur un circuit 201 et transmise via un multiplexeur 203 sous la commande du signal tx_send Ce même signal tx_send sert à commander un multiplexeur 204 dont la sortie est connectée à une bascule 205 générant le drapeau en émission tx flag Une bascule 206 est connectée en cascade à une 5 bascule 207, laquelle dispose d'une sortie connectée à une première entrée inverseuse du multiplexeur 204 ainsi qu'à une première entrée d'une porte XOR 208 Une seconde entrée du multiplexeur 204 reçoit le drapeau en émission en sortie de la bascule 205 La porte XOR 208 génère à sa sortie un signal tx_dont_send utilisé pour stopper la transmission de données. Du côté de la réception, le drapeau en émission txflag est transmis via une cascade de bascules 251 et 252 (commutant au rythme de l'horloge du soussystème 250) à une bascule 253 ainsi à qu'une première entrée d'une porte XOR 254 La bascule 253 génère le second drapeau rxflag qui est transmis, d'une part, 15 à l'entrée de la bascule 206 dans le soussystème 200 et, d'autre part, à une seconde entrée de la porte XOR 254 venant commander un multiplexeur 255 Ce dernier permet le transfert de la donnée reçue du sous-ensemble 200 dans un registre 256, lequel fournit, en sortie la données rx_data sur un circuit 257. Comme on le voit sur les chronogrammes de la figure 4, le drapeau en réception rxflag peut être à présent renvoyé dans le sous-ensemble 200 afin de réguler sa vitesse d'émission, lequel ne pourra ré-émettre que lorsque le changement d'état aura été répercutée au sein de la boucle composée des éléments 251, 252, 253, 206, 207, 204 et 205. Un tel système est certes plus avantageux que le premier système qui a été précédemment décrit car on ne craint plus les pertes de données En revanche, il ne permet toujours pas d'accroître la vitesse de transmission des données. ST 02-GR 2-275 -4 Exposé de l'invention La présente invention a pour but de proposer une transmission de données s entre deux systèmes asynchrones opérant à des vitesse de fonctionnement élevées. L'invention réalise ces buts au moyen d'un dispositif de transfert de données entre deux systèmes asynchrones communiquant via une mémoire tampon, comme io par exemple une mémoire FIFO, un banc de registres, ou une mémoire à double port (un port de lecture et un port d'écriture) Le premier système comporte un registre de pointage en écriture et le second système comporte un registre de pointage en lecture dans la FIFO Chaque registre de pointage est accompagné d'un registre fantôme primaire et d'un registre fantôme secondaire Le fantôme 15 primaire est situé dans le même sous-ensemble que le registre de pointage auquel il est associé, et reçoit épisodiquement une copie de ce registre de pointage Le fantôme secondaire est situé dans l'autre sous-ensemble, et reçoit épisodiquement une copie du registre fantôme primaire Ainsi, chaque système dispose de son propre registre de pointage, du fantôme primaire associé, et du fantôme secondaire 20 associé au registre de pointage de l'autre système. Les registres fantômes secondaires sont tenus à jour au moyen d'un mécanisme à double drapeau ou handshake travaillant avec les fantômes primaires L'utilisation de quatre registres fantômes permet de ne pas ralentir le 25 debit d'information pendant le fonctionnement du mécanisme de double drapeau. De préférence, on utilise un même mécanisme à double drapeau pour commander les transferts dans les registres fantômes ST 02-GR 2-275 Description des dessins D'autres caractéristiques, but et avantages de l'invention apparaîtront à la lecture de la description et des dessins ci-après, donnés uniquement à titre d'examples non limitatifs Sur les dessins annexés: La figure 1 illustre un premier circuit de transmission connu. La figure 2 illustre des chronogrammes représentatifs du premier circuit connu. La figure 3 illustre un second circuit de transmission connu. La figure 4 illustre des chronogrammes représentatifs du fonctionnement du 15 second système connu. La figure 5 illustre le principe selon l'invention. La figure 6 illustre des chronogrammes représentatifs du fonctionnement du 20 circuit selon l'invention. Description d'un mode de réalisation préféré La figure 5 illustre un mode de réalisation préféré de l'invention On aménage une mémoire tampon 390 permettant la transmission entre les deux sous-systèmes asynchrones La mémoire 390 est typiquement une mémoire de type FIFO (First In First Out) 390 ou tout élément fonctionellement équivalent comme par exemple un 30 banc de registres etc placé sur le chemin de données séparant deux soussystèmes asynchrones 300 et 350 rythmés par deux horloges distinctes clka et clkb. Préférentiellement, la mémoire FIFO sera réalisée au moyen d'une mémoire à double port présentant un port en écriture et un port en lecture fonctionnant chacun avec une horloge distincte (clka et clkb). ST 02-GR 2-275 -6 On dispose en outre, dans chacun des deux sous-systèmes 300 et 350 un premier et un second registre de pointage 301 et 351 contenant l'adresse de stockage de la prochaine cellule mémoire qui sera écrite ou lue, respectivement. (Write pointer ou Read pointer). Afin d'éviter toute erreur dans le transfert de données, le dispositif est conçu pour éviter que le sous-ensemble en réception 350 lise des données en avance sur le sous-ensemble en émission 300 (propriété PR 1) Inversement, le sous-ensemble 10 en émission ne doit pas écrire dans la mémoire FIFO avec une avance supérieure à la profondeur de la mémoire FIFO sur le sous-ensemble en réception (propriété PR 2) Le non-respect de la propriété PR 1 entraînerait l'apparition de données fausses dans le flux de données transitant entre les deux sous-systèmes tandis que le nonrespect de la propriété PR 2 entraîne la disparition de données du flux de 15 données transitant entre les deux sous-systèmes. fin de satisfaire les propriétés PR 1 et PR 2, on utilise la combinaison de deux jeux distincts de registres fantômes, également connus sous la dénomination shadow register dans la littérature anglo-saxonne, respectivement un jeu de 20 registres fantômes primaire et un jeu de registres fantômes secondaires. Le jeu de registres fantômes primaires comprend un premier registre 302 (ptra_shdl) et un second registre 352 (ptrb_shdl) qui sont respectivement situés dans le sous-système 300 et dans le sous système 350 Le premier registre 25 fantôme 302 est chargé de stocker une copie du contenu du registre de pointage en écriture (Write) 301 situé dans le même sous-système 300 tandis que le second registre fantôme 352 est chargé avec une copie du contenu du registre de pointage en lecture 351 situé dans le même sous-système de réception. Le jeu de registres fantômes secondaires comporte un troisième registre 303 (ptrbshd 2) et un quatrième registre 353 (ptrashd 2) qui sont respectivement disposés dans le sous-système en émission 300 et le soussystème en réception 350 Le registre fantôme 303 est conçu pour stocker une copie du contenu du registre fantôme 352 situé dans l'autre soussystème D'une manière similaire, le ST 02-GR 2-275 registre fantôme 353 est chargé de stocker une copie du contenu du registre fantôme 302 situé dans le sous-système 300. On observe ainsi que chaque sous-système dispose d'un registre fantôme 5 secondaire ( 303 pour le sous-système en émission 300; 353 pour le soussystème en réception 350) contenant une copie du registre de pointage de l'autre soussystème. Le circuit comporte en outre un bloc de commande 500 pour comparer le contenu du registre de pointage en écriture 301 avec le contenu registre fantôme secondaire 353 afin d'autoriser l'écriture de ladite mémoire FIFO au moyen d'un signal de commande (Enable) De la même manière un bloc de commande 600 dans le système en réception 350 permet de comparer le contenu du registre de pointage en écriture 301 avec le contenu du registre fantôme secondaire 353 afin s 5 d'autoriser l'écriture de ladite mémoire FIFO. Chaque sous-système peut ainsi, par comparaison de ce fantôme secondaire avec son propre registre de pointage, évaluer le niveau de remplissage de la FIFO Cette évaluation est en règle générale erronée, puisque la comparaison 20 ne peut pas être faite directement entre les deux registres de pointage; mais elle est suffisante pour garantir le respect des propriétés PR 1 et PR 2 En effet: * le registre fantôme secondaire 353 du pointeur d'écriture ne peut pas être en avance sur le pointeur d'écriture 301 Le sous-système de lecture, en comparant le registre fantôme secondaire 353 avec le 25 pointeur de lecture 351, ne peut donc pas surestimer le remplissage de la FIFO, ce qui garantit le respect de la propriété PR 1. ò le registre fantôme secondaire 303 du pointeur de lecture ne peut pas être en avance sur le pointeur de lecture 351 Le sous-système d'écriture, en comparant le registre fantôme secondaire 303 avec le 30 pointeur d'écriture 301, ne peut donc pas sousestimer le remplissage de la FIFO, ce qui garantit le respect de la propriété PR 2. ST 02-GR 2-275 -8 En se référant à nouveau à la figure 5 on constate que, du côté émission, le registre de pointage en écriture 301 de la mémoire FIFO dispose d'une sortie connectée à une première entrée d'un multiplexeur 312, lequel présente une seconde entrée recevant la sortie d'un circuit d'incrémentation 311 En sortie, le 5 multiplexeur 312 génère la prochaine valeur en écriture et cette valeur est transmise à l'entrée du registre 301 ainsi qu'à une première entrée d'un multiplexeur 310 dont une seconde entrée reçoit la sortie du premier registre fantôme 302 (ptrashdl). D'une manière symétrique, côté réception, le registre de pointage en lecture 351 dispose d'une sortie connectée à un multiplexeur 361, lequel reçoit également la sortie d'un circuit d'incrémentation 362 En sortie, le multiplexeur 361 génère la valeur suivante de l'adresse de lecture dans la mémoire FIFO 390 et cette valeur est transmise à l'entrée du registre 351 ainsi qu'à une première entrée d'un multiplexeur 360 dont une seconde entrée reçoit la sortie du second registre 15 fantôme 352 (ptrbshdl). La sortie du premier registre fantôme 302 (ptra-shdl) est connectée à une première entrée d'un multiplexeur 354, lequel dispose d'une seconde entrée connectée à la sortie du quatrième registre fantôme 353 (ptrashd 2) De la même 20 manière, la sortie du second registre fantôme 352 (ptrb- shdl) est connectée à une première entrée d'un multiplexeur 304, lequel dispose d'une seconde entrée connectée à la sortie du troisième registre fantôme 303 (ptrbshd 2). Un circuit à double drapeau sert à commander le transfert du contenu dudit 25 registre de pointage en écriture 301 dans ledit premier registre fantôme 302, puis dans ledit quatrième registre fantôme 353 Dans un mode de réalisation particulier, le même circuit à double drapeau est également utilisé pour commander le transfert du contenu dudit registre de pointage en écriture 301 dans ledit premier registre fantôme 302, puis dans ledit quatrième registre fantôme 353. Le circuit à double drapeau comporte un premier XOR 355 et un second XOR 305, combinés à un ensemble de registres 306-309 et 356-359 combinés à un élément inverseur, le tout réalisant une boucle astable. ST 02-GR 2-275 -9 Plus particulièrement, en se référant à nouveau à la figure 5, on voit que le premier XOR 355 présente une première entrée connectée à la sortie d'une bascule 356 générant un premier drapeau send_b, Le XOR 355 présente en outre une seconde entrée connectée à la sortie d'une bascule 358 ainsi qu'à l'entrée de la 5 bascule 356 La bascule 358 est montée en cascade avec une bascule 359 recevant le second drapeau send a généré par le sous-système 300. Dans le sous système 300, le second XOR 305 présente une première entrée connectée à la sortie d'une bascule 306 générant le drapeau send_a, et une 10 seconde entrée connectée à la sortie d'un multiplexeur 307 ainsi qu'à l'entrée de la bascule 306 Le multiplexeur dispose d'une première entrée ( 0) recevant le drapeau send_a et une seconde entrée inverseuse connectée à la sortie d'une bascule 308, montée en cascade avec une bascule 309 et l'entrée de cette dernière reçoit le premier drapeau send_b Le multiplexeur 307 est commandé par un signal 15 ACTIVE, lequel permet de commander ou non la fonction d'activation du mécanisme de double drapeau ou handshake. Le nombre total de bascules ou d'éléments de registre utilisé dans la boucle astable peut clairement être modifié On pourra ainsi clairement supprimer les 20 registres 309 et 359 si cela s'avère nécessaire La seule condition pour assurer le fonctionnement du double drapeau est l'existence d'un registre à décalage formé d'un certain nombre de bascule, (au moins deux bascules), et l'existence du multiplexeur inverseur 307 assurant le caractère astable de la boucle formée par les éléments 306- 309 et 356-359 En outre, comme on le constate sur la figure 5, le 25 mécanisme du double drapeau est avantageusement réalisé au moyen d'une boucle unique Alternativement, on pourra envisager deux boucles distinctes pour générer les deux signaux RECEIVE_a et RECEIVE_b. Le bon fonctionnement du mécanisme de double drapeau repose sur les trois 30 propriétés suivantes: * Toute donnée transmise par un mécanisme de double drapeau doit être stable pendant un cycle de transmission, c'est-à-dire entre une commutation du drapeau d'émission et la prochaine commutation du drapeau de réception (propriété PR 3). ST 02-GR 2-275 Les registres de pointage peuvent être incrémentés au cours d'un cycle de transmission (propriété PR 4) Ceci permet de stocker de nouvelles données dans la FIFO, et/ou de lire de nouvelles données depuis la FIFO, même pendant les phases de mise à jour des 5 fantômes Cette propriété permet d' assurer un débit de données élevé. * En cas d'arrêt des lectures et des écritures, les fantômes secondaires prennent au bout d'un temps fini la même valeur que les registres de pointage auxquels ils sont associés (propriété PR 5) Ceci permet de 10 garantir que toute donnée écrite dans la FIFO peut être lue. Les propriétés PR 3 et PR 4 ne pourraient être satisfaites si les fantômes secondaires 303 et 353 étaient mis à jour directement à partir des registres de pointage 351 et 301 Le circuit de l'invention effectue d'abord la recopie de chaque 15 registre de pointage dans un registre fantôme primaire ( 351 dans 352, 301 dans 302) Cette copie n'est effectuée qu'au début d'un cycle du mécanisme de double drapeau, grâce aux multiplexeurs 304 et 354 commandés respectivement par les signaux receivea et receive_b La valeur de chaque registre fantôme primaire peut alors être transmise vers l'autre sous- système pour être stockée dans le registre 20 fantôme secondaire. Un seul mécanisme à double drapeau est utilisé pour la mise à jour des fantômes secondaires Le signal senda est à la fois un drapeau d'émission pour le sous système d'écriture et un drapeau de réception pour le soussystème de lecture. Réciproquement, le signal send_b est à la fois un drapeau d'émission pour le sous 25 système de lecture et un drapeau de réception pour le soussystème d'écriture. La propriété PR 5 est vérifiée tant que le signal active conserve la valeur 1 Les cycles de mise à jour des fantômes secondaires se succèdent alors sans interruption. Contrairement aux techniques de l'art antérieur, dans lesquelles la génération d'une donnée devait attendre un cycle complet de rotation du drapeau, le circuit de la figure 3 autorise un chargement brusque de la FIFO indépendamment de la rotation du drapeau On constate ainsi que tant que la mémoire FIFO n'est pas pleine, le sous système 300 peut venir y charger des valeurs et, inversement, tant ST 02GR 2-275 que la mémoire FIFO n'est pas vide, le sous-système 350 peut venir y lire des données On obtient ainsi un bon transfert de données entre deux systèmes parfaitement asynchrones. L'on décrit à présent en détail le fonctionnement du circuit de la figure 5. Supposons que la mémoire FIFO 390 soit vide et que les registres fantômes primaires 302 et 350 et les registres fantômes secondaires, situés respectivement dans les systèmes 353 et 303 contiennent les mêmes valeurs On suppose également l'activation du signal de commande ACTIVE afin d'assurer la circulation du double drapeau au sein de la boucle astable. Lorsqu'une donnée est présentée sur le bus d'accès à la FIFO 390, le registre 301 contient la valeur du pointeur en écriture o cette donnée doit être stockée Une comparaison est effectuée entre, d'une part, le contenu de ce registre 301 et le contenu du registre fantôme secondaire 303 afin de s'assurer de la disponibilité de cellules au sein de la FIFO 390 Si la comparaison aboutit ce qui est le cas dans notre hypothèse dans laquelle la mémoire FIFO 390 est supposée vide I'écriture en mémoire est alors autorisée par le circuit 500 activant le signal ENABLE de la FIFO et, dans le même cycle d'horloge, le registre en écriture 301 20 est incrémenté au moyen des éléments 311 et 312. Cette valeur incrémentée est présentée à l'entrée du multiplexeur 310, mais le transfert dans le registre primaire 302 associé au registre 301 n'est effectué que sous la commande de la boucle de drapeau Ce transfert est assuré lorsque le 25 XOR 305 voit ses deux entrées porter des valeurs différentes, ce qui intervient lorsque la commutation au sein de la boucle parvient au niveau de l'élément 306 A ce moment ci, pendant un cycle de l'horloge du circuit d'émission 300, la porte XOR 305 commande les deux multiplexeurs 304 et 310, ce qui provoque la copie des registres 352 et 301 dans les registres secondaire 303 et primaire 302 du circuit 30 d'émission respectivement. Les registres fantômes primaire 302 et secondaire 303 sont chargées avec une donnée qui est par conséquent inférieure au contenu réel des deux registres dont ils sont la copie, à savoir les registure en écriture 301 et le registre fantôme ST 02-GR 2-275 12 2849228 352, dont le contenu est lui-même inférieur à la valeur stockée dans le registre de pointeur de lecture 351 Ainsi, lorsque le circuit en émission 300 effectue la comparaison entre les contenu du registre 303 et du registre 301, on est sr que le mécanisme voit la FIFO comme étant plus chargée qu'elle ne l'est réellement et 5 que, par conséquent, on ne s'expose pas à l'écrasement de données non encore lues La propriété PR 1 est alors toujours satisfaite. Lorsque le drapeau circule au sein de la boucle de handshake, composée par les bascules 306-309 et 356-359 et par le circuit multiplexeur inverseur 309, on o constate que, plus tard, il arrive au niveau de l'élément 356 et, durant un cycle d'horloge du circuit en lecture 350, on a les deux entrées du XOR 355 qui sont opposées Le circuit XOR génère par conséquent, durant un cycle du circuit en réception 300, un signal active (RECEIVE_b) qui vient commander les deux multiplexeurs 354 et 360 et, au front d'horloge suivant le second drapeau SEND_b 15 est généré. Ce signal de commande RECEIVE_b provoque la copie des registres 351 et 302 dans les registres fantômes 352 et 353 respectivement Il en résulte que le registre fantôme primaire 352 reçoit une mise à jour du contenu du pointeur en lecture 361 et le registre fantôme secondaire 353 recoit une mise à jour du contenu 20 du registre fantôme primaire 302. Deux cycles d'horloge du système 300 après la génération du signal SEND_B, ce dernier est reçu par le mutliplexeur 307 et inversé par ce dernier de manière à provoquer la commutation du drapeau et le déclenchement du signal de 25 commande en sortie du XOR 305. On constate ainsi que, alternativement, les signaux RECEIVE_A et RECEIVE_B sont générés, permettant la réalisation du double drapeau au moyen d'une unique boucle de décalage associé au multiplexeur 307 Ainsi, les registres 30 fantômes secondaires reçoivent périodiquement, à chaque parcours de la boucle de handshake ou double drapeau, une mise à jour du contenu des pointeurs en écriture et en lecture Cette mise à jour est respectivement utilisée pour commander, les opérations d'écriture et les opérations de lecture dans la FIFO 390. De cette manière, on est assuré de ne pas perdre de données dans la FIFO en ST 02-GR 2-275 venant écraser des données qui n'auraient été préalablement lues et, inversement, on garantit de ne pas générer de données erronées dans le processus de lecture de la FIFO du fait d'une lecture de cellules qui n'auraient pas été préalablement chargée avec des données valides. Ainsi on peut effectuer un chargement complet de la mémoire FIFO jusqu'à ce que le registre en écriture 301 rattrape la valeur du registre fantôme secondaire 303 contenue la dernière valeur mise à jour du registre de lecture 351 On obtient ainsi un mécanisme particulièrement efficace entre deux systèmes totalement asynchrones. Supposons à présent que la FIFO 390 soit lue par le système en réception 350 et qu'il n'y ait pas d'opérations en écriture On constate que l'on peut procéder à la lecture de cette FIFO jusqu'à ce que le registre en lecture 351 rattrape la valeur 15 stockée dans le registre fantôme secondaire 353, auquel cas le procédé est inhibé par le circuit 600 désactivant le signal de commande ENABLE, jusqu'à ce que de nouvelles opérations d'écritures interviennent et fassent l'objet d'une incrémentation du compteur en écriture transmise aux fantôme secondaire 353. On constate que l'on peut ainsi procéder indifféremment, à des opérations de lecture et d'écriture dans la mémoire FIFO 390, d'une manière totalement asynchrone, tout en s'assurant de ne pas perdre de données ni de générer des données erronées. Des chronogrammes illustrant le fonctionnement du circuit de la figure 5 sont représentés en figure 6, et notamment les signaux clka, active, receive_a, ptrb_shd 2, senda, ptra_shdl, clkb, receive_b, ptra_shd 2, send_b, ptrb_shdl. ST 02-GR 2-275 14 2849228 Revendications s 1 Dispositif de transfert de données entre deux systèmes asynchrones communiquant via une mémoire tampon, telle qu'une mémoire FIFO par exemple, permettant une communication de données asynchrones entre un premier système émetteur ( 300) comportant un registre ( 301) de pointage en écriture et un second système récepteur ( 350) comportant un registre ( 351) de pointage en lecture; o O ledit dispositif étant caractérisé en ce qu'il comporte: un premier registre fantôme ( 302) situé dans ledit premier système et destiné à recevoir le contenu dudit registre de pointage en écriture; un second registre fantôme ( 352) situé dans ledit second système et destiné à s 5 recevoir le contenu dudit registre de pointage en lecture; un troisième registre fantôme ( 303) situé dans ledit premier système et destiné à recevoir le contenu dudit second registre fantôme ( 352); un quatrième registre fantôme ( 353) situé dans ledit second système et destiné à recevoir le contenu dudit premier registre fantôme; un circuit de comparaison ( 500) du contenu dudit registre de pointage en écriture ( 301) avec le contenu dudit quatrième registre fantôme ( 353) afin d'autoriser l'écriture de ladite mémoire FIFO; un circuit de comparaison ( 600) du contenu dudit registre de pointage en lecture ( 351) avec le contenu dudit troisième registre ( 303) afin d'autoriser la lecture de 25 ladite mémoire FIFO. 2 Dispositif selon la revendication 1 caractérisé en ce que le transfert du contenu dudit registre de pointage en écriture ( 301) est réalisé au moyen d'un circuit à double drapeau venant successivement commander le transfert du contenu dudit 30 registre de pointage en écriture ( 301) dans ledit premier registre fantôme ( 302), puis dans ledit quatrième registre fantôme ( 353). 3 Dispositif selon la revendication 1 caractérisé en ce que le transfert dudit registre de pointage en lecture ( 351) est réalisé au moyen d'un circuit à double drapeau ST 02-GR 2-275 venant successivement commander le transfert du contenu dudit registre de pointage en écriture ( 301) dans ledit premier registre fantôme ( 302), puis dans ledit quatrième registre fantôme ( 353). s 4 Dispositif selon l'une quelconque des revendications 2 à 3 caractérisé en ce que ledit circuit à double drapeau comporte une boucle de registres ou bascules combinée à un élément inverseur ( 307) de manière à permettre la circulation d'un état de commutation au sein de la boucle, ledit état servant successivement de drapeau pour ledit premier système émetteur ( 300) et ledit deuxième système io récepteur ( 350). Dispositif selon la revendication 4 caractérisé en ce que le dit circuit à double drapeau comporte dans ledit premier système: une première bascule ( 309) présentant une entrée et une sortie, ladite entrée is recevant le drapeau de l'autre système (send_b); une seconde bascule ( 308) présentant une entrée et une sortie, ladite entrée recevant la sortie de ladite première bascule; un multiplexeur ( 307) présentant une première entrée inverseuse connectée à la sortie de ladite seconde bascule ( 308) et une seconde entrée non inverseuse 20 recevant le drapeau (senda) transmis à l'autre système; une troisième bascule ( 306) présentant une entrée connectée à ladite sortie dudit multiplexeur ( 307) et une sortie générant ledit drapeau (send_a) transmis à l'autre système; une porte XOR ( 305) présentant une première entrée connectée à la sortie de 25 ladite troisième bascule ( 306) et une seconde entrée connectée à la sortie dudit multiplexeur ( 307). 6 Dispositif selon la revendication 5 caractérisé en ce que ledit circuit de double drapeau comporte dans ledit second système: une quatrième bascule bascule ( 359) présentant une entrée et une sortie, ladite entrée recevant le drapeau dudit premier système (senda); une cinquième bascule ( 358) présentant une entrée et une sortie, ladite entrée recevant la sortie de ladite quatrième bascule; ST 02-GR 2-275 16 2849228 une sixième bascule ( 356) présentant une entrée connectée à ladite sortie de ladite cinquième bascule ( 358) et une sortie générant le drapeau (send_b) transmis audit premier système; une porte XOR ( 355) présentant une première entrée connectée à la sortie de 5 ladite cinquième bascule ( 358) et une seconde entrée connectée à la sortie de ladite sixième bascule ( 356). 7 Dispositif selon la revendication 6 caractérisé en ce que ledit premier système ( 300) comporte: io un second multiplexeur ( 304) commandé par ladite première porte XOR ( 305) et permettant le transfert entre ledit second registre fantôme ( 352) et ledit troisième registre fantôme ( 303); un troisième multiplexeur ( 310) permettant le transfert entre ledit registre de pointage en écriture ( 301) et ledit premier registre fantôme ( 302). 8 Dispositif selon la revendication 7 caractérisé en ce que ledit second système ( 350) comporte: un quatrième multiplexeur ( 354) commandé par ladite seconde porte XOR ( 355) 20 et permettant le transfert entre ledit premier registre fantôme ( 302) et ledit quatrième registre fantôme ( 353); un cinquième multiplexeur ( 360) permettant le transfert entre ledit registre de pointage en lecture ( 351) et ledit troisième registre fantôme ( 303). 9 Dispositif selon l'une des revendications précédentes caractérisée en ce que ladite mémoire FIFO est réalisée au moyen d'une mémoire à double port. Dispositif selon la revendication 9 caractérisée en ce que ledit premier et ledit second système sont intégrés dans le même produit semiconducteur. ST 02-GR 2-275