500x400px|miniatura|Figura 1: Esquema del procés de radiodifusió digital La protecció contra errors o FEC (Forward Error Correction en anglès), és una tècnica utilitzada en telecomunicacions per simular un canal de transmissió quasi lliure d'errors en canals de radiodifusió, que són medis hostils on existeix un alt risc d'error deguts a conseqüència del soroll o la distorsió introduïts pel medi com per les no linealitats en el mateix sistema de transmissió.Miguel Calvo Ramón, Ramón Martínez Rodríguez-Osorio Codificación de Canal , ETSITJosé M. Martínez Codificación de Canal, Universitat Autònoma de Madrid Això és equivalent a dir que, gràcies a aquesta tècnica, podem assegurar que el senyal obtingut al final del procés serà igual (o pràcticament igual) a l'enviat des de l'emissor. De la mateixa manera, la protecció contra errors és un d'entre els diversos elements que formen el procés de la radiodifusió digital.
La tècnica consisteix en una sèrie de modificacions sobre el senyal principal (les dades útils) abans de ser transmès que, un cop arriba al receptor alterat pel soroll del canal, són decodificades i ajuden a detectar els errors i, per tant, a minimitzar a gran escala la taxa d'errors per bit. Aquestes modificacions es duen a terme en un ordre determinat i a nivells de profunditat diferents. De manera que al receptor es segueix l'ordre invers per descodificar i anar corregint errors fins a les capes superiors on, eventualment, disposarem del senyal original enviat per l'emissor. A grans trets, les modificacions consisteixen en dos conceptes, on s'aprofundirà més endavant:Constantino Pérez Vega Codificación de Canal
Sincronisme alt entre emissor i receptor. Redundància a nivells de byte i de bit. Tots dos ajuden a reduir la taxa d'errors de bit (BER) en recepció.
Evitar la retransmissió miniatura|Figura 2: Model multicast Els blocs de protecció contra errors intenten evitar les retransmissions en models de telecomunicacions on la retransmissió és impossible, com ara una connexió simplex (unidireccional entre emissor i receptor) o costosa (on, per exemple, els enviaments es produeixen des d'un únic emissor a molts receptors i sol·licitar retransmissions col·lapsaria l'emissor i perjudicaria molt el sistema). Els blocs de protecció contra errors, doncs, són afegits a les dades que es volen enviar de manera que, gràcies a aquests, el receptor és capaç d'obtenir taxes d'error de bit molt baixes (gairebé nul·les) sense necessitar retransmissió.
No obstant això, en diversos models de telecomunicacions diferents als esmentats abans, la retransmissió no comporta cap problema. El receptor pot detectar que hi ha hagut un error i sol·licitar la retransmissió del paquet de dades. De fet, existeixen codis híbrids on s'inclouen uns codis FEC a les dades i si la taxa d'errors es detecta molt elevada, es commuta a un sistema de sol·licitud de retransmissió automàtica (ARQ - Authomatic Repeat-Request en anglès)
Sincronisme miniatura|Figura 3: Codi de Marques Bifase (BMC) El sincronisme del receptor és un factor important a l'hora de mantenir unes taxes d'error de bit baixes. En radiodifusió de seqüències binàries (digital), les dades s'envien segons la modulació digital que es trobi més adequada (depenent de les taxes de bit desitjades, l'amplada de banda disponible, etc.). Depenent d'aquesta modulació, un cert nombre de bits s'agrupen en símbols i totes les diferents combinacións possibles amb aquest nombre de bits es mapen en el que s'anomena constel·lació. El sincronisme no és altra cosa que el fet que el receptor sàpiga amb alta precisió on comença i on acaba cada símbol (en quins instants de temps). Per cada possible símbol l'emissor envia un senyal diferenciable dels altres durant un temps que s'anomena temps de símbol. Quan, després d'un temps de símbol, canvia la seqüència binària que hem d'enviar, veiem un canvi en el senyal transmès que s'anomena transició. Quan es dona el cas on s'ha de transmetre consecutivament un mateix símbol no hi ha transicions durant un cert temps. La falta de transicions perjudica la sincronització del receptor, per tant, el que es fa sovint en telecomunicacions és forçar les transicions de manera que, durant aquests períodes on es transmet el mateix, el receptor pugui mantenir el sincronisme.
Un exemple bastant simple d'una codificació que forci les transicions és el codi de marques bifase (BMC-Biphaseal Mark Code, en anglès), que podem veure a la figura 3.
En l'estàndard de radiodifusió digital de televisió DVB, el bloc de protecció contra errors (FEC) inclou un sistema que força les transicions per mantenir el sincronisme del receptor: laleatoritzador.
Redundància 400x325px|miniatura|Figura 4: Com el soroll afecta els paquets de dades La redundància és la tècnica que, juntament amb el sincronisme, s'aplica abans de les transmissions per protegir les dades contra errors. Aquesta tècnica consisteix a afegir informació que ja existeix en el paquet de dades (repetir-la). El propòsit de realitzar aquesta redundància de dades és promitjar el soroll de canal. Si enviem les dades sense redundància, per cada element no podem saber si en recepció el soroll tindrà un valor sufucientment baix com perquè el receptor el pugui identificar com és degut. Sabent que el soroll és gaussià de mitja zero, per tant que els seus valors més probables són propers a zero, és poc probable que aquest sigui prou alt com per perjudicar al receptor a l'hora de decidir la dada enviada.
S'ha de dir, això no obstant, que per fer certes les premises anteriors és necessari treballar amb uns paràmetres de SNR (senyal/soroll, signal to noise ratio en anglès) mínims. Això significa que la potència del senyal transmès ha de ser significativament superior que la del soroll del canal, ja que sinó aquest perjudicaria l'enviament de dades no només quan tingués uns valors alts (poc probable), sinó també quan tingués valors mitjans (molt probable), fent de la redundància una tècnica inútil. Assumint aquesta condició, si enviem cada unitat de dades més d'una vegada, els valors que predominim seran gairebé unívocament els que s'hagin enviat realment. Més endavant però, es veurà que molts cops quan el soroll adquireix un valor alt, aquest perjudica a ràfegues de bits consecutius fins a estabilitzar-se, pel qual s'apliquen unes determinades tècniques. Per fer el procés de detecció-correcció d'errors mitjançant redundància es fan servir uns blocs a l'emissor anomenats codificadors i uns blocs anomenats descodificadors en el receptor.
Compromís velocitat/BER Tal com s'ha esmentat anteriorment la redundància s'utilitza per detectar i corregir errors. Segons el tipus de canal i de protocol, s'utilitzen diferents codis FEC amb diferents proporcions de redundància/dades útils.
És obvi que a més redundància s'afegeixi, més reduïda serà la taxa d'errors per bit (BER) i, per tant, serà una transmissió amb menys pèrdues. Com a contrapartida, però, com més redundància s'afegeixi també s'estarà reduint la velocitat útil, ja que s'enviaran menys dades "úniques" per unitat de temps. Tot i que la velocitat de transmissió (bits per segon) es pot optimitzar, acaba estant limitada per lamplada de banda disponible i lenergía de transmissió.
Per tant, sempre existeix un compromís entre la taxa d'error per bit (BER) i la taxa de bits útils (bit rate). És un cas relacionat amb les configuracions de modulacions digitals on com més bits per símbol més velocitat s'aconsegueix, però a la vegada, més energía de bit es necessita per mantenir les mateixes taxes d'error (figura 6). La màxima capacitat del canal ve determinada matemàticament pel Teorema de Shannon-Hartley, on hi prenen part l'amplada de banda y la relació senyal/soroll.
Com a conclusió es pot dir que, en tot cas, el que es guanya per una banda es perd per l'altra. Tot i així, per a cada configuració i determinat per les seves propietats, hi ha una relació òptima que identifica el grau de redundància més adient que es pot aplicar. De fet, en moltes configuracions, s'utilitza un detector del BER al final de les transmissións que serveix com a remesa pel mateix codi FEC que s'utilitza a l'emissor, de manera que s'acaba trobant el grau de redundància òptim.
Codis de bloc i convolucionals 600x360px|miniatura|Figura 6: Format de la concatenació en FEC Existeixen dues famílies segons la naturalesa de treball dels codis FEC (codis de bloc i codis convolucionals), que a la vegada determinen dos algoritmes diferents de correcció d'errors (decisió abrupta i decisió suau respectivament).
Els codis de bloc treballen sobre trames de dades de longitud de bits fixa (a nivell de byte) i s'implementen normalment amb algoritmes de decisió abrupta. El fet d'anomenar-se de decisió abrupta és perquè funcionen amb un resultat all or nothing (tot o res), ja que eventualment es redueix a decidir si tot un bloc de dades es correspon a un o a un altre, de manera que afecta a molts bits la decisió que es prengui. El més conegut d'aquesta família és el codi Reed-Solomon (inventat per Irving S. Reed i Gustave Solomon), degut al seu ampli ús en formats com el DBV (de radiodifusió), DVD o CD (d'emmagatzemament), entre molts altres.
Els codis convolucionals, en canvi, treballen sobre trames de longitud definides a lliure albir (a nivell de bit) i s'implementen amb algoritmes de decisió suau. Aquests algoritmes aporten una eficiència molt major que els utilitzats en els codis de bloc (algoritmes de decisió abrupta), ja que es basen en senyals discrets. El més conegut d'aquesta família és el descodificador de Viterbi (inventat per Andrew J.Viterbi), degut al seu ús massiu en tota mena de protocols de telecomunicacions.
Molts codis fec com els LDPC (Low-density Parity-check en anglès) introduits per primer cop per Robert G. Gallager en 1960 o els turbocodisEnrie Armengol Roig, J.A. Delgado-Penín LOS "TURBO-CODIGOS", NUEVOS SUBSISTEMAS DE CODIFICACIÓN DE CANAL PARA MEJORAR LA TRANSMISION DIGITAL DE GRAN CAPACIDAD s'implementen a base de repetides iteracions de codis de decisió suau (soft-decision codes), i aporten una eficiència molt alta i s'utilitzen abundantment avui dia.
Els codis FEC aplicats normalment, són una concatenació de codificadors de bloc amb codificadors convolucionals (de Viterbi, majoitáriament). Aquests blocs conjunts de codis de bloc més codis convolucionals s'anomenen supercodificadors (en l'emissor) i superdecodificadors (en el receptor). Aquests blocs són formats per uns codificadors/descodificadors externs i interns (outer coders i inner coders, respectivament, en anglès). Els externs corresponen als codis de bloc (referits al fet que executen la seva funció fora del canal) i els interns als codis convolucionals (treballen dins del canal de transmissió).
Model de blocs de FEC: L'estàndard DVB 400x200px|miniatura|Figura 7: Estructura de FEC a l'estàndard DVB L'estàndard DVB (utilitzat per la radiodifusió actualment en un gran nombre de països) utilitza el contenidor audiovisual MPEG. Aquest format utilitza dos tipus de corrents de dades: el corrent de transport (TS - Transport Stream en anglès) i el corrent de programa (PS - Program stream, en anglès). Aquest últim, el corrent de programa, utilitza canals amb una taxa d'errors molt baixes (CDs, DVDs, dispositius de memòria, etc.) i, per tant, la mida dels paquets és bastant gran. En canvi, el corrent de transport utilitza mides de paquets reduïts i està ideat per radiocomunicacions, on el risc d'errors és més alt. DVB, com a sistema de radiodifusió treballa amb paquets de dades de transport stream i té el seu propi codi de protecció contra errors. En aquest hi formen part diferents blocs i cada un té una funció diferenciada, però que es complementen entre si per aportar baixes taxes d'errors de bit.
Aleatoritzador
miniatura|Figura 8: Aleatoritzador additiu (utilitzat en DVB)