Você está na página 1de 69

Transmisión Digital

Tema 4:
Codificación de canal

Dr. José Ramón Cerquides Bueno


Teoría de la Señal y Comunicaciones
Universidad de Sevilla
Organización
• Introducción
• Ejemplo
• Esquema y definiciones
• Códigos de bloque
• Códigos convolucionales
• Codificación avanzada
• Conclusiones
• Referencias

Dr. J.R. Cerquides Universidad de Sevilla 2


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.

Dr. J.R. Cerquides Universidad de Sevilla 3


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é?

Dr. J.R. Cerquides Universidad de Sevilla 4


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.

Dr. J.R. Cerquides Universidad de Sevilla 5


Esquema y definiciones
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
Dr. J.R. Cerquides Universidad de Sevilla 6
Definiciones (continuación)
• 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 d min 1 / 2 errores

Dr. J.R. Cerquides Universidad de Sevilla 7


Ejemplo revisitado
• 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.

Dr. J.R. Cerquides Universidad de Sevilla 8


Ejemplo revisitado
• 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 !!!

Dr. J.R. Cerquides Universidad de Sevilla 9


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


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


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.

Los decodificadores blandos utilizan distancias euclídeas,


mientras que los duros utilizan distancias de Hamming

Dr. J.R. Cerquides Universidad de Sevilla 12


Comparación decodificador blando y duro
• Sistema binario BPSK, B={0,1}, C={00,11} (repetición)

2 Es 2 Eb
• Símbolos {-1,+1}  p Q Q
N0 N0
• Decodificador HARD • Decodificador SOFT
• dmin=2  corrige hasta 0 • No detecta ni corrige errores.
errores y detecta hasta 1 2 Es 2 Eb
• pe,palabra=p2+2·p·(1-p) ≈ 2p pe Q Q
N0 N0
2 Es Eb
p 2Q 2Q
N0 N0
Bit 2
Bit 2 1 11

1 11

1 -1 1 Bit 1
-1 Bit 1 00
-1
00
-1

Dr. J.R. Cerquides Universidad de Sevilla 13


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:
Sin codificador Codificador HARD Codificador SOFT

• BER sin codificador


2 Eb Eb 2 Eb
Q  2Q Q
N0 N0 N0
• BER con decodificador HARD
• Ganancia de codificación (BER = 10-6) Tabla Q(x)
2 Eb 6 Eb
Q 10 11,3
N0 N0 sin cod

Eb 6 Eb
2Q 10 24 GHARD 3, 26dB
N0 N0 HARD

2 Eb 6 Eb
Q 10 11,3 GSOFT 0dB
N0 N0 SOFT
Dr. J.R. Cerquides Universidad de Sevilla 14
Otro ejemplo
• Sistema binario BPSK, B={00,01,10,11}, C={000,011,101,110}

011 Bit 2 110


1

0.5

0
101

-0.5
Bit 3
Bit 1
-1
1 1

0 0
000
-1 -1
2 Es 2 Eb
• Sin codificador BER Q Q
N0 N0
2 Eb 6 Eb
• Para BER = 10-6 Q 10 11,3
N0 N 0 sin cod

Dr. J.R. Cerquides Universidad de Sevilla 15


BER y Ganancia de codificación
• Decodificador HARD • Decodificador SOFT
2 Es 4 Eb 4 Es 8 Eb
pe , s 3Q 3Q pe , s 3Q 3Q
N0 3N 0 N0 3N 0
3 Es 2 Eb 3 Es 2 Eb

4 Eb 4 Eb 2 8 Eb
BER 3Q 3Q BER 3Q
3N 0 3N 0 3 3N 0
• Para BER = 10-6 • Para BER = 10-6
4 Eb 6 Eb 8Eb 6 Eb
3Q 10 18,52 2Q 10 8,95
3N 0 N0 HARD
3N0 N0 SOFT

• GHARD = -2,14dB • GSOFT = 1 dB

La ganancia del decodificador SOFT es siempre mayor que


la del decodificador HARD
Dr. J.R. Cerquides Universidad de Sevilla 16
Comparación decodificadores

Decodificador HARD Decodificador SOFT

011 Bit 2 110


