Qu‘est-ce que le FEC et comment l‘utiliser ?
881 2021-12-28

Qu‘est-ce que le FEC et comment l‘utiliser ?

Dans les systèmes de communication, la théorie de l‘information et la théorie du codage,
la correction d‘erreur directe (FEC) est un 
technique utilisée pour contrôler les erreurs de
transmission de données sur des canaux de communication peu fiables ou bruyants.
FEC doit ses débuts aux travaux pionniers de Claude Shannon en 1948 sur la communication
fiable 
sur des canaux de transmission bruyants. Le thème central de Shannon était que si le
taux de signalisation du système est 
inférieure à la capacité du canal, une communication
fiable peut être obtenue si l‘on choisit un codage approprié 
et techniques de décodage.


La figure 1 montre un modèle simplifié d‘un système codé. Les données de transmission brutes
sont représentées sous la forme d‘une séquence de messages u. L‘encodeur FEC transforme le
message u en un mot de code v en ajoutant des données redondantes, avant d‘entrer dans le
canal peu fiable ou bruyant. La redondance ajoutée permet au décodeur récepteur de détecter un
nombre limité d‘erreurs pouvant survenir dans le message, et souvent de corriger ces erreurs sans
retransmission, dans le but que la séquence de message d‘origine u soit récupérée avec succès à
la sortie du décodeur .

Types de codes FEC

Deux types de codes structurellement différents sont couramment utilisés aujourd‘hui : les codes
par blocs et les codes convolutifs. Le codeur pour un code de bloc divise la séquence d‘informations
u en blocs de message de k bits d‘information (symboles) chacun et transforme chaque message u
indépendamment en un mot de code, n bits (symboles) v. Le rapport R = k/n est appelé le taux de code.
Les bits redondants (symboles), n-k, fournissent au code la capacité de combattre le bruit de canal.

Un paramètre important d‘un code de bloc est la distance minimale, dmin, c‘est la distance entre deux
mots de code les plus proches, qui représente le nombre minimum de changements de données requis
pour transformer un mot de code valide en un autre. Ce paramètre détermine les capacités de détection
et de correction d‘erreurs d‘un code. Normalement, un code FEC est capable de détecter des erreurs
dmin-1 par mot de code et de corriger jusqu‘à (dmin-1)/2 erreurs par mot de code. Par exemple, le code
Reed Solomon, RS (544, 514, t=15, m=10), est un code de bloc avec 514 symboles d‘information et 30
symboles redondants. Chaque symbole a 10 bits. Sa distance minimale est dmin=31 de sorte qu‘il peut
corriger jusqu‘à (dmin-1)/2=15 erreurs de symboles par mot de code.

Le codeur pour un code convolutif accepte également des blocs de k bits de la séquence d‘informations
u et produit une séquence codée v de blocs de n symboles. Cependant, chaque bloc codé dépend non
seulement du bloc de message de k bits correspondant à la même unité de temps mais également de
m blocs de message précédents. Outre les bits redondants, n-k, une redondance supplémentaire est
ajoutée en augmentant l‘ordre de mémoire m du code pour obtenir une transmission fiable sur un canal
bruyant.

Sur la base de la théorie de Shannon [1], plus le mot de code est long, plus la capacité de correction
d‘erreurs qu‘il fournit est puissante. Cependant, la complexité de codage augmente également avec la
longueur du mot de code. Pour obtenir un meilleur compromis entre la complexité et les performances
de codage, il existe quelques techniques pour construire des codes longs et puissants à partir de codes
de composants courts, tels que des codes de produits, des codes concaténés et des codes entrelacés.

La figure 2 montre un code produit bidimensionnel formé de deux codes C1 (n1, k1) et C2 (n2, k2) avec
une distance minimale dmin1 et dmin2, respectivement. Chaque ligne du code produit C1 x C2 est un
mot de code dans C1 et chaque colonne est un mot de code dans C2. Le code produit est capable de
corriger toute combinaison d‘erreurs (dmin1dmin2-1)/2.

La figure 3 montre un code concaténé à un niveau avec un code externe C1 (n1, k1) avec une distance
minimale dmin1 et un code interne C2 (n2, k2) avec une distance minimale dmin2. La distance minimale
de leur concaténation est d‘au moins dmin1dmin2.

La figure 4 montre la transmission d‘un code entrelacé. Étant donné un code bloc (n,k) C, il est possible
de construire un code bloc (λn, λk) par entrelacement, c‘est-à-dire simplement en disposant λ mots de code
dans C en λ lignes d‘un tableau rectangulaire, puis en transmettant la colonne du tableau en colonne. Même
si la distance minimale du code entrelacé est toujours dmin en tant que code individuel C, elle peut diviser
les erreurs de longue rafale en λ mots de code différents.

Des codes FEC plus avancés, tels que les turbocodes [2] et les codes de contrôle de parité à faible densité
(LDPC) [3], ont été inventés par des universitaires et adoptés par l‘industrie au cours des dernières décennies
pour approcher la limite de Shannon (ou capacité de canal). [1]. Cependant, leurs excellents gains de
performances sont normalement payés par une grande complexité de codage/décodage et une latence.

Il y a quatre facteurs critiques à prendre en compte lors de la sélection d‘un code FEC et d‘un schéma de codage appropriés pour un système de communication particulier. Pour maintenir un débit élevé ou éviter d‘augmenter
de manière significative le débit de liaison, le débit de code doit être élevé. Pour compenser la perte de canal ou
assouplir les exigences de rapport signal sur bruit (SNR) ou de taux d‘erreur sur les bits (BER) au niveau des
trancheurs de décision dans le récepteur, un gain de codage important est souhaitable. Cependant, les inconvénients
de la FEC sont la latence de codage et la complexité de codage qui augmenteront le temps de transmission et la puissance/le coût du système.

Applications FEC aux systèmes de liaison série

Le paysage de la technologie FEC pour les systèmes de communication filaire est illustré à la figure 5 (de [4]) et
comprend à la fois des liaisons électriques et optiques. Pour les liaisons électriques, l‘industrie a récemment intégré
les mises à jour du format de signalisation du format de signalisation à deux niveaux (NRZ) au format de
signalisation à quatre niveaux (PAM4) pendant la transition des débits de données de liaison de 25 Gb/s à 50 Gb/s.

L‘un des principaux défis de conception de PAM4 SerDes est la pénalité de détection de PAM4 sur NRZ,
d‘environ 9,54 dB ou même plus si l‘on considère la dégradation de la marge horizontale due aux croisements
de signaux à plusieurs niveaux. Par conséquent, FEC devient une partie importante de la solution système PAM4
pour compenser cette pénalité de détection. RS (544, 514, 15) FEC, également connu sous le nom de KP4 FEC,
a été largement adopté dans les liaisons PAM-4. Il fournit des systèmes Ethernet 200/400G avec un gain de
codage jusqu‘à 7 dB, tout en ajoutant une pénalité de latence de centaines de nanosecondes (ns) comme coût.
Les codes FEC à gain élevé tels que les codes de contrôle de parité à faible densité (LDPC) et les codes de
produit Turbo (TPC) sont normalement pris en compte pour les systèmes de transmission optique longue distance
avec le coût d‘une latence et d‘une complexité de codage plus importantes. Pour les applications à faible latence,
des codes de blocs simples courts avec un gain et une complexité de codage modérés pourraient être utilisés.