Brevet FR2688107A1 — publié le 19930903

PROCEDE ET DISPOSITIF DE CODAGE DE SIGNAUX NUMERIQUES NRZI La présente invention concerne un codeur de signaux numériques et plus particulièrement un codeur effectuant l'opération de codage de signaux numériques codés selon la règle de codage NRZ en signaux numériques codés selon la règle de codage NRZI. Le code dit NRZ ou "Non Retour à Zéro" est probablement le code le plus utilisé parmi les codes de modulation d'impulsions ou "PCM" selon la terminologie anglo-saxonne ("Pulse Code Modulation"). En réalité, il existe plusieurs classes de code NRZ. Dans la littérature anglo-saxonne, on trouve les termes de NRZ-L où L signifie "Level" au niveau en français, NRZ-M pour "Mark" , etc.... Ces codes sont décrits, par exemple, dans le livre "DIGITAL COMMUNICATIONS, FUNDAMENTALS AND APPLICATIONS" par Bernard SKLAR, Edition Prentice Hall, pages 78 à 82. Tous ces codes concernent des formes d'ondes essentiellement rectangulaires, présentant deux niveaux ou états, normalement + V par rapport à une valeur nulle ; V étant l'amplitude d'une valeur physique quelconque, par exemple une tension. De façon plus général les niveaux seront +V1 et -V2. Cependant le terme "Non Retour à Zéro" doit s'entendre vis à vis de la valeur logique "O" et non d'un état physique, par exemple O Volt. Selon la technologie utilisée, les valeurs physiques + V ou + V1, V2, auraient une signification différente. En technologie "TTL" ("Transistor Transitor Logic"), les deux états utilisés seront OV et + 5V, ce à titre d'exemple non limitatif. Par contre, les paramètres représentant l'information codée sont différents d'un code à l'autre. Dans certains codes, ce sont les niveaux ou états qui représentent l'information, niveaux que l'on notera arbitrairement "0" et "1" logiques. Dans ce qui suit on considère, sauf indication contraire, que le code NRZ est le code dans lequel l'information est représentée par des niveaux. Le code NRZI ou "Non Retour à Zéro Inverse", pour sa part présente l'intérêt de s'affranchir des niveaux. On dit qu'il est "polarity free" dans la terminologie anglo-saxonne. Ce sont les transitions ou leurs absences, et non les niveaux qui représentent l'information. Cette propriété assure que l'utilisation du signal NRZI ou NRZI est sans conséquence sur la valeur effective de l'information. Ce codage est particulièrement attrayant lors d'échanges de signaux sous forme symétrique, les repérages du signal et de son complémentaire ne sont pas nécessaires car le signal codé NRZI est justement sans polarité. Les règles de codage du signal NRZI sont les suivantes : on transforme les niveaux logiques "1" du message binaire incident en transitions montantes ou descendantes selon l'état pris antérieurement alors que les niveaux logiques "0" n'entraînent aucune transformation. On connaît des codeurs permettant d'effectuer l'opération qui vient d'être décrite et des décodeurs permettant d'effectuer l'opération inverse. Ces dispositifs utilisent des circuits de logique combinatoire et/ou séquentielle. Un des paramètres technologiques liés à de tels circuits est le temps de propagation d'un signal dans les composants électronique utilisés. Pour un circuit théorique, on suppose que le temps de propagation est nul. Ce n'est évidemment pas le cas dans la pratique mais lorsque le temps de propagation est bien inférieur à la période d'un élément binaire, son effet peut être négligé. En tout état de cause, il n'induit pas un fonctionnement erroné du codeur. Par contre, comme cela sera explicité ultérieurement, ce n'est plus le cas lorsque le temps de propagation devient comparable à la période d'un élément binaire. Une première solution est de faire appel à des technologies plus rapides. Cependant, si l'on se place dans le cadre de transmissions à très haut débit, par exemple dans la gamme de 100 Mbit/s à 3 Gbit/s, même le recours à des technologies ultra-rapides ne permet pas de résoudre ce problème. Ceci est dû au fait que les codeurs de l'Art Connu font appel à un rebouclage de la sortie sur l'entrée. Par contre, le problème ne se pose pas en ces termes pour les décodeurs car il n'y a pas ce rebouclage. L'invention se propose de pallier les inconvénients de l'Art Connu. L'invention a donc pour objet un procédé de codage d'un signal numérique à coder en un signal numérique codé selon les règles du codage NRZI, ledit signal numérique à coder présentant une suite de paliers pouvant prendre des premier et second niveaux déterminés, chaque niveau étant associé à un état logique particulier, la durée de chaque pallier étant égale à un nombre entier d'intervalles de temps représentant chacun une durée d'information élémentaire; caractérisé en ce qu'il comprend les étapes suivantes - détection des paliers d'un premier niveau dudit signal numérique à coder et génération de signaux numériques intermédiaires présentant des transitions entre un premier état logique et un second état logique, le nombre de signaux générés pour chaque pallier du premier niveau étant égal audit nombre entier d'intervalles de temps, - et production dudit signal numérique codé par la génération d'un signal alternant entre des premier et second niveaux au rythme des transitions desdits signaux intermédiaires d'un sens déterminé; le signal ainsi généré représentant l'information codée suivant les règles du codage NRZI. L'invention a encore pour objet un dispositif mettant en oeuvre ce procédé. L'invention sera mieux comprise et d'autres caractéristiques et avantages apparaîtront à l'aide de la description qui suit en référence aux figures annexées et parmi lesquelles - la figure 1 illustre schématiquement un codeur NRZ à NRZI selon l'Art Connu. - la figure 2 est un chronogramme illustrant le fonctionnement du codeur de la figure 1. - la figure 3 illustre schématiquement un décodeur NRZI à NRZ selon l'Art Connu. - les figure 4 et 5 sont des chronogrammes illustrant le fonctionnement du décodeur de la figure 3. - la figure 6 est un codeur selon l'Art Connu, - les figures 7 et 8 sont des chronogrammes illustrant certains aspects de fonctionnement de codeurs selon l'Art Connu dans des conditions particulières. - la figure 9 illustre un exemple de réalisation d'un codeur selon l'invention, - la figure 10 est un chronogramme illustrant le fonctionnement de ce codeur. Un codeur selon l'art connu va maintenant être décrit en référence aux figures 1 et 2. Sur la figure 1, qui illustre schématiquement un tel codeur, on suppose que le signal incident à coder e(t) est codé suivant la règle de codage NRZ, donc en niveaux. Ce signal est transmis à une première entrée, 101, d'un additionneur modulo 2, ctest à dire un circuit logique de type "OU-EXCLUSIF" 10. La sortie 103 de cet additionneur est transmise à l'entrée, 110, d'une bascule de type D. La sortie, 111 ou Q, de cette bascule est rebouclée sur son entrée via la deuxième entrée 102 de l'additionneur modulo 2. On appelle a It) le signal de sortie de l'additionneur 10 et b(t) le signal de sortie de la bascule de type D et donc du codeur. La fonction logique "OU-EXCLUSIF" s'énonce comme suit (1) a ( t) = e ( t) b ( t) + e ( t) b ( t) La bascule D mémorise les états du signal d'entrée a(t) sur les apparitions des fronts d'un signal d'horloge H(t). Ce circuit assure une fonction de retard égal à un élément binaire. Le chronogramme de la figure 2 illustre le fonctionnement du codeur. Sur la partie haute de la figure, on a supposé qu'à l'état initial la sortie de la bascule D était à l'état logique "0" (signal b(t)). A l'instant ton on suppose que le signal e(t) passe de l'état "0" à l'état "1". II en est de même du signal a(t), si l'on se réfère à l'équation (1). A l'instant t1, b(t) va passer à l'état "1" ce qui assure un retard d'un élément binaire sur a(t) et a(t) ne subit aucune modification, car e(t) est repassé à "O". A l'instant t2, e(t) repasse à "1" ce qui entraine la retombée de a(t) mais b(t) ne subit aucune modification. A l'instant t3, e(t) ne subit aucune modification. A l'instant t3, e(t) est toujours à "1" mais b(t) va basculer de "1" à "O" et a(t) de "O" à "1". Le processus continue de la même manière. On constate, sur le chronogramme de la figure 2, que le signal b (t) est bien codé selon les règles de codage NRZI: transitions de "0" à "1" ou l'inverse si le signal incident e(t) est à l'état "1" et pas de transitions si le signal e(t) est à l'état "0". Sur le bas de la figure , on a représenté le cas pour lequel l'état initial de la bascule D serait l'inverse du précédent. Le signal de sortie, repéré b'(t), est relié simplement au signal b(t) par la relation b'(t) = b (t). II est de même pour a'(t) a'(t) = a Ct) Ce changement de mode de fonctionnement est sans importance, car seules les transitions sont significatives. Or les transitions de b'(t): : par exemple aux temps d'horloge t1 et t3, pour les deux premières transitions, sont identiques temporellement à celles de b(t). L'information est donc conservée sans altération. Un décodeur selon l'Art Connu est illustré schématiquement par la figure 3. Il comporte également un additionneur modulo 2, repéré 20, et une bascule de type D, repérée 21. L'additionneur 20 reçoit sur une première entrée 201 le signal c(t), codé en selon la règle NRZI et sur une seconde entrée 202, le signal d(t) délivré en sortie, 211, de la bascule 21. Celle-ci reçoit sur son entrée 210 le signal c(t) précité. Comme dans le cas du codeur, la bascule D est déclenchée par les fronts d'une horloge H(t). On constate qu'il n'y a pas de rebouclage de la sortie sur l'entrée. Le chronogramme de la figure 4 illustre le fonctionnement du décodeur de la figure 3. On a supposé qu'à l'état initial, le signal de sortie d(t) de la bascule D était positionné à l'état "0". On n'a pas représenté les signaux d'horloge H(t) sur ce chronogramme, mais il doit être bien entendu que la bascule 21 fonctionne de façon identique à la bas culez 1. Le signal d(t) recopie le signal c(t) avec un retard d'une période d'un élément binaire. Vu l'équation (1), le signal s(t), le signal s(t) reconstitue bien un signal à code NRZ simple, c'est à dire codé en niveaux Pour illustrer le processus, on a choisi le signal c(t) identique au signal b(t) de la figure 2. Dans ce cas le signal s(t) est identique au signal e(t). Tout s'est passé comme si on avait placé, en cascade, un codeur suivi d'un décodeur. On conçoit que le signal final doit être identique au signal incident à coder. On a donc bien s(t) = e(t). La figure 5 illustre le cas pour lequel la bascule 21 est positionnée à l'état initial à "1" : signal d(t). Dans ce cas, on constate que c' (t) = c (t) d' (b = d Ct) mais que s'(t) = s(t) = e(t) On retrouve bien la propriété fondamentale du code NRZI, a savoir l'indépendance quant aux niveaux transmis : seules les transitions véhiculent de l'information, quelque soient leurs sens. Jusqu'à présent, il a été supposé que les signaux étaient parfaits et on a négligé tous phénomènes parasites, à commencer par les temps de transit à l'intérieur des circuits logiques. Comme il a été précédemment indiqué, cette assertion se justifie dans la pratique car ces phénomènes peuvent être négligés la plupart du temps. Par contre, si le débit binaire augmente et que le temps de propagation se rapproche de la durée d'une période d'un élément binaire, on peut faire appel à une technologie plus rapide pour pouvoir à nouveau négliger les temps de propagation. Cependant, lorsqu'on vise de très haut débits, typiquement dans la gamme 100 Mbit/s à 3 Gbit/s, ce palliatif n'est plus suffisant. Le temps de propagation ne peut plus être négligé et les dispositifs de l'Art Connu ne conviennent plus. On va illustrer les problèmes rencontrés par référence aux figures 6 à 8. On ne s'attachera qu'à la partie codeur, car le décodeur selon l'Art Connu ne présentant pas de rebouclage sur l'entrée n'est pas sensible aux temps de propagation. La figure 6 illustre de façon plus complète un codeur similaire à celui de la figure 1. II comprend un premier étage E1, comportant une première bascule de type D, repérée 30, générant sur sa sortie 301 le signal e(t) codé selon la règle de codage NRZ, ce en synchronisme avec un signal d'horloge Hl(t). L'étage E2 ou étage codeur NRZ à NRZI est identique au codeur de la figure 1. On a seulement repéré le signal d'horloge sous la dénomination H2(t) au lieu de H(t). Les autres éléments ne seront pas redécrits. Les fronts des transitions des signaux d'horloge H1(1 > et H2(t) sont en synchronisme. Sur le chronogramme de la figure 7, on a illustré le cas pour lequel le temps de propagation dans les différents circuits logiques du codeur (étage E2) est sensiblement égal au quart du temps élémentaire de bit que l'on notera dans ce qui suit t.e.b. pour simplifier. Sur ce chronogramme les instants t0, t1, t2, t3, et t4 représentent les fronts de décision des signaux d'horloge H1(t) et H2(t) ou instants d'échantillonnage. Par convention, on a représenté les fronts montants ou descendants des différents signaux sous la forme de "X pour indiquer que ces fronts ne sont pas parfaits. En d'autres termes, la pente des signaux a une valeur finie. Par ailleurs l'état initial des bascules est indifférent. De l'instant initial t0 d'échantillonnage, déterminé par les fronts des signaux d'horloge H1(t) et H2(t), découlent les valeurs des signaux e(to) et b(t0), qui elles-mêmes donnent naissance au signal a(to), 1/2 t.e.b après l'instant t0. La génération du signal b(t1) découlant de l'échantillonnage du signal a(to) à l'instant t1 s'effectue sans difficulté car la valeur du signal a(to) est parfaitement définie à l'instant t11 vue la valeur du temps de propagation égale à 1/4 de t.e.b. Le processus se perpétue de la même façon, de proche en proche, aux instants t2, t3 etc... On constate donc que pour cette valeur particulière du temps de propagation, le fonctionnement du codeur reste correct. On va considérer maintenant, par référence au chronogramme de la figure 8, le cas pour lequel de temps de propagation est substantiellement égal à 1/2 t.e.b.. On a adopté les mêmes conventions que pour le chronogramme de la figure 7. On constate dans ce cas que le fonctionnement du codeur est perturbé. En effet, comme précédemment décrit, les signaux e(t0) et b(to) découlent de l'instant d'échantillonnage t0. Le signal a(t0) est généré 1 t.e.b. après l'instant t0, c'est à dire précisément à l'instant t1. En conséquence la valeur du signal b(tl) est mal définie. Elle peut prendre les valeurs du signal a(t) à l'instant t0, soit a(t0), ou (t-l), soit a (t 1), c'est à dire à 1 t.e.b. en arrière. Dans la pratique, si l'on tient compte du temps de positionnement de la bascule, le signal b(t1) pendra probablement la valeur du signal a (t-1), c'est à dire une valeur erronée. On a assorti, sur le chronogramme de la figure 8, les valeurs b(t1), b(t2) et b(t3) d'un point d'interrogation pour exprimer l'incertitude sur le fonctionnement correct ou non du codeur. De façon plus générale, lorsque la somme des temps de propagation dans les composants électroniques constituant le codeur avoisine la valeur d'un t.e.b. ou la dépasse, la configuration des codeurs de l'Art Connu qui vient d'être décrite n'est plus utilisable. L'invention vise à pallier cet inconvénient et propose un codeur dont le fonctionnement est indépendant du temps de propagation. Elle permet de s'affranchir du dysfonctionnement qui vient d'être rappelé et autorise ainsi des débits très élevés. La figure 9 illustre un dispositif codeur selon l'invention. II comprend essentiellement une porte logique 40 de type "NON-OU" ou "NOR" selon la terminologie anglo-saxonne. Cette porte 40 reçoit, sur une première entrée 401, le signal e(t) codé selon les règles NRZ, et, sur une seconde entrée 402, un signal d'horloge H(t), dont les périodes sont égales à 1 t.e.b. Le signal d'horloge H(t) est un signal impulsionnel généré par des moyens bien connus qu'il est inutile de décrire. Le signal f(t) généré sur la sortie 403 est transmis à l'entrée 501 d'un compteur diviseur par deux actif sur front 50. Il faut entendre par là un diviseur déclenché par les fronts des signaux incidents. Dans la pratique, les circuits disponibles sur le marché, sont déclenchés par les fronts montants. Cependant, il s'agit d'une disposition qui ne relève que d'un simple choix technologique. Ce diviseur par deux présente également la caractéristique d'être asynchrone. Le diviseur par deux 50 comporte deux sorties complémentaires repérée Q et n. Sur la figure 9, la sortie générale s(t) du codeur est confondue avec la sortie Q du diviseur, mais le choix inverse est tout aussi valable puisque les niveaux logiques sont indifférents en codage NRZI. Un tel diviseur par deux peut être réalisé à base d'une bascule de type D, déclenchable sur front ou d'une bascule JK. Des exemples sont données dans les "TECHNIQUES DE L'INGENIEUR", décembre 1988, pages E3501 - 2 à E3501-5, au paragraphe 4.2-. Le chronogramme de la figure 10 illustre les différents signaux à prendre en compte. On a représenté, sur la partie supérieure de la figure, les signaux e(t) et e'(t) qui sont le complément logique l'un de l'autre selon que le signal sera codé NRZ ou NRZ, suivant les conventions adoptées. La première fonction réalisée par le codeur est la génération d'une impulsion en présence d'un "1" logique. Sur la figure 9, on a choisi comme signal d'entrée, le signal e'(t), c'est à dire un signal codé Nul2, selon les conventions du chronogramme de la figure 10. Dans ce cas, la valeur "1" de e(t) est représentée par les valeurs "0" du signal e'(t). On peut passer de l'un à l'autre à l'aide d'un simple inverseur non représenté. Si l'on considère la table de vérité d'une porte "NON-OU" le signal de sortie, en l'occurrence le signal f(t) pour la porte 40, prend la valeur "1" si les deux entrées sont à "O".Sur le chronogramme de la figure 10, il va y avoir génération d'une impulsion f(t) à l'état "1" à l'instant t1, instant pour lequel e'(t) et H(t) sont à "O", étant entendu que la valeur "0" pour e'(t), codé NRZ, représente la valeur "1" pour e(t), ce dernier signal étant codé NRZ. La durée de l'impulsion f(t) est identique à celle d'un impulsion d'horloge H(t). Le front montant du signal f(t) déclenche le compteur diviseur par deux 50. Le signal s(t) va commuter de la valeur "1" à la valeur "0". On a supposé que l'état initial du diviseur était ainsi défini. Un positionnement inverse aurait généré un signal complémentaire tout aussi acceptable.On a représenté, sur le bas de la figure 10, les deux séries de valeurs possibles présent par le signal s(t), repérées NRZI et NRZl Cela dépend également quelle sortie, Q ou O, génère le signal s(t) du codeur. Trois nouvelles impulsions du signal f(t) vont être générés aux instants t'2, t'3, t'4. Les fronts montants de ces impulsions vont occasionner le basculement d'un état à l'autre du compteur diviseur par deux 50 et donc du signal de sortie s(t). Le codeur génère une transition du signal de sortie s(t) pour la première impulsion du signal, e(t), et trois transitions pour la seconde impulsion du signal e(t). Le codage est bien réalisé conformément aux règles de codage NRZI, car les durées respectives des deux impulsions incidents à coder sont 1 t.e.b et 3 t.e.b.. Par contre, lorsque le signal e(t) est à "O", il n'y a pas génération de transitions, ce qui est aussi conforme aux règles de décodage NRZI. Les "O" logiques se traduisent seulement par la mémorisation, grâce au compteur diviseur par deux, de l'état précédent des signaux. Enfin, selon la caractéristique principale de l'invention, les temps de propagation n'interviennent plus. En effet quelque soient leurs valeurs, ceux-ci sont sans influence car il n'y plus de rebouclage de la sortie vers l'entrée dans le dispositif selon l'invention tel qu'il vient d'être décrit. Le signal f(t), et donc également le signal s(t), seront simplement en décalage temporel par rapport au signal e(t). L'invention n'est pas limitée au seul dispositif précisément décrit. En particulier tout choix de circuits logiques particuliers effectué parmi les choix possibles reste dans le cadre de l'invention. Le choix d'une technologie précise s'effectuera, le plus souvent, en fonction de considérations techniques. Les deux fonctions principales à réaliser sont d'une part, la détection des valeurs des signaux à coder d'un niveau logique déterminé et la génération de signaux correspondant et, d'autre part, la détection des fronts de ces signaux pour générer de facon asynchrone un signal de sortie basculant, au rythme de ces fronts, entre deux niveaux logiques. REVENDICATIONS 1. Procédé de codage d'un signal numérique à coder (e'(t)) en un signal numérique (s(t)) codé selon les règles du codage NRZI, ledit signal numérique à coder (e'(t)) présentant une suite de paliers pouvant prendre des premier et second niveaux déterminés, chaque niveau étant associé à un état logique particulier ("O" et "1"), la durée de chaque pallier étant égale à un nombre entier d'intervalles de temps représentant chacun une durée d'information élémentaire; caractérisé en ce qu'il comprend les étapes suivantes - détection des paliers d'un premier niveau dudit signal numérique à coder (e'(t)) et génération de signaux numériques intermédiaires (f(t)) présentant des transitions entre un premier état logique ("O") et un second état logique ("1"), le nombre de signaux générés pour chaque pallier du premier niveau étant égal audit nombre entier d'intervalles de temps, - et production dudit signal numérique codé par la génération d'un signal (s(t)) alternant entre des premier et second niveaux au rythme des transitions desdits signaux intermédiaires d'un sens déterminé ; le signal (s(t)) ainsi généré représentant l'information codée suivant les règles du codage NRZI. 2. Procédé selon la revendication 1 ; caractérisé en ce que le signal numérique à coder (e'(t)) est le complément logique (NRZ) d'un signal (e(t)) codé suivant les règles du codage NRZ. 3. Procédé selon l'une quelconque des revendications 1 ou 2; caractérisé en ce que ledit sens déterminé des transitions est lié temporellement aux fronts montants des signaux numériques intermédiaires (f(t)), lors des transitions entre le niveau logique "0" et le niveau logique 4. Dispositif de codage d'un signal numérique à coder (e' (e'(t)) en un signal numérique (s(t)) codé suivant les règles de codage NRZI selon I'une quelconque des revendications 1 à 3 ; caractérisé en ce qu'il comprend des moyens pour générer un signal d'horloge numérique (H(t)) dont la fréquence est l'inverse dudit intervalle de durée d'information élémentaire, un circuit logique "NON-OU" (40) combinant le signal à coder (e'(t)) et ledit signal d'horloge (H(t)), et générant en sortie lesdits signaux intermédiaires et un diviseur par deux (50) déclenché par les fronts d'un sens déterminé du signal intermédiaire et délivrant en sortie le signal numérique codé (s(t)). 5. Dispositif selon la revendication 4 ; caractérisé en ce que le diviseur par deux (50) est une bascule de type D à déclenchement sur fronts.