011 Bit 2 110 1
1

0.5
0.5

0
0
101
101
-0.5
-0.5 Bit 3
Bit 3 Bit 1
Bit 1
-1
-1 1 1
1 1

0 0
0 0 000
000
-1 -1
-1 -1

Dr. J.R. Cerquides Universidad de Sevilla 17


Ancho de banda ocupado
• Al utilizar un codificador de tasa R, o bien:
• El ancho de banda se incrementa en un factor 1/R

Donde antes transmitíamos k símbolos/s


ahora transmitimos n=k/r símbolos/s
SUBE EL BW NECESARIO

• O bien la velocidad de información se reduce en un factor R

Si seguimos transmitiendo a la misma velocidad


sólo k de cada n son información
SE REDUCE LA TASA BINARIA
DE INFORMACIÓN

Dr. J.R. Cerquides Universidad de Sevilla 18


Códigos de bloque
• Los códigos de bloque estructuran los datos en
BLOQUES de longitud FIJA a los que añaden
REDUNDANCIA.

k n-k
DATOS 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


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 + 0 1 × 0 1
0 0 1 0 0 0
1 1 0 1 0 1

• EJEMPLO: GF(3)
a+b = (a+b)3 + 0 1 2 × 0 1 2
a·b = (a·b)3 0 0 1 2 0 0 0 0
1 1 2 0 1 0 1 2
2 2 0 1 2 0 2 1

Dr. J.R. Cerquides Universidad de Sevilla 20


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).

Las k palabras código forman un s.e.v.

• 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


EJEMPLO
• k = 2, n=6

La
palabra 0
pertenece 011011
al código +110110
101101
dmin = 4

Dr. J.R. Cerquides Universidad de Sevilla 22


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) b 0 0 c 0 0 0 0 0
0 0 1 1 1 b 0 1 c 1 1 1 0 0
G
1 1 1 0 0 b 1 0 c 0 0 1 1 1
b 1 1 c 1 1 0 1 1
• 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
1
• EJEMPLO:
1 1 0 0 0 1 1 0 0 0 1 0
H 0 1 1 1 0 0 1 1 1 0 0 0
0 0 0 1 1 0 0 0 1 1 1 0
1
• Además, H es una matriz generadora de un código (n,n-k)
Dr. J.R. Cerquides Universidad de Sevilla 23
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:
1 0 1 0 1 1 0 1 0 0
G H 0 1 0 1 0
0 1 0 1 1
1 1 0 0 1

Dr. J.R. Cerquides Universidad de Sevilla 24


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: Error Síndrome
1 0 0 0 0 0 0 1 0 0 1
1 1 0 0 0 0 1 0 0 1 1
HT 0 1 0 0 0 1 0 0 0 1 0
0 1 1 0 1 0 0 0 1 1 0
0 0 1 1 0 0 0 0 1 0 0

• 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
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)
t n
V n, t
j 0 j

• EJEMPLO: ¿Es posible corregir 3 errores en un


código con (12,5)?
3 12
V 12,3 1 12 66 220 299
j 0 j
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
Códigos PERFECTOS
• Sólo existen 4 códigos perfectos:
• Trivial: n=k, r=0, t=0
• Repetición: n impar, k=1, t=(n-1)/2
• Golay: n=23, k=11, t=3
• Hamming: n=2r-1, k=n-r, t=1
• EJEMPLO: Código de Hamming (r=3  n=7, k=4)
sistemático 0 1 1 1 1 0 0
H 1 0 1 1 0 1 0
1 1 0 1 0 0 1
Todas las
combinaciones
restantes 1 0 0 0 0 1 1
0 1 0 0 1 0 1
G
0 0 1 0 1 1 0
0 0 0 1 1 1 1

Dr. J.R. Cerquides Universidad de Sevilla 27


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]
Cociente Resto
• 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


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]
Redundancia Datos

Así trabaja MATLAB


Dr. J.R. Cerquides Universidad de Sevilla 30
EJEMPLO
• g(x) = 1+x2+x4  r=4, k=2, n=6
• Obtener todas las palabras código.
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

• 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:
1 0 1 0 1 0
G
0 1 0 1 0 1

