[0001] La présente invention concerne un procédé de reconnaissance de mots de synchronisation
dans des suites de mots codés à longueurs variables. Elle s'applique notamment à la
réalisation 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'information 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éthodes différentes. Une première méthode
consiste à ignorer le type d'information qui est transmis et à placer un mot de synchronisation
après un nombre déterminé N de bits utilisés dans la transmission. 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 synchronisation 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 connus. 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 erreurs. 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 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 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 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.
[0006] L'invention sera mieux comprise et d'autres caractéristiques 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 synchronisation dans une séquence
de mots binaires consiste à comparer entre elles le poids de plusieurs séquences
de bits successives, 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 synchronisation,
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 intercalé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 Q
K = MS
K 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 synchronisation 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 synchronisation, 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 important 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 synchronisation. De cette façon toutes
les suites binaires qui se terminent 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ïncident avec T+1 bits à 1 du mot de synchronisation,
la contribution 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 synchronisation, 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 emprunté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 structure 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 affecté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 affecté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énements 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 racine de l'arbre. Suivant l'algorithme de Huffman
les N probabilités des messages ou feuilles sont classées dans un ordre croissant
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éordonnées dans un ordre croissant, puis les opérations précédentes sont
recommencées jusqu'au moment où le nombre de probabilité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éplacement 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 complexité 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 croissant 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 à 2
Pmax 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 intermé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'arbre, 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.
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'erreurs
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é
(n
i) 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.