(19)
(11) EP 0 365 405 A1

(12) DEMANDE DE BREVET EUROPEEN

(43) Date de publication:
25.04.1990  Bulletin  1990/17

(21) Numéro de dépôt: 89402831.5

(22) Date de dépôt:  13.10.1989
(51) Int. Cl.5H03M 7/40
(84) Etats contractants désignés:
AT CH DE ES GB LI NL SE

(30) Priorité: 19.10.1988 FR 8813760

(71) Demandeur: THOMSON CONSUMER ELECTRONICS (S.A.)
92400 Courbevoie (FR)

(72) Inventeur:
  • Le Page, Philippe
    F-92045 Paris la Défense (FR)

(74) Mandataire: Lincot, Georges et al
THOMSON-CSF, SCPI, B.P. 329, 50, rue Jean-Pierre Timbaud
92402 Courbevoie Cédex
92402 Courbevoie Cédex (FR)


(56) Documents cités: : 
   
       


    (54) Procédé de codage adapté à la reconnaissance de mots de synchronisation dans des suites de mots codés à longueurs variables


    (57) Le procédé de codage est adapté à la reconnaissance de mots de synchronisation dans des suites de mots codés à lon­gueurs variables, chaque mot codé correspondant à un événe­ment ou message déterminé d'une suite de messages affectés chacun d'une probabilité d'occurrence. Il consiste à construire un arbre de codage dichotomique comportant un nombre détermi­né de feuilles (F1 ... F4) réparties sur des niveaux de priori­tés (n₁ ... n₄) classés dans un ordre décroissant en partant de la racine de l'arbre vers les feuilles, le nombre de feuilles étant égal au nombre d'événements à coder, à placer les feuilles adjacentes entre elles sur chaque niveau, les feuilles correspon­dant aux événements les plus probables étant placées à une extrémité à droite ou à gauche sur chaque niveau, et à interdire dans les mots codés les suites de Smax bits de même valeur, zéro ou un pour obtenir un choix aisé de mots de synchronisa­tion.
    Application : Systèmes de télévision numérique à compres­sion de débit.




    Description


    [0001] La présente invention concerne un procédé de reconnais­sance de mots de synchronisation dans des suites de mots codés à longueurs variables. Elle s'applique notamment à la réalisa­tion de systèmes de compression de débit.

    [0002] Pour limiter en débit des informations transmises entre émetteur et récepteur de télévision numérique, il est souvent fait appel à la méthode de codage statistique de Huffman. Cependant cette méthode amène à construire des mots de code de longueurs variables dont la longueur maximale qui n'est pas maîtrisable conduit à des réalisations de dispositifs de codage compliquées. D'autre part, comme les codes ont des longueurs non uniformes, les mots binaires qu'ils forment peuvent être altérés ; ce qui provoque des erreurs de transmission.

    [0003] Pour limiter la propagation et l'effet de ces erreurs il est nécessaire, d'une manière générale, de découper l'informa­tion en blocs en introduisant des mots de synchronisation entre les blocs pour garder la synchronisation des récepteurs en cas d'erreur. Cette protection peut être obtenue selon trois métho­des différentes. Une première méthode consiste à ignorer le type d'information qui est transmis et à placer un mot de synchronisa­tion après un nombre déterminé N de bits utilisés dans la trans­mission. L'intérêt de cette méthode est qu'elle fixe la longueur des blocs et détermine de façon précise la position des mots de synchronisation. Dans ces conditions il est possible d'utiliser des codes auto-correcteurs d'erreurs pour protéger de façon préférentielle les mots de synchronisation. Une deuxième méthode consiste à placer un mot de synchronisation après N événements codés. Dans ces conditions la position des mots de synchronisa­tion n'est pas connue. Cependant il existe une possibilité de détecter des erreurs car il doit toujours exister un mot de séparation de blocs après N événements. Enfin la troisième mé­thode consiste à effectuer un codage où le nombre d'événements codés et le nombre de bits par blocs ne sont pas forcément con­nus. Dans ces deux derniers cas il est primordial de protéger ou au moins de reconnaître les mots de synchronisation afin de localiser efficacement les perturbations causées par les er­reurs. Cependant les codes correcteurs existants ne permettent pas de privilégier la protection des mots de synchronisation lorsque les positions de ceux-ci ne sont pas connues.

    [0004] Le but de l'invention est donc de pallier cet inconvénient.

    [0005] A cet effet l'invention a pour objet un procédé de codage adapté à la reconnaissance de mots de synchronisation dans des suites de mots codés à longueurs variables, chaque mot code cor­respondant à un événement ou message déterminé d'une suite de messages affectés chacun d'une probabilité d'occurrence, du type consistant à construire un arbre de codage dichotomique compor­tant un nombre déterminé de feuilles réparties sur des niveaux de priorités classés dans un ordre décroissant en partant de la racine de l'arbre vers les feuilles, le nombre de feuilles étant égal au nombre d'événements à coder, caractérisé en ce qu'il consiste à placer les feuilles adjacentes entre elles sur chaque niveau, les feuilles correspondant aux événements les plus proba­bles étant placées à une même extrémité à droite ou à gauche sur chaque niveau, et à interdire dans les mots codés les suites de Smax bits de même valeur, zéro ou un.

    [0006] L'invention sera mieux comprise et d'autres caractéris­tiques apparaîtront à l'aide de la description qui suit en réfé­rence aux figures annexées qui représentent :

    - les figures 1A, 1B et 1C des mots de synchronisation intercalés dans des séquences de bits ;

    - la figure 2 une illustration d'une génération d'un arbre de codage complet à gauche dans l'algorithme de codage selon l'invention ;

    - la figure 3 un exemple pour illustrer une structure d'arbre non complet à gauche ;

    - la figure 4 un exemple d'obtention d'un arbre de codage complet à gauche comprenant un nombre maximal de zéros égal à 2 ;

    - la figure 5 une illustration de la méthode de codage classique de Huffman ;

    - la figure 6 une illustration de la méthode de codage mise en oeuvre par l'invention ;

    - la figure 7 une illustration de la méthode de codage mise en oeuvre par l'invention obtenue en limitant la profondeur du codage ;

    - la figure 8 un organigramme pour illustrer la méthode de codage selon l'invention ;

    - les figures 9A et 9B un exemple de mise en oeuvre de la méthode de codage précédente pour limiter la longueur des mots de synchronisation en plaçant des feuilles interdites.



    [0007] La méthode classique utilisée pour repérer un mot de syn­chronisation dans une séquence de mots binaires consiste à com­parer entre elles le poids de plusieurs séquences de bits succes­sives, chaque séquence comportant un nombre déterminé de bits. Comme ce poids est défini sur une séquence de bits par la somme de tous les bits à "1" de la séquence il est clair qu'en donnant par exemple un poids égal à "0" au mot de synchronisa­tion, ce mot devient parfaitement identifiable parmi les autres séquences qui ont des poids supérieurs à "0".

    [0008] Ainsi dans les séquences de bits représentées à la figure 1A la séquence de six bits à "0' marquée MS et qui est interca­lée entre deux séquences marquées C comportant plusieurs bits à "1" est parfaitement reconnaissable puisque son poids est de zéro et que les poids des séquences à gauche et à droite du mot MS sont respectivement de trois et quatre. Par contre, si une erreur intervient par exemple dans la position étoilée du mot C à gauche, le mot MS est reconnu avec cependant une erreur de position comme cela apparaît sur la figure 1B. Il en est de même chaque fois que le mot C se termine par des zéros. Ces problèmes peuvent cependant trouver leur solution en ajoutant comme cela est représenté à la figure 1C un bit à "1" à la fin par exemple du mot de synchronisation MS. La solution se généralise d'ailleurs pour un nombre quelconque de T erreurs. Dans ce cas, la position du mot de synchronisation peut être assurée à la condition qu'il contienne au moins T+1 bits à "1". On peut constater en effet sans tenir compte de la position des T+1 bits à "1" dans le mot de synchronisation, ni de sa longueur que si T bits à "1" sont effacés dans le mot de synchronisation la position du mot MS est conservée même si celui-ci est précédé de "0" du fait de la présence du "1" restant. Le processus de détection du mot de synchronisation pour MS résulte du produit de convolution de suites Q et MS. En considérant par exemple les transformées en Z du mot de synchronisation MS et de la séquence Q des mots codés tels que

    avec QK = MSK pour K = 0, 1, ... S-1
    le produit de convolution de Q(Z) et de MS(Z) s'exprime par la relation

    où Pj est la distance de Hamming D(Ej.MS) entre la séquence Ej et le mot de synchronisation MS, cette distance pouvant être mesurée par une opération "OU exclusif" entre n'importe quelle séquence de bits située à gauche ou à droite du mot de synchronisation et le mot de synchronisation lui-même. Le mot de synchronisation MS peut alors être identifié en présence de T erreurs si seulement la distance de Hamming Pj définie précédemment est supérieure à T+1 pour j différent de 0. Il suffit d'intercaler des bits à "1" dans le mot de synchronisa­tion MS de manière à satisfaire la relation Pj supérieure ou égale à T+1 et j plus petit que 0.

    [0009] Cependant lorsque le nombre d'événements à coder est important la méthode de codage de Huffman conduit à utiliser des mots de synchronisation de longueurs importantes, difficiles à trouver car il faut observer de nombreuses concaténations de mots de code. Pour simplifier la recherche du mot de synchroni­sation, une première solution peut consister à interdire des suites de 0 ou de 1 dans l'arbre de codage de Huffman. Mais le coût en débit apporté par cette solution peut être très impor­tant car la contrainte intervient même sur l'événement le plus probable.

    [0010] La solution mise en oeuvre par l'invention consiste à définir un algorithme permettant de faciliter le choix des mots de synchronisation, permettant sans contrainte de générer des arbres complets à gauche ou respectivement complets à droite comme cela est représenté sur la figure 2. Un arbre complet à gauche étant un arbre où toutes les feuilles de chaque niveau sont adjacentes c'est-à-dire où il n'existe aucun noeud intermé­diaire pour séparer les feuilles sur un même niveau. Sur les figures 2 à 3 les feuilles (F1 ... F4) sont représentées par des cercles et les noeuds intermédiaires par des points.

    [0011] Pour limiter la longueur du mot de synchronisation, on interdit selon l'invention dans les mots de code des suites de plus de Smax "0" (respectivement Smax "1"). Par exemple sur la figure 4, plus de deux 0 consécutifs sont interdits dans l'arbre de codage et trois "0" sont réservés au mot de synchroni­sation. De cette façon toutes les suites binaires qui se termi­nent par Smax + 1"0" (respectivement Smax + 1"1")conduisent à des feuilles interdites. Un exemple de feuille interdite figure sur la figure 4 par un triangle. La recherche de la longueur à donner au mot de synchronisation MS à partir de l'algorithme précédent doit tenir compte d'une part, du fait que pour assurer la position d'un mot MS en présence de T erreurs au plus, celui-ci doit contenir T+1 bits à "1" et d'autre part, du résultat PK de l'opération "OU exclusif" définie par la relation (1) effectuée sur une séquence quelconque de longueur S avec le mot de synchronisation MS. En effet, si aucune erreur n'apparaît le résultat PK est nul et le mot de synchronisation est reconnu en position sans erreur. Cependant en présence de V erreurs inférieur ou égales à T, le résultat PK est inférieur ou égal à T et alors MS est reconnu en position en présence de V erreurs. Par conséquent la distance de Hamming PK minimum (Pmin) de la séquence de C par rapport à MS doit être au moins égal à T+1 en présence de T erreurs. Si un mot de synchronisation de S bits tolère la présence de T erreurs au plus on aura au plus T erreurs sur une quelconque séquence de S bits et au pire T bits à "1" seront effacés sur la séquence C. La contribution cumulée sur P est donc pour MS = 0
    P = Pmin + T + D = 2T+1 + D

    [0012] Comme le mot de synchronisation comporte en fait T+1 bits à "1", si au pire T+1 bits à "1" d'une séquence quelconque coïn­cident avec T+1 bits à 1 du mot de synchronisation, la contribu­tion de ceux-ci sur le résultat PK est nulle. D'une manière générale, si T bits à "1" d'une séquence quelconque appartenant à C coïncident avec au plus B des T+1 bits à "1" du mot de syn­chronisation, la contribution de ceux-ci est nulle. Ces considé­rations permettent de définir le poids P qu'il faut donner à une séquence C de longueur S pour obtenir une protection contre T erreurs. Ce poids est défini par la relation
    P = B + T+1 + T      (2)

    [0013] B étant inférieur ou à égal à T+1. Le poids maximal de n'importe quelle séquence de code autre que MS est donc égal à 3T+2. Par conséquent dans l'hypothèse où on peut être assuré de trouver un poids de "1" tous les (Smax + 1) bits dans les mots codés, la valeur de S représentant la longueur totale du mot de synchronisation vérifie la relation
    S = P.(Smax + 1)      (3)
    soit encore
    S = (3T+2).(Smax + 1)      (4)

    [0014] En résumé, le mot de synchronisation MS doit avoir une longueur S égale à (3T + 2) (Smax + 1) et comporter T+1 bits à 1.

    [0015] Les algorithmes mis en oeuvre par l'invention pour générer les arbres complets à gauche, respectivement à droite, sont em­pruntés de la méthode conventionnelle de Huffman. Suivant la méthode de Huffman, chaque ensemble de N événements à coder est codé en un ensemble de N mots binaires ou messages ceux-ci étant affectés d'une numérotation telle que le premier message codé corresponde toujours à l'événement le plus probable et que le dernier message N corresponde à l'événement ayant la probabilité d'apparition la plus faible. Les messages 1 à N sont ainsi classés par ordre de priorité tel que
    P(1) ≧ P(2) ≧ P(3)... ≧ P(N)      (5)
    avec la condition que



    [0016] Dans ces algorithmes l'arbre de codage possède une struc­ture binaire qui est soit vide, soit formée d'une racine, ou d'un arbre binaire appelé sous-arbre gauche (S.A.G) ou d'un arbre binaire appelé sous-arbre droit (S.A.D).

    [0017] Par convention, un arbre vide se ramène à une feuille. Un sous-arbre à gauche est atteint en parcourant une branche affec­tée de 0 et un sous-arbre droit est atteint en parcourant une branche affectée de 1. Cette structure permet de représenter les N messages par un arbre binaire. Le code se lit en partant de la racine et en parcourant les branches de l'arbre jusqu'au moment où une feuille est rencontrée, chaque feuille représentant un événement parmi les N événements. La succession des bits affec­tés aux branches qui permet d'accéder à une feuille forme ainsi le code de l'événement correspondant. De la sorte si la longueur L(I) d'un mot de code I, où I appartient à l'ensemble des événe­ments de 1 à N, est déterminée par le nombre de bits contenus dans celui-ci on obtient la longueur moyenne du code par la relation

    et on doit vérifier l'inégalité
    L(1) ≦ L(2) ≦ L(3)... ≦ L(N)      (8)

    [0018] La méthode conventionnelle de Huffman consiste à coder des événements à partir des feuilles pour remonter vers la ra­cine de l'arbre. Suivant l'algorithme de Huffman les N probabi­lités des messages ou feuilles sont classées dans un ordre crois­sant et les deux plus faibles probabilités sont isolées pour former la racine d'un arbre porteur de la somme de ces deux probabilités. Les N-1 probabilités restantes sont ensuite réor­données dans un ordre croissant, puis les opérations précéden­tes sont recommencées jusqu'au moment où le nombre de probabi­lités du tri qui est effectué devient nul. Ainsi par exemple le codage de messages A, B, C, D, E, F, G, H, I, J, K, L, M affectés respectivement des probabilités d'occurrences suivantes 0,2 ; 0,18 ; 0,1 ; 0,1 ; 01 ; 0,06 ; 0,06 ; 0,04 ; 0,04 ; 0,04 ; 0,04 ; 0,03 et 0,01 et des numéros de feuilles (1, 2, ... 13) donne en utilisant l'algorithme décrit précédemment, l'arbre qui est représenté à la figure 5.

    [0019] Cependant puisque le codage est déterminé par un déplace­ment des feuilles vers les racines, la profondeur de l'arbre, qui est aussi celle qui correspond au nombre de bits du mot le moins probable, n'est connue que lorsque celui-ci est construit. Ce fait peut être préjudiciable pour obtenir une faible complexi­té pratique au codage comme au décodage.

    [0020] Le procédé selon l'invention pallie cet inconvénient par les algorithmes décrits ci-après qui permettent le codage des événements non pas en parcourant l'arbre de codage des feuilles vers les racines mais à l'inverse en partant de la racine pour descendre vers les feuilles.

    [0021] Une première méthode appelée "TOP-DOWN" consiste à construire un arbre complet à gauche (respectivement à droite) en essayant chaque fois que les feuilles de messages 1 à K-1 sont placés dans l'arbre à placer la feuille du message K le plus à droite (respectivement à gauche) possible à la profondeur B considérée comme ceci est représenté sur la figure 6 et on détermine le nombre M de feuilles ou de racines de l'arbre à la profondeur B+1 par la relation



    [0022] Comme dans l'algorithme de Huffman les feuilles ou racines d'arbre K+1 à K+N sont porteuses d'une probabilité P(I) en tant que feuille ou de somme de probabilités en tant que racine d'arbre. Le fait de chercher à construire un arbre complet à gauche revient à effectuer une simulation de tri par ordre crois­sant des probabilités à la profondeur B+1.

    [0023] Puisque les probabilités sont considérées comme triées si la relation

    est vérifiée, alors la feuille F(K) peut être considérée comme placée au bon endroit.

    [0024] Dans le cas contraire si la relation :

    est vérifiée alors, il est nécessaire de comparer la probabilité P(K) à la somme des probabilités P(M+K-1) et P(M+K-2) des feuilles K+M-1 et K+M+2.

    [0025] Si P(M+K-1) + P(M+K-2) est inférieure à la probabilité P(K) (12), la feuille F(K) n'est pas à sa place et il faut incré­menter de 1 la longueur du code du message K. Par contre si P(M+K-1) + P(M+K-2) est supérieure ou égale à P(K) (13) la seule solution consiste à construire deux arbres, un premier arbre où la feuille F(K) est placée à cet endroit et un deuxième arbre en incrémentant de 1 la longueur du mot de code K.

    [0026] Les opérations suivantes consistent alors, si la feuille F(K) est considérée placée au bon endroit, à essayer de placer la feuille F(K+1) à la même profondeur B que la feuille F(K). Mais si la longueur du mot de code K est incrémentée de 1, l'algorithme précédent est à nouveau exécuté jusqu'au moment où la feuille F(K) est effectivement placée. Dans le cas où deux arbres sont à construire l'arbre où la feuille est considérée placée est terminé et les conditions nécessaires à la poursuite de la construction de l'autre arbre sont empilées.

    [0027] Un programme correspondant permettant l'exécution de l'algorithme décrit précédemment est le suivant.



    [0028] L'algorithme précédent peut être perfectionné en limitant la profondeur de codage. En effet si Pmax désigne la profondeur maximale de codage autorisée et si le nombre d'événements N est inférieur ou égal à 2Pmax il est possible de trouver l'arbre optimum qui possède la profondeur Pmax. Il suffit pour obtenir cet arbre d'imposer au message numéro K d'avoir une longueur incrémentée de 1 si le nombre de feuilles possibles au niveau Pmax est inférieur au nombre de messages restant à placer N-K, comme la variable I = M+K est inférieure au nombre N de feuilles à placer, la contrainte précédente est la plus forte. Cette méthode est intéressante car elle correspond à la contrainte minimale nécessaire à une limitation stricte de la profondeur et elle permet de minimiser la perte sur le débit moyen. Le nombre de feuilles possibles à la profondeur Pmax est alors donné par la relation :



    [0029] Un programme correspondant dont les étapes 1 à 18 sont illustrées par l'organigramme de la figure 8 est le suivant :



    [0030] Le respect des contraintes imposées par la recherche du mot de synchronisation à savoir que l'on interdit les suites de plus de Smax "0" dans un arbre et qu'il est introduit des feuilles interdites dans l'arbre retenu, peut être suivi à l'aide d'une représentation particulière suivant un tableau à deux dimensions dans lequel la première dimension verticale représente les niveaux dans l'arbre et la seconde dimension horizontale caractérise la répartition des feuilles-noeuds inter­médiaires et feuilles interdites.

    [0031] Comme représenté aux figures 9A et 9B un chiffre positif caractérise un nombre de feuilles placées côte à côte dans l'ar­bre, un chiffre négatif caractérise un nombre de noeuds intermé­diaires placés côte à côte et la représentation d'un "0" caracté­rise une feuille interdite. Le dernier élément de chaque niveau est un pointeur qui indique en permanence l'adresse du dernier élément placé. Ce pointeur fait partie des conditions empilées. Il permet, au dépilage d'un arbre non terminé, de reprendre les calculs à la feuille utile. Si SI désigne une suite de I"0" (respectivement I"1") inférieure ou égale à Smax, pour réaliser la condition sur les suites des "0" il est nécessaire de connaître en permanence au cours de l'exécution de l'algorithme l'ensemble des valeurs des suites SI au niveau courant B et au niveau suivant B+1. Les suites SI sont des suites de "0" sur lesquelles on essaie de placer les feuilles, les noeuds intermé­diaires, les feuilles interdites. En désignant par SIK la suite de "0" de l'arbre où on essaie de placer la feuille courante de numéro K et en respectant la limitation en profondeur, il est nécessaire de calculer en permanence les variations de FPmax en fonction de SIK, LK (longueur du mot de code courant) et Pmax. Deux fonctions sont alors utilisées. La première fonction FP(SIK,LK,Pmax) calcule la modification du nombre de feuilles possible au niveau Pmax lorsque la feuille K est considérée placée, les feuilles 1 à K-1 étant déjà placées dans l'arbre. La deuxième fonction FNP(SIK,LK,Pmax) permet de calculer la modification du nombre de feuilles possible au niveau Pmax, les feuilles 1 à K-1 étant déjà placées dans l'arbre, la feuille K supposée placée voyant sa longueur incrémentée de 1. Les variations du nombre de feuilles au niveau Pmax ne sont calculées qu'une fois si nécessaire, les résultats correspondants sont utilisés de nombreuses fois au cours du déroulement de l'algorithme. Lorsqu'un mot de code numéro K voit sa longueur incrémentée de 1 les feuilles interdites du niveau courant B ne peuvent plus être alors éliminées et elle contribuent à la perte sur la longueur moyenne du code mais peuvent servir par ailleurs pour la détection d'erreurs. Par contre, les feuilles interdites possibles au niveau B+1 peuvent être éliminées. En effet si ayant placé la feuille numéro K-1 on cherche à placer la feuille numéro K au même niveau sur la suite Smax de 0 une feuille interdite disparaît. Dans le déroulement de l'algorithme toutes les feuilles interdites possibles doivent être considérées.


    Revendications

    1. Procédé de codage adapté à la reconnaissance de mots de synchronisation dans des suites de mots codés à longueurs variables, chaque mot codé correspondant à un événement ou message déterminé d'une suite de messages affectés chacun d'une probabilité d'occurrence, du type consistant à construire un arbre de codage dichotomique comportant un nombre déterminé de feuilles (F1 ... F4) réparties sur des niveaux de priorités (n₁ ... n₄) classés dans un ordre décroissant en partant de la racine de l'arbre vers les feuilles, le nombre de feuilles étant égal au nombre d'événements à coder, caractérisé en ce qu'il consiste à placer les feuilles adjacentes entre elles sur chaque niveau, les feuilles correspondant aux événements les plus probables étant placées à une même extrémité à droite ou à gauche sur chaque niveau, et à interdire dans les mots codés les suites de Smax bits de même valeur, zéro ou un.
     
    2. Procédé selon la revendication 1 caractérisé en ce que la longueur du mot de synchronisation est égale à (3T+2) fois le nombre de bits Smax+1, T désignant le nombre maximum d'er­reurs de transmission de bits tolérés.
     
    3. Procédé selon l'une quelconque des revendications 1 et 2 caractérisé en ce qu'il consiste pour placer une feuille F(K) à un endroit déterminé d'un niveau de priorité (ni) dans l'arbre de codage à comparer sa probabilité P(K) à la somme S des probabilités

    des feuilles restant à placer, pour placer la feuille F(K) à cet endroit si PK est supérieure ou égale à S, à effectuer dans le cas contraire une comparaison de sa probabilité P(K) avec la somme P(M+K-1) + P(M+K-2) des probabilités des feuilles F(M+K-1) et F(M+K-2) situé au niveau de probabilité inférieur pour incrémenter de 1 la longueur du message K, ou conserver la feuille FK à cet endroit.
     
    4. Procédé selon la revendication 3 caractérisé en ce qu'il consiste à lire les codes des événements en partant de la racine et en parcourant les branches de l'arbre jusqu'au moment ou une feuille est rencontrée.
     




    Dessins
















    Rapport de recherche