FR 2899985 A1 20071019 FR 0603247 A 20060413 Références : 106210FR / 05-GR21-448 DISPOSITIF DE COMMANDE DUNE MEMOIRE TAMPON L'invention concerne un dispositif de commande d'une mémoire tampon appropriée pour mémoriser n mots de données, la dite mémoire tampon étant susceptible d'être utilisée pour un transfert de données entre un premier système et un deuxième système, le dispositif de commande comprenant un pointeur d'écriture et un pointeur de lecture. L'invention est notamment intéressante dans le cas de deux systèmes électroniques échangeant des données de manière asynchrone ou mésochrone. Un échange de données entre deux systèmes est dit asynchrone si les deux systèmes travaillent avec des horloges de fréquences différentes. Un échange de données entre deux systèmes est dit mésochrone si les deux systèmes travaillent avec des horloges de même fréquence mais déphasées l'une par rapport à l'autre. De nombreux circuits électroniques, intégrés ou non, comportent des systèmes indépendants qui fonctionnent au rythme de signaux d'horloge de fréquence différentes et / ou déphasés les uns par rapport aux autres. C'est le cas par exemple lorsqu'un processeur manipule des données à une fréquence élevée puis les transmet à des circuits avals fonctionnant à une fréquence plus faible. C'est le cas également lorsque deux systèmes sont cadencés par un même générateur d'horloge, le premier étant plus éloigné du générateur d'horloge (en terme de longueur du fil transportant le signal d'horloge) que le deuxième, de sorte que le signal d'horloge reçu par le premier système est décalé en phase par rapport au signal d'horloge reçu par le deuxième système. Réfs : 106310FR Le transfert de données entre deux systèmes peut se faire par exemple par l'intermédiaire d'une mémoire tampon. Sur la figure 1 est représentée une mémoire tampon circulaire comprenant un port accessible en écriture et un port accessible en lecture. La mémoire comprend n registres de mémorisation R1 à Rn, un circuit de sélection d'entrée, un circuit de sélection de sortie et un dispositif de commande. Les n registres de mémorisation sont susceptibles de mémoriser des mots de données transitant entre le premier système et le deuxième système. Le circuit de sélection d'entrée comprend une entrée de données connectée à une sortie de données du premier système pour recevoir des données à transmettre, et n sorties, chacune connectée à une entrée d'un des n registres de mémorisation R1 à Rn. Le circuit de sélection d'entrée comprend également une entrée de commande pour recevoir un signal indiquant à quelle sortie l'entrée de données doit être reliée. Le circuit de sélection de sortie comprend n entrées de données, chacune connectée à une sortie de données des n registres R1 à Rn, une sortie de données connectée à une entrée de données du deuxième système, et une entrée de commande. Lorsque le premier système commande une écriture (signal WRITE) et / ou lorsque le deuxième système commande une lecture (signal READ), le dispositif de commande produit des signaux de commande WRITE_SELECT et / ou READ_SELECT appropriés pour écrire une donnée dans un registre et / ou lire une donnée dans un registre, de sorte que les données soient lues dans la mémoire dans l'ordre dans lequel elles ont été écrites. Le dispositif de commande comprend notamment un pointeur d'écriture et un pointeur de lecture. Ces pointeurs sont en pratique des registres à décalage dont le contenu indique dans lequel des registres de mémorisation R1 à Rn un prochain mot doit être écrit, respectivement dans 3 Réfs : 106310FR lequel des registres R1 à Rn un prochain mot doit être lu. Le contenu du pointeur d'écriture, respectivement du pointeur de lecture, est mis à jour à chaque écriture, respectivement à chaque lecture dans un registre de la mémoire. Lorsque le premier système et le deuxième système qui utilisent la mémoire tampon communiquent de manière asynchrone ou mésochrone, peuvent apparaîtrent des phénomène d'instabilité, communément appelés métastabilité : le deuxième système reçoit une donnée différente de la donnée transmise par le premier système, lorsqu'un signal de données ou de commande à l'intérieur de la mémoire ou du dispositif de commande associé change d'état sur commande du premier système et n'a pas le temps de stabiliser sa valeur avant d'être exploité par le deuxième système. Pour éviter les instabilités dans le cas d'un transfert de données via un unique registre de mémorisation cadencé par l'horloge du premier système (c'est-à--dire le système qui mémorise une donnée dans le registre de mémorisation), une technique élémentaire consiste à ajouter, en sortie du registre de mémorisation, un circuit de synchronisation. Ce circuit de synchronisation est par exemple un registre à décalage de deux bits cadencé selon l'horloge du deuxième système (c'est-à-dire le système qui reçoit la donnée contenue dans le registre de mémorisation). Cette technique introduit une latence de 1 à 2 cycles d'horloge. La latence est le temps entre le moment où un signal change d'état, et le moment où sa valeur est stable est garantie. Dans le cas de l'ajout d'un circuit de synchronisation, la latence du dispositif de commande est égale au temps de transit dans le circuit de synchronisation. Réfs : 106310FR Des techniques connues permettent également d'éviter les instabilités dans des mémoires tampons, telles que des mémoires FIFO, des bancs de registres ou des mémoires à double port, plus complexes qu'un simple registre. Selon une première technique décrite dans le document Dl (FR 2 849 228) ou D2 (US2004230723), on utilise un mécanisme à double drapeau (ou mécanisme d'accusé réception) pour garantir la réception correcte des données par le deuxième système, et des registres fantômes (images d'un pointeur) pour se prémunir d'une modification du contenu d'un pointeur avant son exploitation. Si le problème de la mé:astabilité des données est correctement résolu, l'inconvénient de cette technique est une latence importante, de l'ordre de 2 à 6 cycles d'horloge : temps nécessaire pour que l'avis de réception émis par le deuxième système soit reçu par le premier système, après la mise à jour et l'exploitation du contenu des registres fantômes. Selon une deuxième technique décrite dans le document D3 (US 5,598,113, notamment figures 11, 12 et description associée), on utilise un dispositif de commande comprenant, en complément des pointeurs d'écriture et de lecture, un registre d'état (registre 1150) de n bits mis à jour en fonction du contenu du pointeur d'écriture et du pointeur de lecture. Chaque bit du registre d'état indique si le registre de même rang de la mémoire tampon contient un mot de donnée (susceptible d'être lu par le deuxième système) ou si le dit registre est vide (et donc susceptible d'être écrit par le premier système). Le dispositif de commande comprend également un circuit de gestion d'écriture dans lequel les signaux sortant du registre d'état (registre 1150) sont exploités pour déterminer si la mémoire est pleine (circuit 1050 de D3) et le résultat (signal 1151) est synchronisé (circuit 1135) avant être utilisé (signal 1115) pour la mise à Réfs : 106310FR jour du pointeur d'écriture (1130). Egalement, le dispositif de commande comprend un circuit de gestion de lecture dans lequel les signaux sortant du registre d'état sont synchronisés (circuit 1160 de D3) sur le signal d'horloge du deuxième système avant d'être exploités pour déterminer si la mémoire est vide (circuit 1165), le résultat (signal 1175) étant ensuite utilisé pour la mise à jour du pointeur de lecture (1170). Un inconvénient de cette technique est qu'elle nécessite l'utilisation d'un registre d'état pour la gestion du contenu de la mémoire, ce qui augmente la surface de silicium du dispositif de commande. De plus, ce registre d'état est réalisé par des bascules de type. De telles bascules sont plus robustes que les bascules D vis-à-vis des métastabilités apparaissant dans des systèmes communiquant de manière asynchrone, mais elles sont moins efficaces vis-à-vis des métastabilités apparaissant dans des systèmes communiquant de manière mésochrone. L'invention a pour objet de pallier ces inconvénients, en proposant un dispositif de commande d'une mémoire tampon appropriée pour mémoriser n mots de données, la dite mémoire tampon étant susceptible d'être utilisée pour un transfert de données entre un premier système et un deuxième système, le dispositif de commande comprenant un pointeur d'écriture et un pointeur de lecture. Selon l'invention, le dispositif de commande comprend également . • un circuit de gestion d'écriture, pour comparer un contenu du pointeur d'écriture et un contenu du pointeur de lecture et autoriser ou non une écriture dans la mémoire, Réfs : 106310FR • un circuit de gestion de lecture, pour comparer le contenu du pointeur d'écriture et Le contenu du pointeur de lecture, et autoriser ou non une lecture de la mémoire. Le dispositif selon l'invention n'utilise pas de registre d'état. Le circuit de gestion d'écriture et le circuit de gestion de lecture travaillent directement sur les signaux issus du pointeur d'écriture et du pointeur de lecture. Ce qui limite la taille du dispostif. Le pointeur d'écriture peut être un premier registre à décalage de n bits, le registre comprenant une entrée de données et une sortie de données connectées ensemble, une entrée de commande et une entrée d'horloge, sur l'entrée de commande étant appliqué un signal de validation d'écriture actif lorsque la mémoire n'est: pas pleine et lorsque le premier système commande une écriture, et sur l'entrée d'horloge étant appliqué un premier signal d'horloge associé au premier système. Le premier registre contient au moins deux bits successifs dans un premier état logique, les autres bits étant dans un deuxième état logique. Le pointeur de lecture peut être un deuxième registre à décalage de n bits, le registre comprenant une entrée de données et une sortie de données connectées ensemble, une entrée de commande et une entrée d'horloge, sur l'entrée de commande étant appliqué un signal de validation de lecture actif lorsque la mémoire n'est pas vide et lorsque le deuxième système commande une lecture, et sur l'entrée d'horloge étant appliqué un deuxième signal d'horloge associé au deuxième système. Le deuxième registre contient au moins deux bits successifs dans le premier état logique, les autres bits étant dans le deuxième état logique. 7 Réfs : 106310FR Ainsi, dans le pointeur d'écriture selon l'invention, la position du registre dans lequel la prochaine donnée doit être écrite est codée par au moins deux bits successifs (et non un seul comme dans le circuit de D3) ayant une première valeur logique, les autres bits du pointeur d'écriture ayant une deuxième valeur logique, différente de la première. L'intérêt de ce nouveau codage est que, lors de la mise à jour du pointeur d'écriture au moment d'une écriture, au moins un des deux bits ayant la première valeur est inchangé comme on le verra mieux plus loin dans des exemples. Il s'ensuit que, par rapport aux dispositifs de commande antérieurs, :Les risques de métastabilité sont limités, notamment si les deux systèmes utilisant le dispositif de commande selon l'invention échangent des données de manière asynchrone. Le même codage est utilisé dans le pointeur de lecture. Dans le circuit de gestion d'écriture, on utilise de préférence, de même que dans les dispositifs antérieurs, un premier circuit de synchronisation. Egalement, dans le circuit de gestion de lecture, on utilise un deuxième circuit de synchronisation. Selon une variante, le deuxième dispositif de synchronisation peut être réalisé de manière identique au circuit 1160 du dispositif selon D3. Selon une autre variante, le deuxième circuit de synchronisation comprend : • un circuit de retard ajustable, pour retarder le deuxième signal d'horloge, et • n bascules de type D comprenant chacune : / une entrée de données connectée à une sortie de données d'une bascule de même rang du pointeur d'écriture, / une entrée d'horloge sur laquelle est appliqué le 35 deuxième signal d'horloge retardé, et Réfs : 106310FR / une sortie, les sorties des n bascules de type D formant ensemble une sortie parallèle sur laquelle est produit un signal synchronisé représentatif du contenu du pointeur d'écriture. Le circuit de retard est choisi de préférence ajustable. Le cas échéant, et notamment lorsque le premier signal d'horloge (associé au premier système) et le deuxième signal d'horloge (associé au deuxième système) sont de même fréquence mais déphasés l'un par rapport à l'autre, le circuit de retard est ajusté de sorte que les fronts actifs du signal d'horloge retardé soient suffisamment décalés des fronts actifs du premier signal d'horloge et des fronts actifs du deuxième signal d'horloge pour garantir que les signaux sont stabilisés avant de les mémoriser. L'ajustement du circuit de retard peut se faire, selon le cas, au cours de 1."utilisation du dispositif de commande, ou bien lors de la fabrication ou d'un test du dispositif de commande. La présence d'un circuit de retard permet ainsi de réduire considérablement les métastabilités susceptibles d'apparaître. L'invention sera mieux comprise et d'autres caractéristiques et avantages apparaîtront à la lecture de la description qui va suivre, d'exemples de mise en oeuvre d'un dispositif de commande selon. l'invention. La description, faite à titre indicatif et nullement limitatif, est à lire en relation aux dessins annexés dans lesquels : • la figure 1, déjà décrite, est un schéma d'une mémoire tampon connue, • la figure 2 est un schéma bloc d'un dispositif de commande selon l'invention, approprié pour la commande 35 d'une mémoire tampon selon la figure 1, 5 Réfs : 106310FR • la figure 3 détaille des éléments du dispositif de la figure 2, • les figures 4 et 5 détaillent des variantes d'éléments de la figure 3. Comme dit précédemment, l'invention concerne un dispositif de commande d'une mémoire tampon. Dans l'exemple décrit, le dit dispositif est utilisé pour la commande d'une mémoire tampon 1 telle que représentée 10 sur la figure 1, appropriée pour mémoriser n mots de données. La dite mémoire tampon est susceptible d'être utilisée pour un transfert de données entre un premier système et un deuxième système. Les deux systèmes peuvent communiquer de manière synchrone, asynchrone ou 15 mésochrone. Comme les dispositifs de commande antérieurs, le dispositif selon l'invention comprend un pointeur d'écriture 2 et un pointeur de lecture 3. Le pointeur d'écriture 2 est réalisé sous la forme d'un 20 premier registre à décalage 21 de n bits (autant de bits que de registres susceptibles d'être sélectionnés dans la mémoire tampon), comprenant une entrée de données D et une sortie de données Q connectées ensemble, une entrée de commande EN et une entrée d'horloge CK. Sur l'entrée 25 de commande est appliqué un signal de validation d'écriture VAL_W, actif lorsque la mémoire n'est pas pleine et lorsque le premier système commande une écriture WRITE. Sur l'entrée d'horloge est appliqué un premier signal d'horloge CLKW associé au premier système. 30 Le pointeur de lecture 3 est réalisé sous la forme d'un deuxième registre à décalage 31 de n bits, comprenant une entrée de données D et une sortie de données Q connectées ensemble, une entrée de commande EN et une entrée d'horloge CK. Sur l'entrée de commande est appliqué un Réfs : 106310FR signal de validation de lecture VAL _R actif lorsque la mémoire n'est pas vide et lorsque le deuxième système commande une lecture READ. Sur l'entrée d'horloge est appliqué un deuxième signal d'horloge CLKR associé au deuxième système. Comme tous les registres à décalage, le registre 21 est constitué d'un ensemble de bascules D (n bascules pour le registre 21) associées en série ; la sortie de données Q de la dernière bascule forme une sortie de données série du registre à décale et est connectée à une entrée de données D de la première bascule qui forme l'entrée de données du registre. Les sorties Q de chacune des bascules sont connectées ensemble à une sortie parallèle du registre, les entrées d'horloge de chacune des bascules sont connectées ensembles à une entrée d'horloge CK du registre et les entrées de commande des bascules sont connectées ensemble à l'entrée de commande EN du registre. Le registre 31 est réalisé de la même manière que le registre 21. Selon l'invention, le pointeur d'écriture contient deux bits successifs dans un premier état logique (dans l'exemple décrit, égal à "1") et n-2 autres bits dans un deuxième état logique (dans l'exemple, égal à "0"). La position des deux bits successifs dans le premier état logique indique le rang du registre Ri à Rn dans lequel la prochaine donnée doit être écrite. Dans l'exemple représenté sur les figures, le premier bit à "1" dans le pointeur d'écriture indique le rang du registre à écrire (ici R2). Le contenu du pointeur d'écriture est décalé à chaque écriture dans la mémoire tampon (signal VAL_W actif). Réfs : 106310FR Par exemple, si initialement, le contenu du pointeur d'écriture est égal à 1 1 0 0 ... 0 (registre à écrire = registre R1) le contenu du pointeur devient après mise à jour suite à 5 une écriture : 0 1 1 0 ... 0 (nouveau registre à écrire = registre R2) Le deuxième bit, égal à "1", ne change pas d'état lors de la mise à jour du pointeur. Il s'ensuit qu'il n'y a pas 10 de risque de métastabilité sur ce bit au moment de la mise à jour du pointeur. Le codage de l'information (= le rang du registre à écrire) selon l'invention peut donc être avantageusement utilisé dans le cas où les deux systèmes qui utilisent le dispositif selon l'invention 15 communiquent de manière asynchrone. De la même façon, le pointeur de lecture contient deux bits successifs dans un premier état logique (dans l'exemple décrit, égal à "1") et n-2 autres bits dans un 20 deuxième état logique (dans l'exemple, égal à "0"). La position des deux bits successifs dans le premier état logique indique le rang du registre Rl à Rn dans lequel la prochaine donnée doit être lue. :Dans l'exemple représenté sur les figures, le premier bit à "0" après 25 les deux bits à "1" dans le pointeur de lecture indique le rang du registre à lire (dans l'exemple R5, puisque le 3ème et le 4ème bits du pointeur de lecture sont à "1"). Le contenu du pointeur de lecture est décalé à chaque lecture dans la mémoire tampon (signal VAL R actif). 30 En complément du pointeur d'écriture et du pointeur de lecture, le dispositif de commande selon l'invention comprend également : Réfs : 106310FR • un circuit de gestion d'écriture 4, pour comparer le contenu du pointeur d'écriture et le contenu du pointeur de lecture et autoriser (signal FULL inactif) ou non une écriture dans la mémoire, et • un circuit de gestion de lecture 5, pour comparer le contenu du pointeur d'écriture et le contenu du pointeur de lecture, et autoriser (signal EMPTY inactif) ou non une lecture de la mémoire. Le dispositif de commande comprend enfin : • une porte logique 6, pour combiner le signal FULL autorisant ou non une écriture avec une instruction WRITE de commande d'écriture reçu du premier système, et produire le signal de validation d'écriture VAL W appliqué sur l'entrée de commande du pointeur d'écriture, • une porte logique 7, pour combiner le signal EMPTY autorisant ou non une lecture avec une instruction READ de commande de lecture reçu du deuxième système, et produire le signal de validation de lecture VAL READ appliqué sur l'entrée de commande du pointeur d'écriture. Le circuit de gestion d'écriture 4 comprend un circuit de détection de mémoire pleine 41, pour comparer bit à bit le contenu du pointeur d'écriture avec le contenu du pointeur de lecture, et produire un signal indiquant que la mémoire est pleine (signal FULL) si un bit du pointeur de lecture et un bit de même rang du pointeur d'écriture sont simultanément dans le premier état logique. Parce qu'il exploite directement le contenu du pointeur d'écriture et du pointeur de lecture, le circuit de détection de mémoire pleine selon l'invention est différent des circuits de même fonction connus. Ainsi, sur la figure 3, le circuit de détection de mémoire pleine 41 comprend : Réfs : 106310FR • n portes logiques 411_1 à 411_n, de type ET à deux entrées et une sortie ; une porte logique 411_i de rang i compris entre 1 et n comprend une première entrée connectée à une sortie de données d'une bascule de rang i du pointeur d'écriture et une deuxième entrée connectée à une sortie de données d'une bascule de rang i du pointeur de lecture, • une n+l-ième porte logique 412 comprenant n entrées connectées chacune à la sortie de l'une des n portes logiques, et une sortie sur laquelle est produit le signal FULL. Le circuit de gestion d'écriture 4 comprend également un premier circuit de synchronisation 43, pour synchroniser le signal FULL indiquant que la mémoire est pleine sur le premier signal d'horloge CLKW. Le circuit 43 comprend une entrée de donnée sur laquelle est appliqué le signal FULL, une entrée d'horloge sur laquelle est appliqué le signal CLKW et une sortie de données sur laquelle est produite le signal synchronisé. Dans l'exemple représenté figure 3, le circuit 43 est un registre de deux bits constitué de deux bascules D 431, 432 associées en série. Dans une variante de l'invention, on utilise un premier circuit de synchronisation 44 (figure 5) comprenant : • un moyen pour synchroniser le signal_ produit par le circuit 41 de détection de mémoire pleine sur le premier signal d'horloge CLKW, et • un moyen pour retarder la fourniture du signal synchronisé si le signal de commande d'écriture (WRITE) et le signal synchronisé étaient inactifs lors d'un précédent front actif du premier signal d'horloge. Retarder la fourniture du signal synchronisé permet d'optimiser le contenu de la mémoire, c'est-à-dire Réfs : 106310FR d'utiliser au mieux les registres R1 à Rn, en tenant compte du fait qu'il existe un retard de 1 à 2 cycles d'horloge CLKW pour la mise à jour du signal FULL. Pour cela, lorsque le signal en sortie du moyen de synchronisation est actif, on vérifie si, lors du cycle d'horloge CLKW précédent, la mémoire était déjà pleine (c'est-à-dire si la sortie du moyen de synchronisation était active) ou si une écriture a été réalisée (c'est-à-dire si le signal WRITE était actif). Dans ce cas, on considère que la mémoire est réellement: pleine et le moyen pour retarder produit le signal FULL actif pour interdire une écriture supplémentaire. Si par contre, lors du cycle d'horloge CLKW précédent, la mémoire n'était pas pleine (sortie du moyen de synchronisation inactive) et si une écriture n'a pas été réalisée (WRITE inactif au cycle précédent:), alors il est possible d'écrire encore une donnée dans la mémoire et le moyen pour retarder produit le signal FULL inactif pour autoriser une écriture supplémentaire. Sur la figure 5, le moyen pour synchroniser le signal produit par le circuit 41 comprend, de même que le circuit 43, un registre de deux bits constitué de deux bascules D 4.41, 442 associées en série. L'entrée de la bascule 441 est connectée à la sortie du circuit 41. Sur la figure 5, le moyen pour retarder la fourniture du signal synchronisé (moyen d'optimisation) comprend : • une porte 443 de type OU comprenant une entrée connectée à la sortie de la bascule 442, une entrée sur laquelle est appliqué le signal de commande d'écriture WRITE, et une sortie, • une bascule 444, de type D, comprenant une entrée de données connectée à la sortie de la porte 443, une entrée de commande sur laquelle est appliqué le premier signal d'horloge CLKW, et une sortie, 15 Réfs : 106310FR • une porte 445, de type ET, comprenant une entrée connectée à la sortie de la bascule 442, une entrée connectée à la sortie de la bascule 444, et une sortie sur laquelle est produit le signal FULL. la porte 443 et la bascule 444 mémorise l'état du signal WRITE et du signal sortant du registre de deux bits lors du front actif d'horloge CLKW précédent. La porte 445 combine l'état du signal sortant du registre de deux bits et l'information mémorisée par la bascule 444. Le circuit de gestion de lecture 5 comprend quant à lui : • un circuit de décodage 51, pour produire un signal de sélection de lecture READ SELECT en fonction du contenu du pointeur de lecture, • un deuxième circuit de synchronisation 52, pour produire un signal représentatif du contenu du pointeur d'écriture synchronisé sur le deuxième signal d'horloge CLKR, • un circuit de détection de mémoire vide 53, pour comparer le signal synchronisé représentatif du contenu du pointeur d'écriture et le signal de sélection de lecture et produire un signal EMPTY indiquant que la mémoire est vide, actif ou non en fonction du résultat de la comparaison. En fonction du contenu du pointeur de lecture, le circuit de décodage 51 produit un signal READ_SELECT de n bits, comprenant un bit dans le premier état logique ("1") et n-i bits dans le deuxième état logique ("0"). Le rang du bit dans le premier état logique correspond au rang du registre Ri à Rn de la mémoire dans lequel la prochaine donnée doit être lue. Le signal READ_SELECT peut être appliqué directement comme signal de commande sur le circuit de sélection d'entrée de la mémoire tampon. Réfs : 106310FR Le circuit de décodage 51 peut être réalisé par n portes logiques 511_1 à 511_n de type ET à deux entrées et une sortie . • la porte logique 511_n de rang n comprend une première entrée connectée à la sortie de données de la bascule de rang n du pointeur de lecture 31 et une deuxième entrée connectée à la sortie de données de la bascule de rang 1 du pointeur de lecture 31, • une porte logique 511_i de rang i compris entre 1 et n-1 comprend une première entrée connectée à une sortie de données d'une bascule de rang i du pointeur de lecture 31 et une deuxième entrée connectée à une sortie de données d'une bascule de rang i+l du pointeur de lecture 31, et • les sorties de données de un bit de chacune des portes 5111 à 511 n sont connectées ensemble à la sortie de données parallèle du circuit 51. Le circuit de détection de mémoire vide 53 comprend quant à lui, dans l'exemple de la figure 3 : • n portes logiques 531_1 à 531_n de type ET à deux entrées de données non inverseuses, une entrée de données inverseuse et une sortie, • une n+1-ième porte logique 532 comprenant n entrées connectées chacune à la sortie de l'une des n portes logiques, et une sortie sur laquelle est produit le signal EMPTY indiquant que la mémoire est vide. La porte de logique 531_1 de rang 1 comprend une entrée non inverseuse connectée au fil de rang 1 de la sortie parallèle du décodeur de lecture, une entrée inverseuse connectée au fil de rang 2 de la sortie parallèle du deuxième circuit de synchronisation 52, une entrée non inverseuse connectée au fil de rang 3 de la sortie parallèle du deuxième circuit de synchronisation 52, et une sortie. Réfs : 106310FR La porte logique 531_2 de rang 2 comprend une entrée non inverseuse connectée au fil de rang 2 de la sortie parallèle du décodeur de lecture, une entrée inverseuse connectée au fil de rang 3 de la sortie parallèle du deuxième circuit de synchronisation 52, une entrée non inverseuseconnectée au fil de rang 4 de la sortie parallèle du deuxième circuit de synchronisation 52, et une sortie. La porte logique 531_i de rang i compris entre 3 et n - 2 a une entrée non inverseuse connectée au fil de rang i de la sortie parallèle du décodeur de lecture, une entrée inverseuse connectée au fil de rang i+]. de la sortie parallèle du deuxième circuit de synchronisation 52, une entrée non inverseuse connectée au fil de rang i+2 de la sortie parallèle du deuxième circuit de synchronisation 52, et une sortie. La porte logique 531_n-1 de rang n-1 a une entrée non inverseuse connectée au fil de rang n-1 de la sortie parallèle du décodeur de lecture, une entrée inverseuse connectée au fil de rang n de la sortie parallèle du deuxième circuit de synchronisation 52, une entrée non inverseuse connectée au fil de rang 1 de la sortie parallèle du deuxième circuit de synchronisation 52, et une sortie. Enfin, La porte logique 531_n de rang n a une entrée non inverseuse connectée au fil de rang n de la sortie parallèle du décodeur de lecture, une entrée inverseuse connectée au fil de rang 1 de la sortie parallèle du deuxième circuit de synchronisation 52, une entrée non inverseuse connectée au fil de rang 2 de la sortie parallèle du deuxième circuit de synchronisation 52, et une sortie. Sur la figure 3, le deuxième circuit de synchronisation 52 comprend n registres de deux bits 521__1 à 521_n. Les n 35 registres 521_1 à 521_n sont identiques au circuit 43 tel Réfs : 106310FR que détaillé sur la figure 3 (deux bascules associées en série), ils comprennent chacun : • une entrée de données connectée à une sortie de données d'une bascule de même rang du pointeur 5 d'écriture 21, • une entrée d'horloge sur laquelle est appliqué le deuxième signal d'horloge CLKR, et • une sortie, Les sorties de tous les registres 521_1 à 521_n forment 10 ensemble une sortie parallèle sur laquelle est produit le signal synchronisé représentatif du contenu du pointeur d'écriture. Dans le dispositif de commande détaillé figure 3, le 15 circuit de synchronisation 52 introduit une latence de ACLKA + 1 cycles du signal d'horloge CLKR, correspondant au temps de transit du contenu du pointeur d'écriture dans le circuit de synchronisation 52. ACLKA est le temps entre le front actif du signal d'horloge CLKW et le front 20 actif du signal d'horloge CLKR au moment de la synchronisation., ACLKA est compris entre 0 et 1 cycle du signal CLKR. La latence globale du dispositif selon l'invention est alors égale à ACLKA + 2*TR, comprise entre 2*TR et 3*TR : une latence inévitable d'un cycle, 25 correspondant au temps de mise à jour des registres plus une latence de synchronisation de 1 à 2 cycles. Dans une variante de l'invention, on remplace le circuit de synchronisation 52 de la figure 3 par le circuit de 30 synchronisation 54 de la figure 4, qui comprend : • un circuit de retard ajustable 541, pour retarder le deuxième signal d'horloge CLKR, et • n bascules 542 1 à 542 n de type D comprenant chacune Réfs : 106310FR / une entrée de données connectée à une sortie de données d'une bascule de même rang du pointeur d'écriture, / une entrée d'horloge sur laquelle est appliqué le 5 deuxième signal d'horloge CLKR retardé, et / une sortie, les sorties des n bascules de type D formant ensemble une sortie parallèle sur laquelle est produit le signal synchronisé représentatif du contenu du pointeur d'écriture et appliqué sur 10 l'entrée parallèle du circuit 53. Dans cette variante, le circuit de synchronisation comprend une seule série de bascules D (au lieu de 2 dans le circuit 52). La latence introduite par le circuit de synchronisation est ainsi réduite à 0 à 1 cycle, et la 15 latence globale du dispositif est réduite à 1 à 2 cycles. De plus, l'utilisation du retard ajustaable permet de réduire énormément les risques de métastabilité dans le cas où les échanges de données entre les deux systèmes sont réalisés de manière mésochrones 20 D'autres variantes du dispositif de la figure 3 sont envisageables, tout en restant dans le cadre de l'invention. Un point important de l'invention est le codage de la 25 position du registre de la mémoire à écrire, respectivement à lire dans le pointeur d'écriture, respectivement dans le pointeur de lecture. Ce codage particulier rend robuste le dispositif à l'encontre des métastabilités susceptibles d'apparaître si le dispositif 30 est utilisé pour un transfert de données asynchrone ou mésochrone entre deux systèmes. Dans le dispositif détaillé sur la figure 3, on utilise le codage suivant : • deux bits à "1" et n-2 autres bits à "O" Réfs : 106310FR • le rang du premier bit à "1" dans le pointeur d'écriture correspond au rang du registre à écrire • le rang du premier bit à "0" après les deux bits à "1" dans le pointeur de lecture correspond au rang du registre à lire Plus généralement, tout en restant dans le cadre de l'invention, on pourra coder dans le pointeur d'écriture ou dans le pointeur de lecture la position du registre R1 à Rn de la mémoire à écrire ou à lire de sorte que, lors d'une mise à jour du pointeur d'écriture ou de lecture (correspondant à un décalage de 1 bit dans un registre à décalage), la valeur du bit du pointeur associé au nouveau registre à écrire ou à lire ne change pas lors de la mise à jour. Ceci permet d'éviter tout risque de métastabilité sur ce bit. Cette condition est vérifiée dès que, dans un pointeur : • au moins deux bits successifs sont dans un premier état logique ("i" ou "0"), les autres bits étant dans un deuxième état logique ("0" ou "1"), • le rang du registre à écrire ou à lire est défini par rapport à ces au moins deux bits. On peut ainsi envisager un codage tel que, dans un pointeur d'écriture ou de lecture : • trois bits successifs sont à "0" et n-3 autres bits 25 sont à "1" • le rang du premier bit à "0" dans le pointeur d'écriture correspond au rang du registre à écrire • le rang du premier bit à "1" après les trois bits à "1" dans le pointeur de lecture correspond au rang du 30 registre à lire Bien sûr, en fonction du codage choisi, on adaptera en conséquence les circuits logiques du dispositif de commande et notamment : • le circuit de gestion d'écriture, et plus 35 particulièrement le circuit de détection de mémoire Réfs : 106310FR pleine : il doit être approprié pour vérifier, à partir du contenu du pointeur d'écriture et du contenu du pointeur de lecture, s'il reste au moins un registre vide dans la mémoire, pour autoriser le cas échéant une écriture • le circuit de gestion de lecture, et plus particulièrement le décodeur de lecture et le circuit de détection de mémoire vide : il doit être approprié pour vérifier, à partir du contenu du pointeur d'écriture et du contenu du pointeur de lecture, s'il reste au moins un registre non vide dans la mémoire, pour autoriser le cas échéant une lecture. A noter enfin que, comme l'invention utilise un codage particulier, le dispositif selon l'invention comprend également un décodeur d'écriture 8, pour produire à partir du contenu du pointeur d'écriture un signal WRITE SELECT de sélection d'écriture approprié pour commander le circuit de sélection d'entrée. Le signal WRITE SELECT, de n bits, comprend un seul bit actif, dont le rang correspond au rang du registre à écrire dans la mémoire. Dans l'exemple de la figure 3, le décodeur d'écriture comprend n portes logiques 81 _1 à 81n de type ET : la porte logique de rang i compris entre 1 et n-1 comprend • deux entrées de données connectées respectivement à à la sortie d'une bascule de même rang i et à la sortie une bascule de rang i+l du pointeur d'écriture 21, et • une sortie de données et la porte logique de rang n comprend • deux entrées de données connectées respectivement à la sortie de la bascule de rang n et à la sortie de la bascule de rang 1 du pointeur d'écriture 21, et • une sortie de données. Les sorties de données de toutes les portes 81_1 à 81_n 35 sont connectées ensemble pour former une sortie parallèle Réfs : 106310FR du décodeur 8 sur laquelle est produit le signal WRITESELECT. _ En ce qui concerne le signal READ_SELECT de sélection de lecture nécessaire pour commander le circuit de sélection de sortie de la mémoire, il est produit par le circuit de gestion de lecture 5, et plus précisément par le décodeur 51 du circuit 5. REVENDICATIONS 1. Dispositif de commande d'une mémoire tampon appropriée pour mémoriser n mots de données, la dite mémoire tampon étant susceptible d'être utilisée pour un transfert de données entre un premier système et un deuxième système, le dispositif de commande comprenant un pointeur d'écriture (2) et un pointeur de lecture (3), le dispositif étant caractérisé en ce qu'il comprend également . • un circuit de gestion d'écriture (4),. pour comparer un contenu du pointeur d'écriture et un contenu du pointeur de lecture et autoriser ou non une écriture dans la mémoire, • un circuit de gestion de lecture (5), pour comparer le contenu du pointeur d'écriture et le contenu du pointeur de lecture, et autoriser ou non. une lecture de la mémoire. 2. Dispositif selon la revendication 1, dans lequel le pointeur d'écriture est un premier registre à décalage de n bits (21), le registre comprenant une entrée de données (D) et une sortie de données (Q) connectées ensemble, une entrée de commande (EN) et une entrée d'horloge (CK), sur l'entrée de commande étant appliqué un signal de validation d'écriture (VAL W) actif lorsque la mémoire n'est pas pleine et lorsque le premier système commande une écriture (WRITE), et sur l'entrée d'horloge étant appliqué un premier signal d'horloge (CLKW) associé au premier système, le premier registre contenant au moins deux bits successifs dans un premier état logique ("l"), les autres bits étant dans un deuxième état logique ("0").Réfs : 106310FR 3. Dispositif selon la revendication 1, dans lequel le pointeur de lecture est un deuxième registre à décalage de n bits (31), le registre comprenant une entrée de données (D) et une sortie de données (Q) connectées ensemble, une entrée de commande (EN) et une entrée d'horloge (CK), sur l'entrée de commande étant appliqué un signal de validation de lecture (VAL_R actif lorsque la mémoire n'est pas vide et lorsque le deuxième système commande une lecture (READ), et sur l'entrée d'horloge étant appliqué un deuxième signal d'horloge (CLKR) associé au deuxième système, le deuxième registre contenant au moins deux bits successifs dans le premier état logique, les autres bits étant dans le deuxième état logique. 4. Dispositif selon l'une des revendications 1 à 3, dans lequel le circuit de gestion d'écriture (4) comprend un circuit de détection de mémoire pleine (41), pour comparer bit à bit le contenu du pointeur d'écriture avec le contenu du pointeur de lecture, et produire un signal indiquant que la mémoire est pleine (FULL) si un bit du pointeur de lecture et un bit de même rang du pointeur d'écriture sont simultanément dans le premier état logique. 5. Dispositif selon la revendication 4, dans lequel le circuit de détection de mémoire pleine (41) comprend : • n portes logiques (411_1 à 411_n), une porte logique de rang i (411_i) compris entre 1 et n comprenant une première entrée connectée à une sortie de données d'une bascule de rang i du pointeur d'écriture et une deuxième entrée connectée à une sortie de données d'une bascule de rang i du pointeur de lecture, et une sortie, • une n+l-ième porte logique (412) comprenant n entrées 35 connectées chacune à la sortie de l'une des n portesRéfs : 106310FR logiques, et une sortie sur laquelle est produit le signal indiquant que la mémoire est pleine (FULL). 6. Dispositif selon l'une des revendications 4 à 5, dans lequel le circuit de gestion d'écriture (4) comprend également un premier circuit de synchronisation (43, 44), pour synchroniser le signal indiquant que la mémoire est pleine (FULL) sur le premier signal d'horloge (CLKW). 7. Dispositif selon la revendication 6, dans lequel le premier circuit de synchronisation (44) est également approprié pour retarder la fourniture du signal synchronisé si le signal de commande d'écriture (WRITE) et le signal synchronisé étaient inactifs lors d'un précédent front actif du premier signal d'horloge. 8. Dispositif selon l'une des revendications précédentes, dans lequel le circuit de gestion de lecture (5) comprend: • un circuit de décodage (51), pour produire un signal 20 de sélection de lecture (READ SELECT) en fonction du contenu du pointeur de lecture, • un deuxième circuit de synchronisation (52, 54), pour produire un signal représentatif du contenu du pointeur d'écriture synchronisé sur le deuxième signal d'horloge 25 (CLKR), • un circuit de détection de mémoire vide (53), pour comparer le signal synchronisé représentatif du contenu du pointeur d'écriture et le signal de sélection de lecture et produire un signal indiquant que la mémoire 30 est vide (EMPTY) actif ou non en fonction du résultat de la comparaison. 9. Dispositif selon la revendication 8, dans lequel le circuit de détection de mémoire vide (53) comprend :Réfs : 106310FR • n portes logiques 531_1 à 531_n, une porte logique de rang i compris entre 3 et n -2 ayant une entrée non inverseuse connectée au fil de rang i de la sortie parallèle du décodeur de lecture, une entrée inverseuse connectée au fil de rang i+l de la sortie parallèle du deuxième circuit de synchronisation 52, une entrée non inverseuse connectée au fil de rang i+2 de la sortie parallèle du deuxième circuit de synchronisation 52, et une sortie, • une n+1-ième porte logique 532 comprenant n entrées connectées chacune à la sortie de l'une des n portes logiques, et une sortie sur laquelle est produit le signal EMPTY indiquant que la mémoire est vide. 10. Dispositif selon la revendication 8, dans lequel le deuxième circuit de synchronisation (52) comprend n registres de deux bits (521_1 à 521_n) comprenant chacun: • une entrée de données connectée à une sortie de données d'une bascule de même rarcj du pointeur d'écriture, • une entrée d'horloge sur laquelle est appliqué le deuxième signal d'horloge (CLKR), et • une sortie, les sorties de tous les registres de deux bits formant ensemble une sortie parallèle sur laquelle est produit le signal synchronisé représentatif du contenu du pointeur d'écriture. 11. Dispositif selon la revendication 8, dans lequel le deuxième circuit de synchronisation (54) comprend • un circuit de retard ajustable (541), pour retarder le deuxième signal d'horloge (CLKR), et • n bascules de type D (542_1 à 542_n) comprenant chacune :Réfs : 106310FR / une entrée de données connectée à une sortie de données d'une bascule de même rang du pointeur d'écriture, / une entrée d'horloge sur laquelle est appliqué le deuxième signal d'horloge (CLKR) retardé, et / une sortie, les sorties des n bascules de type D formant ensemble une sortie parallèle sur laquelle est produit le signal synchronisé représentatif du contenu du pointeur d'écriture. 12. Dispositif selon l'une des revendications précédentes, dans lequel le premier signal d'horloge et le deuxième signal d'horloge ont des fréquences différentes, ou ont la même fréquence mais sont déphasés l'un par rapport à l'autre.