FR 2681740 A1 19930326 FR 9111644 A 19910920 CODE NUMERIQUE ET SON PROCEDE DE TRANSFORMATION La présente invention a pour objet un code numérique de traitement de données dont chaque ligne représente une donnée numérique codée. On utilise fréquemment des codes cycliques, en particulier le code GRAY, en raison de caractère "thermométrique" des échelles de résistance servant de référence pour la conversion analogiquenumérique d'un signal. De tels codes sont faciles à décoder, mais demandent un nombre élevé de circuits (2 N comparateurs logiques pour un code à (N+1) bits). Des architectures de convertisseur ont été mises en oeuvre qui permettent de diminuer le nombre de bits à décoder. Les convertisseurs à repliement et interpolation permettent notamment un décodage plus simple. Il reste cependant toujours à décoder un mode cyclique de GRAY, même s'il présente un nombre de bits moins élevé. La présente invention a pour objet un code numérique présentant des données codées et qui soit facilement transformable en un code binaire, un tel code pouvant notamment être utilisé comme code intermédiaire pour transformer un code cyclique en code binaire, avec l'avantage que cette dernière transformation est plus simple à réaliser que la transformation directe du code cyclique en code binaire selon l'art antérieur. Un code numérique selon l'invention est ainsi caractérisé en ce qu'il comporte - une première matrice constituée d'au moins deux souscodes cycliques présentant chacun deux sous-matrices triangulaires, - une deuxième matrice présentant un nombre de colonnes suffisant pour discriminer les sous-matrices de la première matrice, chaque donnée numérique étant représentée par une ligne de la première matrice et une ligne de même rang de la deuxième matrice. La deuxième matrice est avantageusement constituée d'un sous-code cyclique. Selon une variante préférée, le code est à (N+I) bits, la première matrice présente 2 N-M colonnes, et la deuxième matrice présente (2 N) colonnes, M étant un nombre entier pouvant varier de 1 à (N-l), la première et la deuxième matrice pouvant alors présenter 2 N lignes ce qui correspond à une moitié d'un code cyclique complet. Selon un mode de réalisation préféré de cette variante, la deuxième matrice comporte les colonnes de rang p 2N-M, variant de 1 à 2 M d'un code cyclique à (N+1) bits. On rappelle que le rang des colonnes est1 ainsi qu'il est usuel, à compter à partir des bits de poids faible. L'invention concerne également un procédé de traitement de données par transformation en code cyclique d'un code numérique selon l'invention, caractérisé en ce qu'il consiste à aligner les sousmatrices de la première matrice pour former au moins un premier ensemble de sous-matrices alignées selon une diagonale comportant soit des O, soit des 1, en tenant compte des valeurs logiques des données des colonnes de la deuxième matrice et éventuellement de la colonne de bits de poids le plus fort de la première matrice, et à compléter le code cyclique avec des O et des 1 en fonction des valeurs de données de la deuxième matrice. Selon un mode de réalisation préféré, l'alignement des sous-matrices est obtenu avec inversion logique des données d'une matrice sur deux. Un premier ensemble de sous-matrices peut être aligné selon une première diagonale de O et un deuxième ensemble de sousmatrices, aligné sur une deuxième diagonale de 1. Ceci permet la conversion de la totalité du code. Pour un code à (N+1) bits, les données de la (p 2 N-M + i) ème colonne du code cyclique ont avantageusement pour valeur - celle des données de la (p 2 1 ème colonne de la deuxième matrice au cas où les lignes de la I(P-l) ~ et de la (p 2 NM) ème colonne ont des données identiques, - celle des données de la i ème colonne de la première matrice, le cas échéant inversées logiquement, sinon. L'invention concerne enfin un procédé de traitement de données par transformation en code binaire d'un code numérique selon l'invention. Il est dans ce but caractérisé en ce qu'il consiste à combiner logiquement les données des colonnes de la première et de la deuxième matrice, le bit de rang q (Bit q) étant défini de la manière suivante a) pour l Bit = Dx désignant les données de la xème colonne de la première matrice (X > o). b) pour 1 + It - M g Y Bit q DX2N-M désignant les données de la X ème colonne de la deuxième matrice (X > o). c) Bit N+1 = D 2N $ désignant un OU exclusif E désignant la somme logique (OU). L'invention sera mieux comprise à la lecture de la description qui va suivre donnée à titre d'exemple non limitatif en liaison avec les dessins qui représentent - les figures I et 2 respectivement une table de conversion de données codées selon un code GRAY cyclique de 4 bits en un code à deux matrices puis en code binaire et un circuit pour réaliser une telle conversion, - la figure 3, une table de conversion d'un code GRAY cyclique de 5 bits, - la figure 4, un code GRAY cyclique N + 1 bits (2 N colonnes) pour illustrer le traitement de matrices triangulaires selon l'invention, - la-figure 5, un convertisseur de code GRAY cyclique de N bits en un code replié à deux matrices selon l'invention. Selon la figure 1, un code GRAY cyclique de 4 bits est représenté par huit colonnes numérotées de 1 à 8 depuis le bit de poids faible (à droite) et le bit de poids fort (à gauche), et seize lignes. La première ligne correspondant au nombre O ne compte que des zéros. Les lignes successives de la 2ème à la 8ème qui correspondent aux nombres décimaux 2 à 8, voient les zéros des colonnes I à 7 progressivement remplacées par des 1. La 9ème ligne ne comporte que des 1, et les lignes successives de la 10ème à la 16ème, qui correspondent aux nombres décimaux 10 à 16, voient les 1 des colonnes 1 à 7 progressivement remplacés par des zéros, la 16ème ligne présentant un seul 1 sur la huitième colonne, ce qui assure une continuité cyclique avec la première ligne. Pour décoder un tel code de 4 bits (N+1 = 4), il faut 2 3, soit 8 comparateurs logiques1 selon l'art antérieur. On peut voir sur la ligne 1 que le code cyclique représenté présente d'assez nombreuses symétries qui ont été mises en évidence en décomposant le codes en sous-matrices de 4 lignes et 4 colonnes. Quatre de ces sous-matrices seulement sont porteuses d'informations différentes sur chacune des lignes. Elles ont été notées M1, M2, M'1 et M'2. Les sous-matrices M1 et M2 comportent une diagonale de O au-dessus de laquelle tous les bits sont des zéros et en-dessous de laquelle tous les bits sont des 1. Les sous-matrices M' et M'2 comportant une diagonale de 1 au-dessus de laquelle tous les bits valent I et en-dessous de laquelle tous les bits valent 0. Les autres sous-matrices comportent toutes soit des 0, soit des 1, c'està-dire une seule information. Cette information peut être utilisée pour préciser, pour un nombre donné, quelle sous-matrice est concernée. En d'autres termes, il s'agit de discriminer entre la sousmatrice M1 et la sous-matrice M2, ou bien entre la sous-matrice M'1 et la sous-matrice M'2 c'est-à-dire lever l'indétermination entre les sous-matrices identiques. Pour ce faire, la solution la plus simple est d'utiliser directement les colonnes 4 et 8 dont les bits ne changent de valeur que lorsque l'on passe d'une sous-matrice à une autre. On conserve donc la totalité des informations du code GRAY en extrayant l'information des sous-matrices M1 à M4, que l'on superpose pour former une matrice de code intermédiaire de 4 colonnes et de 16 lignes, ainsi que les colonnes 4 et 8 formant une matrice de contrôle de code intermédiaire pour lever l'indétermination. Il est cependant beaucoup plus avantageux de procéder en inversant les données logiques d'une sous-matrice sur deux, pour réaliser une substitution de bits, à savoir en remplaçant les données logiques de M1 et de M'2 par leur complément logique. On obtient ainsi une matrice de code intermédiaire de quatre colonnes notées (1) (2) (3) et 4, et de 16 lignes en superposant par empilement k; et gg Ceci apporte un avantage important. Les huit premières lignes et les huit dernières lignes de cette matrice sont cycliques, ce qui va favoriser le décodage. En outre, la quatrième colonne de la matrice (à partir de la droite) est dans ce cas tout à fait particulier identique à la quatrième colonne de la matrice du code GRAY.On gagne ici une colonne, puisque cette quatrième colonne va servir également à lever l'indétermination en combinaison avec la huitième colonne de la matrice du code GRAY. il est ensuite possible par décodage de transformer les deux matrices (1) (2) (3) 4, et 8 en une matrice de code binaire [1] [2] [33 [4]. En effet, les deux parties et et formant chacune un code cyclique, ainsi que les colonnes 4 et 8 servant à la levée d'indétermination, le décodage est simplifié. On notera par ailleurs que la deuxième matrice pourrait être rendue entièrement cyclique (deux cycles s'enchaînent l'un à l'autre), sans discontinuité entre la huitième et la première ligne en superposant k; et b?2. La figure 2 représente un décodeur réalisant la table de conversion des données de la figure 1. Les données de la colonne (1) de la matrice de code intermédiaire doivent contenir soit les données de la colonne 1, soit l'inverse des données de la colonne 5 selon que les données des colonnes 4 et 8 sont identiques ou non et ainsi de suite pour les colonnes (2) et (3). On utilise à cet effet des portes ET d'autorisation 110, 120, 210, 220, 310, 320. Une entrée de ces portes ET reçoit les données des colonnes respectivement 1, 5, 2, 6, 3 et 7. Une porte OU exclusif 48 dont les entrées reçoivent les données des colonnes 4 et 8 permet de détecter si ces données sont identiques ou non. Une deuxième entrée desdites portes ET sert d'entrée d'autorisation et reçoit à cet effet la sortie de la porte 48 soit directement (portes 120, 220, 320) soit après inversion (portes 110, 210, 310). Une porte OU 130 a ses entrées connectées à la sortie des portes 110 et 120, une porte OU 230 a ses entrées connectées à la sortie des portes 210 et 220 et une porte OU 330 a ses entrées connectées à la sortie des portes 310 et 320. Pour réaliser l'inversion logique des sous-matrices M2 et M'2, les portes ET 120, 220 et 320 sont des portes inverseuses. Lorsque les colonnes 4 et 8 ont des données identiques, la sortie de la porte 48 est au niveau O et valide les portes ET 110, 210 et 330. (Colonnes 1, 2, 3 ; matrices M1 et M'1). Lorsque les données des colonnes 4 et 8 sont différentes, la sortie de la porte 48 est au niveau logique 1 et valide les portes 120, 220 et 320 (colonne 5, 6, 7, matrices aï et ) Les portes 130, 230 et 330 délivrent donc des signaux représentatifs des colonnes (1) (2) et (3) de la matrice de code intermédiaire. On a représenté des bascules de type D (facultatives) synchronisées par une horloge H, à savoir D1, D2 et D3 aux sorties respectivement des portes OU 130, 230, 330 ainsi que D4 et D8 aux entrées correspondant aux colonnes 4 et 8. Leur fonction est de mémoriser la suite de ces portes pour éviter des erreurs logiques en fonctionnement très rapide, où des données peuvent être stabilisées tardivement. La transformation en code binaire est particulièrement aisée, en raison des propriétés du code.Le bit de poids fort [4] du code binaire est obtenu simplement en reprenant la colonne 8 du code GRAY. Le bit de rang immédiatement inférieur [3] correspond à un OU exclusif entre les bits des colonnes 4 et 8 (sortie de la porte 48). Le bit de deuxième rang [2] est obtenu en faisant un OU (porte 502) entre d'une part le résultat d'un OU exclusif entre les colonnes (2) et (3) (porte 402) et d'autre part le résultat d'un OU exclusif entre les colonnes (3) et (4) (porte 403). Le bit de poids faible [1] est obtenu en faisant un OU (porte 501) entre les sorties des portes 401 et 403. Comme indiqué ci-dessus, des bascules D facultatives D'1, D'2, D'3 et D'4 sont également prévues. La figure 3 représente la transformation du code pour N+1 = 5 (5 bits). Le code cyclique de départ (code GRAY) présente 2N colonnes soit 16 colonnes. On a choisi de comprimer le code à l'aide de matrices triangulaires de 4 lignes et 4 colonnes, soit une compression dans un rapport 21 = 16/4 = 4. Les quatre premières matrices M1, M2, M3 et M4 présentent une diagonale de "zéro", et les quatre dernières sous-matrices M1, M'2, M'3 et M'4 une diagonale de "un". Les quatre premières sous-matrices forment ainsi un premier ensemble de sous-matrices alignées selon une de leurs diagonales, et les quatre dernières matrices, un deuxième ensemble de sous-matrices alignées selon une de leurs diagonales.Selon l'invention, une matrice (ou une sous-matrice) triangulaire est définie comme comportant une diagonale de zéros ou de 1, et comportant uniquement des "zéros" d'un côté de ladite diagonale et uniquement des "uns" de l'autre côté de cette diagonale. Après compression par repliement, le code présente 7 colonnes. Les quatre colonnes correspondant aux bits de poids faible sont constituées par superposition des sous-matrices ht,M ,ki,M4, iX qui forment les colonnes (1), (2), (3) et 4, la quatrième colonne 4 est identique à la colonne 4 du code cyclique du départ mais ceci n est valable que dans des cas d'espèce. Les 3 colonnes restantes, ici utilisées en combinaison avec la colonne 4 pour lever l'indétermination (bits de poids fort) sont les colonnes 8, 12 et 16 du code cyclique de départ. Ces colonnes correspondent dans ce cas aux colonnes les plus à gauche (vers les bits de poids fort) des sousmatrices triangulaires précitées, car elles possèdent la propriété de voir leur valeur binaire changer sur les diagonales selon lesquelles les matrices sont alignées et donnent donc une information de position, qui peut être utilisée si on retransforme le code intermédiaire à deux matrices en code cyclique. La figure 4 montre la généralisation à un code à (N + 1) bits, soit un code cyclique de départ à 2 N colonnes. On opère une ou M plusieurs compressions dans un rapport 2 M avec M = ql q = nombre de compressions (ou d'itérations) (nombre entier > 1) 1 = facteur de compression (nombre entier > 2). Les matrices triangulaires présentent 2 N-M lignes et 2 N-M colonnes. Chaque matrice d'ordre p a sa colonne de droite alignée avec la [(p-1)2N-M +1]ème colonne du code cyclique, et sa colonne de gauche alignée avec [p 2N-M]ème colonne de code cyclique, p variant de I à 2 M De par la propriété des diagonales déjà évoquée ci-dessus, la position d'une sous-matrice de rang p (M ou M'p) peut être obtenue à partir des colonnes (p-1) 2 N-M et p 2 N-M du code cyclique de départ.Après compression, le code est alors constitué par l'empilement des matrices M1, M2....Mp....,M2M, M'1, M'2...M'p ....M'2M, auquel on adjoint les colonnes p 2 N-M du code de départ pour p variant de 1 à 2 M La figure 5 montre un décodeur réalisant la compression du code cyclique de départ, en un code intermédiaire tel que défini cidessus et présentant une matrice de code intermédiaire et une matrice de contrôle de code intermédiaire.Pour obtenir la ligne (i) de la matrice de code intermédiaire, il faut déterminer les fractions pertinentes des colonnes i, 2N-M + i, ....,[p 2N-M + i], ...., [2M 2N-N + i], i variant de I à (2 N-M - 1), en fonction des informations contenues dans les colonnes 2 N M, 2 2 2 N-M .... p 2 N-M , 2 N, p variant de 1à2 M Comme déjà mentionné, les fractions pertinentes de la colonne p 2 N-M + i peuvent être déterminées à partir des colonnes p 2 N-M et (p+1) 2 N M, à savoir lorsque ces colonnes ont ou non des valeurs logiques différentes, ce qui correspond à un OU exclusif.Pour p = 1, il n'y a pas de colonne à droite des matrices7 et la fonction correspond à un OU exclusif inversé entre les données des colonnes 2 N-M et 2 N (test d'identité entre les lignes de ces deux colonnes). On met en oeuvre j blocs logiques ou comparateurs (j = 2 N-M - 1) notés L1 .... Li .... Lj, comportant chacun 2 i chacun M portes ET notées E1i .... E pi . Eki (k = 2 M) dont les sorties sont connectées à une entrée d'une porte OU à 2 M - 1 entrées notées i 30 pour i variant de 1 à j.La porte E pi (p variant de 1 à k et i variant de 1 à j) reçoit sur une entrée dite de données, les données de la (p 2 N-M + i) ème colonne du code cyclique de départ, et sur une entrée dite d'autorisation, un signal qui fait partie d'un groupe de signaux de contrôle SC et qui est le résultat d'un OU exclusif (ou de toute opération logique équivalente) entre les colonnes p 2 N-M et (p+1) 2 N-M pour p variant de 2 à k, et d'un OU exclusif inversé (ou de toute opération logique équivalente) entre les données des colonnes 2 N-M et 2 N pour p = 1. Pour réaliser l'inverse logique des sousmatrices analogues à celui de la figure 3 (inversion des sous-matrices de rang pair, les portes E pi sont inverseuses lorsque p est pair.En pratique, un bloc logique L. est constitué par une porte à entrées multiples. il n'est plus besoin que de j + k comparateurs pour transformer le code cyclique en code intermédiaire à deux matrices, à savoir les (2 N-M -1) blocs logiques et les 2 M portes OU exclusif que nécessitent les entrées d'autorisation des blocs logiques. Le passage de code intermédiaire en code binaire ne demande pas de comparateurs supplémentaires, seulement des portes OU. On a donc besoin de moins de comparateurs que dans le cas d'un décodage classique de code GRAY (2 N blocs logiques) et en outre les 2 M portes OU exclusif sont de structure beaucoup plus simple que les blocs logiques. N-M M il faut donc en tout (2 N+ 2 M - 1) comparateurs ce qui est inférieur à 2 N. ExemPles : I) N+1 = 4 (code à 4 bits) 1) 2N = 8, soit 8 comparateurs pour le décodage selon l'art antérieur. 2) M = 1 2 N-M + 2 M - = 4 + 2 - 1 = 5 comparateurs pour le décodage selon l'invention. On obtient un résultat appréciable même pour ce nombre faible de bits. II) N+f = 10 (code à 10 bits) M = 2 1) 2 N = 512 soit 512 comparateurs pour le décodage selon l'art antérieur. 2) M = 2 2 N-M + 2 M - 1 = 128 + 4 - 1 = 131 comparateurs pour le décodage selon l'invention. 3) M = 3 2 N-M + 2 M - 1 = 64 + 8 - 1 = 71 comparateurs pour le décodage selon l'invention. 4) M = 4 2 N-M + 2 M - 1 = 32 + 16 - I = 47 comparateurs pour le décodage selon l'invention. 5) M = 5 2 N-M + 2 M - 1 = 16 + 32 - 1 = 47 comparateurs. Dans le cas d'un convertisseur à repliement et interpolation, la taille du décodeur des bits de poids fort est préférablement inférieur à celui du décodeur des bits de poids faible. Il en résulte que 2 M L'optimum est obtenu pour M choisi le plus grand possible mais inférieur ou égal à N/2. Si N est pair, on choisit M = N/2. Si N est impair, on choisit M = N/2 - 0,5. Dans l'exemple ci-dessus, le cas n 5 (N = 9, M = 5) n'est pas possible. L'optimum est le cas n 4 (M = 4) avec 47 comparateurs au lieu de 512. A la figure 5, on a représenté par S(1) .... S(2N) les sorties des réseaux d'interpolation d'un convertisseur analogiquemumérique dont le code a été replié pour donner un code GRAY à (N+1) bits, la détection étant une détection de passage par zéro ainsi qu'il est connu. On remarque que, dans cette architecture de décodage, la commutation est effectuée dans les blocs logiques L1 .... Lj, donc sur des signaux numériques. Une telle architecture se distingue donc essentiellement des conceptions connues selon lesquelles on opère une discrimination analogique entre codage grossier et codage fin, comme par exemple décrit dans "A 10 bit 40 MHZ ADC using 0,8 pm BI C-MOS Technology" de Kazumini TSUGARU et al (TOSHIBA) paru dans la revue de synthèse IEEE 1989 (paper 2-3 page 49) - conférence annuelle ISCC (1989). La porte Epi qui reçoit à une entrée un signal S (p 2 N-M + i) et à son autre entrée un signal logique (j+p) peut être réalisée sous forme d'un amplificateur avec une entrée d'autorisation recevant le signal logique (j+p).Les divers amplificateurs d'un bloc logique L1 ...lu peuvent alors attaquer directement la bascule D1... Dj 3 3 correspondante, un seul de ces amplificateurs détectant à la fois un niveau haut et les autres ayant leur sortie dans un état de haute impédance de manière connue. On peut bien entendu mettre en oeuvre le schéma de la figure 5 dans un convertisseur de type flash d'un code à (N+1) bits. Pour plus de renseignements sur les convertisseurs à repliement et interpolation, on se reportera à la thèse de Rudy Van de Plassche (Ph D-Thesis - University of Technology Delft) publiée en 1989 ainsi qu'à l'article "A 8-bit Video ADC Incorporating Folding and Interpolation Techniques" de Rob Van de Guft et al (IEEE Journal of Solid State Circuits vol SC 22 n 6 Dec 1987 p 944-953), et dont les contenus sont incorporés, par référence, à la présente description. En se reportant à la figure 5, on va maintenant montrer comment on peut, dans le cas d'un code à (N+1) bits, passer du code replié à deux matrices au code binaire classique. Il suffit à cet effet de considérer quelles sont les cellules OU exclusif (telles que 401, 402.... 40i.... 40j) qui donnent lieu à l'apparition d'une validation (Bit q = 1) dans le code binaire, puis de faire la sommation logique de ces cellules. Si on effectue des repliements en cascade, le code replié présente plus d'une discontinuité de cycle. La solution la plus favorable est de réaliser un seul repliement de 2 M blocs. On obtient alors une seule discontinuité du code replié. Pour le passage en code binaire, le point sensible est l'obtention de la colonne de rang 2 N-M de la matrice de code intermédiaire. Le code GRAY de départ comporte une première partie N-M correspondant aux bits de poids faible (colonne de rang p 2 N M * i) et une deuxième partie correpondant aux bits de poids fort (colonnes de rang p 2 N-M). Cette décomposition a déjà été utilisée dans la figure 5. On met en oeuvre un décodeur de bits de poids faible (400) et un décodeur de bits de poids fort (500). Le décodeur (500) auquel sont associées des entrées logiques (E'1... E'2M) correspondant aux entrées (D+1... D2N) de la figure 5 founit des signaux logiques SC en tant que signaux d'autorisation pour les blocs logiques E1.... E. 3 attaquant le décodeur 400. Pour passer en code binaire, on peut procéder de deux façons. Selon la figure 6, on peut envoyer les signaux de contrôle SC aux entrées des blocs logiques correspondant au décodeur de poids faible 400 (portes Eki des blocs logiques L1 à Lj de la figure 5) de manière qu'il produise tout le décodage des bits de poids faible. Selon la figure 77 une variante préférée est de décoder la colonne de rang 2 N-M de la matrice de code intermédiaire en faisant un OU exclusif (porte 600) entre les bits (N-M+1) et (N+1) du code binaire produits par le décodeur de poids fort 500, les bits (N-M+1) à N étant en effet décodés uniquement à partir des bits de la matrice de contrôle de code intermédiaire (colonne de rang p 2 N-M + i) du code de départ. En d'autres termes, une partie du décodage des bits de poids fort est mise à profit pour décoder les bits de poids faible. Dans le cas de la figure 6, la colonne de rang 2 N-M de la matrice de code intermédiaire est par contre obtenue à l'aide, comme décrit plus haut, d'une bascule à 2 M entrées constituant un bloc logique du convertisseur de poids faible. Les formules logiques permettant le décodage vont être données ci-après. Le décodage du bit de poids q du code binaire, à partir d'un code de GRAY acylique (première moitié d'un code GRAY à (N+1) bits correspondant aux bits de poids faible7 est donné par la formule Bit q = D représente le signal logique de la Xème colonne de la x matrice de code GRAY acylique avec X entier positif. N-M La colonne [2 N N ] peut s'obtenir par repliement des entrées à r 2 N-M avec r = 1 à 2 M Le codage décrit alors les deux cycles du code GRAY de départ, dont l'un concerne les bits de poids faible, et l'autre ceux de poids fort. désignant la somme logique (fonction logique OU) $ désignant un OU exclusif. En ce qui concerne maintenant le passage du code intermédiaire (ou code replié) en code binaire a) pour 1 Bit q = D désignant la sortie de la Xème bascule D1... Du... Dj x ème i (figure 5), c'est-à-dire, la Xeme colonne de la matrice de code intermédiaire (X entier positif). $ désignant une fonction logique OU exclusif. b) pour 1+N-M Bit q = Dx2N-M désignant la sortie de la X bascule (du+1 .Dk... D2 ) correspondant aux colonnes successives de la matrice de contrôle de code intermédiaire. En d'autres termes, DX2N-M désignant ème la X colonne de ladite matrice de contrôle de code intermédiaire. c) Bit N+1 = D2N (c' est-à-dire la 2 Mème colonne de ladite matrice de contrôle) (X entier positif). Les bits des codes binaires sont donc obtenus à partir de OU multiples (501, 502...) en fonction des sorties des portes OU exclusif (401 - 40j), donc sans ajouter de comparateur. Comme (voir figure 5), une seule des portes OU exclusif 401, 402,... 40i,... 40j, est active à la fois, il suffit de détecter celle-ci et de l'aiguiller vers le bit de sortie correspondant, chaque porte OU exclusif ayant le nombre de sorties qui convient (chaque sortie supplémentaire pouvant etre réalisée par un transistor additionnel). Les portes OU multiples ne sont alors pas physiquement présentes, mais leur fonction est réalisée par câblage desdites sorties (par addition de courants). REVENDICATIONS 1. Code numérique de traitement de données dont chaque ligne du code représente une donnée numérique codée caractérisé en ce qu il comporte - une première matrice constituée d'au moins deux-sous codes cycliques présentant chacun des sous-matrices triangulaires, - une deuxième matrice présentant un nombre de colonnes suffisant pour discriminer les sous-matrices de la première matrice, chaque donnée numérique étant représentée par une ligne de la première matrice et une ligne de même rang de la deuxième matrice. 2. Code selon la revendication 1 caractérisé en ce que la deuxième matrice est constituée d'un sous-code cyclique. 3. Code selon une des revendications 1 ou 2 caractérisé en ce que le code est à (N+1) bits, en ce que la première matrice présente 2 N M colonnes, et en ce que la deuxième matrice présente 2 M colonnes, M étant un nombre entier pouvant varier de 1 à (N-1). 4. Code selon la revendication 3 caractérisé en ce que la deuxième matrice comporte les colonnes de rang p 2 N-M, avec p variant de I à 2 M d'un code cyclique à (N+1) bits. 5. Code selon une des revendications 3 ou 4 caractérisé n ce que la première et la deuxième matrice présentent 2 N lignes. 6. Procédé de traitement de données par transformation en code cyclique d'un code numérique selon une des revendications précédentes caractérisé en ce qu'il consiste à aligner les sousmatrices de la première matrice pour former au moins un premier ensemble de sous-matrices alignées selon une diagonale comportant soit de 0, soit des 1, en tenant compte des valeurs logiques des données d'au moins les colonnes de la deuxième matrice et à compléter le code cyclique avec des O et des 1 en fonction des valeurs des données de la deuxième matrice. 7. Procédé selon la revendication 6 caractérisé en ce qu'il est tenu compte également des valeurs logiques des données de la colonne de bits de poids le plus fort de la deuxième matrice. 8. Procédé selon une des revendications 6 ou 7 caractérisé en ce que l'alignement des sous-matrices est obtenu avec une conversion logique des données d'une sous-matrice sur deux. 9. Procédé selon une des revendications 6 à 8 caractérisé en ce qu'il comporte un premier ensemble de sous-matrices alignées selon une première diagonale de O et un deuxième ensemble de sous-matrices alignées selon une deuxième diagonale de 1. 10. Procédé selon une des revendications 6 à 9 caractérisé en ce que pour un code à (N+1) bits, les données de la (p 2 N-M + 1)ème colonne du code cyclique ont pour valeur - celles des données de la (p 2 N-M)ème colonne de la deuxième matrice au cas où les lignes où la [(p-l)2Nq De et la (p 2 N M)ème colonne ont des données identiques, - celles des données de la ième colonne, éventuellement inversées, sinon 11. Procédé de traitement de données par transformation en code binaire d'un code numérique selon une des revendications 1 à 5 caractérisé en ce qu'il consiste à combiner logiquement les données des colonnes de la première et de la deuxième matrice, le bit de rang q (Bit q) étant défini de la manière suivante a) pour 1 Bit g = D désignant les données de la Xème colonne de la x première matrice (X > o). b) pour 1 + N - M g f Bit q = Dx2N-M désignant les données de la Xème colonne de la deuxième matrice (X > o). c) Bit N+1 = D2N $ désignant un OU exclusif S désignant la somme logique (OU).