Dr. J.R. Cerquides Universidad de Sevilla 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]

Es necesario disponer de una


tabla de síndromes, aunque
existen otras alternativas

Dr. J.R. Cerquides Universidad de Sevilla 32


Tabla de síndromes para códigos cíclicos
Error e(x) s(x) Síndrome
1000000 1 1 1000
Si el último bit del
0100000 x x 0100
síndrome es 1, al
0010000 x2 x2 0010
desplazar (multiplicar
por x) habrá que
0001000 x3 x3 0001
recalcular el residuo.
0000100 x4 1+x2+x3 1011
0000010 x5 1+x+x2 1110
0000001 x6 x+x2+x3 0111

Error e(x) s(x) Síndrome


Esta propiedad acorta
0001000 x3 x3 0001
la tabla y los tiempos
0000100 x4 1+x2+x3 1011
de búsqueda.
0000001 x6 x+x2+x3 0111

Dr. J.R. Cerquides Universidad de Sevilla 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
Ejemplo de diseño y uso BCH (MATLAB)
• m=4, t=1  n=15, k=15-4· t=11 • m=4, t=2  n=15, k=15-4· t=7
 Código (15,11)  Código (15,7)
• Hay otras alternativas: • Generación del polinomio:
bchnumerr(15) bchgenpoly(15,7)

• Generación del polinomio: g(x) = 1 + x+x2 + x4 + x8


bchgenpoly(15,11)
• Codificación de los datos:
g(x) = 1 + x3 + x4 bchenc(gf([0101010],1),15,7)
• Codificación de los datos: c=[0101010 00011010]
bchenc(gf([01010101010],1),15,11)
• Introducción de dos errores:
c=[01010101010 0100] r=c;r(1)=1;r(2)=0;

• Introducción de un error: r=[1001010 00011010]


r=c;r(1)=1
• Decodificación:
r=[11010101010 0100] [d,num]=bchdec(r,15,7)

• Decodificación: d=[0101010]
[d,num]=bchdec(r,15,11)
• Introducción de tres errores:
d=[01010101010 0100] 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


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
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)

Dr. J.R. Cerquides Universidad de Sevilla 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 
3 2 7 6
x 3 x
2 4 3 2 4 3
c( x) x 2 1 x 2
1
x x x x
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


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


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


EJEMPLO (cont.)

Dr. J.R. Cerquides Universidad de Sevilla 40


Implementación de codificadores
• EJEMPLO: (xn-kb(x))g(x)
• Polinomio generador: g(x) = x3 + x + 1
• Mensaje: b = [0 1 0 1]  b(x) = x2 + 1
• r(x) = (xn-kb(x))g(x)
• c(x) = xn-kb(x)+(xn-kb(x))g(x) = x5 + x3 + x2  c = [0 1 0 1 1 0 0]

Dr. J.R. Cerquides Universidad de Sevilla 41


EJEMPLO (cont.)

Resto = x2

Dr. J.R. Cerquides Universidad de Sevilla 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:
t n i n i
Pe, s 1 p 1 p
i 0 i
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


Simulaciones
● Hamming (7,4)
○ BCH (15,k)
▼BCH(31,k)
□ BCH(63,k)
► BCH(127,k)
·-· BCH (255,k)
--- BCH (511,k)
▬ BCH (1023,k)

Tasa máxima dada


una BER

BER obtenida por distintos códigos BCH para un canal con


pe = 0,0563  C = 0,6874
Dr. J.R. Cerquides Universidad de Sevilla 44
Simulaciones
·-· BCH (63,30)
··· BCH (127,64)
--- BCH (255,131)
·-· BCH (511,259)
▬ BCH (1023,513)

BER obtenida por distintos códigos BCH para un canal con


modulación BPSK, en función de la SNR
Dr. J.R. Cerquides Universidad de Sevilla 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


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


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
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


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)

0 0 0 0
C l B l B l 1 B l 3

0 0
C D D3 D 1 B D
1 0
C D D3 D2 D 1 B D

Dr. J.R. Cerquides Universidad de Sevilla 50


Notación matricial
• Agrupando los términos en matrices:
0 1 0
C D C D B D D3 D 1 D3 D2 D 1

