[0001] L'invention concerne les circuits-intégrés de traitement de signaux numériques, et
plus particulièrement ceux qui réalisent une double sommation pondérée, en ligne puis
en colonne, de valeurs numériques x(i,j) d'une matrice de n x n valeurs numériques.
[0002] A partir des coefficients x(i,j) où i est un indice de ligne de la matrice, et j
un indice de colonne, on cherche à produire une matrice de coefficients C(u,v) où
u est un indice de ligne et v un indice de colonne, avec

[0003] A partir de signaux électriques d'entrée représentant les valeurs numériques x(i,j),
on produit d'abord n x n signaux représentants des coefficients C
i(v) ; chaque coefficient C
i(v) représente une sommation pondérée des valeurs x(i,j) de la
ligne i affectées de coefficients f(j,v) ; v représente un indice de colonne variant de
O à n-1 et il y a n coefficients C
i(v) pour chaque ligne d'indice i. Cette opération est appelée
transformation ligne.
[0004] A partir des n x n signaux représentant les coefficients C
i(v), on produit n x n signaux représentant les coefficients C(u,v) ; chaque coefficient
C(u,v) est une sommation pondérée des valeurs C
i(v) de la
colonne v, affectées de coefficients g(i,u); u représente un indice de ligne variant de O
à n-1 et on produit n coefficients C(u,v) pour chaque colonne d'indice v. Cette opération
est
la transformation colonne.
[0005] Ce type de traitement numérique se rencontre notamment pour réaliser des transformations
dites transformations cosinus où les coefficients f(j,v) et g(i,u) sont de la forme
cos (2i+1)u¶/2n ; ces transformations sont utiles pour faciliter la compression d'informations
dans les transmissions numériques de signaux, et plus particulièrement pour la transmission
numérique d'images.
[0006] Les architectures de circuits intégrés permettant de réaliser ce type de transformation
sont relativement complexes parce qu'elles doivent permettre un traitement en temps
réel, c'est-à-dire que le débit de données numériques à traiter est imposé à l'entrée
du circuit et le débit de données traitées à la sortie doit être aussi rapide que
le débit à l'entrée. Bien entendu, ce débit est élevé et, à titre indicatif, pour
la transmission numérique d'images, on veut pouvoir traiter un bloc de 16 x 16 valeurs
numériques (256 points d'image) en moins de 20 microsecondes ; des blocs successifs
de 256 valeurs se présentant à l'entrée du circuit avec une périodicité de l'ordre
de 20 microsecondes.
[0007] La figure 1 représente sous forme de schéma-bloc une architecture de circuit intégré
assez simple que l'on peut imaginer pour réaliser sur une même puce de circuit intégré
la transformation complète d'un bloc de n x n valeurs numériques x(i,j) en un bloc
de n x n coefficients C(u,v).
[0008] Dans ce schéma, on utilise un premier opérateur CTL exécutant la sommation en ligne,
un deuxième opérateur CTC exécutant la sommation en colonne, deux mémoires MEM 1 et
MEM 2 pour le stockage de valeurs représentant les coefficients C
i(v), et deux aiguillages AIG 1 et AIG 2 pour établir des chemins de connexion d'une
part entre l'opérateur CTL et les mémoires MEM 1 et MEM 2 et d'autre part entre ces
mémoires et l'opérateur CTC. L'ensemble est commandé par un séquenceur SEQ.
[0009] Un bloc de n x n données x(i,j) à traiter est amené, par un bus d'entrée E, à l'opérateur
de transformée ligne CTL qui produit n x n données numériques représentant n x n coefficients
numériques C
i(v). Ces données sont stockées dans les n x n adresses de la mémoire MEM 1 (mémoire
de n x n mots). Le rythme de traitement des blocs de n x n données est par exemple
de un bloc traité par 20 microsecondes ; une donnée x(i,j) se présente par exemple
toutes les 74 nanosecondes (pour n x n = 256).
[0010] Pour le traitement du bloc suivant de n x n valeurs x(i,j), le circuit CTL reçoit
les valeurs successives x(i,j) et effectue la transformation ligne ; mais cette fois,
le séquenceur SEQ commande l'aiguillage AIG1 de manière à stocker les résultats C
i(v) dans la deuxième mémoire MEM 2. Pendant ce temps, les données précédemment enregistrées
dans la mémoire MEM 1 sont appliquées à titre de valeurs numériques d'entrée à traiter,
à travers l'aiguillage AIG2, au circuit de transformation colonne CTC qui produit
à sa sortie les coefficients C(u,v).
[0011] Ainsi de suite, alternativement, un bloc de n x n coefficients C
i(v) est stocké dans l'une des mémoires pendant qu'un bloc de coefficients C
i(v) enregistré à la période précédente dans l'autre mémoire est traité.
[0012] Cette architecture est élégante mais nécessite deux mémoires capables de stocker
chacune n x n données C
i(v). Il faut bien comprendre en effet que pour pouvoir effectuer une transformation
colonne sur les coefficients C
i(v) tous les coefficients C
i(v) d'une même colonne v doivent être mémorisées. Or, comme ces coefficients C
i(v) arrivent du circuit CTL
ligne par ligne, et non colonne par colonne, cela veut dire en pratique que la transformation colonne
ne peut commencer que lorsque tous les coefficients C
i(v) de la matrice sont arrivés du circuit CTL. C'est la raison pour laquelle l'architecture
de la figure 1 utilise deux mémoires fonctionnant alternativement. De plus, il faut
noter que si les données C
i(v) sont inscrites dans une mémoire ligne par ligne (i étant l'indice de ligne), alors
elles doivent être lues à la période suivante colonne par colonne (v étant l'indice
de colonne).
[0013] De plus, si cette architecture est utilisée avec des opérateurs CTC et CTL traitant
des données numériques dont les bits sont transmis en série (ou partiellement en série)
et non pas exclusivement en parallèle, alors il faut prévoir en plus entre les opérateurs
et les mémoires des convertisseurs série/parallèle et parallèle/série car les mémoires
classiques, SRAM ou DRAM ne peuvent traiter que des données dont les bits sont amenés
sous forme parallèle. Pourtant il est souvent intéressant, dès que les données ont
plus de 4 bits, de prévoir des opérateurs CTC et CTL travaillant sur des bits série
ou série-parallèle.
[0014] L'invention propose une nouvelle structure de mémoire de transposition permettant
de recevoir des données groupées ligne par ligne et de les restituer groupées colonne
par colonne; cette mémoire permet de remplacer les deux mémoires de la figure 1 et
les aiguillages entre ces mémoires et les opérateurs CTC et CTL par un seul bloc mémoire.
De plus, cette mémoire permet de ne pas utiliser de convertisseurs série/parallèle
et parallèle/série dans le cas où les données sont traitées dans les opérateurs sous
forme série ou série/parallèle.
[0015] La mémoire selon l'invention possède n entrées pour recevoir n données groupées ligne
par ligne et n sorties pour restituer les données groupées colonne par colonne, les
données étant les n x n données d'une matrice carrée de données et les données étant
transmises et traitées sous forme de signaux électriques. La mémoire comporte un réseau
de registres et de multiplexeurs, agencés en lignes et colonnes, chaque registre étant
associé à un multiplexeur. Le registre au carrefour d'une ligne i et d'une colonne
j étant désigné par REG(i,j) et le multiplexeur correspondant par MUX(i,j), le multiplexeur
MUX(i,j) ayant une première entrée reliée à la sortie du registre REG(i,j-1), une
deuxième entrée reliée à la sortie du registre REG(i+1,j), et une sortie reliée à
l'entrée du registre REG(i,j), la sortie du multiplexeur transmettant l'état de la
première entrée pendant une première phase de fonctionnement de la mémoire et transmettant
l'état de la deuxième entrée pendant une deuxième phase. Pour les premières et dernières
lignes et colonnes du réseau, les connexions sont les suivantes:
a) les premières entrées des multiplexeurs de la première colonne (de rang 0) sont
reliées chacune à une entrée respective de la mémoire;
b) les sorties des registres de la dernière colonne (de rang n-1) sont reliées chacune
par un interrupteur respectif à une sortie respective de la mémoire, cet interrupteur
étant fermé pendant la première phase et ouvert pendant la deuxième phase;
c) la sortie de chaque registre de la première ligne (de rang 0) est reliée, par un
interrupteur ouvert pendant la première phase et fermé pendant la deuxième, à une
sortie respective de la mémoire;
d) la deuxième entrée de chaque multiplexeur de la dernière ligne (de rang n-1) est
reliée à une entrée respective de la mémoire.
[0016] Chaque registre est périodiquement rempli d'une nouvelle donnée et vidé de la donnée
précédemment contenue; la période T correspond à la fréquence d'introduction de nouvelles
données dans la mémoire. La première et la deuxième phases de fonctionnement de la
mémoire, c'est-à-dire la première et la deuxième phases de fermeture et d'ouverture
des interrupteurs et de basculement des multiplexeurs, durent chacune un temps nxT.
[0017] Ce type de mémoire est utilisable avec des registres stockant chacun en parallèle
plusieurs bits d'une donnée, y compris avec des registres ayant chacun autant de cases
de stockage en parallèle que de bits dans chaque donnée. Dans ce cas, la mémoire est
utilisable directement entre deux opérateurs tels que CTL et CTC si ces opérateurs
travaillent sur des données transmises sous forme de bits en parallèle.
[0018] Mais l'invention est particulièrement avantageuse dans le cas où les opérateurs travaillent
sur des données transmises à la fois en série et en parallèle (par exemple, les données
sont de 16 bits chacune, transmises sur deux fils en huit étapes successives) où encore
des données transmises complètement en série sur un fil (par exemple des données de
16 bits transmises sur un fil en 16 étapes successives).
[0019] Dans ce cas, chaque registre est un registre à décalage à plusieurs positions successives
entre son entrée et sa sortie; le nombre de positions successives entre l'entrée et
la sortie est égal au nombre p de bits série des données à traiter; le registre est
actionné avec une période t = T/p. Si les données se présentent plus généralement
sous forme de m bits en parallèle et p bits en série (c'est-à-dire que chaque donnée
est transmise sur m conducteurs en p étapes, le nombre de bits global de chaque donnée
étant m x p), alors, chaque registre à décalage est constitué par m registres en parallèle
recevant chacun les bits de l'un des m conducteurs, et les multiplexeurs comportent
aussi chacun m premières entrées, m deuxièmes entrées et m sorties, chacune affectée
à un conducteur particulier.
[0020] Le circuit de traitement de données de la figure 1 peut alors être remplacé par une
architecture beaucoup plus simple dans laquelle l'opérateur CTC est relié à l'opérateur
CTL par l'intermédiaire d'une seule mémoire de transposition selon l'invention, et
ceci même si les opérateurs fonctionnent sur des données en série ou partiellement
en série.
[0021] D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de
la description détaillée qui suit et qui est faite en référence aux dessins annexés
dans lesquels:
- la figure 1, déjà décrite représente une possibilité d'architecture de circuit exécutant
une double sommation, en ligne puis en colonne, de valeurs numériques;
- la figure 2 représente symboliquement le réseau de registres constituant la mémoire
selon l'invention, avec deux configurations différentes de connexions entre les registres
et les entrées et sorties de la mémoire;
-la figure 3 représente un motif élémentaire du réseau de registres selon l'invention,
avec les connexions entre registres voisins;
- la figure 4 représente les interconnexions entre les entrées et sorties de la mémoire
et les premières et dernières lignes et colonnes du réseau de registres;
- la figure 5 représente un circuit de traitement de données utilisant une mémoire
selon l'invention.
- la figure 6 représente un registre élémentaire de stockage d'un bit unique de données;
- la figure 7 représente le chronogramme des signaux de commande du registre élémentaire
de la figure 6;
- la figure 8 représente le circuit d'établissement des signaux de commande du registre
élémentaire de la figure 6;
- la figure 9 représente un registre REG(i,j) du réseau constituant la mémoire selon
l'invention, ce registre étant constitué par m x p registres élémentaires de stockage
d'un bit.
[0022] Pour mieux faire comprendre l'invention, on a représenté à la figure 2 un réseau
simplifié de registres disposés en lignes et colonnes et destiné au stockage d'une
matrice de n x n données numériques, avec n = 4. Le réseau est représenté dans deux
configurations de connexions correspondant à deux phases de fonctionnement successives
durant chacune un temps n x T où T est la période d'introduction des données successives
dans le réseau. Les phases sont désignées dans ce qui suit par phase a et phase b
respectivement.
[0023] Le haut de la figure 2 représente la première configuration, correspondant à la première
phase (phase a). Le bas de la figure représente la deuxième configuration, correspondant
à la deuxième phase (phase b).
[0024] Le réseau comporte n entrées, E0, E1, E2, E3 et n sorties S0, S1, S2, S3. Il comporte
n x n registres susceptibles de stocker chacun une donnée numérique d'une matrice
de données n x n qui serait constituée comme ci-après pour n = 4:
C⁰(0) |
C⁰(1) |
C⁰(2) |
C⁰(3) |
C¹(0) |
C¹(1) |
C¹(2) |
C¹(3) |
C²(0) |
C²(1) |
C²(2) |
C²(3) |
C³(0) |
C³(1) |
C³(2) |
C³(3) |
[0025] Les registres sont désignés par les références REG(i,j) où i est le numéro de la
ligne et j le numéro de la colonne dans lequel se situe le registre; ainsi, la première
ligne comprend les registres REG(0,0), REG(0,1), REG(0,2), REG(0,3), la deuxième ligne
les registres REG(1,0), REG(1,1), etc.
[0026] Dans la première phase a de fonctionnement, les entrées E0 à E3 du réseau sont reliées
aux entrées des différents registres de la première colonne, et les sorties du réseau,
S0 à S3, sont reliées aux sorties des registres de la dernière colonne. De plus, l'entrée
de chaque registre des colonnes autres que la première est reliée à la sortie du registre
de la colonne précédente sur la même ligne.
[0027] Les données du bloc matriciel ci-dessus sont amenées successivement ligne par ligne
sur les entrées E0 à E3, c'est-à-dire que pendant une première période T, les entrées
reçoivent les quatre données de la première ligne, puis, à la période suivante celles
de la deuxième ligne, etc.
[0028] Le réseau contient toutes les données au bout d'un temps égal à n x T, et ces données
se présentent alors selon la configuration ci-dessous à l'intérieur du réseau de registres:
C³(0) |
C²(0) |
C¹(0) |
C⁰(0) |
C³(1) |
C²(1) |
C¹(1) |
C⁰(1) |
C³(2) |
C²(2) |
C¹(2) |
C⁰(2) |
C³(3) |
C²(3) |
C¹(3) |
C⁰(3) |
[0029] Dans une deuxième phase b de fonctionnement, durant aussi un temps n x T, la configuration
d'interconnexions à l'intérieur du réseau de registres change et devient celle qui
est représentée au bas de la figure 2. Les entrées E0, E1, E2, E3 sont connectées
aux entrées des registres de la dernière ligne, et les sorties S0, S1, S2, S3 sont
connectées aux sorties des registres de la première ligne . De plus, l'entrée de chaque
registre des lignes autres que la dernière est reliée à la sortie du registre de la
ligne suivante dans la même colonne.
[0030] Par conséquent, pendant cette deuxième phase de n périodes T, le réseau de registres
va d'une part se charger de nouvelles données (un autre bloc matriciel de n x n données),
et d'autre part se décharger des données précédemment stockées.
[0031] Mais le déchargement s'effectue à travers les registres de la première ligne et les
données remontent progressivement des autres lignes vers la première ligne, de sorte
que les données qui sortent sont d'abord les données suivantes:
puis les données suivantes:
etc.
[0032] Autrement dit, alors qu'on avait introduit les données du bloc matriciel ligne par
ligne pendant la première phase, on les ressort colonne par colonne.
[0033] De même, pendant cette deuxième phase, on introduit à nouveau des données ligne par
ligne comme précédemment, mais elles arrivent par la dernière ligne du réseau de registres
et remontent progressivement "verticalement" d'une ligne à la précédente (alors que
dans la première phase elles se déplaçaient "horizontalement" d'une colonne à la suivante).
[0034] Il en résulte qu'à la fin de la deuxième phase, la configuration des données dans
le réseau de registres est la suivante:
C′⁰(3) |
C′⁰(2) |
C′⁰(1) |
C′⁰(0) |
C′¹(3) |
C′¹(2) |
C′¹(1) |
C′¹(0) |
C′²(3) |
C′²(2) |
C′²(1) |
C′²(0) |
C′³(3) |
C′³(2) |
C′³(1) |
C′³(0) |
[0035] L'indice "prime" indique qu'il s'agit d'un nouveau bloc de données.
[0036] On recommence alors une première phase a, c'est-à-dire qu'on repasse dans la configuration
de connexions du haut de la figure 2 et on sort les données horizontalement; les premières
données qui sortent sont donc les suivantes:
C′⁰(0) |
C′¹(0) |
C′²(0) |
C′³(0) |
puis
C′⁰(1) |
C′¹(1) |
C′²(1) |
C′³(1) |
[0037] Autrement dit, là encore, les données qui ont été introduites ligne par ligne lors
de la deuxième phase sont restituées colonne par colonne lors d'une nouvelle première
phase.
[0038] Alors que la figure 2 n'est qu'un schéma symbolique de connexions des registres dans
les deux configurations alternées du réseau, la figure 3 montre la constitution précise
du réseau qui permet d'aboutir au fonctionnement décrit ci-dessus.
[0039] On a représenté sur la figure 3 quelques cellules adjacentes du réseau de registres
pour montrer leurs interconnexions. Le motif élémentaire qui se reproduit dans tout
le réseau, est entouré d'un trait tireté.
[0040] A chaque registre REG(i,j) correspondant à la i
ème ligne et a la j
ème colonne, est associé un multiplexeur MUX(i,j).
[0041] L'indice de ligne i varie de 0 à n-1 et l'indice de colonne j varie de 0 à n-1 également.
[0042] Chaque registre comporte une entrée et une sortie et il stocke régulièrement, avec
une période T, une nouvelle donnée qui se présente sur son entrée.
[0043] Chaque multiplexeur comporte une première et une deuxième entrée, et une sortie.
Il fournit sur sa sortie le signal présent sur sa première entrée pendant la première
phase (phase a), et au contraire le signal présent sur sa deuxième entrée pendant
la deuxième phase (phase b). Il est donc commandé par un signal logique de période
2 n x T représentant les deux phases de fonctionnement de la mémoire.
[0044] On donnera plus loin des exemples de réalisation de registres et multiplexeurs, mais
on peut déjà dire que leur constitution dépend du type de données qui sont reçues:
a) si les données sont fournies sous forme de m bits en parallèle, les entrées et
sorties des registres et des multiplexeurs sont des bus de m conducteurs; les registres
possèdent chacun m cases en parallèle.
b) si les données sont fournies sous forme de p bits en série, les entrées et sorties
comportent à chaque fois un seul conducteur transmettant ces bits à un rythme régulier
de période t = T/p; le registre est un registre à décalage à p positions successives,
actionné à la période t = T/p, et chaque bit de donnée introduit à l'entrée d'un registre
se retrouve à la sortie au bout du temps T.
c) si les données sont traitées d'une manière mixte, série/parallèle, la structure
est mixte: si les données comportent p bits en série sur chacun de m conducteurs,
les entrées et sorties des registres et multiplexeurs sont des bus de m conducteurs,
et les registres sont des ensembles de m registres à décalage travaillant en parallèle,
chaque registre à décalage ayant p positions successives et étant actionné à la période
t = T/p.
[0045] L'invention s'avère particulièrement intéressante dans les cas b) et c).
[0046] Pour revenir à la figure 3, on voit que le motif de connexions qui se répète sur
tout le réseau est le suivant: la première entrée du multiplexeur MUX(i,j) de la ligne
i et de la colonne j est reliée à la sortie du registre REG(i,j-1), c'est-à-dire le
registre de rang de colonne immédiatement inférieur sur la même ligne i; la deuxième
entrée du multiplexeur est reliée à la sortie du registre REG(i+1,j), c'est-à-dire
le registre de rang de ligne suivant de la même colonne j.
[0047] La sortie du multiplexeur est reliée à l'entrée du registre REG(i,j).
[0048] Ce motif d'interconnexion se répète sur tout le réseau à l'exception évidemment des
extrémités du réseau, c'est-à-dire des premières et dernières lignes et colonnes.
[0049] La figure 4 représente les connexions entre ces premières et dernières lignes et
colonnes et les entrées et sorties du réseau.
[0050] Ces connexions se font par l'intermédiaire d'interrupteurs actionnés avec la même
périodicité n x T que les multiplexeurs de manière que le réseau passe effectivement
de la configuration du haut de la figure 2 à la configuration du bas de la figure
2 avec cette même période.
[0051] Les connexions sont les suivantes:
[0052] Les multiplexeurs de la première colonne (de rang 0 en colonne) ont tous leur première
entrée reliée directement à une entrée respective de la mémoire: la première entrée
du multiplexeur MUX(0,0) est reliée à l'entrée E0, celle du multiplexeur MUX(1,0)
à l'entrée E1, celle du multiplexeur MUX(n-j-1,0) à l'entrée E(n-j-1), etc.
[0053] La sortie de chaque registre de la première ligne (de rang 0 en ligne) est reliée
par un interrupteur respectif, ouvert pendant la première phase a et fermé pendant
la deuxième phase b, à une sortie respective de la mémoire: la sortie du registre
REG(0,0) est reliée par un interrupteur à la sortie S(n-1); celle du registre REG(0,j)
est reliée à la sortie S(n-j-1); celle du registre REG(0,n-1) à la sortie S0.
[0054] La sortie de chaque registre de la dernière colonne (de rang n-1 en colonne) est
reliée par un interrupteur respectif, fermé pendant la première phase a et ouvert
pendant la deuxième phase b, à une sortie de la mémoire: la sortie du registre REG(0,n-1)
est ainsi reliée à la sortie S0, celle du registre REG(1,n-1) à la sortie S1, etc.
[0055] Enfin, la deuxième entrée de chaque multiplexeur de la dernière ligne (de rang n-1
en ligne) est reliée à une entrée respective de la mémoire: la deuxième entrée du
multiplexeur MUX(n-1,0) est reliée à l'entrée E(n-1), celle du multiplexeur MUX(n-1,j)
est reliée à l'entrée E(n-j-1), celle du multiplexeur MUX(n-1,n-1) est reliée à l'entrée
E0. On rappelle que la deuxième entrée du multiplexeur est celle qui est reliée à
sa sortie pendant la phase b tandis que la première entrée est reliée à sa sortie
pendant la phase a.
[0056] Le circuit ainsi décrit en référence aux figures 3 et 4 constitue une mémoire unique
de n x n données dans laquelle un bloc de n x n données est introduit ligne par ligne
et dans laquelle les données sont restituées colonne par colonne en même temps qu'un
nouveau bloc de données est introduit ligne par ligne.
[0057] On peut donc réaliser l'architecture de circuit de traitement de données numériques
de la figure 5, qui est beaucoup plus simple que l'architecture à deux mémoires de
la figure 1, et qui est extrêmement avantageuse dans le cas où les opérateurs CTC
et CTL traitent des données de type série.
[0058] On va maintenant décrire, en référence aux figures suivantes, une réalisation pratique
de cette mémoire pour le cas général où les données arrivent sous forme série/parallèle;
on supposera que les données arrivent en p bits série sur un bus de m conducteurs.
[0059] Le registre de base qui peut être utilisé pour stocker un bit de donnée est représenté
à la figure 6.
[0060] Il comprend deux étages identiques en cascade et il est commandé par quatre signaux
d'horloge de période t = T/p; ces signaux sont représentés à la figure 7; ils sont
produits à partir d'une horloge CLK de période T/p; les signaux K1 et Q1 commandent
le premier étage du registre; les signaux K2 et Q2 commandent le deuxième étage.
[0061] K1 est sensiblement identique au signal CLK; K2 est obtenu simplement par inversion
de CLK; Q1 est un signal ayant une transition vers le niveau logique bas après la
transition de K1 vers le niveau logique haut et ayant une transition vers le niveau
haut retardée par rapport à la transition vers le bas de Q2; Q2 a, vis-à-vis de K2
et Q1, la même relation que Q1 vis-à-vis de K1 et Q2.
[0062] Chaque étage du registre élémentaire de la figure 6 est constitué comme on le voit
sur la figure d'un premier transistor a canal N en série entre l'entrée de l'étage
et l'entrée d'un inverseur; ce transistor est commandé par le signal Q1 (Q2 pour le
deuxième étage); la sortie de l'inverseur est rebouclée d'une part sur la grille d'un
transistor à canal P inséré entre une source de tension Vdd et l'entrée de l'inverseur;
d'autre part sur la grille d'un transistor à canal N; ce dernier est en série entre
une borne de masse Vss et un autre transistor à canal N relié par ailleurs à l'entrée
de l'inverseur et commandé par le signal K1 (ou K2 pour le deuxième étage).
[0063] La figure 8 montre un circuit avec neuf inverseurs et deux portes NOR permettant
de générer les signaux K1, Q1, K2, Q2 à partir d'un signal d'horloge CLK symétrique
de période T/p.
[0064] La figure 9 montre comment on réalise un registre REG(i,j) à partir de m x p registres
élémentaires lorsque les données comprennent p bits en série sur un bus de m conducteurs
en parallèle; chaque rectangle sur la figure 9 représente un registre élémentaire
de stockage d'un bit, c'est-à-dire qu'un rectangle correspond au circuit à deux étages
de la figure 6.
[0065] L'entrée du registre REG(i,j) se fait par un bus de m conducteurs, chaque conducteur
arrivant à l'entrée d'un ensemble respectif de p registres élémentaires en cascade;
il y a m ensembles en parallèle correspondant chacun à un conducteur du bus d'entrée;
la sortie du dernier registre de chaque ensemble en cascade constitue un conducteur
de sortie du registre REG(i,j); la sortie globale du registre REG(i,j) est un bus
de m conducteurs constitué par les conducteurs de sortie des m ensembles en parallèle.
[0066] Tous les registres élémentaires du registre REG(i,j) ainsi d'ailleurs que des autres
registres de la mémoire sont commandés par les mêmes signaux K1,Q1,K2,Q2.
[0067] Les multiplexeurs comportent dans ce cas une première entrée constituée par un bus
de m conducteurs, une deuxième entrée constituée par un bus de m conducteurs, et une
sortie constituée par un bus de m conducteurs, le bus de sortie étant relié au bus
de la première entrée pendant la phase a et au bus de la deuxième entrée pendant la
phase b.