FR 2582423 A1 19861128 FR 8507739 A 19850522 Mémoire tampon à interposer entre deux systèmes synchrones à vitesses differentes. L'inveotion concerne les mémoires tampons à interposer entre un système émetteur, fournissant des données séquentielles à un rythme rapide, et un système récepteur ne pouvant recevoir ces données qutà un rythme plus lent. En particulier le système émetteur peut comporter un capteur tel qu'une caméra de télévision numérique ou une caméra analogique associée à un numériseur, et fournir des informations séquentielles à une vitesse élevée généralement incompatible avec celle du système récepteur qui va utiliser ces informations et qui est le plus souvent un ordinateur ou calculateur. Dans ce cas la mémoire en question est plus spécialement une mémoire d'image destinée à mémoriser à leur rythme les informations venant du capteur pour les transmettre ensuite au calculateur au rythme propre de celui-ci. On connatt déjà des mémoires tampons de ce type, notamment des mémoires d'image. La difficulté essentielle qu'elles ont à surmonter est liée à la quantité importante d'informations à mémoriser, généralement plusieurs centaines de milliers d'octets, associée au fait que ces informations arrivent à une vitesse élevée, de 4 à 10 millions d'octets/seconde. Or les éléments de mémoire en circuit intégré disponibles sur le marché sont soit de vitesse d'accès élevée mais de faible capacité, soit d'assez grande capacité mais de vitesse d'accès faible et incompatible avec la vitesse d'arrivée indiquée ci-dessus. En conséquence tous les systèmes actuels de mémoire image qui doivent assurer la compatibilité entre la capacité et la vitesse conduisent à des éléments de mémoire nombreux et coûteux, ainsi qu a une électronique de contrôle également complexe et coûteuse. Le but de l'invention est d'éliminer les inconvénients précédents, ctest-à-dire de satisfaire aux conditions de capacité et de vitesse imposées, mais avec une électronique simple et des circuits de mémoire lents, peu nombreux et peu coûteux. Pour cela la mémoire tampon selon l'invention, à interposer entre le système émetteur fournissant des données séquentielles à n bits en parallèle à un rythme rapide et un système récepteur recevant ces données à un rythme plus lent, est caractérisée par le fait qu'elle comporte N blocs de mémoires séparés dans chacun desquels les opérations d'écriture/lecture de de chaque groupe de n données simultanées sont décalées d'un cycle d'horloge par rapport au bloc voisin, chaque bloc ne prenant en compte qu'un groupe sur N et disposant pour son propre cycle d'opération d'un temps égal à N cycles d'horloge, ce cycle d'horloge étant synchronisé avec celui de l'émetteur pour l'écriture, et avec celui du récepteur pour la lecture. Pour bénéficier de la simplification maximum, le nombre N est choisi de préférence égal à une puissance de 2. Ainsi l'invention permet d'utiliser des mémoires N fois moins rapides qu'à l'ordinaire. Inversement, connaissant le temps de cycle d'un bloc de mémoire utilisé, et la période d'arrivée des données de l'émetteur, il suffit de choisir pour N la puissance de deux au moins égale au quotient de ces deux temps. En particulier la mémoire selon l'invention peut être utilisée comme mémoire image entre une caméra de télévision muni d'un numériseur avec synchronisation de ligne et synchronisation d'image, et un ordinateur. Chaque bloc mémoire peut avantageusement être constitué par une mémoire vive (RAM) dynamique avec multiplexage temporel des adresses et logique locale de commande. En plus de ces blocs mémoires, le dispositif selon l'invention comporte un générateur d'adresses en abscisses et ordonnées commandé par un circuit de commande du générateur d'adresses recevant les synchronisations du numériseur et de ltordinateur,commandant un circuit logique d'élaboration des commandes des blocs mémoires, lequel commande à son tour les blocs mémoires. D'autres particularités de l'invention apparattront dans la description qui va suivre d'un mode de réalisation pris comme exemple et représenté sur le dessin annexé sur lequel la figure 1 est le schéma général du système; la figure 2 est le schéma d'un des blocs mémoires; la figure 3 le schéma du circuit de commande des blocs mémoires; la figure 4 le schéma du générateur d'adresses; la figure 5 le schéma du circuit de commande du générateur d'adresses; la figure 6 un schéma illustrant le fenêtrage variable; les figures 7 et 8 sont des chronogrammes des principaux signaux utilisés. Dans l'exemple choisi, le système constitue une mémoire image interposée, comme on le voit sur la figure 1, entre un émetteur EH constitué par une caméra vidéo associée à un numériseur, et un récep teur RE constitué par un calculateur. Le champ de la caméra, schématisé sur la figure 6, comprend au plus 512 x 512 pels codés chacun sur n = 4 bits (16 nuances), mais on ne se propose de mémoriser que le contenu d'une fenêtre d'étendue constante de 256 x 256 pels mais de position variable dans le champ définie par les valeurs xo et yo susceptibles de varier chacune entre O et 255. La mémorisation d'une image correspondant à une telle fenêtre nécessite donc une capacité mémoire totale de 256 x 256 x 4 bits, soit 64 K pels de 4 bits (K = 1024). Conformément à l'invention, une telle mémoire est divisée en un certain nombre N de blocs mémoires, ici 4 blocs mémoires référencés respectivement MA, MB, Nc, MD. Il s'agit naturellement d'un exemple et il n'y a aucune nécessité à ce que le nombre N de blocs de mémoire soit égal au nombre n de bits par pel. Chaque bloc de mémoire tel que M comporte donc 16 K x 4 bits. A l'intérieur de la fenêtre représentée sur la figure 6, chaque point image tel que P est défini par deux nombres, son abscisse ADX (ou numéro de colonne, codée sur 8 bits (ADXO... ADX7), et son ordonnée ADY (ou numéro de ligne) codée également sur 8 bits (ADYO... ADY7). Dans chaque bloc mémoire, pour coder les 16 K adresses il faut 14 entrées. On utilise pour cela une adresse ADY codée sur 8 bits, arrivant par le bus ..... .7 visible sur la figure 1, et une adresse ADX codée sur 6 bits et arrivant par le bus ADX2...7. Les bits de poids faible ADXO et ADX1 vont servir à sélectionner un bloc parmi les quatre. Tous les blocs de mémoire sont connectes sur un bus d'entrée/ sortie ES véhiculant quatre données en parallèle, DO...D3. Ce bus ES est connecté au mot d'entrée DEO...DE3 par l'intermédiaire d'une quadruple bascule 10 à sortie 3 états synchronisée par l'horloge HPX (provenant de l'émetteur EM) et commandée par la variable logique E (active en mode écriture). De même le bus ES est connecté au mot de sortie DS0...DS3 par l'intermédiaire d'une quadruple bascule 11 de type "D" synchronisée par un signal d'horloge lIAD et dont les sorties sont forcées à zéro par le signal FD. Tous les blocs reçoivent également entrée d1 horloge complémentée IIPX provenant également de l'émetteur. Par contre chaque bloc reçoit également des signaux logiques de commande WG, CAS, RAS et F qui lui sont propres, et sont affectés chacun de ce fait de l'indice A, B, C ou D correspondant; ces signaux sont élaborés par le circuit de commande des blocs mémoire CBM. La figure 2 montre plus particulièrement le détail de constitution d'un bloc mémoire MA, tous les autres, MB, MC et MD étant identiques, mis à part l'indice des variables indicées. Ce bloc mémoire comprend - une mémoire RAM dynamique de 16 K x 4 bits; - un octuple multiplexeur 2 - 1 synchronisé, MUX1, transférant selon l'état de la commande RAS-soit les adresses ADX 2,... ADX 7, ADYO, ADY1 lorsque KAS = 1, soit les adresses ADY2,... ADY7 lorsque R S = O. La synchronisation sur le front montant de R#X permet de s'assurer que les entrées d'adresse de la RAM sont stables lors de la transition négative de RAS; - une logique de commande de la RAM comprenant à son tour un multiplexeur 2 - 1, MUX 2, appliquant sur l'entrée W de la RAM (commande d'écriture), soit la commande WG lorsque E est active (l'écriture est permise si WG = O), soit l'état logique 1 lorsque E = O (l'écriture n'est alors pas permise quel que soit l'état WG);; un multiplexeur 2 - 1, MUX 3, appliquant sur l'entrée G (commande d'activation de la sortie), soit l'état logique 1 lorsque E est active (la sortie D/Q est alors déconnec tée du bus d'entrée/sortie ES), soit la commande WG lors que E est inactive (la sortie de la RAM est connectée au bus ES lorsque WG = 0); une porte NON ET 12 appliquant à l'entrée CAS de la RAM soit la commande CAS complémentée si la commande F est active, soit l'état logique 1; cette logique permet de mettre la RAM soit en mode de fonctionnement normal, soit en mode rafraichissement; . la commande RAS est appliquée à l'entrée RAS de la RAM de manière permanente. Les quatre signaux logiques de commande WG, CAS, RA##S et F, spécifiques à chacun des quatre blocs de mémoire, sont élaborés comme on l'a vu plus haut par le circuit de commande des blocs mémoire CBM dont le détail est reporté sur la figure 3. Ce circuit est important et caractéristique de l'invention car c'est lui qui réalise l'enchal- nement des opérations de chaque bloc mémoire en vue de la répartition alternée entre ces divers blocs des données arrivant au rythme rapide de l'émetteur. Cette répartition a lieu selon un cycle qui dure N cycles d'horloge, dans le cas présent quatre cycles d'horloge, successivement décalés les uns par rapport aux autres et qui sont repérés par les variables logiques A, B, C et D obtenues par décodage des bits d'adresse ADXO et ADX1 grâce à un décodeur DCR1. En considérant pour l'instant- exclusivement le cycle opératoire du bloc MA, ce cycle, d'une durée de quatre cycles d'horloge comme on l'a vu, comprend - les cycles A et B qui sont réservés à l'adressage de la RAM; - le cycle C qui est un cycle d'attente pendant lequel l'adresse est décodée par la RAM; - le cycle D qui est le cycle actif au cours duquel est réalisé, soit l'opération d'écriture si E = 1, soit l'opération de lecture si E = 0. Pour cela les commandes logiques du bloc MA sont générées de la manière suivante : RASA est prélevé directement sur la ligne A, ce qui donne la relation RASA = A. De même WGA est prélevé directement sur la sortie directe D. Enfin CASA est généré par une porte logique NON OU 13 recevant en entrée A et B, ce qui d'après théorème de Morgan équivaut à réaliser l'intersection CAS A = A & . Les signaux logiques de commande des autres blocs de mémoire MB, MC et MD sont élaborés de manière identique par une permutation circulaire. De la sorte, le bloc MA ayant démarré son cycle opératoire un cycle d'horloge avant le bloc MB, deux cycles d'horloge avec le bloc Mc, etc., se trouve disponible à la fin de son cycle opératoire pour engager un nouveau cycle opératoire pendant que les autres blocs sont occupés. Le chronogramme de la figure 7 explicite l'évolution temporelle des cycles opératoires des blocs M et MB. Le circuit CBM comporte également, en partie supérieur de la figure 3, la logique d'élaboration des signaux de fenêtre FA...FD qui sera expliquée plus loin. Les divers signaux d'adresses nécessaires pour alimenter les deux bus d'adresses indiqués plus haut sont engendrés par le générateur d'adresses GA représenté plus en détail sur la figure 4. Ce générateur d'adresses comporte deux compteurs synchrones modulo 512 CSX et CSY engendrant respectivement les adresse ADX et ADY, en remarquant qu'en plus des huit signaux binaires indiqués précéden- ment, ADXO...ADX7 ou ADYO...ADY7, il existe également un neuvième signal supplémentaire ADX8 ou ADY8 correspondant au bit du poids le plus élevé.Chaque compteur comprend, en plus des neuf sorties d'adresses binaires, neuf entrées de précharge dont certaines peut être activées par une entrée PAO et préréglées par un dispositif schématisé par les commutateurs 14 ou 15 sur la figure, commutateurs qui selon leur état ouvert ou fermé permettent de coder en binaire des valeurs tenant compte des valeurs xo et yo indiquées plus haut pour le positionnement de la fenetre. Chaque compteur comporte en outre une entrée de commande de précharge et une entrée d'horloge pour le comptage. Le compteur CSX élaborant les adresses colonnes a son entrée de précharge commandées par un signal SLM#PX et son entrée d'horloge commandée par le signal HAD déjà mentionné.Le compteur CSY élaborant les adresses lignes a son entrée de précharge commandée par le signal SYI de synchronisation d'image et son entrée d'horloge commandée par le même signal SMPX commandant la précharge du comp teur CSX. Les trois signaux PAD, HAD et SLMPX commandant le générateur d'adresses GA sont élaborés par le circuit de commande du générateur d'adresse CGA de la figure 5 d'une manière différente selon les phases de fonctionnement, écriture ou lecture. Dans la phase d'écriture, la mémoire doit etre synchronisée par la caméra. Dans ce cas le signal SLMPX provient (par le multiplexeur MUX4 de la figure 5) de la synchronisation de lignes SYL provenant de la carte numérisation video EM, le signal HAD est une recopie du signal d'horloge HPX et le signal de précharge d'adresse PAD agit de manière à fixer la valeur de précharge à une valeur 512 - xo pour CSX et 512 - yo pour CSY, ces valeurs xo et yo étant programmables. Ceci se concrétise par le fait que le bit d'entrée de poids le plus élevé (256) de chaque compteur CSX et CSY est toujours à 1. La valeur correspondante est donc préchargée dans le compteur CSX par le signal de synchronisation de ligne SYL et dans le compteur CSY par le signal de synchronisation d'image SYI. Le contenu de CSX est incrémenté par HAD, c'est-à-dire dans le cas présent par HPX dès la fin SYL. Après xo impulsion d'horloge, le contenu du compteur CSX en modulo 512 atteint la valeur O et par conséquent l'adresse ADX 8 bascule de la valeur 1 à la valeur 0 et demeure dans cet état tant que les valeurs colonnes correspondent aux valeurs colonnes de la fenêtre. Le compteur CSY fonctionne de la même façon, sa précharge étant effectuée par le signal de synchronisation d'image SYI à la valeur 512 - yo et son contenu se trouvant incrémenté comme on 1'a vu par la synchronisation de ligne SYL. L'adresse ADY8 bascule donc de 1 à O lorsque les numéros de lignes correspondent aux numéros de lignes de la fenêtre. On voit donc que le point exploré se trouve dans la fenêtre si et seulement si ni l'une ni l'autre des adresses ADX8 et ADY8 sont à l'état 1. C'est ainsi que sur la figure 3 on élabore le signal de fenetre > FA par une porte NON OU 15 qui reçoit en entrée ADX8 et ADY8. Les autres signaux de fenêtre FB, FC et FD sont élaborés par un registre série parallèle 17 actionné par le front montant de l'horloge HPX. Dans la phase de lecture le fonctionnement est analogue au précédent, mais dans ce cas le signal PAO n'active pas les valeurs xo et yo précédentes mais laisse agir des valeurs fixes correspondant au fenêtrage souhaité pour l'ordinateur. Le signal BAD n'est plus synchronisé sur l'horloge EPX mais sur le calculateur et le signal SLMPX n'est plus raccordé par MUX4 sur la synchronisation de ligne mais sur une pseudosynchronisation de ligne sortant du décodeur DCR2 de la figure 5. La commande du générateur d'adresse CGA de la figure 5 comprend pour cela une porte ET 18 qui reçoit en entrée les quatre adresses ADXO, ADX1, ADX2 et ADX3 et engendre un signal CO qui indique que le nombre ADX en modulo 16 est égal à 15. Finalement le décodeur DCR2 reçoit en entrée le signal CO précédent, le signal ADX4 dans une entrée inverseuse et le signal ADX8 et génère la pseudosynchronisation de ligne, active à l'état O lorsque ADX8 = 1, ADXI = O et CO = 1. Le circuit de la figure 5 comporte également une mémoire morte ROH qui reçoit en entrée les neuf adresses ADXO à ADX8 et qui émet un signal TRANS, lequel est égal à 1 lorsque la valeur arithmétique ADX est comprise entre 4 et 259, ce signal TRANS indiquant que la donnée issue de la mémoire est à lire. Le circuit de commande du générateur d'adresse CGA se charge également de la gestion des échanges avec le calculateur dans le but d'assurer à la fois la synchronisation des échanges et l'adaptation du format d'image. La synchronisation des échanges se fait selon le protocole habituel d'appel-réponse. Lorsque l'échange est programmé, le calcu lateur émet un signal READY. Lorsque la donnée issue de la mémoire est bonne à lire, ce qui est signalé par la variable TRANS comme on vient de le voir, le circuit de synchronisation émet un signal de demande de cycle CYCREQ, le calculateur répond par le signal BUSY qui remet à zéro le signal CYCREQ et dont le retour à zéro signifie la fin du cycle d'échange. Pendant toute la durée du cycle d'échange élémentaire, le fonctionnement de la mémoire doit rester gelé. Ce circuit de synchronisation est organisé autour d'une bascule de type l'D'' référencée BD1 sur la figure 5. Lorsque READY T et TRANS sont tous deux activés, l'entrée D de BD1 est activée par la porte ET 19. La première impulsion d'horloge HAD arrivant en entrée de commande à front montant fait passer la sortie Q de la bascule à l'état 1. Lorsque le calculateur émet la réponse BUSY, le complément logique BUSY élaboré par le circuit inverseur 20 et appliqué à l'entrée asynchrone CL remet Q à l'état zéro, donc également CYCREQ. Le circuit d'horloge HAD est organisé autour d'une bascule de type "D" référence BD2. En l'absence des signaux CYCREQ et BUSY, détectée par la porte NON OU 21, la sortie Q de cette bascule est toujours à l'état 1 de sorte que 1AO est toujours égal à HPX en raison de l'inversion de la porte NON ET 22, une inversion supplémentaire par 23 restituant le signal RAI). Au contraire lorsque CYCREQ ou BUSY sont actifs, la porte 21 agit sur l'entrée asynchrone CL qui provoque la remise à zéro de Q et par conséquent la mise à zéro de RAI). Cependant lAO## appliqué à l'entrée asynchrone prioritaire PR, qui provoque eu priorité la mise à l'état 1 de Q, assure que tout cycle d'horloge commencé sera normalement terminé. Ainsi selon que l'échange avec le calculateur est en cours ou non, horloge MAD possède un cycle propre synchronisé sur l'échange et comportant des cycles manquants par rapport à l'horloge HPX, ou bien est une recopie de l'horloge HPX. Le chronogramme de la figure 8 précise l'évolution temporelle de ces signaux. L'adaptation au format d'image nécessite que l'on réalise deux fonctions : la modification de la précharge des compteurs d'adresse, et la modification de la synchronisation des lignes. Pour la première fonction, le signal READY du calculateur est tout d'abord synchronisé par Syl grâce à une bascule de type "D" BD3 dont l'entrée de commande est attaquée par SYI par l'intermédiaire d'une porte inverseuse 24. On s'assure ainsi que le changement du mode de fonctionnement de la mémoire, pour passer d'écriture en lecture ou inversement, a lieu au début d'un cycle d'image. Le signal READY T issu de la bascule BD3 est lui-même synchronisé par SYL# grâce à la bascule de type "D" référencée BD4 et dont la sortie complémentée Q commande le multiplexeur MUX4 indiqué précédemment. On s'assure ainsi que les précharges sont convenablement effectuées avant le changement du multiplexeur pour passer de la synchronisation de ligne SYL à la pseudo-synchronisation de ligne venant de DCR2.Le signal READY T appliqué à ltentrée asynchrone CL de BD4 assure le retour anticipé au mode écriture dès la fin de l'échange. La deuxième fonction, c'est-à-dire la modification de la synchronisation de ligne, comme déjà exposé plus haut, est obtenue par le multiplexeur 2 - 1, MUX4 commandé par la sortie Q de BD4. En dehors des échanges avec le calculateur, le signal SLMPX commandant la génération des adresses est identique à SYL issue de la caméra, tandis que lors des échanges avec le calculateur, ce signal SLMPX est produit par le décodeur DCR2 engendrant la pseudosynchronisation des lignes. L'invention permet ainsi de satisfaire aux exigences de capacité et de vitesse imposées tout en ne mettant en oeuvre que des composants courants, peu nombreux et peu onéreux. Naturellement en dehors de l'exemple décrit, l'invention s'applique à toute mémoire tampon utilisée en deux systèmes synchrones, et la capacité peut facilement être modifiée. Par exemple le format des mots peut être augmenté à volonté par la mise en parallèle dans chaque bloc de plusieurs circuits RAM, et la capacité peut être augmentée tant en lignes qu'en colonnes par adjonction de circuits mémoires RAM convenablement sélectionnés par les bits d'adresse sup plémentaires évidemment nécessaires. REVENDICATIONS 1. Mémoire tampon à interposer entre un système émetteur (EH) fournissant des données séquentielles à n bits en parallèle à un rythme rapide et un système récepteur (RE) recevant ces données à un rythme plus lent, caractérisée par le fait qu'elle comporte N blocs de mémoire séparés (MA, MB, Mc, MD) dans chacun desquels les opérations d'écriture/lecture de chaque groupe de n données simultanées sont décalées d'un cycle d'horloge par rapport au bloc voisin, chaque bloc ne prenant en compte qu'un groupe sur N de ces données et disposant ainsi pour son propre cycle d'opérations d'un temps égal à N cycles d'horloge (HAD), ce cycle d'horloge étant synchronisé avec celui de l'émetteur (EH) dans une phase écriture et avec celui du récepteur dans (RE) une phase lecture. 2. Mémoire tampon selon la revendication 1, plus particulièrement destinée à servir de mémoire image entre une caméra video numérisée fournissant le signal d'horloge rapide (HPX), les synchronisations d'image (SYI) et de ligne (SYL) et les n données en parallèle (DEO...DE3), et un ordinateur fournissant et recevant les signaux logiques de protocole d'échange habituels (READY, BUSY, CYCREQ) et recevant également les n bits en parallèle (DSO...DS3), caractérisée par le fait qu'elle comporte un générateur d'adresses (GA) à deux composantes (colonnes et lignes) commandé par un circuit de commande du générateur d'adresses (CGA) recevant les signaux de synchronisation et d'échange de la caméra et de l1ordina- teur et commandant un circuit logique (CBM) de commande des blocs mémoires, lequel commande à son tour les blocs mémoires (MA...ND) 3. Mémoire tampon selon la revendication 2, caractérisée par le fait que chaque bloc mémoire comporte une mémoire vive (RAM) dynamique avec multiplexage temporel des adresse (MUX1) et logique locale de commande (MUx2, MUX3, 12). 4. Mémoire tampon selon une des revendications 2 et 3, caractérisée par le fait que le circuit de commande des blocs mémoire (CBM) utilise les bits de poids faible (ADXO, ADX1) des adresses colonnes pour élaborer par l'intermédiaire d'un décodeur (DCR1) N signaux logiques décalés (A, B, C, D) et leurs compléments (A, B, C, D) afin d'élaborer par une matrice de décodage les signaux logiques de commande de chaque bloc mémoire (RA#S, CAS, WC). 5. Mémoire selon l'une des revendications 2 à 4, agencée pour sélectionner une fenêtre de position variable dans le champ de la caméra défini par un nombre maximum (par exemple 512) de pels par lignes et colonnes supérieur au nombre correspondant de pels (par exemple 256) de la fenêtre qui correspond à la capacité de la mémoire, caractérisée par le fait que le générateur d'adresse (GA) comporte deux compteurs synchrones au modulo de ce nombre maximum, avec valeurs de précharge réglables, le ou les bits supplémentaires de poids le plus élevé (ADX8, ADY8) étant reçus en entrées d'une porte NON OU (16, figure 3) pour engendrer un signal de fenêtre (FA) d'un des blocs mémoires (MA), et les signaux de fenêtre correspondants des autres blocs (FB, Fc, FD) par l'intermédiaire d'un registre série parallèle (17). 6. Mémoire tampon selon une des revendications 2 à 5, caractérisée par le fait que le circuit de commande du générateur d'adresses (CGA) élabore les signaux de synchronisation du générateur d'adresses (PAT, SLMPX, HAD) et d'échange avec 11 ordinateur (CYCREQ, BUSY, READY) par de simples bascules de type "D" (BD1, BD2, BD3 et BD4) combinées avec des portes logiques (18, 19, 21, 22) et inverseuses (20, 23, 24), un décodeur (DCR2), un multiplexeur simple (MUX4) et une mémoire morte (ROM).