C D B D G D
• EJEMPLO: G(D) = Matriz
generadora del
código
D 1 D D
G D
D 1 1

• 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
Diagrama de estados
• Puede representarse un diagrama de estados para el
codificador.

Dr. J.R. Cerquides Universidad de Sevilla 52


Trellis del codificador

Dr. J.R. Cerquides Universidad de Sevilla 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:

3 bits de flushing llevan al codificador al estado ψ0


Dr. J.R. Cerquides Universidad de Sevilla 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


G D D2 1 D2 D 1

Dr. J.R. Cerquides Universidad de Sevilla 55


Ejemplo de decodificación (dura)
• Estado inicial y final (flushing): ψ0 = 00
• Secuencia de entrada: 110101
• Secuencia codificada: 1110100001000111
• Secuencia recibida: 1010100101010111
10 10 10 01 01 01 01 11
1 2 3 4 3 4 4 6
ψ0 ψ0 ψ0 ψ0 ψ0 ψ0 ψ0 ψ0 ψ0
1 3 4 3 4
2
4 2 4 4 3
ψ1 ψ1 ψ1 2
ψ1 4
ψ1 3 ψ1
3 4 3
4 3 2 3 3

ψ2 ψ2 ψ2 ψ2 ψ2 ψ2
1
1 2 4 5 4 4 5 4
4
3 2 2 2
ψ3 ψ3 ψ3 ψ3 ψ3

1 1 0 1 0 1 Flushing
Dr. J.R. Cerquides Universidad de Sevilla 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


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 1 0  1
Cada fila indica cómo se
perfora una salida: 0 indica
que el bit se elimina
1 1  0
P
   
0 0  1
El nº de columnas indica el período de repetición del patrón

• 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


Ejemplo de decodificación con perforado
• Estado inicial y final (flushing): ψ0 = 00
• Secuencia de entrada: 110101, P=[10;11]
• Secuencia codificada: 11 X0 10 X0 01 X0 01 X1
• Secuencia recibida: 10 X0 10 X1 01 X1 01 X1
10 X0 10 X1 01 X1 01 X1
1 1 2 3 2 3 3 4
ψ0 ψ0 ψ0 ψ0 ψ0 ψ0 ψ0 ψ0 ψ0
1 2 2 2 2
2
3 1 3 3 2
ψ1 ψ1 ψ1 2
ψ1 3
ψ1 2 ψ1
2 3 3
4 2 2 2 2

ψ2 ψ2 ψ2 ψ2 ψ2 ψ2
1
1 2 3 3 4 3 3 4
4
3 2 2 2
ψ3 ψ3 ψ3 ψ3 ψ3

1 1 0 0 0 1 Flushing
Dr. J.R. Cerquides Universidad de Sevilla 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
● BCHs r ≈ ½, n=7..1023
exponencialmente con la
○ Convolucionales r=1/2, K=6..12
memoria, por lo que se suelen
utilizar secuencias cortas.

Dr. J.R. Cerquides Universidad de Sevilla 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


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
Palabras decodificables 211 1 15
15
1 Perfecto
Total palabras posibles 2
• Código BCH (15,7): t=2

Palabras decodificables 27 1 15 105


0, 47
Total palabras posibles 215
• Código BCH (63,45): t=3
Palabras decodificables 245 1 63 1953 39711
63
0,16
Total palabras posibles 2
Dr. J.R. Cerquides Universidad de Sevilla 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


Simulaciones

Prestaciones
códigos
convolucionales
(decodif. “soft”)

Prestaciones
turbocódigos
(decodif. “soft”)

Dr. J.R. Cerquides Universidad de Sevilla 64


Simulaciones
Prestaciones
códigos
convolucionales
“soft” ──
“hard” - - -

Prestaciones
LDPC
“soft” ──
“hard” - - -

Dr. J.R. Cerquides Universidad de Sevilla 65


Simulaciones

● BCHs r ≈ ½, n=7..1023
x Conv. r=1/2, K=6..12
○ LDPC r=1/2, n=100…20000

Dr. J.R. Cerquides Universidad de Sevilla 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


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


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


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

Você também pode gostar