Este documento presenta una introducción a la codificación de canal. Explica conceptos clave como la capacidad de canal, probabilidad de error, ganancia de codificación y diferentes tipos de codificadores como códigos de bloque lineales y sistemáticos. También introduce conceptos matemáticos como campos de Galois que son útiles para la construcción de códigos.
Codificación de canal: códigos de bloque y convolucionales
1. Tema 4:
Codificación de canal
Dr. José Ramón Cerquides Bueno
Teoría de la Señal y Comunicaciones
Universidad de Sevilla
Transmisión Digital
2. Dr. J.R. Cerquides Universidad de Sevilla 2
Organización
• Introducción
• Ejemplo
• Esquema y definiciones
• Códigos de bloque
• Códigos convolucionales
• Codificación avanzada
• Conclusiones
• Referencias
3. Dr. J.R. Cerquides Universidad de Sevilla 3
Introducción
• El Teorema de Codificación de Canal (Shannon)
establece que:
Es posible enviar (con el código adecuado) con una
probabilidad de error arbitrariamente pequeña si y solo
si H(S)·Rs ≤ C·Rc
• En este tema vamos a abordar el diseño de
codificadores que nos permitan aproximarnos a la
capacidad de canal.
4. Dr. J.R. Cerquides Universidad de Sevilla 4
Ejemplo
• Canal binario simétrico con p=0.15
C = 0,39 bits/uso de canal
• Intentamos mejorar transmitiendo cada símbolo 3
veces y decidiendo por mayoría, con la intención de
obtener una capacidad 0,39·3 = 1,17 bits.
Símbolo 1 Transmitimos 1,1,1
Símbolo 0 Transmitimos 0,0,0
• La nueva probabilidad de error será:
3p2(1-pe)+p3=0,0607
que corresponde a una capacidad
C = 0,6696 bits < 1,17
¿Por qué?
5. Dr. J.R. Cerquides Universidad de Sevilla 5
Ejemplo
• La capacidad sería 3C = 1,17 bits si los símbolos de
entrada al canal fuesen equiprobables:
X = 000,001,010,011,100,101,110,111
pero nosotros sólo hemos empleado dos símbolos
posibles de entrada:
X= 000,111.
• Al reducir la entropía a la entrada no puede
alcanzarse la capacidad de canal.
6. ESQUEMA DE CODIFICADOR Y
DECODIFICADOR PARA UN CANAL DMC
DEFINICIONES
(n,k) Descripción usada para referirse al código
k Tamaño de las palabras del alfabeto de entrada o
Longitud de las palabras de entrada
n Tamaño de las palabras código o
Longitud del código
R=k/n Tasa de transmisión (o tasa de código)
r=n-k Redundancia
Esquema y definiciones
Dr. J.R. Cerquides Universidad de Sevilla 6
7. Definiciones (continuación)
Dr. J.R. Cerquides Universidad de Sevilla 7
• Alfabeto de entrada: B
Compuesto por las 2k posibles combinaciones
de bits a la entrada.
• Palabra código: c
Cada una de las 2k posibles combinaciones
de n bits a la salida del codificador
• Diccionario de códigos: C
Conjunto de todas las palabras código
• Distancia mínima de un código:
Un código es capaz de corregir hasta erroresmin 1 / 2d
8. Ejemplo revisitado
Dr. J.R. Cerquides Universidad de Sevilla 8
• Canal BSC con p=0,15
• Vamos a diseñar un codificador con n=3k, R=1/3,
para diferentes valores de k.
• Elegimos las 2k palabras código de n bits que más se
diferencien entre sí. Por ejemplo, para k=2, podrían
ser:
• En la decodificación elegimos como palabra código
correcta aquella que presente mayor similitud con
alguna de ellas.
9. Ejemplo revisitado
Dr. J.R. Cerquides Universidad de Sevilla 9
• A cada una de las 2k palabras código les corresponde
un conjunto de 2n/2k = 22k símbolos recibidos.
• Por ejemplo para el vector todo ceros:
• La pe de la palabra código será ahora:
pe=1-((1-p)6+6·p(1-p)5+9·p2(1-p)4 )=0.1178
resultado un tanto SORPRENDENTE pues la
probabilidad de error en la transmisión de 2 bits de
información es menor que en 1 !!!
10. Resultado para diferentes valores de n
• La gráfica muestra la
evolución de la pe de
una palabra código a
medida que n aumenta.
• Si n=1500 pe≈ 3·10-3,
k=500 pe,bit ≈ 6·10-6
• Relación entre C y
R=0.3333
• Para p=0.13 (C=0.4426) la
caída es más rápida
• Para p=0.17 (C=0.3423) la
caída es muy lenta
• Para p=0.19 (C=0.2985) la
pe sube cuando n
aumenta.
Dr. J.R. Cerquides Universidad de Sevilla 10
11. Más definiciones
• Probabilidad de error de una palabra código:
• Probabilidad de error media de un código:
• Probabilidad de error máxima de un código:
• Podemos realizar una transmisión fiable a una tasa R si
• existe una secuencia de códigos (n, ⌈nR⌉) (donde ⌈nR⌉ denota el entero más
pequeño que es mayor que nR) tal que la probabilidad de error máxima,
pe(máx, n), tiende a cero cuando n tiende a infinito.
• Formalmente, si para todo ε > 0 existe una secuencia de códigos (n, ⌈nR⌉) y
un valor n0 para el que Pe(máx, n) < ε cuando n > n0.
Dr. J.R. Cerquides Universidad de Sevilla 11
12. Retos
• En realidad querríamos encontrar una FORMA
SISTEMÁTICA de construir códigos para los que:
• La codificación sea sencilla y de bajo coste computacional
• La decodificación sea sencilla y de bajo coste computacional
• La pe decaiga lo más rápidamente posible a medida que aumenta n
• Los decodificadores pueden ser:
• Soft (o blandos) si hacen uso de la señal a la salida del
demodulador, antes del detector.
• Hard (o duros) si hacen uso de la señal a la salida del
detector.
Dr. J.R. Cerquides Universidad de Sevilla 12
Los decodificadores blandos utilizan distancias euclídeas,
mientras que los duros utilizan distancias de Hamming
13. • Sistema binario BPSK, B={0,1}, C={00,11} (repetición)
• Símbolos {-1,+1}
Comparación decodificador blando y duro
• Decodificador HARD
• dmin=2 corrige hasta 0
errores y detecta hasta 1
• pe,palabra=p2+2·p·(1-p) ≈ 2p
• Decodificador SOFT
• No detecta ni corrige errores.
Dr. J.R. Cerquides Universidad de Sevilla 13
Bit 1
Bit 2
11
00
1
1
-1
-1
Bit 1
Bit 2
11
00
1
1
-1
-1
0 0
2 2s bE E
p Q Q
N N
0 0
2 2s b
e
E E
p Q Q
N N
0 0
2
2 2s bE E
p Q Q
N N
14. Ganancia de codificación
• Diferencia entre la relación SNR necesaria para
alcanzar cierta BER con y sin sistema de codificación.
• En el caso anterior:
• BER sin codificador
• BER con decodificador HARD
• Ganancia de codificación (BER = 10-6) Tabla Q(x)
Dr. J.R. Cerquides Universidad de Sevilla 14
6
0 0 sin cod
2
10 11,3b bE E
Q
N N
6
HARD
0 0 HARD
2 10 24 3,26b bE E
Q G dB
N N
Sin codificador Codificador HARD Codificador SOFT
0
2 bE
Q
N 0
2 bE
Q
N
0
2 bE
Q
N
6
SOFT
0 0 SOFT
2
10 11,3 0b bE E
Q G dB
N N
15. • Sistema binario BPSK, B={00,01,10,11}, C={000,011,101,110}
• Sin codificador
• Para BER = 10-6
Otro ejemplo
Dr. J.R. Cerquides Universidad de Sevilla 15
-1
0
1
-1
0
1
-1
-0.5
0
0.5
1
101
000
110011
Bit 1
Bit 2
Bit 3
0 0
2 2s bE E
BER Q Q
N N
6
0 0 sin cod
2
10 11,3b bE E
Q
N N
16. BER y Ganancia de codificación
• Decodificador HARD
• Para BER = 10-6
• GHARD = -2,14dB
• Decodificador SOFT
• Para BER = 10-6
• GSOFT = 1 dB
Dr. J.R. Cerquides Universidad de Sevilla 16
,
0 0
3 2
2 4
3 3
3
s b
s b
e s
E E
E E
p Q Q
N N
0 0
4 4
3 3
3 3
b bE E
BER Q Q
N N
,
0 0
3 2
4 8
3 3
3
s b
s b
e s
E E
E E
p Q Q
N N
0
82
3
3 3
bE
BER Q
N
6
0 0
4
3 10 18,52
3
b b
HARD
E E
Q
N N
6
0 0
8
2 10 8,95
3
b b
SOFT
E E
Q
N N
La ganancia del decodificador SOFT es siempre mayor que
la del decodificador HARD
17. Comparación decodificadores
Dr. J.R. Cerquides Universidad de Sevilla 17
-1
0
1
-1
0
1
-1
-0.5
0
0.5
1
101
000
110011
Bit 1
Bit 2
Bit 3
-1
0
1
-1
0
1
-1
-0.5
0
0.5
1
101
000
110011
Bit 1
Bit 2
Bit 3
Decodificador HARD Decodificador SOFT
18. Ancho de banda ocupado
• Al utilizar un codificador de tasa R, o bien:
• El ancho de banda se incrementa en un factor 1/R
• O bien la velocidad de información se reduce en un factor R
Dr. J.R. Cerquides Universidad de Sevilla 18
Donde antes transmitíamos k símbolos/s
ahora transmitimos n=k/r símbolos/s
SUBE EL BW NECESARIO
Si seguimos transmitiendo a la misma velocidad
sólo k de cada n son información
SE REDUCE LA TASA BINARIA
DE INFORMACIÓN
19. Códigos de bloque
• Los códigos de bloque estructuran los datos en
BLOQUES de longitud FIJA a los que añaden
REDUNDANCIA.
• Todos los ejemplos vistos son códigos de bloque.
• Nos van a interesar especialmente los códigos de
bloque LINEALES y, entre ellos, los códigos
CÍCLICOS.
• Vamos a necesitar conceptos de campos de Galois
(GF) (Galois Field).
Dr. J.R. Cerquides Universidad de Sevilla 19
k
DATOS
n-k
REDUNDANCIA
20. Campos de Galois
• Cuerpo finito, campo finito o campo de
Galois (Évariste Galois) es un CUERPO que contiene
un número finito de elementos.
• EJEMPLO: GF(2)
a+b = (a+b)2
a·b = (a·b)2
• EJEMPLO: GF(3)
a+b = (a+b)3
a·b = (a·b)3
Dr. J.R. Cerquides Universidad de Sevilla 20
+ 0 1 2
0 0 1 2
1 1 2 0
2 2 0 1
× 0 1 2
0 0 0 0
1 0 1 2
2 0 2 1
+ 0 1
0 0 1
1 1 0
× 0 1
0 0 0
1 0 1
21. Códigos bloque lineales
• Un código bloque es lineal (n,k) si es un s.e.v. de
dimensión k de GF(2n).
• PROPIEDADES:
• Cualquier combinación lineal de palabras código es palabra
código.
• La palabra 0 pertenece al código
• La dmin de un código lineal coincide con el menor número
de 1’s en una palabra código (excepto la 0)
• Todas las palabras código poseen otra a distancia dmin
Dr. J.R. Cerquides Universidad de Sevilla 21
Las k palabras código forman un s.e.v.
22. EJEMPLO
• k = 2, n=6
Dr. J.R. Cerquides Universidad de Sevilla 22
La
palabra 0
pertenece
al código
dmin = 4
011011
+110110
101101
23. Generación de un código lineal
• Para generar un código lineal basta con una MATRIZ
GENERADORA G que contenga k vectores linealmente
independientes c = b· G
• EJEMPLO: Código (5,2)
• Cualquier matriz que contenga una base (n-k vectores) del
complemento ortogonal a G es una MATRIZ DE
COMPROBACIÓN DE PARIDAD, H.
c· HT = 0 pues G· HT = 0 y HT· c = 0 pues H· GT = 0
• EJEMPLO:
• Además, H es una matriz generadora de un código (n,n-k)
Dr. J.R. Cerquides Universidad de Sevilla 23
0 0 1 1 1
1 1 1 0 0
G
0 0 0 0 0 0 0
0 1 1 1 1 0 0
1 0 0 0 1 1 1
1 1 1 1 0 1 1
b c
b c
b c
b c
1 1 0 0 0
0 1 1 1 0
0 0 0 1 1
H
1
1 1 0 0 0 01
0 1 1 1 0 00
0 0 0 1 1 01
1
24. Códigos SISTEMÁTICOS
• Los procesos de codificación y decodificación se
simplifican si el código es SISTEMÁTICO (los
primeros k bits de la palabra código coinciden con la
palabra a codificar).
• Para que ocurra G debe tomar una forma especial:
G = [Ik | P] H = [PT | In-k]
• EJEMPLO:
Dr. J.R. Cerquides Universidad de Sevilla 24
1 0 1 0 1
0 1 0 1 1
G
1 0 1 0 0
0 1 0 1 0
1 1 0 0 1
H
25. Síndrome
• El síndrome es r· HT, que será 0 si r es una palabra código.
• Si r = c+e entonces r· HT = e· HT
• Como el síndrome depende del error, podemos elaborar una
tabla para cada síndrome, consignando el patrón de error
asociado (el que menos errores contenga).
• EJEMPLO:
• Los síndromes 111 y 101 corresponden a más de un error.
Existen dos posibilidades: reportar la palabra recibida como
errónea o realizar la decodificación con más de un error.
• Un código es PERFECTO si en la tabla no queda ningún
síndrome por asignar.
Dr. J.R. Cerquides Universidad de Sevilla 25
1 0 0
1 1 0
0 1 0
0 1 1
0 0 1
T
H
0 0 0 0 1 0 0 1
0 0 0 1 0 0 1 1
0 0 1 0 0 0 1 0
0 1 0 0 0 1 1 0
1 0 0 0 0 1 0 0
Error Síndrome
26. Capacidad correctora (cota de Hamming)
• Un código binario de longitud n con capacidad de
corregir (t) errores debe tener una redundancia (r)
r = n-k ≥ log2 V(n,t)
• V(n,t) es la esfera de Hamming de radio t (número
de vectores que están a distancia ≤ t)
• EJEMPLO: ¿Es posible corregir 3 errores en un
código con (12,5)?
r = 7 ≥ log2 299 = 8,22 NO
• La igualdad r = log2 V(n,t) CÓDIGO PERFECTO.
Dr. J.R. Cerquides Universidad de Sevilla 26
0
,
t
j
n
V n t
j
3
0
12
12,3 1 12 66 220 299
j
V
j
28. EJEMPLO
• Si c = [0 1 0 0 1] c(x) = x+x4
xc(x) = x2+x5 = 1· (x5+1) + (x2+1) [1 0 1 0 0]
• Para generar un código cíclico se parte de un
polinomio GENERADOR g(x) de grado r=n-k.
• Las palabras código se obtienen multiplicando b(x)
por g(x) (código NO SISTEMÁTICO).
• EJEMPLO:
g(x) = 1+x2+x3+x4 r=4. Si k=3, n=7
b = [0 1 1] b(x)=x+x2
c(x)=g(x)b(x) = x+x3+x4+x5+x2+x4+x5+x6
c(x) = x+x2+x3+x6 c = [0 1 1 1 0 0 1]
Dr. J.R. Cerquides Universidad de Sevilla 29
Cociente Resto
29. Método SISTEMÁTICO
• Existe una forma de obtención alternativa que da
lugar a un código SISTEMÁTICO (aunque la
redundancia precede a los datos).
• El procedimiento es:
• Obtener d(x) = (b(x)· xr)g(x)
• Construir c(x) = b(x)· xr + d(x)
• EJEMPLO:
g(x) = 1+x2+x3+x4
b = [0 1 1] b(x)=x+x2
d(x) = (x5+x6)g(x) = x3+1
c(x)=b(x)· xr + d(x)=1+x3+x5+x6 c = [1 0 0 1 0 1 1]
Dr. J.R. Cerquides Universidad de Sevilla 30
DatosRedundancia
Así trabaja MATLAB
30. EJEMPLO
• g(x) = 1+x2+x4 r=4, k=2, n=6
• Obtener todas las palabras código.
• DETALLES:
• Cualquier palabra código rotada es otra palabra código.
• En este caso se obtiene un código SISTEMÁTICO.
• La matriz generadora sería:
Dr. J.R. Cerquides Universidad de Sevilla 31
Entrada b(x) c(x) Salida
00 0 0 000000
01 x x+x3+x5 010101
10 1 1+x2+x4 101010
11 1+x 1+x+x2+x3+x4+x5 111111
1 0 1 0 1 0
0 1 0 1 0 1
G
31. Decodificación de un código cíclico
• Para calcular el síndrome s(x) basta obtener el resto
de la división entre la palabra recibida y el
polinomio generador g(x).
• Si el polinomio recibido es r(x)=c(x)+e(x),
s(x)=(r(x))g(x)=(c(x)+e(x))g(x)=(e(x))g(x)
• EJEMPLO:
g(x) = 1+x2+x3+x4
b = [0 1 1] c = [0 1 1 1 0 0 1]
Si r = [0 1 1 1 0 0 0] r(x) = x+x2+x3
s(x)=x+x2+x3 e(x)=x6 c’ = [0 1 1 0 0 1]
Dr. J.R. Cerquides Universidad de Sevilla 32
Es necesario disponer de una
tabla de síndromes, aunque
existen otras alternativas
32. Tabla de síndromes para códigos cíclicos
Dr. J.R. Cerquides Universidad de Sevilla 33
Error e(x) s(x) Síndrome
1000000 1 1 1000
0100000 x x 0100
0010000 x2 x2 0010
0001000 x3 x3 0001
0000100 x4 1+x2+x3 1011
0000010 x5 1+x+x2 1110
0000001 x6 x+x2+x3 0111
Si el último bit del
síndrome es 1, al
desplazar (multiplicar
por x) habrá que
recalcular el residuo.
Error e(x) s(x) Síndrome
0001000 x3 x3 0001
0000100 x4 1+x2+x3 1011
0000001 x6 x+x2+x3 0111
Esta propiedad acorta
la tabla y los tiempos
de búsqueda.
33. Códigos BCH y RS
• Algunas de las familias de códigos cíclicos más famosos son los
códigos BCH (Bose Chaudhuri Hocquenghem) o RS (Reed
Solomon).
• Códigos BCH
• Más conveniente para errores independientes.
• Parámetros:
• Longitud del bloque: n=2m-1 m>=3
• Bits de información: k≥n-m· t
• Distancia mínima: d≥2· t+1
• Códigos RS
• Variante del BCH, operando con símbolos no binarios.
• Más apropiada para ráfagas de errores
• Parámetros:
• Bits por símbolo: m
• Longitud del bloque: n=2m-1 símbolos
• Símbolos de información: k=n-2t símbolos
• Capacidad correctora: t símbolos
• Distancia mínima: d≥(2· t+1) símbolos
Dr. J.R. Cerquides Universidad de Sevilla 34
34. Ejemplo de diseño y uso BCH (MATLAB)
• m=4, t=1 n=15, k=15-4· t=11
Código (15,11)
• Hay otras alternativas:
bchnumerr(15)
• Generación del polinomio:
bchgenpoly(15,11)
g(x) = 1 + x3 + x4
• Codificación de los datos:
bchenc(gf([01010101010],1),15,11)
c=[01010101010 0100]
• Introducción de un error:
r=c;r(1)=1
r=[11010101010 0100]
• Decodificación:
[d,num]=bchdec(r,15,11)
d=[01010101010 0100]
• m=4, t=2 n=15, k=15-4· t=7
Código (15,7)
• Generación del polinomio:
bchgenpoly(15,7)
g(x) = 1 + x+x2 + x4 + x8
• Codificación de los datos:
bchenc(gf([0101010],1),15,7)
c=[0101010 00011010]
• Introducción de dos errores:
r=c;r(1)=1;r(2)=0;
r=[1001010 00011010]
• Decodificación:
[d,num]=bchdec(r,15,7)
d=[0101010]
• Introducción de tres errores:
r=c;r(1)=1;r(2)=0;r(3)=1;
• Decodificación:
[d,num]=bchdec(r,15,7)
d=[1011110]
Dr. J.R. Cerquides Universidad de Sevilla 35
35. Campos de Galois y códigos RS
• Para generar un GF(2m) es necesario encontrar un polinomio
binario PRIMITIVO pm(x) que verifique:
• pm(x) es IRREDUCIBLE o PRIMO (no factorizable)
• El menor n para que pm(x) divida a xn+1 es 2m-1
• EJEMPLO:
• Para m=2 n=3, p2(x) = x2+x+1, pues x3+1 = p2(x)(x+1)
• Una vez tenemos pm(x) podemos generar el GF. Sus elementos
serán 0,α0, α1, α2… αn-1, definidos como en el ejemplo.
• EJEMPLO:
• Para m=3 n=7, p3(x) = x3+x+1
Dr. J.R. Cerquides Universidad de Sevilla 36
Elemento Polinomio Código Elemento Polinomio Código
0 0 000 (0) α3 α+1 011 (3)
α0 1 001 (1) α4 α2+α 110 (6)
α1 α 010 (2) α5 α2+α+1 111 (7)
α2 α2 100 (4) α6 α2+1 101 (5)
36. Ejemplo de diseño y uso RS (MATLAB)
• m=3 bits/símbolo GF(23) {n=7, k=5, t=1} símbolos
• Generación del polinomio: [g,t]=rsgenpoly(7,5)
g(x)=x2+α4x+α3
• Codificación de los datos: rsenc(gf([0 0 0 0 3],3),7,5)
• b = [0 0 0 0 3] = [000 000 000 000 011] b(x) = α3 = α+1. Para que sea
sistemático: (xn-k·b(x))g(x) nos da la redundancia
c = [0 0 0 0 3 1 5] = [000 000 000 000 011 001 101]
• Introducción de un error de símbolo (un bit):r=c;r(1)=4;
• Decodificación: d=rsdec(r,7,5)
d = [0 0 0 0 3]
• Introducción de un error de símbolo (3 bits):r=c;r(1)=7;
• Decodificación: d=rsdec(r,7,5)
d = [0 0 0 0 3]
• Introducción de un error en dos símbolos:r=c;r(1)=4;r(2)=1;
• Decodificación: d=rsdec(r,7,5)
d = [4 1 0 0 5]
Dr. J.R. Cerquides Universidad de Sevilla 37
3 2 7 6
3 2 2
2 4 3 2 4 3
( ) 1 1
x x
c x x x
x x x x
37. Modificando códigos
• A partir de un código se pueden derivar versiones
modificadas. Esto permite generar códigos…
• AUMENTADOS: (n,k)(n,k+1) r↓
• EXPURGADOS: (n,k)(n,k+1) r↑
• EXTENDIDOS: (n,k) (n+1,k) r↑
• PERFORADOS. (n,k) (n-1,k) r↓
• ALARGADOS: (n,k) (n+1,k+1), r =
• ACORTADOS: (n,k) (n-1,k-1) r=
Dr. J.R. Cerquides Universidad de Sevilla 38
38. Implementación de codificadores. Ejemplo
• Es posible implementar los codificadores:
• Software (DSPs, μC, μP…)
• Hardware (FPGA, VHDL…)
• EJEMPLO: Producto b(x)g(x)
• Polinomio generador: g(x) = x3 + x + 1
• Mensaje: b = [0 1 0 1] b(x) = x2 + 1
• c(x) = g(x)b(x) = x5 + x2 + x + 1 c = [0 1 0 0 1 1 1]
Dr. J.R. Cerquides Universidad de Sevilla 39
42. Prestaciones de los códigos bloque
• Procedimiento a seguir:
• Determinar dmin:
• Menor número de 1’s de una palabra código distinta de 0
• Calcular Pe,s y BER:
1/k·Pe,s ≤ BER ≤ Pe,s
• Obtener la ganancia de codificación
• El procedimiento es habitualmente muy complejo,
especialmente para valores de n elevados y requiere
simulación.
Dr. J.R. Cerquides Universidad de Sevilla 43
,
0
1 1
t
n ii
e s
i
n
P p p
i
43. Simulaciones
Dr. J.R. Cerquides Universidad de Sevilla 44
BER obtenida por distintos códigos BCH para un canal con
pe = 0,0563 C = 0,6874
Tasa máxima dada
una BER
● Hamming (7,4)
○ BCH (15,k)
▼BCH(31,k)
□ BCH(63,k)
► BCH(127,k)
·-· BCH (255,k)
--- BCH (511,k)
▬ BCH (1023,k)
44. Simulaciones
Dr. J.R. Cerquides Universidad de Sevilla 45
BER obtenida por distintos códigos BCH para un canal con
modulación BPSK, en función de la SNR
·-· BCH (63,30)
··· BCH (127,64)
--- BCH (255,131)
·-· BCH (511,259)
▬ BCH (1023,513)
45. Aplicaciones de los códigos de bloque
• Almacenamiento de
datos: CD, DAT,
DVD…
• En CD se utilizan dos
versiones acortadas de
un (255,251): uno interno
(32,28) y uno externo
(28,24). En conjunto
pueden corregir ráfagas
de hasta 4000 bits
erróneos (2,5 mm).
• En DVD el
procedimiento es
semejante, con código
interno (208,192) y
externo (182,172).
Dr. J.R. Cerquides Universidad de Sevilla 46
46. Aplicaciones de los códigos de bloque (II)
• Códigos de barras:
• PDF-417, MaxiCode,
Datamatrix, QR y
Aztec usan códigos
Reed-Solomon a
diferentes niveles.
Dr. J.R. Cerquides Universidad de Sevilla 47
47. Aplicaciones de los códigos de bloque (III)
• Comunicaciones:
• G-709 (interfaz para
transporte óptico)
emplea un código
RS (255,239).
• DVB-T, C, S utiliza
un código RS
(204,188) resultado
de acortar el anterior
(255,239).
• Las imágenes
enviadas por el
Voyager utilizan
codificación RS.
Dr. J.R. Cerquides Universidad de Sevilla 48
48. Conclusiones
• A los códigos BCH/RS les cuesta acercarse a la
capacidad del canal, y necesitarían valores de n muy
elevados retardos, complejidad.
• Son códigos competitivos para R≈ 1 y tamaños
pequeños (n<1000).
• Los algoritmos de decodificación sólo son correctos
siempre que el número de errores no exceda de la
capacidad correctora del código.
• Los códigos BCH son más adecuados para errores
aislados/dispersos
• Los códigos RS son más adecuados para errores en
ráfaga.
Dr. J.R. Cerquides Universidad de Sevilla 49
49. Codificación convolucional
• A diferencia de los códigos bloque, los codificadores
convolucionales involucran un sistema con memoria.
• EJEMPLO: (D hace las veces de retardo ==z-1)
Dr. J.R. Cerquides Universidad de Sevilla 50
0 0 0 0
0 03
1 03 2
1 3
1
1
C l B l B l B l
C D D D B D
C D D D D B D
50. Notación matricial
• Agrupando los términos en matrices:
• EJEMPLO:
• Definiciones:
• Mt = memoria total del código = número de retardos
• K = restricción de longitud = máxima longitud de la
respuesta impulsional = 1 + máxima potencia de D
• En los ejemplos anteriores: Mt = 3 y 2, K = 4 y 2
Dr. J.R. Cerquides Universidad de Sevilla 51
0 1 0 3 3 2
1 1C D C D B D D D D D D
D D DC B G
G(D) = Matriz
generadora del
código
1
1 1
D D D
D
D
G
51. Diagrama de estados
• Puede representarse un diagrama de estados para el
codificador.
Dr. J.R. Cerquides Universidad de Sevilla 52
53. Bits de flushing
• En ocasiones, cuando la transmisión es en ráfagas,
además de especificar el estado inicial, conviene
especificar también el estado final, para aumentar la
capacidad correctora.
• Para ello se añaden bits 0 de “flushing” que lleven al
codificador nuevamente al estado inicial ψ0.
• EJEMPLO:
Dr. J.R. Cerquides Universidad de Sevilla 54
3 bits de flushing llevan al codificador al estado ψ0
54. Decodificación por Viterbi
• El decodificador funciona igual que en el MLSD pero
tomando distancia de Hamming en lugar de
probabilidades para evaluar los pesos de cada rama.
• EJEMPLO:
n=2, k=1, Mt = 2, K=3
Dr. J.R. Cerquides Universidad de Sevilla 55
2 2
1 1D D D DG
56. Códigos catastróficos
• Si existe algún bucle que pueda generar una
secuencia de 0’s indefinida a la salida sin ser el bucle
ψ0 ψ0 decimos que el código es CATASTRÓFICO.
• El problema es que, si un error nos llevase a esa
situación, una secuencia de 00’s continuada no nos
devuelve a ψ0 sino que nos mantiene en el bucle
erróneo.
• EJEMPLO:
Dr. J.R. Cerquides Universidad de Sevilla 57
57. Códigos perforados (punctured codes)
• En ocasiones, para reducir la redundancia, se
“perfora” la salida del código, eliminando bits de
salida según un patrón específico.
• La perforación realizada se indica mediante una
matriz P
• EJEMPLO: Se perfora un código de tasa r=1/2 con un
patrón de perforación P = [1 1 0; 1 0 1]. Nueva tasa r=3/4
Dr. J.R. Cerquides Universidad de Sevilla 58
1 0 1
1 1 0
0 0 1
P
Cada fila indica cómo se
perfora una salida: 0 indica
que el bit se elimina
El nº de columnas indica el período de repetición del patrón
59. Prestaciones de los códigos convolucionales
• Los mejores códigos se obtienen
experimentalmente.
• Es difícil determinar sus
prestaciones de forma analítica.
Se suele recurrir a simulación.
• Aunque los ejemplos se han
utilizado decodificadores
“hard” se obtienen mejores
prestaciones con
decodificadores “soft”. Esto
añade poca complejidad al
Viterbi, pues basta sustituir
distancias de Hamming por
distancias euclídeas.
• La complejidad del
decodificador crece
exponencialmente con la
memoria, por lo que se suelen
utilizar secuencias cortas.
Dr. J.R. Cerquides Universidad de Sevilla 60
● BCHs r ≈ ½, n=7..1023
○ Convolucionales r=1/2, K=6..12
60. Aplicaciones de los códigos convolucionales
• Concatenados con
códigos de bloque,
por ejemplo en
DVB-S, DVB-C,
DVB-T o en GSM,
con r variable.
• Radioenlaces y
comunicaciones vía
satélite.
• Bucle de abonado:
ADSL2+ y SHDSL.
Dr. J.R. Cerquides Universidad de Sevilla 61
61. Codificación avanzada
• Los problemas que encontramos en la utilización de
los codificadores propuestos son fundamentalmente
los siguientes:
• BCH y RS: El problema es el elevado número de palabras
que no son capaces de corregir los algoritmos eficientes de
decodificación (Berlekamp-Massey).
• EJEMPLOS:
• Código BCH (15,11)(Hamming): t=1
• Código BCH (15,7): t=2
• Código BCH (63,45): t=3
Dr. J.R. Cerquides Universidad de Sevilla 62
11
15
2 1 15Palabras decodificables
1
Total palabras posibles 2
Perfecto
7
15
2 1 15 105Palabras decodificables
0,47
Total palabras posibles 2
45
63
2 1 63 1953 39711Palabras decodificables
0,16
Total palabras posibles 2
62. Codificación avanzada (II)
• Códigos convolucionales
• La complejidad y la memoria requeridas por el decodificador
de Viterbi aumenta exponencialmente con la longitud de los
códigos y el número de estados.
• Existen otros tipos de decodificadores cuyo coste de
decodificación es lineal. Esto da lugar a los “códigos
turbo” y los códigos LDPC (low density parity
check).
• Aunque son subóptimos en distancia mínima, al
poder incrementar la longitud sin problemas,
permiten aproximarse a la capacidad de canal.
• Debido a la complejidad los algoritmos quedan fuera
del ámbito de la asignatura.
Dr. J.R. Cerquides Universidad de Sevilla 63
63. Simulaciones
Dr. J.R. Cerquides Universidad de Sevilla 64
Prestaciones
turbocódigos
(decodif. “soft”)
Prestaciones
códigos
convolucionales
(decodif. “soft”)
64. Simulaciones
Dr. J.R. Cerquides Universidad de Sevilla 65
Prestaciones
LDPC
“soft” ──
“hard” - - -
Prestaciones
códigos
convolucionales
“soft” ──
“hard” - - -
65. Simulaciones
Dr. J.R. Cerquides Universidad de Sevilla 66
● BCHs r ≈ ½, n=7..1023
x Conv. r=1/2, K=6..12
○ LDPC r=1/2, n=100…20000
66. Aplicaciones de turbocódigos
• Telefonía móvil: UMTS,
HSPA, EV-DO y LTE.
• MediaFLO, un sistema
terrestre de distribución de
televisión.
• Canal de retorno vía satélite:
DVB-RCS
• Mars Reconnaissance
Orbiter (NASA).
• IEEE 802.16 (WiMAX)
Dr. J.R. Cerquides Universidad de Sevilla 67
67. Aplicaciones códigos LDPC
• G.hn/G.9960 (networking
over power lines, phone
lines and coaxial cable)
• 802.3an (10 Giga-bit/s
Ethernet over Twisted pair)
• CMMB(China Multimedia
Mobile Broadcasting)
• DVB-S2 / DVB-T2 / DVB-
C2 (2nd Generation)
• DMB-T/H
• WiMAX
• IEEE 802.11n-2009 (Wi-Fi
standard)
Dr. J.R. Cerquides Universidad de Sevilla 68
68. Conclusiones
• Las técnicas de codificación permiten mejorar las
prestaciones de los canales para aproximarse al
límite de Shannon o capacidad de canal.
• Hemos comenzado presentado los fundamentos de
la codificación.
• Hemos analizado los codificadores y decodificadores
de bloque lineales, para pasar luego a los códigos
cíclicos (RS y BCH fundamentalmente).
• Introdujimos los códigos convolucionales y la técnica
de decodificación por Viterbi.
• Finalmente hemos visto técnicas de codificación
avanzada: turbo códigos y códigos LDPC.
Dr. J.R. Cerquides Universidad de Sevilla 69
69. Referencias
• Comunicaciones digitales,
• Antonio Artés, Fernando Pérez, cap. 9.2.3 y 10 completo.
• Communication Systems, 4th ed.
• Simon Haykin, John Wiley & Sons, 2000.
• Capítulo 10.
• Digital Communications, 4th ed.
• John G. Proakis, McGraw-Hill, 2001.
• Capítulos 7 y 8
• Digital Communications
• Sklar
• Capítulos 6 y 7
Dr. J.R. Cerquides Universidad de Sevilla 70