FR 2825538 A1 20021206 FR 0107157 A 20010531 L'invention concerne un procédé de codage pouvant être utilisé notamment dans les réseaux de transmission de données conformes à la norme IEEE 802.3. Le but de l'invention est de coder des données pour permettre la transmission de ces données sur une ligne, en transmettant simultanément des informations supplémentaires telles qu'une indication de début d'octet, ou de début de trame, ou une information de détection et éventuellement de correction d'erreur. Il concerne particulièrement la transmission sur une ligne métallique. Il est connu d'indiquer le début d'une trame de données en le codant par une combinaison de symboles ayant une faible probabilité d'imitation par les données de la charge utile ; et il est connu de détecter des erreurs dans une trame en codant et en transmettant un mot, dit de contrôle par redondance cyclique, calculé en fonction des données transmises dans cette trame de données. Ces informations supplémentaires provoquent une augmentation du volume des symboles transmis. Il est connu d'obtenir un débit en ligne inférieur au débit des données binaires à transmettre, en codant un mot binaire de p bits avec un symbole qui est un mot ternaire composé de q chiffres ternaires (c'est à dire ayant un poids égal à-1, ou 0, ou +1), c'est ce qu'on appelle un codage ou un code pB/qT. Ce codage ternaire a été introduit dans le but de réduire la rapidité de modulation, mais il permet en outre d'éviter la transmission d'un courant continu sur une ligne métallique, à condition d'émettre le même nombre de symboles de poids +1 que de symbole de poids-1 sur un long intervalle de temps. L'absence de courant continu est importante pour la transmission sur une ligne métallique car une telle ligne est isolée à ses deux extrémités respectivement par deux transformateurs qui pourraient se saturer s'il y avait un courant continu. Dans les codes utilisés actuellement (4B/3T, 8B/6T) le nombre de symboles ternaires ayant un poids nul est inférieur au nombre de mots binaires à coder. Pour éviter cependant un courant continu, il est connu de coder certains mots binaires au moyens de deux symboles différents pour un même mot binaire : un mot ternaire de poids + 1 et un mot ternaire de poids-1. La somme des poids des symboles transmis est calculée en permanence, et le codage consiste à utiliser le symbole de poids +1 si la valeur courante de la somme est égale à-1, et à utiliser le symbole de poids -1 si la valeur courante de la somme est égale à + 1. Les procédés de codage ternaire connus permettent ainsi de transmettre toutes lés valeurs d'un mot binaire de quatre bits ou de huit bits, sans courant continu, mais ils ont deux inconvénients : - Le nombre de symboles disponibles est insuffisant pour permettre la transmission d'informations supplémentaires. - La redondance de certains symboles, qui est utilisée pour annuler le courant continu, réduit le nombre des symboles non utilisés, et donc réduit l'efficacité de la détection des erreurs de transmission. Le but de l'invention est de remédier à ces inconvénients. L'objet de l'invention est un procédé de codage caractérisé en ce qu'il consiste à coder un mot binaire selon une pluralité de tables de codage, la table de codage étant choisie pour chaque mot binaire à coder, en fonction d'au moins une information supplémentaire à coder. Le procédé ainsi caractérisé permet de coder, avec au moins deux symboles différents, chacun des mots binaires constituant les données à transmettre. Puisque chaque mot binaire est représentable par au moins deux symboles au choix, il est possible de transmettre une information supplémentaire représenté par le choix du symbole, c'est à dire le choix de la table de codage. L'information supplémentaire est restituée en fonction de la table de décodage qui a permis de décoder un mot binaire. Une utilisation de cette information supplémentaire peut consister à discriminer des trames appartenant à un réseau virtuel réservé à la transmission de données, et des trames appartenant à un réseau virtuel réservé à la transmission téléphonique, selon la table de codage utilisée. Cette discrimination permet de traiter ces deux types de trame avec deux niveaux de priorité différents. Le fait d'obtenir cette information sans avoir à analyser le contenu des trames, pour extraire un code de priorité, raccourcit la durée de traitement des trames. Une autre application de ces informations supplémentaire peut consister à détecter un début de message ou un début d'octet par un changement de table de codage. Par exemple, l'identification d'un début de trame est plus rapide en détectant un changement de table de codage, plutôt qu'en détectant un préambule et un délimiteur de trame, comme dans les procédés classiques. Si le nombre de symboles, 2q, est supérieur à deux fois le nombre de mots binaires à coder, 2P, il est possible de transmettre des symboles spécifiques pour certaines informations de service, telles que le délimiteur de début d'un message. Certains symboles qui ne sont pas utilisés contribuent eux aussi à la détection d'erreur puisque la détection d'un symbole non utilisé signale une erreur. Selon un mode de mise en oeuvre préférentiel, le procédé de codage consiste à changer de table de codage pour indiquer le début d'un message ; et en outre à indiquer ce début par un symbole qui n'est pas imitable par une combinaison de deux symboles successifs, parmi ceux utilisés dans les tables de codage. Selon un premier mode de mise en oeuvre particulier, un procédé de codage, consistant à coder un mot de p bits avec un symbole composé de q chiffres ternaires, est caractérisé en ce que p et q sont choisis tels que le nombre de symboles ayant un poids nul est au moins égal à 2 x 2P ; en ce qu'une première table de codage comporte 2P symboles, ayant un poids nul ; et en ce qu'une seconde table de codage comporte 2P autres symboles ayant un poids nul. Le procédé ainsi caractérisé permet de coder, avec deux symboles différents et ayant un poids nul, chacun des 2P mots binaires constituant les données à transmettre, et permet de coder en plus une information supplémentaire, par le changement de table de codage. L'absence de courant continu est alors obtenue sans avoir à surveiller la somme des poids des symboles transmis, ce qui permet de simplifier la réalisation d'un codeur et d'un décodeur. Selon un deuxième mode de mise en oeuvre particulier, un procédé de codage consistant à coder un mot de p bits avec un symbole composé de q chiffres ternaires, est caractérisé en ce que p et q sont choisis tels que le nombre de symboles ayant un poids nul ou égal à + 1 est au moins égal à 3 x 2P ; en ce qu'une première table de codage comporte 2P symboles, ayant un poids nul ; en ce qu'une deuxième table de codage comporte 2P autres symboles ayant un poids égal à -1 ; et en ce qu'une troisième table de codage comporte 2P autres symboles ayant un poids égal à. + 1. Le procédé ainsi caractérisé permet de coder chacun des 2P mots binaires constituant les données à transmettre, avec trois symboles différents (un ayant un poids nul, un ayant un poids égal à + 1, et un ayant un poids égal à - 1). Il permet donc de coder trois informations supplémentaires, par le changement de table de codage. Puisque les symboles utilisés n'ont pas tous un poids nul, il est nécessaire de maintenir nul le courant continu. Un mode de mise en oeuvre préférentiel consiste en outre à alterner le codage selon la deuxième et la troisième table, en fonction de la valeur courante de la somme des poids des symboles précédemment codés et transmis : - Si la somme est égale à +1, il consiste à utiliser une table qui code tous les mots binaires avec seulement des symboles de poids égal à-1. - Si la somme est égale à - 1, il consiste à utiliser une table qui code tous les mots binaires avec seulement des symboles de poids égal à + 1. - Si la somme est égale à 0, il consiste à utiliser une table qui code tous les mots binaires avec seulement des symboles de poids égal à 0. Si cette règle n'est pas respectée dans des données reçues, cela signifie qu'il y a eu une erreur de transmission. Ce codage procure une bonne détection d'erreur. Une autre application de ces informations supplémentaire peut consister à repérer des informations de gestion d'un lien Ethernet. En effet, sur les liens Ethernet, la transmission démarre par une phase de négociation des caractéristiques et des capacités de l'équipement d'extrémité, puis une phase d'apprentissage. Pendant la phase d'apprentissage, l'équipement commence par émettre des séquences de salves de bits relativement longues : ce sont des salves d'impulsions d'horloge, espacées de 125 + 14 microsecondes. Dix-sept impulsions de rang impair sont toujours présentes et constituent seulement un signal d'horloge. Seize impulsions de rang pair sont des données : une impulsion de rang pair représente un 1, et une absence d'impulsion de rang pair représente un 0. En d'autres termes, un codage ternaire est utilisé pour réduire le débit, mais les mots binaires sont, dans certains cas, deux fois plus longs pour être bien reconnus. L'opération de décodage est assez complexe : il faut analyser toute la séquence des salves, avec les contraintes temporelles afférentes. Des temporisateurs vérifient qu'une impulsion d'horloge dure 125 microsecondes, qu'une impulsion de données dure 62,5 microsecondes, que l'intervalle entre deux impulsions de données dure au moins 31,25 microsecondes pour une impulsion de valeur 1, et 93,75 microsecondes pour une impulsion de valeur 0. Grâce au procédé de codage selon l'invention, ces transactions peuvent être repérées grâce au changement de table de codage. L'opération de décodage est alors grandement simplifiée. Si le nombre de symboles, 2q, est supérieur à deux fois le nombre de mots binaires à coder, il est possible de transmettre des symboles spécifiques pour certaines informations de service, telles que le délimiteur de début d'un message. Certains symboles qui ne sont pas utilisés contribuent eux aussi à la détection d'erreur puisque la détection d'un symbole non utilisé signale une erreur. L'invention a aussi pour objet un codeur et un décodeur pour la mise en oeuvre du procédé selon l'invention. L'invention sera mieux comprise et d'autres caractéristiques apparaîtront à l'aide de la description d'exemples de mises en oeuvre : - La figure 1 représente le schéma synoptique d'un exemple de codeur pour un exemple de mise en oeuvre du procédé selon l'invention. - La figure 2 représente le schéma synoptique d'un exemple de décodeur pour cet exemple de mise en oeuvre du procédé selon l'invention. Le tableau ci-dessous illustre un exemple très simple où p=4 et q=4. Cet exemple de codage permet de coder 16 mots binaires de 4 bits au moyen de symboles comportant 4 nombres ternaires. Ces symboles sont classés horizontalement par poids croissants, du poids-4 au poids +4. Il y a 81 symboles, parmi lesquels 19 ont une valeur nulle, 31 ont une valeur de +1 à +4, et 31 ont une valeur de -1 à -4. Il est à remarquer que 16 symboles ont un poids égal à +1, et 16 symboles ont un poids égal à-1. -4 -3 -2 -1 0 1 2 3 4 0-oc-000-0000 000+ 00++ 0+++ ++++ - 0-0-0-00-0 00±00+0 0+0+ +0++ - 0-0-0 0±00-+ 0-++ 0++0 ++0+ ---0-00-0-00 0+0-0+00 +00+ +++0 - 0-0 0-±0±0 0±+ +0+0 --00 0--+ 0-0+ 0+± ++00 - --+ +0-- 0-+0 -0++ ++± --± ±0-+0-0-+0+ +±+ - ±-Q +00--++Q ±++ ±-000 +±- +000 -+++ - 0±±00-0-+ -0-+ ±-+ +0± - +0- ±± ±0+ -±0 -00+ ±+0 - 0±0+0 ++0- --+0 -+00 +±0 - ±+ - +± --++ Une première table de codage est constituée en codant les 16 mots binaires 0000, 0001,............ 1111, au moyen de 16 symboles de poids nuls./1 reste 2 symboles de poids nuls disponibles pour des informations supplémentaires, le symbole 0000 n'étant pas utilisé parce qu'il complique la récupération d'un signal d'horloge lors de la réception des données codées. Une deuxième table de codage est constituée en codant les 16 mots binaires 0000, 0001,............ 1111, au moyen de 16 symboles de poids + 1. Une troisième table de codage est constituée en codant les 16 mots binaires 0000, 0001,............ 1111, au moyen de 16 symboles de poids-1. Il est possible de détecter des erreurs de transmission en détectant tout les mots ternaires qui sont interdits, c'est à dire tous ceux de poids-2,-3,-4, +2, +3, +4. Il possible de coder une information supplémentaire par un changement de table de codage. Par exemple, le passage de la première table à la deuxième ou la troisième. table permet de détecter un début de message. Puisque les symboles utilisés n'ont pas tous un poids nul, il est nécessaire de maintenir nul le courant continu. Un exemple de mise en oeuvre est le suivant : - Si la somme est égale à +1, il consiste à utiliser la troisième table, celle-ci codant tous les mots binaires avec seulement des symboles de poids égal à-1. - Si la somme est égale à-1, il consiste à utiliser la deuxième table qui code tous les mots binaires avec seulement des symboles de poids égal à +1. - Si la somme est égale à 0, et s'il n'y a pas de début de message à indiquer, il consiste à utiliser une table qui code tous les mots binaires avec seulement des symboles de poids égal à 0. Si cette règle n'est pas respectée pour un symbole reçu, cela signifie qu'il est affecté par une erreur de transmission. Un second exemple de mise en oeuvre consiste à coder 256 mots binaires de 8 bits au moyen de symboles comportant 8 nombres ternaires (codage 8B/8T). Le nombre de symboles de poids nul est égal à 744. Une première table de codage est constituée en codant les 256 mots binaires 00000000,.........., 11111111, au moyen de 256 symboles de poids nul. Une deuxième table de codage est constituée en codant les 256 mots binaires au moyen de 256 autres symboles de poids nul. Le passage de la première à la deuxième table de codage code une information supplémentaire telle que le passage d'un type de données à un autre (par exemple voix/données). Ce type de codage permet un décodage rapide puisque ! n'y a pas besoin d'extraire puis de reconnaître un symbole, mais qu'il suffit de reconnaître le changement de table au moment du décodage. Le décodage est réalisée en adressant simultanément deux tables de décodage. La table qui reconnaît le symbole reçu fournit le mot binaire décodé, et un bit supplémentaire qui identifie cette table. Une troisième table de codage peut être constituée pour coder 231 informations supplémentaires (telles qu'un symbole indicateur de début de message, un symbole indicateur de fin de message, des codes de contrôle d'erreur, etc) au moyen de 231 autres symboles de poids nuls. Un mode de mise en oeuvre préférentiel consiste à changer de table de codage pour indiquer le début d'un message ; et en outre à indiquer ce début par un symbole qui n'est pas imitable par une combinaison de deux symboles successifs, parmi ceux utilisés dans les tables de codage. Ce symbole est pas exemple ----++++. La figure 1 représente le schéma synoptique d'un exemple de codeur pour cet exemple de mise en oeuvre (8B/8T) du procédé selon l'invention. Il comporte : - une mémoire 1 contenant deux tables de codage, T1 et T2, et ayant : - une entrée 8 sélectionnant une table, cette entrée recevant un signal binaire T qui représente une information binaire à transmettre (par exemple pour indiquer un début de trame), -- une entrée d'adresse, 7, commune pour les deux tables T1 et T2, cette entrée recevant un mot binaire D qui est un octet de données à coder ; - et une sortie fournissant seize bits, sous la forme d'un mot A de huit bits et un mot B de huit bits ; - deux registres, 2 et 3, ayant chacun huit entrées parallèles et une sortie série, huit bits de la sortie de la mémoire 1 étant appliqués aux entrées du registre 2 et les huit autres bits étant appliqués aux entrées du registre 3 ; - deux amplificateurs de ligne, 4 et 5, ayant chacun une entrée reliée respectivement à une sortie d'un des registres 2 et 3 ; - et un transformateur de ligne, 6, ayant un enroulement primaire relié aux sorties des deux amplificateurs de ligne 4 et 5, et un enroulement secondaire relié à une ligne de transmission bifilaire, non représentée. Des moyens de commande non représentés commandent les registres 2 et 3 en synchronisme avec la mémoire 1. La sortie de chacun des amplificateurs 4 et 5 ne peut avoir qu'un état haut ou un état bas, cet état étant commandé par un signal binaire appliqué à son entrée. L'envoi d'un chiffre ternaire de valeur +1 et réalisé en mettant la sortie de l'amplificateur 4 à un niveau haut et la sortie de l'amplificateur 5 à un niveau bas. L'envoi d'un chiffre ternaire de valeur-1 est réalisé en mettant la sortie de l'amplificateur 4 à un niveau bas et la sortie de l'amplificateur 5 à un niveau haut. L'envoi d'un chiffre ternaire de valeur 0 et réalisé en mettant la sortie de l'amplificateur 4 à un niveau haut et la sortie de l'amplificateur 5 à un niveau haut, par exemple. Par exemple, si la table T1 est utilisée, sa partie Tla fournit les bits activant l'amplificateur 5, et sa partie T1 b fournit les bits activant l'amplificateur 4. Pour coder un symbole, il faut activer l'amplificateur 5 avec huit bits successifs qui sont les huit bits constituant le mot A. Parallèlement, il faut activer l'amplificateur 4 avec huit autres bits successifs qui sont les huit bits constituant le mot B. La mémoire 1 fournit ces seize bits (mot A et mot B) en une seule fois, aux registres à décalage 2 et 3. Ces registres ont pour fonction de les restituer séquentiellement en huit temps successifs. Par exemple, pour émettre le symbole S = 00+0--++, la mémoire 1 fournit simultanément les mots A et B suivants (mot A = colonne A ; mot B = colonne B) : S A B 0 0 0 0 0 0 + 1 0 0 0 0 - 0 1 - 0 1 + 1 0 + 1 0 Le registre 2 enregistre en parallèle le contenu A de la deuxième colonne du tableau ci-dessus. Le registre 3 enregistre en parallèle le contenu B de la troisième colonne du tableau ci-dessus. Pour chaque symbole, les registres 2 et 3 sont lus huit fois pour que chacun restitue en série huit bits successivement. La figure 2 représente le schéma synoptique d'un exemple de décodeur pour cet exemple de mise en oeuvre (8B/8T) du procédé selon l'invention. Il comporte : - Un transformateur de ligne 11 ayant un enroulement primaire relié à une ligne bifilaire, non représentée, et un enroulement secondaire ; - deux récepteurs de ligne, 12 et 13, ayant chacun une entrée reliée à l'enroulement secondaire du transformateur 11 ; - deux registres, 14 et 15, ayant une entrée série et huit sorties parallèles ; - et une mémoire 16 contenant deux tables de décodage Tl'et T2', cette mémoire ayant : - une entrée d'adresse recevant huit bits fournis par les sorties du registre 14 (mot A), et huit bits fournis par les sorties du registre 15 (mot B) ; - une sortie 17 fournissant un mot binaire D de huit bits qui est un octet de données décodées ; -- une sortie 18 fournissant un bit T restituant une information binaire supplémentaire (par exemple un début de trame) ; - et une sortie 19 fournissant un bit E indiquant, le cas échéant, que le symbole reçu ne correspond à aucun des symboles attendus, et qu'il est donc erroné. Des moyens de commande non représentés commandent les registres 14 et 15 en synchronisme avec la mémoire 16. La sortie de chacun des amplificateurs 12 et 13 ne peut avoir qu'un état haut ou un état bas représentant respectivement les valeurs 0 et 1. La réception d'un chiffre ternaire de valeur +1 se traduit par une valeur 1 à la sortie de l'amplificateur 12 et une valeur 0 à la sortie de l'amplificateur 13. La réception d'un chiffre ternaire de valeur-1 se traduit par une valeur 0 à la sortie de l'amplificateur 12 et une valeur 1 à la sortie de l'amplificateur 13. La réception d'un chiffre ternaire de valeur 0 se traduit par une valeur 0 à la sortie de l'amplificateur 12 et une valeur 0 à la sortie de l'amplificateur 14, par exemple. Chaque chiffre ternaire reçu est donc représenté par une paire de bits. Le registre 14 enregistre le premier bit de chaque paire. Le registre 15 enregistre le second bit de chaque paire. Pour chaque symbole, les registres 14 et 15 sont commandés huit fois pour que chacun enregistre huit bits successivement. Les deux bits d'une même paire sont respectivement enregistrés par les registres 14 et 15 simultanément. Le décodage d'un symbole S, constitué de huit chiffres ternaires, en un mot binaire D de huit bits en est réalisé en deux étapes : Dans une première étape, huit paires de bits, qui correspondent respectivement à huit chiffres ternaires constituant un symbole reçu, sont enregistrées successivement dans les registres 14 et 15. Dans une seconde étape, les sorties parallèles des registres 14 et 15 fournissent simultanément ces huit paires de bits à l'entrée d'adresse de la mémoire 16, sous la forme d'un mot binaire A de huit bits, et d'un mot binaire B de huit bits. Par exemple, lorsque le symbole S = 00+0--++ a été reçu, elles fournissent simultanément les huit paires de bits suivantes (colonnes A et B) : S A B 0 0 0 0 0 0 + 0 0 0 0 0 - 0 1 - 0 1 + 1 0 + 1 0 Les seize bits 11100011, 00001100 appliqués à l'entrée d'adresse de la mémoire 16 permettent d'y lire un mot binaire de neuf bits, sauf si le symbole reçu est erroné. Parmi ces neuf bits, huit bits constituent un mot binaire de données décodées, D, et le neuvième bit, T, indique si le symbole reçu appartient à la table de codage TI' ou à la table de décodage T2'. Si on souhaite réduire la rapidité de modulation, et donc le débit en ligne, il faut choisir une valeur de q inférieure à la valeur de p. Un troisième exemple de mise en oeuvre, remplissant cette condition, consiste à coder 65536 mots binaires de 16 bits au moyen de symboles comportant 12 chiffres ternaires (codage 16B/12T). Le nombre de symboles de poids nul est supérieur à deux fois 65536. Une première table de codage est constituée en codant les 65536 mots binaires au moyen de 65536 symboles de poids nul. Une deuxième table de codage est constituée en codant les 65536 mots binaires au moyen de 65536 autres symboles de poids nul. Le passage de la première à la deuxième table de codage code une information supplémentaire. La réalisation d'un codeur et d'un décodeur pour ce type de codage est analogue à celle décrite précédemment. REVENDICATIONS : 1) Procédé de codage, caractérisé en ce qu'il consiste à coder un mot binaire selon une pluralité de tables de codage, la table de codage étant choisie pour chaque mot binaire à coder, en fonction d'au moins une information supplémentaire à coder. 2) Procédé selon la revendication 1, caractérisé en ce qu'il consiste à changer de table de codage pour indiquer le début d'un message ; et en outre à indiquer ce début par un symbole qui n'est pas imitable par une combinaison de deux symboles successifs, parmi ceux utilisés dans les tables de codage. 3) Procédé de codage selon la revendication 1, consistant à coder un mot de p bits avec un symbole composé de q chiffres ternaires, caractérisé en ce que p et q sont choisis tels que le nombre de symboles ayant un poids nul est au moins égal à 2 x 2P ; en ce qu'une première table de codage comporte 2P symboles, ayant un poids nul ; et en ce qu'une seconde table de codage comporte 2P autres symboles ayant un poids nul. 4) Procédé de codage selon la revendication 1, consistant à coder un mot de p bits avec un symbole composé de q chiffres ternaires, caractérisé en ce que p et q sont choisis tels que le nombre de symboles ayant un poids nul ou égal à + 1 est au moins égal à 3 x 2P ; en ce qu'une première table de codage comporte 2P symboles, ayant un poids nul ; en ce qu'une deuxième table de codage comporte 2P autres symboles ayant un poids égal à-1 ; et en ce qu'une troisième table de codage comporte 2P autres symboles ayant un poids égal à + 1. 5) Procédé selon la revendication 4, caractérisé en ce qu'il consiste en outre à alterner le codage selon la deuxième et la troisième table, en fonction de la valeur courante de la somme des poids des symboles précédemment codés et transmis. 6) Procédé selon la revendication 1 caractérisé en ce que p=16 et q=12. 7) Codeur pour coder un mot binaire, caractérisé en ce qu'il comporte des moyens (1) pour mémoriser au moins deux tables de codage (T1, T2), et des moyens (8) pour sélectionner une table de codage en fonction d'une information supplémentaire à coder. 8) Décodeur pour décoder un mot binaire, caractérisé en ce qu'il comporte des moyens (16) pour mémoriser au moins deux tables de décodage (TT, T2), et des moyens (16, 18) pour restituer une information supplémentaire en fonction de la table de décodage qui a permis de décoder un mot binaire.