FR 2501440 A1 19820910 FR 8203482 A 19820303 2 5 0 1 4 4 0 RECEPTEURS D'INFORMATIONS AVEC RECEPTION ET DECODAGE D'UN CODE D'ERREUR 1 L'invention se rapporte aux récepteurs de signaux formés par une porteuse modulée par un signal numérique, et notamment à de tels récepteurs équipés d'une détection et d'un décodage d'un code d'erreur inclus dans le signal numérique. La demande de brevet européen publiée sous le n0 34467 décrit un récepteur pour la détection, le décodage et l'élaboration de signaux numériques de commande modulés sur une porteuse transmise par radio ou par le secteur. Le signal numérique comprend une succession de blocs ayant chacun 50 digits binaires (bits) comprenant 36 digits de données réelles et 14 digits de synchronisation et d'erreur. Comme décrit, la détection d'erreur utilise un code de redondance cyclique (CRC) qui ne permet pas, à la fois, une détection et une correction d'erreur. On connaît des codes de correction d'erreur qui utilisent des codes cycliques entiers ou raccourcis dans lesquels on choisit un mot de vérification, par exemple de 13 bits, associé aux 36 bits de données réelles, de façon que la division du mot résultant de 49 bits par un polynôme générateur prédéterminé d'ordre 13 donne un reste ou syndrome égal à zéro. Toutefois les procédés connus de mise en oeuvre qui font intervenir une détection et un décodage indépendants pour chaque syndrome, nécessitent une manipulation très longue dans le récepteur pendant la synchronisation du bloc initial, lorsque des groupes de 50 bits doivent être balayés, en commençant successivement par chacun des bits, pour identifier la position de départ d'un bloc réel de données transmises. Un tel balayage implique, entre autres, la détection et le décodage du syndrome pour le dernier groupe reçu de 50 bits lors de la réception de chaque nouveau bit. 250 1 4 4 0 -2- 1 Selon l'invention, un récepteur (qui peut être du -type décrit dans la demande de brevet mentionnée précédemment) est adapté à recevoir un signal comprenant une porteuse modulée par un signal numérique ayant la forme d'une succession de blocs de m digits binaires parmi lesquels n digits binaires forment un mot de vérification provenant des données transmises et d'un polynôme générateur prédéterminé de n digits pour le code d'erreur, pour la détection et/ou la correction d'erreurs dans les données reçues. Lors de la réception de chacun des digits successifs du signal numérique, le récepteur est adapté à décoder le syndrome pour le bloc de m digits se terminant par le dernier digit reçu selon les étapes suivantes. Une première étape consiste à décaler chaque digit du syndrome précédemment décodé vers la position du digit plus significatif suivant et amener ledit dernier digit reçu du signal numérique démodulé à la position du digit le moins significatif. Une deuxième étape consiste à additionner modulo 2 au mot décalé, selon la valeur du digit le plus significatif de ce mot, la valeur du polynôme générateur prédéterminé. Une troisième étape consiste à additionner modulo 2 au résultat, selon la valeur du digit reçu m digits avant ledit dernier digit reçu, la valeur du reste provenant de la division modulo 2 de -2m par le polynôme générateur prédéterminé. Dans un tel récepteur, chaque syndrome provient de façon itérative du syndrome élaboré précédemment, limitant ainsi la manipulation à ce qui est nécessaire pour tenir compte de l'addition d'un bit nouveau moins significatif, de la perte du bit ancien le plus significatif et du décalage des bits restants d'une position de digit. Comme le processus est itératif, il nécessite une valeur de départ. Pratiquement, ce peut être zéro pour une valeur initiale de zéro pour le bloc de m bits. Un bloc complet de données peut comprendre un ou plusieurs bits de départ, de valeur fixe: par exemple, il se peut que le premier bit ait toujours la valeur 1. Si ce bit n'est pas compris dans le mot de vérification à l'émission, la valeur de m est inférieure d'une unité à la longueur du bloc entier incluant le bit de départ. Dans ce cas, le digit défini cidessus comme ayant été -3- 1 reçu m digits avant le dernier digit reçu, correspond au premier digit de départ d'un bloc. Toutefois, le ou les digits de départ peuvent être inclus dans le mot de vérification, auquel cas le digit défini ci-dessus correspond au digit final du bloc précédent et la valeur de m est la même que la longueur du bloc entier de données. On va maintenant décrire un récepteur selon l'invention à titre d'exemple non limitatif, en référence aux dessins annexés dans lesquels: - la figure 1 unique est un diagramme synoptique des circuits du récepteur pour la détection et le décodage du syndrome. En référence à la figure 1, on a représenté un circuit utilisé dans un récepteur pour recevoir des signaux comprenant une porteuse modulée par un signal numérique. La porteuse peut être un signal transmis par radio comme le signal grandes ondes Radio 4 de la B.B.C. ou un signal haute fréquence transmis par le secteur. Dans un tel système, l'information transmise, pour commander par exemple les changements de tarifs et les délestages d'ur réseau de distribution d'électricité, se présente sous la forme d'une succession de blocs de digits binaires, 36 bits de données réelles étant combinés à 14 bits de fonction de façon à obtenir des blocs de bits. Les bits de fonction sont utilisés pour la synchronisation notamment grâce à un bit 1 pour désigner le début de chaque bloc de bits et pour la détection et, si possible la correction, d'erreurs dans les données reçues. Les principaux détails d'un tel récepteur, en ce qui concerne la démodulation, la synchronisation, et la détection des bits, individuels du signal reçu, sont décrits dans la demande de brevet mentionnée ci-dessus et ne nécessitent pas de description plus complète. Dans l'explication qui suit, on suppose que ces fonctions ont été réalisées et que l'on a obtenu une succession de bits pour le traitement ultérieur, notamment pour la synchronisation des blocs de données de 50 bits et pour la détection et la correction d'erreur. Le type de code d'erreur envisagé utilise un code cyclique défini par un polynôme générateur d'ordre 13 et obtenu en divisant chaque groupe de données de 36 bits par le polynôme exprimé sous forme binaire et en ajoutant au groupe de données la différence 2 50 1 4 4 0 -4- l entre le reste et le polynôme, cette différence ayant un maximum de 13 bits et étant appelée mot de vérification, de façon à former avec le bit de départ, le mot de code entier de 50 bits. De cette façon, si le processus de division est répété au récepteur sur le bloc entier de 50 bits, moins le bit de départ, et que les données n'aient pas été faussées pendant la transmission, les données doivent être exactement divisibles par le polynôme générateur donnant un reste, appelé syndrome, égal à zéro. Un syndrome non nul indique que les données reçues sont erronnées: un traitement ultérieur du syndrome peut permettre d'identifier les bits faux et ainsi de les corriger. Un exemple de polynôme générateur définissant un code de redondance cyclique est x13 +x 12 + xl +x x7 + x6 + x + x +x X + pour lequel le nombre binaire équivalent est 11110011110101. On sait que la division d'un mot de données par un tel polynôme pour obtenir le syndrome peut être effectuée en décalant chaque bit du mot dans un registre à décalage de même longueur que le nombre, et en ajoutant le nombre au contenu du registre par une addition modulo 2 (qui équivaut à une opération OU-EXCLUSIF sur les bits correspondants du contenu du registre et du nombre) si le bit le plus significatif du registre est un 1. Ce processus est poursuivi jusqu'à ce que tous les bits du mot de données aient été décalés dans le registre dont le contenu donne alors le résultat c'est-à-dire le reste de la division. Bien qu'une telle technique -soit théoriquement applicable dans le contexte actuel, elle nécessite une opération très longue sur les données d'entrée, au moins pendant la phase de synchronisation initiale lorsque le récepteur recherche la position du début du groupe de 50 digits formant un bloc de données. Dans ce processus, on cherche arbitrairement n'importe quel bit de valeur 1 (la valeur du bit de départ) et l'on calcule la valeur du syndrome pour les 49 bits suivants. Si le syndrome n'est pas zéro, indiquant 2 5 0 1 4 4 0 -5- 1 très probablement que ce bit 1 n'est pas un départ, le processus se répète pour le bloc de 50 bits en commençant par le bit 1 suivant. Le fait de répéter le décalage et l'addition modulo 2 du polynôme générateur tels que décrits plus haut revient à recalculer complètement le syndrome à chaque fois, même si la majorité des bits sont les mêmes que pour le calcul précédent. La figure 1 représente un circuit pour calculer de façon répétitive le syndrome et qui ne présente pas cet inconvénient. En référence à la figure 1, les bits de données sont appliqués, après démodulation, à une entrée 10 reliée à l'entrée du bit le moins significatif (lsb) d'un registre à décalage 12 à 50 étages et, par l'intermédiaire d'une porte ET 14 et d'une porte OU , à l'entrée d'un registre à décalage 16 à 14 étages. La sortie du registre 16 correspondant au bit le plus significatif (msb) est reliée à une entrée d'une porte OU-EXCLUSIF 18 dont la sortie est reliée, par une porte ET 20 et la porte OU 18, à l'entrée lsb du registre 16. L'autre entrée de la porte OU-EXCLUSIF 18 reçoit la sortie msb d'un registre à décalage 26 bouclé sur lui-même à 14 étages par l'intermédiaire d'une porte ET 22 à trois entrées et d'une porte OU 24. A l'autre entrée de la porte OU 24 est reliée la sortie d'une autre porte ET 28 à trois entrées qui reçoit sur l'une d'elles la sortie msb d'un registre à décalage bouclé 30 à 14 étages. Les deuxièmes entrées des portes ET 22 et 28 sont reliées respectivement aux sorties de deux bascules 32 et 34 dont les entrées sont connectées aux sorties msb des registres respectifs 16 et 12. Les troisièmes entrées des portes ET 22 et 28 sont reliées à des sorties de commande appropriées d'un compteur de cadencement 36, de même que les deuxièmes entrées des portes ET 14 et 20, les entrées de validation des bascules 32 et 34 et les entrées de commande de progression des registres 12, 16, 26 et 30. Le compteur 36 reçoit des impulsions d'horloge à une fréquence au moins égale à 32 fois la cadence de bits du signal démodulé apparaissant sur l'entrée 10. Le compteur 36 qui utilise par exemple un compteur binaire à 5 bits et des portes ET et OU pour fournir les signaux de sortie qui conviennent, est réalisé de façon conventionnelle. 2 5 0 1 4 4 0 -6- 1 Le registre à décalage bouclé 26 est amené à un état initial défini par le nombre binaire correspondant au polynôme générateur indiqué cidessus, c'est-à-dire à 11110011110101. De même le registre à décalage 30 est amené à l'état défini par le nombre binaire correspondant au reste ou syndrome résultant de la division, selon les règles connues de calcul des polynômes, de -x par le polynôme générateur. Le compteur 36 est adapté à être synchronisé avec les données d'entrée de façon à redémarrer la séquence de cadencement décrite par la suite pour chaque bit de données arrivant sur l'entrée 10. Lors du démarrage, le compteur 36 commence l'intervalle de cadencement Tl pendant lequel une impulsion est appliquée aux commandes de progression des registres 12 et 16 et- aussi à la deuxième entrée de la porte ET 14, introduisant ainsi le bit présent à l'entrée 10 dans les registres 12 et 16. En même temps, le contenu de ces registres est déplacé d'une position vers la gauche. Dans l'intervalle de cadencement T2, les bascules 32 et 34 sont validées et peuvent stocker les valeurs des bits qui viennent d'être décalés dans les étages de plus haut rang (msb) des registres 16 et 12. Pendant les intervalles de cadencement T3 à T16, le compteur 36 fournit 14 impulsions successives d'entrée aux commandes de progression des registres 16 et 26 et, simultanément, à la troisième entrée de la porte ET 22 et à la deuxième entrée de la porte ET 20 pour connecter la sortie de la porte OU-EXCLUSIF 18 à l'entrée lsb du registre 16. Si la valeur de l'étage de plus haut rang msb précédemment stockée dans la bascule 32 est un 1, la porte ET 22 est passante et le contenu du registre 26 peut la traverser, de même que la porte OU 24, pour être combiné, bit par bit, selon la logique exclusivement OU, avec le contenu du registre 16 par la porte OU-EXCLUSIF 18. Le résultat de cette opération est introduit dans le registre 16 par la porte ET 20. Si la valeur de l'étage de plus haut rang (msb) stockée dans la bascule 32 est zéro, la porte ET 22 reste bloquée et la porte OU EXCLUSIF 18 se comporte comme une simple porte OU qui recycle, sans le changer, le contenu du registre 16. 2 5 0 1 4 4 0 -7- 1 Ensuite, pendant les intervalles de cadencement T17 à T30, le compteur fournit 14 impulsions d'entrée aux commandes de progression des registres 16 et 30, à la troisième entrée de la porte ET 28 et à la deuxième entrée de la porte ET 20. Un processus similaire au précédent est donc réalisé, mais, cette fois, pour additionner bit par bit, selon la règle exclusivement OU, les contenus des registres 16 et 30 si la valeur de plus haut rang du registre 12 stockée dans la bascule 34, est un 1. Si cette valeur est un zéro, le contenu du registre 16 est recyclé sans changement. Finalement, pendant l'intervalle de cadencement T31, le contenu du registre 16 (la nouvelle valeur cherchée du syndrome) peut être examiné par les sorties parallèles 38 pour vérifier s'il est ou non égal à zéro. Un résultat zéro indique que le registre 12 contient un bloc de données exact qui peut être déplacé vers un autre circuit par les sorties parallèles 40 pour un traitement ultérieur. Un résultat non nul dans le registre 16 indique un bloc de données erronné dans le registre 12 ce qui est probablement dû à un défaut de synchronisation pendant la période de synchronisation initiale. Par conséquent, on répète le processus pour les bits successifs des données apparaissant à l'entrée jusqu'à obtenir un syndrome zéro et, par suite, la synchronisation. Dans ce but, le compteur 36 est redémarré, éventuellement après un certain délai permettant d'autres opérations, et la suite d'étapes ci-dessus est répétée pour le bit suivant de données. Lorsque la synchronisation est obtenue, le circuit peut continuer à fonctionner, tout syndrome non nul obtenu par la suite servant de façon connue pour la détection et la correction d'erreurs dans les blocs de données individuels. Dans la description précédente on a supposé que le premier bit du bloc de données était un bit de valeur fixe et qu'il était exclu du mot de vérification à l'émission. Le registre à décalage 12 doit avoir alors la longueur du bloc de données réelles plus le mot de vérification plus le bit de départ. Dans le cas contraire, le registre 12 devrait être plus long d'un bit que le bloc de données. --8-- 1 Le fonctionnement du circuit peut être expliqué comme suit. Pour n'importe quel bit de données apparaissant à un temps m par rapport à un instant de départ arbitraire, la valeur du syndrome S (x) pour le bloc de données se terminant à ce bit (à l'exclusion du bit de départ) est le reste de la division suivante: 48 47 (V48+mx + V47+m x +... + Vm) / g(x) 48+m 47+m m dans laquelle V est la valeur du bit se produisant à l'instant n n et g(x) est le polyn8me générateur. La valeur du syndrome S 1 (x) pour le bloc se terminant au bit suivant est le reste de la division: (V 48 +V 47 V) / g(x) (V47+m x + V46+m x + + 1 =[x(V48+mx 8+ V47+mx47+ V46+mx46+...+ Vm) + Vm1 - V48+mx49] / g(x) L'expression entre parenthèses est le numérateur de l'expression S m(x). m Par conséquent: Sm l(x) = x S m(x) Imod g(ç) +V m1 - V48+mx49 I mod g(x) Le premier terme du deuxième membre de cette équation est obtenu en décalant la valeur de S (x) d'une position vers la gauche (tout en m introduisant le bit suivant pour réaliser le deuxième terme) puis en additionnant le polyn8me générateur par une addition modulo 2 si le bit le plus significatif est un 1. Le troisième terme est obtenu par une addition -modulo 2, si la valeur de V48+m (la valeur du bit de plus haut rang du registre 12) est un 1, du reste de -x divisé par g(x). La valeur négative est obtenue en utilisant le complément à 2 en arithmétique binaire. Etant itératif, ce calcul nécessite une valeur de départ exacte pour le syndrome. Une valeur qui convient est zéro pour un bloc de données formé uniquement de zéros. 2 5 0 1 4 4 0 1 REVENDICATION 1. Récepteur pour recevoir un signal comprenant une porteuse modulée par un signal numérique sous la forme d'une succession de blocs ayant chacun m digits binaires parmi lesquels n digits forment un mot de vérification provenant des données initialement émises et d'un polynôme générateur prédéterminé à n digits pour le code d'erreur, pour la détection et/ou la correction d'erreurs dans les données reçues, caractérisé en ce que le récepteur est adapté à décoder, lors de la réception de chacun des digits successifs du signal numérique, le syndrome du bloc de digits se terminant par le dernier digit reçu selon les étapes suivantes: - décaler chaque digit du syndrome précédemment décodé vers la position du digit plus significatif suivant, et amener ledit dernier digit reçu du signal numérique démodulé à la position du digit le moins significatif, additionner modulo 2 au mot décalé, selon la valeur du digit le plus significatif de ce mot, la valeur du polynôme générateur prédéterminé, additionner modulo 2 au résultat, selon la valeur du digit reçu m digits avant ledit dernier digit reçu, la valeur du reste provenant de la division modulo 2 de -2 par le polynôme générateur prédéterminé.