FR 2561010 A1 19850913 FR 8403665 A 19840309 Processeur de calcul d'une transformée discrète du cosinus La présente invention est relative aux processeurs de calcul d'une transformée discrète du cosinus, rentrant notamment dans des systèmes de compression en temps réel pour l'émission sur des liaisons à largeur de bande limitée de signaux numériques d'image de télévision. L'utilisation de techniques de codage numérique et de compression est déjà connue pour le traitement de signaux d'image de télévision à transmettre, sans dégradation notable, sur des liaisons à largeur de bande limitée. Certaines de ces techniques, permettant un traitement d'un signal d'image de télévision en temps réel et l'obtention de résul- tats satisfaisants tant sur la qualité d'image transmise que sur le rapport de compression obtenu, font appel au calcul de la transformée discrète du cosinus en deux dimensions. Pour ce calcul, le signal d'image de télévision est divisé en blocs matriciels successifs de N x N élé- ments d'image numériques, non chevauchants. Ces blocs sont convertis en ensembles successifs de N x N coefficients de transformée discrète du cosinus à deux dimensions qui quantifiés et codés sont ensuite transmis en ligne. Par application de la propriété de séparabilité de la transfor- mée discrète du cosinus en deux dimensions, le calcul de cette transfor- mée se ramène à des calculs de transformée discrète du cosinus en une dimension. La transformée discrète du cosinus d'une suite de N données i(j), avec j = o,... N-1, est une suite de N données transformées I(k), avec k = o..., N-l, encore appelés coefficients, qui s'expriment par l'équa- tion: N-1 I (k) 2 N(k) i(j) cos 2 j+ k i j=o avec k =-o,... N-1 et dans laquelle c(k) = - pour k=o F c(k) = 1 pour k = 1,... N-1 Le calcul de la transformée discrète du cosinus d'une suite de N données est effectué en réalisant une suite d'opérations réelles définies dans le temps sous forme d'un algorithme. L'un de ces algorithmes, applicable pour N = 2 avec n supérieur ou égal à 2 et du type connu sous la dénomination anglo- saxonne de "butterfly algorithm", est donné dans l'article intitulé "A Fast Computational Algorithm for the Discrete Cosine Transform" de Wen- Hsiung Chen, C. Harrison Smith et S.C Fralick, publié dans IEEE Transactions on Communications, septembre 1977. Il décompose le traitement des N données de la suite à transformer, pour l'obtention des N coefficients correspondants, à un facteur de normalisation près, en un nombre limité d'étapes successives fournissant chacune N résultats. Ces étapes consistent en des opérations d'addition ou soustraction entre paires convenables de données de la suite à transformer, ou paires convenables de résultats de l'étape qui précède directement celle considérée, et en des opérations de multipli- cation de résultats d'une étape, qui précède celle considérée, par une fonction cosinus ou sinus suivies d'opérations d'addition ou soustrac- tion entre l'un des résultats de ces multiplications et l'un des résul- tats d'étape précédente ou entre deux des résultats de ces multiplica- tions, considérés dans les deux cas par paires convenables. Un processeur de calcul mettant en oeuvre un algorithme déduit de l'algorithme précédent, dit de W.H. Chen et autres, est publié dans l'article "A High-Speed FDCT Processor for Real-Time Processing of NTSC Color TV Signal" de ALi Jalali et K.R. Rao dans IEEE Transactions on Electromagnetic Compatibility, Vol. EMC-24, N 2, mai 1982. Ce proces- seur, prévu pour le traitement de suites d'éléments d'image d'un signal d'image de télévision, est de structure modulaire à fonctionnement global en mode pipeline. Il comporte trois types de modules opératoires affectés à trois ensembles différents d'opérations à effectuer au cours de l'ensemble des étapes de traitement des éléments d'image d'une suite. L'un de ces modules, dit module simple, a deux entrées, il est affecté à une opération d'addition/soustraction. Un second module, dit module composite, a quatre entrées, il est affecté à des opérations de multipli- cation de deux des entrées par une fonction cosinus/sinus et d'addi- tion/soustraction de ces produits et à des opérations d'addition/sous- traction de chacune des deux autres entrées avec l'un de ces produits. Le troisième module, dit module de base, a deux entrées, il est affecté aux multiplications de chacune des entrées par une fonction cosinus/sinus et 5610 10 3 - à l'addition/soustraction de ces produits. Ces différents modules sont sous la commande d'un module de mémoire programmée permettant le fonc- tionnement simultané des différents modules opératoires et l'exploi- tation des résultats que chacun d'eux élabore par le module suivant ou sur les sorties du dernier module. La structure globale d'un tel processeur est complexe, elle met en oeuvre de nombreuses unités arthmétiques d'addition/soustraction et de nombreuses unités arithmétiques de multiplication. Un autre processeur de calcul, mettant en oeuvre un algorithme déduit également de l'algorithme de W.H Chen et autres publié dans IEEE Transactions on Communications et prévu également pour le traitement d'un signal d'image de télévision, est décrit dans le brevet américain n 4 302 775. Cet algorithme modifié donné dans ee brevet décompose l'en- semble des calculs à effectuer à partir de N éléments d'image en étapes successives fournissant chacune N résultats. Ainsi, pour la transforma- tion de 16 éléments d'image (N = 16), l'algorithme modifié donné dans ce brevet américain préconise une organisation de l'ensemble des ealculs en étapes successives, la première affectée à des opérations d'addition ou soustraction entre paires convenables d'éléments d'image d'entrée, la seconde affectée à des opérations identiques à celle de la première étape mais portant sur les paires convenables de résultats de ladite première étape, la troisième affectée à des opérations de multiplication des résultats précédents par des constantes (définissant des valeurs de cosinus ou de sinus et pouvant être + 1) et d'addition ou soustraction par paires des produits obtenus, la quatrième affectée à des opérations d'addition ou soustraction entre paires de résultats de la troisième étape, et la cinquième affectée à des opérations de multiplication de chacun des résultats précédents par des constantes (définissant des valeurs d'une fonction cosinus ou sinus) et d'addition entre paires de produits élaborés. Le processeur résultant comporte donc cinq ensembles de circuits opératoires montés à la suite les uns des autres et affectés aux opéra- tions effectuées selon les cinq étapes successives de traitement définies ci-avant. Le processeur global est synchronisé sur le rythme d'arrivée des éléments d'image d'entrée, mais chaque ensemble de cir- -4- cuits opératoires a ses propres signaux de commande prélevés du rythme des éléments d'image d'entrée. Ce processeur reste de structure complexe pour son fonctionnement en mode pipeline. La présente invention a pour but de définir une architecture plus simple de processeur pour le ealcul de la transformée discrète du cosinus d'une suite de N données numériques, en mettant en oeuvre un algorithme modifié établi à partir de celui de W.H Chen et autres, qui conduit à une structure finale de faible taille et aisément intégrable. Elle a donc pour objet un processeur de calcul de transformée discrète du cosinus comportant, pour le calcul de la transformée d'une suite de N données numériques, N = 2n, n entier supérieur à 2, des unites arithmétiques d'addition/soustraction et de multiplication, caractérisé par le fait qu'il est organisé en quatre étages successifs de calcul affectés individuellement à une seule et même opération et constituant ensemble un module processeur commandé par une mémoire pro- grammée et en ce que lesdits étages comportent: - pour le premier étage, dit d'entrée du module, une première unité arithmétique d'addition/soustraction à deux bus d'entrée recevant par paires successives les données à traiter et à bus de sortie délivrant leurs résultats, - pour le deuxième étage, une deuxième unité arithmétique d'addi- tion/soustraction à deux bus d'entrée et un bus de sortie, un premier et un deuxième registre de mémoire adressable chacun associé à l'un des bus d'entrée de ladite deuxième unité arithmétique d'addition/soustraction et des circuits multiplexeurs assurant sélectivement le chargement desdits premier et deuxième registres à partir du bus de sortie du pre- mier étage ou d'un bus interne au module et dit de bouclage et l'alimen- tation de chaque bus d'entrée de ladite deuxième unité arithmétique d'addition/soustraction à partir du bus de sortie du premier étage ou du registre associé, - pour le troisième étage, une unité arithmétique de multiplication à un bus de sortie et à deux bus d'entrée reliés respectivement à une mémoire adressable de valeurs de fonctions sinus et cosinus associée et au bus de sortie dudit deuxième étage, - et pour le quatrième étage, dit de sortie du module, une troisième unité arithmétique d'addition/soustraction à deux bus d'entrée et un bus - 5 - de sortie auquel est connecté ledit bus de bouclage pour le chargement sélectif desdits premier et deuxième registres, un troisième et un qua- trième registre de mémoire adressable chacun associé à l'un des bus d'entrée de ladite troisième unité arithmétique d'addition/soustraction et chargé sélectivement à partir du bus de sortie du troisième étage, et des circuits multiplexeurs assurant sélectivement l'alimentation de chaque bus d'entrée de ladite troisième unité arithmétique d'addi- tion/soustraction à partir du bus de sortie du troisième étage ou du registre associé. Selon une caractéristique, ce processeur appliqué au calcul de la transformée en deux dimensions de blocs successifs de N x N éléments d'image numériques d'un signal d'image, comporte, en outre, un jeu de trois mémoires, dites première, deuxième et troisième mémoires, comman- dées individuellement en écriture et en lecture par ladite mémoire pro- grammée et associées audit module, et, pour chaque mémoires un multi- plexeur de mots entrant et sortant de la mémoire et un multiplexeur d'adressage de la mémoire, commandés par ladite mémoire programmée pour relier séquentiellement ladite première mémoire, à double accès, mise en lecture puis la seconde mémoire, également à double accès, alors mise en lecture aux deux bus d'entrée du premier étage dudit module tandis que ladite seconde mémoire mise en écriture puis la troisième mise en écriture sont reliées successivement, pour ces mêmes séquences, au bus de sortie de l'étage de sortie du module pour le transfert des mots résultant du module. Les caractéristiques et avantages de la présente invention ressor- tiront de la description donnée ci-après d'un mode préféré de réalisa- tion, en regard des dessins ci-annexés. Dans ces dessins: - la figure 1 est le diagramme d'un algorithme modifié selon l'invention pour le calcul de la transformée discrète du cosinus d'une suite de N données, - la figure 2 représente le schéma d'un processeur de calcul de transformée discrète du cosinus en une dimension, selon l'invention, - la figure 3 est le schéma d'un processeur de caleul de trans- formée discrète du cosinus en deux dimensions, selon l'invention. Dans la figure 1, illustrant le diagramme d'un algorithme modifié de caleul de la transformée discrète du cosinus d'une suite de N données, -6par exemple, N éléments d'image, avec N = 8, on voit que les calculs à effectuer sont groupés en étapes successives au niveau de chacune des- quelles est effectuée de manière répétitive une même opération en N temps d'horloge successifs. Ces opérations consistent: - au niveau de la première étape I, à effectuer des opérations d'addition ou soustraction entre paires convenables de données d'entrées notées Xo à X7, - au niveau de la seconde étape II, à effectuer des opérations d'addition ou soustraction portant sur les résultats obtenus en sortie de l'étape I pris, en ce qui concerne une partie d'entre eux, par paires convenables et, en ce qui concerne une autre partie d'entre eux, individuellement pour leur simple report, - au niveau de la troisième étape III, à effectuer des opérations de multiplication des résultats de l'étape II par des fonctions cosinus ou sinus de valeurs définies notées par Ci ou Si, avec Ci = cos y et ilr 1 Si = sin i16 pour i = 1, 2,...7, - au niveau de la quatrième étape IV, à effectuer des opérations d'addi- tion ou soustraction entre les résultats de l'étape III précédente pris par paires convenables, - au niveau de la cinquième étape, notée II', à effectuer des opérations d'addition ou soustraction portant sur une partie des résultats issus de l'étape IV et une partie des résultats issus de l'étape II et indiqués par des traits mixtes en entrée pour cette étape, ces résultats traités étant considérés par paires convenables, - au niveau de la sixième étape, notée III' à effectuer des opérations de multiplication des résultats délivrés par l'étape précédente II' par des fonctions cosinus ou sinus de valeurs définies Si et Ci, - au niveau de la septième étape notée IV', à effectuer des opérations d'addition ou soustraction entre paires convenables de résultats déli- vrés par l'étape III'. Les N coefficients de la transformé discrète du cosinus, à un facteur de normalisation près, notés Po à P7, sont obtenus au cours de l'étape IV et de l'étape IV', pour quatre des huit temps d'horloge de traitement. Le processeur de la figure 2 effectue les calculs successifs 25610 10 -7- illustrés dans le diagramme de la figure 1, en tirant profit de l'ana- logie entre le groupe formé par les étapes de calcul II, III et IV et celui formé par les étapes de calcul II', III' et IV' et des traitements effectués de manière différée entre ces deux groupes d'étapes, pour définir une structure de module processeur très simple. Ainsi, le processeur illustré dans la figure 2 comprend quatre étages successifs de calcul, comportant essentiellement pour le premier étage, dit d'entrée, une première unité arithmétique, d'addition/sous- traction 10, pour le second, une deuxième unité arithmétique, d'addi- tion/soustraction 20, pour le troisième, une unité arithmétique de mul- tiplication 30 et, pour le quatrième, dit étage de sortie, une troisième unité arithmétique d'addition/soustraction 40. Un registre de sortie commandé sur l'un des fronts d'un signal d'horloge H, soit les regis- tres 11, 21, 31 et 41 pour les quatre étages respectivement, assure la délivrance des résultats élaborés par l'étage. Ces unités d'addition/soustraction et de multiplication ont chacune deux bus d'entrée référencés par le chiffre de référence affecté à l'unité considérée accompagné-de la lettre A et B, et un bus de sortie considéré sur le registre de sortie associé, ce bus de sortie étant désigné par la lettre S accompagné du chiffre romain I, II, III, IV correspondant aux identifications des étapes successives données sans ou avec le signe "prime" dans le diagramme de la figure 1. Les unités d'addition/soustraction 10, 20 et 40 reçoivent en outre chacune un signal de commande addition/soustraction désigné par D1, D2 ou D3 selon l'unité 10, 20 ou 40 considérée. Dans ce module processeur, à deux bus d'entrée de données consti- tués par les bus 10A et 10B et un bus de sortie constitué par le bus SIV, l'unité arithmétique 20 du deuxième étage a l'un de ses bus d'entrée 20A relié à travers deux premiers circuits multiplexeurs en cascade 22A, 23A soit sur le bus de sortie du premier étage SI soit sur un bus de sortie d'un registre de mémoire associé 24A. Ce registre de mémoire 24A est lui même chargé à travers le circuit multiplexeur 22A, soit à partir dudit premier étage par le bus SI, soit à partir du quatrième étage par un bus S'A interne au module et dit de bouclage raccordé au bus SIV. Ces cir- cuits multiplexeurs 22A, 23A reçoivent chacun un signal de commande C1A 25610 10 ou C2A pour la liaison sélective à réaliser entre les différents bus précités. Le deuxième bus d'entrée 20B de l'unité arithmétique 20 est, de manière analogues, relié à deux deuxièmes circuits multiplexeurs en cascade 22B et 23B auxquels est associé un deuxième registre de mémoire 24B et un autre bus interne S'B de bouclage raccordé au bus de sortie SIV du quatrième étage. Ces deuxièmes circuits multiplexeurs ont leurs pro- pres signaux de commande CIB, C2B qui assurent une liaison sélective entre les bus SI, S'B, 20B et le bus d'entrée et sortie de son registre de mémoire associé 24B. Les registres de mémoire 24A et 24B sont susceptibles de mémoriser chacun plusieurs mots de données ou résultats issus de SI ou de SIV. Dans l'exemple donné, ils sont constitués de trois étages. Ils reçoivent chacun un signal de commande en écriture E1 ou E2, un signal de commande en lecture L1 ou L2, un signal de mise à zéro RAZ1 ou RAZ2 et un signal de commande d'adressage Adl ou Ad2, pour le chargement, la lecture ou la remise à zéro de l'un de leurs étages alors adressé. Le multiplicateur 30 a l'un de ses bus d'entrée 30A directement relié au bus de sortie SII du second étage. Son deuxième bus d'entrée 30B est relié à une mémoire de fonctions eosinus et sinus 32 qui lui est associée, mémorisant des valeurs définies Ci et Si de ces fonctions, Ci = cos i-r et Si = sin i r (N = 8), et commandée par un signal 16 ' d'adressage Ad. L'unité arithmétique 40 du quatrième étage a l'un de ses bus d'en- trée 40A relié à travers un troisième circuit multiplexeur 42A soit sur le bus de sortie SIII du troisième étage soit sur un bus de sortie d'un registre de mémoire associé 43A. Ce registre 43A est lui-même chargé à partir du bus SIII relié à son bus d'entrée. Un signal de commande C3A appliqué au circuit multiplexeur 42A assure l'aiguillage sélectif entre le bus SIII, le bus de sortie du registre 43A et le bus 40A. Le regis- tre 43A est choisi de capacité permettant de mémoriser plusieurs mots ou résultats successivement délivrés sur SIII, dans l'exemple considéré il est à deux étages. Il reçoit un signal de commande d'écriture E3, un signal de commande de lecture L3 et un signal d'adressage Ad3 pour le chargement ou la lecture convenable de chacun de ses étages. Le deuxième bus d'entrée 40B de cette unité 40 est relié, de 256 1 0 1 0 -9- manière analogue, à travers un quatrième circuit multiplexeur 42B soit au bus SIII soit au bus de sortie d'un autre registre de mémoire asso- cié 43B. Ce registre 43B est chargé, à partir du bus SIII, sous la commande d'un signal d'écriture E4 qui lui est appliqué; il reçoit également un signal de commande de lecture L4 tandis que le circuit multiplexeur 42B reçoit un signal de commande C3B, assurant la liaison sélective du bus SIII et du bus de sortie de ce registre 43B avec le bus 40B. Ce registre 43B est, dans l'exemple de réalisation donné, choisi de capacité égale à un seul mot issu du bus SIII. Les signaux extérieurs de commande d'adressage, d'écriture et de lecture des registres de mémoire 22A, 22B, 42A et 42B, de remise à zéro RAZ1 et RAZ2 des registres de mémoire 24A et 24B, celui d'adressage de la mémoire des cosinus et sinus 32, les signaux de commande D1, D2 et D3 des unités arithmétiques 10, 20 et 40 et les signaux de commande C1A, C2A, C1B, C2B, C3A et C3B des circuits multiplexeurs sont délivrés par une mémoire programmée de commande, non représentée. Les données d'en- trée ou éléments diimage numériques à traiter ainsi que le signal d'hor- loge H définissant les cycles opératoires successifs de chacun des étages de traitement, pour la sortie des résultats intermédiaires ou des coefficients, sont délivrés par un circuit contrôleur principal, non représenté, pilotant également la mémoire programmée de commande. Dans ce module processeur, les éléments d'image d'entrée sont définis sous 8 bits, les résultats intermédiaires et les coefficients sont définis sous 12 bits. Le module a donc une structure à bus internes de 12 bits d'un étage à l'autre et à deux bus d'entrée de données de 8 bits et un bus de sortie de 12 bits. Le fonctionnement du processeur et le déroulement des traitements sont donnés dans les tableaux I et II ci-après en regard de cycles opératoires successifs 1, 2, 3... donnés par le signal H. Dans ces tableaux on a indiqué pour une suite de huit éléments d'image Xi à traiter, i = 0, 1,... , 7, considérés par paires convenables sur les bus d'entrée 10A et 10B, les résultats successifs, notés par Li, Mi, Ni, Pi notamment, obtenus sur les sorties des différents étages de calcul et/ou mémorisés dans les étages respectifs R1, R2 ou R3 des registres de mémoire. On y a également ébauché les traitements effectués sur une - 10 - nouvelle suite d'éléments d'image succédant à la précédente en entrée du module processeur, les éléments d'image et résultats relatifs à cette nouvelle suite qui apparaissent dans ces tableaux ayant été repérés par les mêmes références que leus homologues de la suite précédente accompa- gnées du signe prime. - il - H 1OA 10B SI 24A 24B 20A 20B SII R1 R2 R3 R1 R2 R3 1 X X6.. . . 2 X2 X5 L6 0. .... . 3 XO X7 L5 O. L6 O. . L6 O o 4 X3 X4 LO O L6 O L5 O L5 L6 X1 X6 L3 LO L6 O. L5 LO L3 L5 6 X2 X5 L1 LO. L6 L3. L5 LO L3 MO 7 X3 X4 L2 LO o LI L3 L5 Li L2 M3 -lo 8 XO X7 M4 LO. L1 L3 L2 L5 L1 L2 M1 9 M7 LO M4 L1 L3 L2 M6 LO L3 M2 À M7 M4 L1 M5 L2 M6 L1 L2 M3 11. M7 M4 Li M5 L2 M6 M7 M6 M2 12. M7 M4 L1 M5 L2 M146 14M4 M15 N7 13 M7 M4 L1 M5 L2 M16 M7 M6 N4 14. M7 M4 L1 M5 L2 M6 M4 M5 N6 ÀÀ M7 M4 L1 M5 L2 M6 M7 M6 N5 16. M7 M4 L1 M5 L2 M6 M4 M5 N6 17 X'i X'6. M7 M4 L1 M5 L6 M6 M7 M6 N5 18 X'2 X'5 L'6 O M4 L1 M5 L2 M6 M4 M5 N7 19 X'O X'7 L'5 O M4 L'6 O L2 M6 L'6 O N4 X'3 X'4 L'O O M4 L'6 O L2 L'5 0 L'5 L6 21 X'1 X'6 L'3j L'O M4 L'6 O L2 L'5 L'O L'3 L'5 22 X'2 X'5 L'I L'O M4 L'6 L'3 L2 L'5 L'O L'3 M'O0 23 X'3 X'4 L'2j L'O M4 L'1 L'3 L2 L'5 L'1 L'2 M'3 24 X'O X'7 1M'44 L'O 4 L' L'3 L'2 L'5 L' L'2 M'1 :25 M'71 L'O M'4 L'1 L'3 L'2 M'6 L'O L'3 M'2 TABLEAU I -]2 -. |H SIII 43A 43B 40A 40B SIV R1 R2 3 À i e À I.I. .. C4 L6 6 C4 L5 C4 L6. . 7 C4 MO C4 L6. C4 L5 C4 L6 C4 L5. 8 C2 M3 C4 L6 C4 M0 C4 L5 C4 L6 C4 L5 M6 9 C4 M1 C2 M3 C4 MO C4 L5 C4 M0 C4 M1 M5 S2 M2 C2 M3 C4 MO C4M1 C4 MO C4 M1 PO 11 C6 M3 C2 M3 C4 M0 S2 M2 C2 M3 S2 M2 P4 12 S6 M2 C6 M3 C4 MO S2 M2 C6 M3 S6 M2 P2 13 C7 7 N7 C6 M3 C4 MO S2 M2. P6 14 S7 N4 C7 N7 C4 MO S2 M2 C7 N7 S7 N4. C3 N6 C7 N7 C4 MO S2 M2 P7 16 S3 N5 C3 N6 C4 M0 S 2 M2 C3 N6 S3 N5. 17 C5 N6 C3 N6 C4 MO S2 M2 P3 18 S5 N5 C5 N6 C4 MO S2 M2 C5 N6 S5 N5. 19 C1 N7 C5 N6 C4 MO S2 M2 P5 S1 N4 C1 N7 C4 MO S2 M2 C1 N7 S1 N4. 21 C4 L'6 C1 N7 C4 MO S2 M2 À P1 22 C4 L'5 C4 L'6 C4 MO S2 M2.. 23 C4 M'O C4 L'6 C4 MO C4 L'5 C4 L'6 C4 L'5. 24 C2 M'3 C4 L'6 C4 M'0 C4 L'5 C4 L'6 C4 L'5 M'6 C4 M'1 C2 M'3 C4 M'0 C4 L'5 C4 M'0 C4 l M' I M'5 TABLEAU II 25610 1 0 - 13 - Dans ces tableaux, le symbole "." traduit un état indifférent, et les résultats intermédiaires notés Li, Mi et Ni ainsi que les coeffi- cients notés Pi obtenus à partir des éléments d'image Xi peuvent être définis de la manière suivante: LO = X0 + X7 MO = LO + L3 L1 = X1 + X6 M1 = L1 + L2 L2 = X2 + X5 M2 = L1 - L2 L3 = X3 + X4 M3 = LO - L3 L4 = X3 - X4 M4 = L4 L5 = X2 - X5 M5 = C L6- C4 L5 L6 = X1 - X6 M6 = C4 L6 C4 L5 L7 = XO - X7 M7 = L7 NO = C4 M0 + C4 M1 PO = NO N1 = C4 M0 -'C4 M1 P4 = N1 N2 = S2 M2 + C2 M3 P2 = N2 N3 = C6 M3 - S6 M2 P6 = N3 N4 = M4 + M5 P1 = C1 N7 + S1 N4 N5 = M4 - M5 P5 = C5 N6 + S5 N5 N6 = M7 - M6 P3 = C3 N6 - S3 N5 N7 = M7 + M6 P7 = C7 N7 - S7 N4 avec Ci = Cos i et Si = Sin pour i = 1, 2...7. 16 16 En regard de ces deux tableaux, il ressort que ce module proces- seur, comportant 3 additionneurs/soustracteurs, un seul multiplicateur, 9 étages de registres de mémoire chacun de capacité d'un mot de 12 bits, 6 multiplexeurs de bus et une mémoire des valeurs de cosinus et sinus, effectue les différents calculs de manière séquentielle sur les 8 élé- ments d'image de suites successives de 8 éléments d'image, ces suites pouvant être par exemple des lignes successives d'un bloc matriciel de 8x8 éléments d'image. Cette structure permet un calcul de transformée discrète en une dimension portant sur les 8 éléments d'image Xi de chaque - 14 - ligne du bloc matriciel qui lui sont appliqués en 8 cycles H notes 1 à 8 et délivre les coefficients correspondants Pi en 16 cycles H, notés 6 à 21 pour la première ligne, soit en 128 cycles H successifs pour les traitements des 8 lignes, après une initialisation globale du traitement effectué sur 5 cycles notés 1 à 5. On notera que les coefficients Pi ainsi obtenus ne sont pas norma- lisés. Pour disposer des coefficients normalisés, qui sont égaux aux produits des coefficients Pi par le facteur de normalisation --, il suffit, le nombre N étant de la forme 2n avec n entier, d'opérer simple- ment un décalage des bits définissant les coefficients Pi de (n-1) posi- tions, c'est-à-dire ici de 2 positions, vers les bits de plus faibles poids. Ce décalage est obtenu simplement en pratique en diminuant le poids des bits délivrés en sortie du module dans un rapport 2n-1, e'est-à-dire ici dans un rapport 4. Dans la figure 3, on a schématisé le processeur de calcul de la transformée discrète du cosinus en deux dimensions d'un bloc matriciel de NxN éléments d'image numérique, N=8. Ce processeur est construit essentiellement sur le module proces- seur de calcul de transformée discrète du cosinus en une dimension. Il comporte, outre ce module désigné sous la référence 1 et identique à celui décrit en regard de la figure 2 à ceci près que ses deux bus d'entrée auront ici 12 bits: - trois mémoires ou registres mémoire 50, 60, 70, reliées au module 1, - une mémoire programmée 80 de commande des registres mémoire 50, , 70 et du module 1, - et un circuit contrôleur principal 90 pilotant la mémoire pro- grammée 80 et assurant le stockage des éléments d'image pour leur trans- fert par blocs successifs de 64 vers le module processeur et le stockage des blocs des 64 coefficients P issus du traitement. Le module processeur 1 n'est plus décrit. On a simplement repéré ses deux bus d'entrée de données et son bus de sortie par les référen- ces 10A, 10B et SIV utilisées dans la figure 2. Il est commandé par la mémoire programmée 80 ainsi qu'indiqué ci-avant, un bus de commande 10C regroupe ces commandes et le signal H provenant du circuit contrô- leur 90. - 15 - Chacun des registres de mémoire 50, 60 et 70 est de eapacité choisie pour mémoriser un bloc de 8x8 mots, soit 64 éléments d'image sur 8 bits chacun pour le registre 50 ou 64 coefficients sur 12 bits chacun pour les registres 60 et 70. Ils sont individuellement commandés en écriture et lecture par la mémoire programmée de commande 80 et reçoi- vent un signal de commande éceriture/leeture traduit par les niveaux logiques 0/1 sur une liaison 51, 61 ou 71. A chaeun de ces registres de mémoire 50, 60, 70 sont associés un premier multiplexeur, de mots entrants ou sortants, 52, 62 ou 72 et un second multiplexeur, d'adresses pour ees mots, 53, 63 ou 73, tous deux commandés simultanément par un signal de commande délivré par la mémoire programmée de commande 80 par une liaison individuelle 54, 64 ou 74. Les registres de mémoire 50 et 60 sont des registres double accès, à bus d'entrée et sortie de mots bidi- reetionnels et le registre 70, un registre simple accès, à bus d'entrée et de sortie de mots également bidirectionnel. Les multiplexeurs de mots 52 et 62 sont analogues; ils présentent chaeun ainsi que sehématisé un bus d'entrée pour les mots entrant dans le registre mémoire et deux bus de sortie pour les mots sortant du registre mémoire, ces bus étant repérés par la référence du multiplexeur accompa- gnée de la lettre E, pour le bus des mots entrant dans le registre mémoire, des lettres A et B, pour les bus des mots sortant du registre simultanément. Leur signal de commande assure une liaison sélective entre leur bus affecté de la lettre E et l'un des bus bidirectionnels d'entrée/sortie de registre de mémoire ou entre leurs deux bus affeetés des lettres A et B et les deux bus d'entrée/sortie bidirectionnels de registre. Pour le multiplexeur 52, le bus d'entrée 52E est relié au circuit contrôleur principal 90, les bus de sortie 52A et 52B sont reliés aux bus 1OA et 10B du module processeur 1. Pour le multiplexeur 62, le bus d'entrée 62E est relié au bus de sortie SIV du module processeur 1, ses bus de sortie 62A et 62B sont également reliés aux bus d'entrée 10A et 10B du module processeur 1. Les multiplexeurs d'adresses 53 et 63 sont aussi analogues entre eux. Ils présentent chacun trois bus d'entrée d'adresses reliés à la mémoire programmée 80 et désignés par les références du multiplexeur accompagnées de la lettre E pour l'un des bus affecté aux adresses - 16 - d'écriture des mots entrant dans leur registre de mémoire et par les lettres A et B, pour les deux autres bus affectés aux adresses de lecture des paires de mots sortant de leur registre de mémoire. Ils présentent chacun deux bus de sortie reliés aux deux bus d'adresses de leur registre mémoire à double accès. Ils sont commandés individuellement par le signal sur la liaison 54 ou 64 pour assurer sélectivement la liaison entre le seul bus affecté de la lettre E et l'un des bus de sortie ou la liaison entre leurs deux autres bus d'entrée affectés des lettres A et B et les deux bus de sortie, pour délivrer soit les adresses d'écriture des mots entrants soit les adresses de lecture des paires de mots sortants. Le multiplexeur de mots 72 assure la liaison sélective entre le * bus de sortie SIV du module processeur 1 et le bus bidirectionnel d'en- trée/sortie du registre mémoire 70 ou entre ce bus bidirectionnel d'en- trée/sortie du registre mémoire 70 et un bus de sortie 72 L relié au circuit contrôleur 90. Le multiplexeur d'adresses 73 assure la liaison sélective entre un bus 73E affecté aux adresses d'écriture des mots entrant dans le registre 70 et le bus d'adresse de ce registre simple accès ou entre ce bus d'adresse du registre 70 et un bus 73 L affecté aux adresses de lecture des mots sortant de ce registre. Le circuit contr81eur 90 assure le transfert d'éléments d'image X, par blocs de 64, vers le registre de mémoire 50, reçoit du registre de mémoire 70 les coefficients, P, résultant de la transformation en deux dimensions et contr8le le processus général de traitement. Il présente un bus d'entrée 91 des éléments du signal d'image échantillonné, un bus de sortie 92 des coefficients P du signal traité, un bus bidirection- nel 93 de transfert des blocs successifs d'éléments d'image du circuit contrôleur 90 vers le registre de mémoire 50 et des blocs de coeffi- cients P du registre de mémoire 70 vers le circuit contr8leur 90, ce bus 93 étant relié au bus 52E et au bus 72L précités. Il présente en outre un bus 94 de contr81e général du processeur sur lequel sont appli- qués un signal de demande d'accès du circuit contrôleur aux registres de mémoire 50 et 70 transmis à la mémoire programmée 80, associé à un signal écriture/lecture dans le circuit contr81eur 90 donnant le sens du trans- fert concerné, un signal de réponse transmis au circuit contrôleur par la mémoire programmée, correspondant à la fonction "prat à" du processeur 25610 10 - 17 - général. Il fournit, en outre, le signal d'horloge H, transmis sur une liaison 95, qui définit le rythme des traitements ainsi que, par des liaisons non représentées, les alimentations nécessaires au fonctionne- ment du processeur. Le calcul de la transformée discrète en deux dimensions de chaque bloc de 8x8 éléments d'image est effectué en plusieurs séquences: - une première séquence qui est une séquence d'initialisation, elle correspond au transfert de 8x8 éléments d'image du circuit contrôleur 90 au registre de mémoire 50, le chargement de ce registre 50 étant effec- tué aux adresses successives délivrées sur le bus 53E, - une deuxième séquence qui est une séquence de traitement, pour le calcul des 64 coefficients correspondant à la transformation en une dimension des 8 lignes de 8 éléments d'image, elle est effectuée par étapes successives par le module 1 recevant les éléments d'image du registre de mémoire 50 lu aux adresses successives délivrées sur les bus 53A et 53B et délivrant les coefficients résultants dans le registre de mémoire 60 chargé aux adresses successives délivrées sur le bus 63E, - une troisième séquence qui est également une séquence de traitement, pour le calcul des 64 coefficients définitifs correspondant à la trans- formation en une dimension des 64 coefficients résultant de la deuxième séquence convenablement arrangés en 8 groupes de 8, elle est effectuée par étapes successives par le module 1 recevant du registre de mémoire 60 convenablement adressé à partir des bus 63A et 63B les paires de coefficients issus du premier traitement et délivrant au registre de mémoire 70 adressé à partir du bus 73E les coefficients définitifs, - et une quatrième séquence, qui est une séquence finale pour le traite- ment de ces 64 éléments d'image, elle correspond au transfert du bloc des 64 coefficients définitifs du registre de mémoire 70, lu et adressé à partir-du bus 73L, au circuit contrôleur 90. Pendant les troisième et quatrième séquences, relatives aux trai- tements du bloc de 64 éléments d'image considéré, s'effectuent aussi les première et deuxième séquences relatives aux traitements du bloc suivant de 64 éléments d'image. Bien entendu, pour disposer des coefficients définitifs norma- lisés, on effectuera le décalage de 2 positions binaires mentionnées 2561 0 1 0 - 18 - ci-avant à la fin de la description relative au module processeur 1 des bits définissant les résultats délivrés par ce module au cours de chacune des deuxième et troisième séquences du calcul de la transformée discrète en 2 dimensions de chaque bloc de 8x8 éléments d'image. -5 La présente invention a été décrite en regard d'un calcul effectué sur des suites de 8 données numériques. La même architecture peut être utilisée pour effectuer des calculs correspondants portant sur des suites de 16 données numériques ou plus, en adoptant au niveau du module processeur 1 (figure 2) des registres mémoire de capacité convenable et en effectuant le nombre convenable de bouclages entre sa sortie SIV et le second additionneur 20 qu'il comporte. 25610 10 - 19 - REVENDICATIONS 1/ Proeesseur de calcul de transformée discrète du cosinus comportant, pour le calcul de la transformée d'une suite de N données numériques, N = 2n, n entier supérieur à 2, des unités arithmétiques d'addi- tion/soustraction et de multiplication, caractérisé par le fait qu'il est organisé en quatre étages successifs de calcul affectés individuel- lement à une seule et même opération et constituant ensemble un module processeur (1) commandé par une mémoire programmée (80) et en ce que lesdits étages comportent: - pour le premier étage, dit d'entrée du module, une première unité arithmétique d'addition/soustraetion (10) à deux bus dentrée recevant par paires successives les données à traiter et à bus de sortie (SI) délivrant leurs résultats, - pour le deuxième étage, une deuxième unité arithmétique d'addi- tion/soustraetion (20) à deux bus d'entrée et un bus de sortie (SII), un premier et un deuxième registre de mémoire adressable (24A, 24B) chacun associé à l'un des bus d'entrée de ladite deuxième unité arithmétique d'addition/soustraction, et des circuits multiplexeurs (22A, 23A, 22B, 23B) assurant sélectivement le chargement desdits premier et deuxième registres à partir du bus de sortie (SI) du premier étage ou d'un bus interne au module et dit de bouclage (S'A, S'B) et l'alimentation de chaque bus d'entrée de ladite deuxième unité arithmétique d'addi- tion/soustraction à partir du bus de sortie du premier étage ou du registre associé, - pour le troisième étage, une unité arithmétique de multiplication (30) à un bus de sortie et à deux bus d'entrée reliés respectivement à une mémoire adressable (32) de valeurs de fonctions sinus et cosinus associée et au bus de sortie (SII) dudit deuxième étage, - et pour le quatrième étage, dit de sortie du module, une troisième unité arithmétique d'addition/soustraction (40) à deux bus d'entrée et un bus de sortie SIV auquel est connecté ledit bus de bouelage (S'A, S'B) pour le chargement sélectif desdits premier et deuxième registres, un troisième et un quatrième registre de mémoire adressable (43A, 43B), chacun associé à l'un des bus d'entrée de ladite troisième unité arithmé- - 20 - tique d'addition/soustraction et chargé sélectivement à partir du bus de sortie du troisième étage, et des circuits multiplexeurs (42A, 42B) assurant sélectivement l'alimentation de chaque bus d'entrée de ladite troisième unité arithmétique d'addition/soustraction à partir du bus de sortie (SIII) du troisième étage ou du registre associé. 2/ Processeur selon la revendication 1, appliqué au caleul de la trans- formée en deux dimensions de blocs de NxN éléments d'image numériques d'un signal d'image, caractérisé par le fait qu'il comporte, en outre, un jeu de trois mémoires (50, 60, 70), dites première, deuxième et troi- sième mémoires, commandées individuellement en écriture et en lecture par ladite mémoire programmée (80) et associées audit module (1), et, pour chaque mémoire, un multiplexeur (52, 62, 72) de mots entrant et sortant de la mémoire et un multiplexeur (53, 63, 73) d'adressage de la mémoire, commandés par ladite mémoire programmée 80 pour relier séquen- tiellement ladite première mémoire, à double accès (50), mise en lecture puis la seconde mémoire (60), également à double accès, alors mise en lecture aux deux bus d'entrée (10A, lOB) du premier étage dudit module (1) tandis que ladite seconde mémoire (60) mise en écriture puis la troisième (70) mise en écriture sont reliées successivement, pour ces mêmes séquences, au bus de sortie (SIV) de l'étage de sortie du module (1) pour le transfert des mots résultant du module. 3/ Processeur selon la revendication 2, caractérisé par le fait qu'il comporte, en outre, un circuit contrôleur principal (90), assurant le stockage des éléments d'image par blocs de NxN éléments d'image et des NxN coefficients issus de la transformation de chaque bloc, relié séquentiellement à ladite première mémoire (50) pour le chargement des blocs successifs d'éléments d'image dans cette mémoire et à ladite troi- sième mémoire (70) pour le déchargement des blocs de N x N mots résul- tants issus du module et constituant lesdits coefficients.