FR 2573562 A1 19860523 FR 8417738 A 19841121 Mémoire vive et circuit d'interpolation linéaire en comportant apnolication L'invention concerne les mémoires vives à lec- ture rapide susceptibles d'être intégrées en transistors MOS sur un substrat semiconducteur, notamment sur sili- cium. Elle trouve une application particulièrement im- portante dans le domaine des interpolateurs linéaires numériques utilisables dans de nombreux processus, tels que la synthèse sonore et la génération numérique de si- gnaux périodiques. Un premier résultat recherché par l'invention est la réalisation d'une mémoire dont chaque point mé- moire a une constitution qui permet la lecture en un temps très bref (la durée d'un cycle d'écriture pouvant être notablement plus longue) et ne nécessite pas d'am- plificateur de lecture dont le temps de traversée allon- gerait la durée de cycle. Un autre résultat recherché est la réalisation d'une mémoire permettant d'obtenir, simultanément et en réponse à un seul adressage, deux valeurs stockées dans des adresses successives en mé- moire, par exemple de valeurs entre lesquelles on sou- haite effectuer une interpolation linéaire. L'invention vise encore à fournir un circuit d'interpolation tel que le résultat du calcul d'interpo- lation soit disponible en un temps qui ne dépasse pas sensiblement celui de la lecture, dans la mémoire, o est stocké un catalogue des données entre lesquelles doit être effectuée l'interpolation. Pour atteindre ce résultat, l'invention propose notamment une mémoire dont chaque point de mémoire com- porte une bascule de type RS comportant des entrées de donnée complémentaires et des transistors permettant de forcer la bascule par celui des fils de donnée qui est à un niveau déterminé (niveau haut par exemple) lorsqu'un fil de sélection est à un premier niveau déterminé (ni- veau haut par exemple), ladite bascule étant reliée à un fil de sortie par des moyens permettant de maintenir le fil de sortie au niveau haut aussi longtemps que le fil de sélection est au premier niveau et de le mettre au niveau correspondant à l'état de la bascule lorsque le fil de sélection est amené à l'autre niveau. Cette constitution permet de diminuer le temps de lecture, notamment lorsqu'on utilise une technologie N-MOS qui est, à l'heure actuelle, celle qui permet la plus grande rapidité. La mémoire comportera en règle générale plu- sieurs lignes correspondant chacune à un mot binaire, regroupant plusieurs points mémoire ayant le même fil de sélection. Dans l'application de cette constitution de la mémoire à la constitution d'un interpolateur liné- aire, également objet de l'invention, l'accès en lecture pourra se faire en donnant une adresse unique réelle, ayant une partie entière et une partie fractionnaire. Cette partie fractionnaire servira de base à la généra- tion d'une valeur intermédiaire par interpolation. Par contre, l'accès en écriture à la mémoire pourra rester analogue à l'accès à une mémoire classique et se faire uniquement par une adresse constituée par la partie entière de l'adresse en lecture. Toujours dans le cas d'un circuit d'interpola- tion, la mémoire est avantageusement fractionnée en deux blocs correspondant l'un aux adresses paires, l'autre aux adresses impaires et la mémoire est associée, d'une part, à un système de décodage qui, à partir de l'adresse unique réelle (k, x), provoque la lecture des données inscrites aux adresses k et k+1 (k étant la par- tie entière de l'adresse) et, d'autre part, à un opéra- teur qui réalise la fonction: y(k)*x + y(k+1)*(1-x) (1) L'invention sera mieux comprise à la lecture de la description qui suit d'un mode particulier de réali- sation donné à titre d'exemple non limitatif. La description se réfère aux dessins qui l'accompagnent, dans lesquels: - la Figure 1 est un schéma électrique d'un point mémoire suivant un mode particulier de réalisation de l'invention; - la Figure 2 représente une topologie possible du point mémoire de la Figure 1, en technologie N-MOS; - la Figure 3 est un schéma synoptique d'un cir- cuit intégré d'interpolation réalisé suivant l'inven- tion; - la Figure 4 montre une architecture interne possible du système de décodage du circuit de la Figure 3; - la Figure 5 est un schéma électrique d'une tranche du décodeur de ligne.du système de la Figure 4; - la Figure 6 est un schéma fonctionnel du cir- cuit interpolateur suivant l'invention; - la Figure 7 est un schéma fonctionnel montrant une application possible du circuit interpolateur sui- vant l'invention, constituée par un synthétiseur de si- gnaux musicaux. On décrira tout d'abord une réalisation parti- culière de point mémoire vive suivant l'invention, per- mettant une lecture en 20 ns et susceptible d'être in- corporé à un circuit intégré à grande échelle sur sili- cium. Le point mémoire montré en Figure t est réali- sable en technologie N-MOS. Il comporte une bascule de type RS comportant deux transistors 10 montés en bi- stable de façon classique, dont les drains sont à la masse, les sources reliées à l'alimentation +V par des transistors complémentaires 12 et les grilles reliées aux fils de donnée d'entrée 13, marqués INFO et INFO par l'intermédiaire de transistors 14. Un fil de sélection 16, indiqué SEL sur les Fi- gures, est relié à la grille de trois transistors 18 et dont les drains sont à la masse. La source de chacun des transistors 18 est reliée au drain d'un transistor correspondant 14. La source du transistor 20 est reliée au drain d'un transistor de sortie 22 dont la source est connectée au fil de sortie 24 et dont la grille est re- liée au drain de celui des transistors 10 qui reçoit le signal de donnée INFO. Dans ce montage, la bascule RS du point mémoire est forcée par celui des deux fils de donnée 13 qui est au niveau haut lorsque le fil de sélection 16 est lui- même au niveau haut. Le point mémoire sera donc en mode écriture lorsque le fil 16 est au niveau haut et qu une donnée binaire est appliquée à l'entrée, ce qui implique que l'un des fils 13 est au niveau haut. Apres écriture, alors que la bascule a été for- cée dans un état déterminé, le fil de sortie 24 reste préchargé au niveau haut, quel que soit l'état de la bascule, aussi longtemps que le fil de sélection est au niveau haut et même si les fils 13 sont revenus tous deux au niveau bas. Il s'agit là d'un mode que l'on peut qualifier de stockage ou de DrécharQement. Le point mémoire passe en mode lecture lorsque le fil de sélection 16 est porté au niveau bas. Le fil de sortie 24 reste alors à l'état haut si la valeur sto- ckée dans la bascule est un état bas. Il passe à l'état bas si la valeur binaire stockée est un état haut. En technologie N-MOS, ce mode de préchargement et d'interrogation permet d'avoir une lecture rapide. On voit que l'extraction de donnée s'effectue en un seul cycle et en un temps minimum, du fait notamment du préchargement de la mémoire (qui est en lui-meme con- nu mais apporte, dans le cadre du circuit de l'inven- tion, des avantages particuliers) et de l'absence d'am- plificateur de lecture séparé dont le temps de traversée allongerait la durée de cycle. La topologie du circuit de la Figure 1 peut être celle indiquée sur la Figure 2, o les masques corres- pondants aux différents niveaux de dopage et de métal- lisation sont identifiés par des hachures ou des trames différentes. Sur la Figure 2, les éléments correspondant à ceux de la Figure 1 sont indiqués par le même numéro de référence pour plus de clarté. Pour faire apparaître le haut niveau de densité que l'on peut atteindre, il suffit de noter que la lar- geur de grille peut être réduite à 3,15 pm et conduit à un encombrement du point mémoire d'environ 80 x 60 pm. On décrira maintenant l'application d'un point mémoire à préchargement, avantageusement du genre montré en Figures 1 et 2, à la constitution d'un circuit inté- gré permettant d'obtenir, à partir d'une adresse réelle X = k, x et en un seul cycle de travail, le résultat de l'opération: Y = y(k)* (l-x) + y(k+ 1)*x o k est la partie entière de l'adresse X, x est la partie fractionnaire l'adresse X, y(k) et y(k+1) sont les contenus des adresses respectives k et k+l, dans une mémoire appartenant à un circuit, k+1 étant pris modulo le nombre de mots de la mémoire. k et x sont codés sur plusieurs éléments bi- naires (eb ou bit), huit par exemple. Chaque adresse a un contenu codé sur plusieurs bits, seize par exemple. Le circuit intégré (Figure 3) peut alors être regardé comme constitué de trois parties essentielles et de leurs éléments annexes: - un bus 26 disposé à la périphérie du circuit, - une mémoire associée à un système de décodage et à des circuits d'entrée, - un opérateur d'interpolation. BUS Le bus 26 est bouclé en anneau afin de faciliter les interconnexions, d'améliorer le rendement de fabri- cation et de limiter les conséquences d'une coupure de conducteur. Au bus sont reliées les broches du boîtier du circuit. Dans le cas o les mots stockés en mémoire ont une longueur de seize bits, on pourra, par un multi- plexage approprié, tel que celui qui sera mentionné plus loin, utiliser un boitier à vingt-quatre broches clas- sique. Seize broches sont affectées aux entrées/sorties de donnée et identifiées XO/YO,.... X15/Y15 sur la Figure 3. Les signaux X et Y n'apparaissant pas simulta- nément, ils peuvent transiter par les mêmes broches du circuit intégré. Les autres broches sont désignées, sur la Figure 3, par les abréviations suivantes: CS: sélection (chip select), OE: validation des sorties Y, permettant d'assurer le multiplexage temporel, CX: chargement par l'intermédiaire des broches X/Y, I/E: accès en lecture avec interpolation (lors- que le niveau d'entrée est à 1) ou en écriture (lorsque le niveau d'entrée est à 0). MEMOIRE La mémoire est constituée d'un nombre pair de mots (deux cent cinquantesix mots de seize bits par exemple) répartis en deux blocs 28a et 28b qu'on appel- lera par la suite "mémoire paire" et "mémoire impaire" et qui contiennent respectivement: - les mots d'adresse paire: k = 0, 2, 4.... 254, - et les mots d'adresse impaire: k = 1, 3,... 255. Chaque bloc est lui-même divisé en deux sous-blocs imbriqués, constitués chacun (dans le cas de 256 mots) de 64 mots, constituant 64 lignes. Les quatre sous-blocs sont identifiés par les nombres 00 et 10 dans la mémoire paire 28a, 01 et 11 dans la mémoire impaire 28b). Ces sous-blocs contiennent donc les adresses: k: O, 4, 8... 252 pour le sous-bloc 00, k = 2, 6, 10..... 254 pour le sous-bloc 10, k = 1, 5, 9,.... 253 pour le sous-bloc 01, k = 3, 7, 11,..., 255 pour le sous-bloc 11. Cette organisation permet d'avoir un simple accès en écriture: l'entrée d'une donnée de 16 bits à une adresse k nécessite une opération d'écriture avec un adressage limité à k. Mais l'accès en lecture peut être aisément rendu double, l'envoi d'une adresse k entrai- nant la lecture des deux données d'adresse consécutives y(k) et y(k+1). Ce double accès est rendu possible par le système de décodage 40 que l'on va maintenant décri- re, dans le cas particulier o la mémoire comporte deux blocs 28a et 28b de 64 lignes ayant chacune 32 points de mémoire (correspondant à deux adresses k et k+2) et un fil de sélection 16 commun. Ce fil est porté au niveau haut (SEL = 1) pour sélectionner la ligne en lecture. Le système de décodage 40 (Figure 4) peut être regardé comme composé-de trois sous-ensembles constitués essentiellement de portes NON-OU (NOR) afin d'augmenter la rapidité. Ces sous-ensembles sont un décodeur de ligne 42, un décodeur de sortie ou décodeur de démulti- plexage 36 et un décodeur d'entrée 46 qui seront succes- sivement décrits. Le décodeur de ligne 42 contrôle l'état des fils de sélection et teste en particulier les deux bits de poids faible. Grâce à un chainage entre étages succes- sifs du décodeur 42, ce dernier va avoir le comportement suivant. - Si les deux bits de poids faible reçus sont différents de 11 (c'est-à-dire désignent un sous-bloc autre que le dernier de la ligne), le décodeur de ligne active deux fils de sélection de même rang dans les mé- moires paire 28a et impaire 28b. - Si ces- deux bits sont 11, le décodeur de ligne active la ligne d'un rang n dans la mémoire impaire 28b, la ligne de rang n+1 dans la mémoire paire 28a. Le dernier étage du décodeur 42 est rebouclé sur le premier de façon que le mot d'adresse n = 255 soit suivi par le mot d'adresse n+1 = 0. Dans la constitution montrée en Figure 5, chaque étage du décodeur de ligne 42 comporte vingt-six tran- sistors MOS montés suivant une configuration en porte NOR permettant d'atteindre une durée de cycle ne dépas- sant pas 20 ns et compatible avec la durée de lecture de 20 ns qu on peut atteindre avec le point mémoire montré en Figures 1 et 2. Le décodeur de sortie 36 commande des démulti- plexeurs de sortie 34a et 34b permettant de sélection- ner, à la sortie des blocs mémoire, celui des deux mots qui doit être adressé à l'interpolateur. Ce décodeur de sortie 36 peut avoir la même constitution que le déco- deur 42 mais il comporte deux étages seulement. Il pro- voque la sélection de celui des deux mots de seize bits présentés au démultiplexeur qui correspond, pour l'une des mémoires à l'adresse k reçue, pour l'autre mémoire à l'adresse k+l. Ainsi, suivant la parité de l'adresse reçue, le mot y(k) sortira soit de la mémoire paire, soit de la mémoire impaire, le mot y(k+1) sortant de l'autre mé- moire. Le décodeur d'entrée 46 intervient notamment lors de l'écriture dans la mémoire. Il doit sélectionner, parmi les quatre adresses (correspondant chacune à un mot de seize bits) activées par le décodeur de ligne, par amenée du fil de sélection à l'état haut, l'adresse o sera stockée la donnée présentée sur les fils INFO et INFO (fils de colonne). Ce décodeur est précédé d'un réseau de huit bascules de stockage d'adresse et valide les seize amplificateurs d'écriture appropriés parmi les 2 x 32 amplificateurs que comportent les dispositifs 48a et 48b d'écriture dans les blocs 28a et 28b. La mémoire comporte encore des circuits d'entrée qui contrôlent et mémorisent les signaux d'entrée/sortie afin que les données et les adresses accèdent correcte- ment à la mémoire. Ces circuits comportent des amplifi- cateurs d'écriture, des bascules de mémorisation tempo- raire d'adresse, et un dispositif de préchargement, des- tiné à maintenir les sorties 24 à l'état haut jusqu'à la lecture. Les amplificateurs d'écriture, au nombre de trente-deux par bloc mémoire, fabriquent, à partir d'une donnée X0,... X15 appliquée sur les broches E/S, un si- gnal de même niveau logique pour chaque bit présenté et un signal de niveau logique complémentaire. Ils sont commandés par le signal de service I/E et un signal in- terne, dit "signal de forçage". - Si le signal I/E est au niveau bas, la fonc- tion écriture est validée. Dans le cas contraire, elle est inhibée. - Si le signal de forçage est au niveau bas, le groupe de seize amplificateurs correspondant à l'adresse fournie est sélectionné et l'écriture est possible; lorsqu'au contraire le signal de forçage est au niveau haut, les sorties des amplificateurs d'écriture sont forcées au niveau bas, de façon à interdire toute modification du contenu des points mémoire correspondant au mot adressé. Les bascules de mémorisation temporaire d'adres- se sont destinées à retenir les huit bits désignant l'adresse x fournie au circuit. Ces bascules donnent également les valeurs complémentées, afin de faciliter le décodage. Le dispositif de préchargement 47 est prévu pour fournir un signal actif, au niveau haut, quand le cir- cuit dans son ensemble n'est ni en phase de lecture, ni en phase d'écriture. Il pré-positionne alors tous les fils de sortie de mémoire à 1. En cas de transistor à enrichissement ou à déplétion en technologie NMOS, ce pré-positionnement diminue la durée de cycle, car les fils de sortie de la mémoire pré-positionnés à 1 passent beaucoup plus facilement à O qu'ils ne passeraient de O à 1. OPERATEUR D INTERPOLATION L'opérateur d'interpolation doit effectuer en parallèle deux multiplications de deux mots de seize bits sortant de la mémoire, l'une par le mot x constitué des huit bits de poids faible de l'adresse (partie frac- tionnaire de l'adresse) et l'autre par leur complément à 1. Si le bit de poids faible de la partie entière de l'adresse vaut O, on multiplie un mot sortant de la mémoire paire par x et le mot sortant de la mémoire impaire par 1-x. Si au contraire ce dernier bit vaut 1, les mul- tiplicateurs deviennent respectivement (1-x) et x. Pour atteindre ce résultat, l'opérateur d'in- terpolation comporte deux multiplieurs identiques 30a et b. Chaque multiplieur effectue la multiplication de seize bits par huit bits en code complément à 2, avec un résultat tronqué aux dix-huit bits de poids fort, après correction d'arrondi. Cette opération peut être effectuée par un mul- tiplieur de type Booth multipliant un nombre de seize bits par un nombre de huit bits codés en complément à 2. Le nombre codé en complément à 2 sur huit bits est transformé en cinq triplets de commande du réseau lo- gique du multiplieur. Pour accélérer le report des il retenues et des sommes partielles dans le multiplieur, l'avant-dernière ligne d'additionneurs est partagée en groupes de sept bits et la retenue de ce groupe de sept bits est calculée par une logique de retenue anticipée. Les multiplieurs sont suivis d'un additionneur 32, de type parallèle rapide. Cet additionneur effectue une troncature et une correction d'arrondi. Enfin, le résultat, codé sur seize bits dans l'exemple envisagé plus haut, est appliqué au bus par l'intermédiaire d'am- plificateurs de sortie 38 commandés par l'entrée OE. Des données sont ainsi disponibles sur le bus si la commande OE est au niveau bas. L'opérateur reçoit les bits de poids faible de l'adresse, représentant la partie fractionnaire de cette adresse, depuis le bus périphérique (liaisons indiquées 0 à 7 sur la Figure 3). Ces huit bits de poids faibles sont mémorisés par deux groupes de huit bascules chacun, en amont du circuit fournissant au multiplieur soit ce mot inchangé x, soit le mot 1-x, suivant la valeur du bit de poids faible de la partie entière k de l'adresse. Le circuit interpolateur qui vient d'être décrit peut être incorporé à de nombreux appareils, notamment à un générateur numérique de signaux périodiques, et no- tamment de signaux audiofréquence de haute qualité. Un tel appareil comporte généralement un micro- processeur qui définit les signaux à générer et stocke la forme d'onde dans la mémoire du circuit interpola- teur, sous forme d'échantillon. Dans une seconde étape, le microprocesseur accède à une ou plusieurs formes d'onde préalablement mémorisées par scrutation de la mé- moire d'interpolateur et interpolation, de type linéaire dans le cas d'utilisation du circuit décrit plus haut. L'appareil peut avoir la constitution de prin- cipe donnée sur le schéma fonctionnel de la Figure 7, utilisant plusieurs circuits interpolateurs 60 du genre illustré en Figure 3. ECRITURE Le fonctionnement en écriture est provoqué par CS = 0. L adresse de la ligne de mémoire o doit s ef- fectuer la lecture est présentée sur les entrées XO/X15 et elle est mémorisée dans le circuit par CX. Seuls les huit bits de poids fort X8X15, représentant l'adresse k, sont pris en compte. Un seul accès à la mémoire est concerné. Les données-D sent présentées sur les entrées Y0Y15 environ 300 ns après et sont prises en compte à l'apparition de la commande I/E = 0. Pour obtenir un point d'interpolation, on donne la valeur de l'abscisse correspondante, constituée par X qui est présentée sur les entrées X0-X15 et est mémori- sée par la commande CX. La valeur mémorisée est scindée en deux groupes de huit bits: les bits de poids fort X8-X15, qui constituent l'adresse k en mémoire de l'échantillon amont d'interpo- lation XO-X7, partie fractionnaire x de X, destinés aux calculs d'interpolation. Les deux adresses mémoire nécessaires sont, d une part, k, d'autre part, k+1. Le circuit étant à double accès fournit directement deux données de seize bits y(k) et y(k+1). Le double accès en lecture est schématisé sur la Figure 6 par un additionneur 50. Les deux données de seize bits y(k) et y(k+1) entrent simul- tanément dans le circuit de calcul, de type combinatoire pour des raisons de vitesse. Le cas représenté sur la Figure 6 ne correspond pas à l'algorithme (1) donné plus haut, mais à l'algo- rithme équivalent: Y = y(k) + [y(k+1) - y(k)]*x. Cet algorithme conduit à utiliser, comme circuit de calcul, un soustracteur 52 travaillant sur seize bits, suivi d'un multiplieur 54 de seize bits par huit bits et un additionneur d'arrondi 56. Le résultat du calcul peut, quel que soit le type du circuit de calcul, être émis sur les sorties YO-Y15 par la commande OE qui intervient quelques dizaines de nanosecondes plus tard. REVENDICATIONS 1. Mémoire vive à lecture rapide intégrable sur un substrat semiconducteur, dont chaque point mémoire comporte une bascule RS ayant des entrées de donnée complémentaires (13) et des transistors permettant de forcer la bascule par celui de deux fils de donnée com- plémentaires qui est à un niveau déterminé lorsqu'un fil de sélection (16) est à un premier niveau déterminé, ladite bascule étant reliée à un fil de sortie (24) par des moyens permettant de maintenir le fil de sortie au niveau haut aussi longtemps que le fil de sélection (16) est au premier niveau et de mettre de fil de sortie au niveau correspondant à l'état de la bascule lorsque le fil de sélection est amené à l'autre niveau. 2. Mémoire selon la revendication 1, caractéri- sée en ce qu'elle est constituée en transistors N-MOS. 3. Mémoire selon la revendication 1 ou 2, carac- térisée en ce qu'elle comporte plusieurs lignes corres- pondant chacune à un mot binaire, regroupant plusieurs points mémoire ayant le même fil de sélection (16). 4. Circuit numérique, caractérisé en ce qu'il comporte une mémoire (28a ou 28b) suivant l'une quelcon- que des revendications précédentes, un multiplieur (30a ou 30b) relié à la sortie de la mémoire et dés moyens d'adressage comportant une partie entière (k) correspon- dant à une adresse en mémoire et une partie fraction- naire (x) qui est transmise au multiplieur en tant que facteur de multiplication du contenu de l'adresse (k). 5. Circuit interpolateur linéaire numérique, comportant une mémoire suivant la revendication 1, 2 ou 3, caractérisé en ce que ladite mémoire est fractionnée en deux blocs (28a, 28b) correspondant l'une aux adresses paires, l'autre aux adresses impaires et la mémoire est associée à un système de décodage qui, à partir de l'adresse unique réelle (k, x). provoque la lecture des données inscrites aux adresses k et k+1 (k étant la partie entière de l'adresse) et l'opération: y(k)*x + y(k+1)*(1-x). 6. Circuit interpolateur linéaire numérique intégrable en technologie MOS, caractérisé en ce qu'il comporte une mémoire vive fractionnée en deux blocs correspondant l'un aux adresses paires, l'autre aux adresses impaires et la mémoire est associée à un sys- tème de décodage qui, à partir d'une adresse unique réelle X(k,x) provoque la lecture des données y inscrites aux adresses k et k+1 (k étant la partie en- tière de l'adresse) etl'opération d'interpolation entre les deux données au point de la fonction représentée placé à une fraction x de la distance entre les deux points ayant les valeurs y(k) et y(k+1), chaque donnée étant représentée dans un des blocs par une ligne de points mémoire constitués chacun par une bascule asso- ciée à des moyens permettant de précharger un fil de sortie de la cellule à celui des niveaux logiques à par- tir duquel la commutation s'effectue le plus rapidement par changement d'état d'un fil de sélection commun à tous les points mémoire de la ligne. 7. Circuit selon la revendication 6, caractérisé en ce que chaque bloc de mémoire (28a, 28b) est divisé en deux sous-blocs imbriqués, un même fil de sélection étant affecté à deux lignes correspondantes d'un même sous-bloc, et en ce que chaque sous-bloc comporte un dé- multiplexeur de sortie (34a, 34b) commandé par un sys- tème de décodage de façon à sélectionner la valeur adressée. 8. Circuit selon la revendication 7, caractérisé en ce qu'il comporte un système de décodage ayant un décodeur de ligne (42) afin d'activer des fils de sélec- tion de même rang dans les deux blocs mémoire lorsque les deux bits de poids faible de l'adresse reçue indi- quent un sous-bloc autre que le dernier de la ligne et deux fils successifs dans les deux blocs dans le cas contraire.