comunicaciones digitales codificación de...
TRANSCRIPT
Turbo Códigos
Comunicaciones Digitales Codificación de Canal
Curso 2009/10 Codificación de Canal 2
Bibliografía Turbo códigos !! S. B. Wicker. Error Control Systems. Prentice Hall 1995 !! L. Hanzo, T.H. Liew y B.L. Yeap. Turbo Coding, Turbo
Equalization and Space-Time Coding. Wiley 2002 !! C. Berrou y A. Glavieux. 'Near optimum error correcting
coding and decoding: Turbo codes'. IEEE Transactions on Communications, vol. 44, pp. 1261-1271, 1996
Curso 2009/10 Codificación de Canal 3
Problema
!! Límite Shannon: k!!, n!! !! Códigos bloques: aumentar n y k (n/k fijo)
!! Aumenta la distancia !! Decodificadores no prácticos (2k palabras código)
!! Códigos convolucionales: aumentar memoria !!Mejora su distancia libre !! Decodificador óptimo no es práctico.
Curso 2009/10 Codificación de Canal 4
Problema
Codificador lineal n,k
Resolución Óptima: inabordable
Curso 2009/10 Codificación de Canal 5
Alternativa
Cod conv.
Entrelazador Cod conv.
Solución Óptima abordable
Curso 2009/10 Codificación de Canal 6
Turbo códigos
!! Descubiertos en 1993. !! Concatenación de dos códigos
convolucionales sistemáticamente recursivos.
!! Empleando un entrelazador (interleaver). !! Decodificación
!!Óptima pero muy costosa !! Subóptima, pero abordable (iterativa).
Curso 2009/10 Codificación de Canal 7
Turbo códigos paralelo
Entrelazador Código
Convolucional 2
Código Convolucional 2
k n1
n2
n1+n2
Curso 2009/10 Codificación de Canal 8
Turbo códigos Serie
Entrelazador Código
Convolucional 2
Código Convolucional 2
k n1
n2
n2
Curso 2009/10 Codificación de Canal 9
Idea de la codificación Turbo
!! Codificador complicado !! Concatenación de codificadores simples
!! Entrelazado: errores de un codificador en distintas palabras código del otro !! Codificador externo (n1,k1) !! Codificador interno (n2,k2) !! Entrelazador k2 x n1
Curso 2009/10 Codificación de Canal 10
Idea de la codificación Turbo
!! Códigos Bloque (para ejemplo) serie
Curso 2009/10 Codificación de Canal 11
!! Detección errores: iterar el proceso !! Problema: realimentación de errores !! Solución: decodificación blanda
Idea de la decodificación Turbo !!o : errores recibidos !!x : errores introducidos !! por decodificador interno !!+: errores introducidod !! por decodificador externo
Curso 2009/10 Codificación de Canal 12
Turbo códigos
!! Generalmente emplean codificadores convolucionales sistemáticos y recursivos
!! Entrelazador: básico en el diseño !! Determina la ganancia de codificación !! Entrelazadores seudoaleatorios
!! Decodificación: Soft-In, Soft-Out (SISO) !! Información intrínseca: datos recibidos !! Información extrínseca: entre decodificadores
Curso 2009/10 Codificación de Canal 13
Decodificación !! Decodificación blanda empleando el
algoritmo BCJR (tipo MAP) para el primer codificador.
!! Información se pasa por el interleaver. !! Decodificación blanda empleando el
algoritmo BCJR (tipo MAP) para el segundo codificador.
!! Vuelta al primer decodificador.
Curso 2009/10 Codificación de Canal 14
Algoritmo BCJR (MAP) !! Decodificadores
!! Aceptan entradas blandas !! Proporcionan salidas blandas
!! Entradas del decodificador !! Información intrínseca
!!Bits sistemáticos !!Bits redundancia (de cada decodificador)
!! Información extrínseca !!Cociente de verosimilitud (Likelihood ratio)
Curso 2009/10 Codificación de Canal 15
Algoritmo MAP: definiciones
!! Secuencia de información: M=2m símbolos !! Se transmiten N símbolos uk {0,1, M-1}
!! Codificador uk ! xk !! Canal: AWGN
!! xk ! yk = xk + nk
!! Decodificador !! yk !
Curso 2009/10 Codificación de Canal 16
Algoritmo MAP: planteamiento
!! Evalúa las probabilidades a posteriori !! Ak,m=P(uk=m|y) !! Decisión: Símbolo con máximo Ak,m
!! Algoritmo MAP: calcula Ak,m
!! Bayes !! P(a,b)=P(a|b)P(b) !! P(a,b|c)=P(a|b,c)P(b|c)
Curso 2009/10 Codificación de Canal 17
Algoritmo MAP !! Diagrama de Trellis para símbolos
0
S-2
S-1
0
S-2
S-1
!!u1 !!x1 !!u1=0
!!u1=1 !!u1=M-1
0
S-2
S-1
0
S-2
S-1
!!uk !!xk !!uk=0
!!uk=1 !!uk=M-1
0
S-2
S-1
0
S-2
S-1
!!uN !!xN !!uN=0
!!uN=1 !!uN=M-1
!!yk !!y+ !!y- !!gk !!bk !!ak-1
Curso 2009/10 Codificación de Canal 18
Algoritmo MAP: Probabilidades
!! Probabilidades a posteriori
Curso 2009/10 Codificación de Canal 19
Algoritmo MAP
Curso 2009/10 Codificación de Canal 20
Algoritmo MAP !! Calcular g(z,s)=N(xk,!2)P(uk=m) !! Calcular ak-1(z) (estado inicial j)
!! Calcular bk(s)
!! Calcular
Curso 2009/10 Codificación de Canal 21
Log Likelihood Ratio (LLR) !! Logaritmo del cociente de verosimilitud
!! Signo: decisión !!Magnitud: probabilidad de acierto
Curso 2009/10 Codificación de Canal 22
Algoritmo BCJR !! Estima probabilidades condicionales
!! Decisión: máximo a posteriori (MAP)
!! Estados del codificador convolucional
Curso 2009/10 Codificación de Canal 23
Algoritmo BCJR
!! Términos de los sumatorios del cociente !! Expresiones MAP
Curso 2009/10 Codificación de Canal 24
Resumen BCJR !! Entradas al decodificador
!! Salidas del canal yk !! Información a priori L(uk)
!! Algoritmo !! Calcular gk(z,s) ! bk(s) y ak-1(z) !! Calcular L(uk)
Curso 2009/10 Codificación de Canal 25
Turbo Decodificador
DEC 1
interleaver DEC 2
Curso 2009/10 Codificación de Canal 26
Turbo Decodificador
DEC 1
interleaver DEC 2
Curso 2009/10 Codificación de Canal 27
Turbo Decodificador
DEC 1
interleaver DEC 2
MAP BCJR
Curso 2009/10 Codificación de Canal 28
Turbo Decodificador
DEC 1
interleaver DEC 2
MAP BCJR
Curso 2009/10 Codificación de Canal 29
Turbo Decodificador
MAP BCJR MAP BCJR
DEC 1
interleaver DEC 2
Curso 2009/10 Codificación de Canal 30
Turbo Decodificador
MAP BCJR MAP BCJR
DEC 1
interleaver DEC 2
Deinter- leaver
Curso 2009/10 Codificación de Canal 31
Turbo Decodificador
MAP BCJR MAP BCJR
DEC 1
interleaver DEC 2
Deinter- leaver
Curso 2009/10 Codificación de Canal 32
Turbo Decodificador
MAP BCJR MAP BCJR
DEC 1
interleaver DEC 2
Deinter- leaver
Deinter- leaver
Curso 2009/10 Codificación de Canal 33
Prestaciones
!! A 0.7 dB del límite de Shannon!!!
Curso 2009/10 Codificación de Canal 34
Prestaciones: comentarios
!! Entrelazador 64Kbit !! Voz: retardo de 8 segundos !! Voz: 40 ms ! Latencia 320 (2 dB)
!! Error floor
!! Decrece con longitud del entrelazado
Curso 2009/10 Codificación de Canal 35
Extensiones
!! Turbo product codes !! Concatenación serie de codificadores bloque
!! Turbo Trellis-Coded Modulation (TTCM) !! Aplicación del principio Turbo
!! Igualación !! Estimación de canal !! Detección multiusuario !! ...
Códigos LDPC (Low Density Parity Check Codes)
Comunicaciones Digitales Codificación de Canal
Curso 2009/10 Codificación de Canal 37
Bibliografía LDPC
!! R. Gallager. 'Low-Density Parity-Check Codes'. IRE Transactions on Information Theory, pp. 21-28, Enero 1962.
!! D. J. C. MacKay. Information theory, inference and learning algorithms. Cambrigde. 2003
Curso 2009/10 Codificación de Canal 38
Historia de los códigos LDPC
!! Inventados en 1962 (Gallager) !! Ignorados durante largo tiempo
!! Requerimientos computacionales !! Introducción de los códigos Reed-Solomon
!! Redescubiertos en 1995 (MacKay) !! Principio Turbo (1993)
Curso 2009/10 Codificación de Canal 39
Fundamentos de los códigos bloque lineales
!! Estructura del código !! Matriz generadora G !! Matriz de chequeo de paridad H
!! Capacidad de corrección ! dmin
!! dmin: menor peso en las filas de G !! dmin: mínimo número de columnas de H que sumen 0
!! Ejemplo: Código Hamming (7,4)
Curso 2009/10 Codificación de Canal 40
Códigos LDPC
!! Matriz de paridad H dispersa (pocos 1's) !! Distancia mínima alta
!! Aproximan la capacidad de Shannon !! No sufren el 'error floor'
!! dmin proporcional a la longitud del código
!! Complejidad lineal de la decodificación !! Implementación paralelo sencilla
Curso 2009/10 Codificación de Canal 41
Tipos de códigos LDPC
!! Códigos LDPC Regulares !! H (rxn) tiene if 1's por fila y ic 1's por columna !! r if = n ic con ic << r (if << n) !! ic " 3 es necesario para códigos 'buenos'
!! Códigos LDPC irregulares !! Número de 1's por fila o columna no constante
Curso 2009/10 Codificación de Canal 42
Generación códigos. !! Matriz de chequeo de paridad se
construye asegurando que hay ic (>2) unos en cada columna.
!! Se verifica que el número de unos por fila también sea lo más uniforme posible.
!! Mayor ic más capacidad de corrección y más complejidad en decodificación.
Curso 2009/10 Codificación de Canal 43
Ejemplo de código LDPC
!! ic=3 !! Dos columnas se solapan como
mucho en un 1 !! Dispersión de 1's
!! dmin grande
Curso 2009/10 Codificación de Canal 44
Matriz de Chequeo Paridad
6 7 6 5 5 5 5
Curso 2009/10 Codificación de Canal 45
Matriz generadora del código. !! Mediante eliminación de Gauss:
H ! [Ir P] !! Se puede construir la matriz generadora
del código como: G=[PT Ik].
!! Si hace falta permutar columnas también habrá que hacerlo en la matriz H original.
Curso 2009/10 Codificación de Canal 46
Transformaciones !! Permutar filas 1ª y 5ª. !! Restar a las filas 6ª y 7ª la primera. !! Permutar filas 2ª y 3ª. !! Restar a las filas 4ª y 7ª la segunda. !! Permutar filas 3ª y 5ª. !! Restar a las filas 1ª y 6ª la tercera. !! Restar a todas las filas la cuarta. !! Permutar filas 5ª y 6ª. !! Restar a las filas 3ª y 7ª la quinta. !! Restar a las filas 3ª y 7ª la sexta. !! Restar a las filas 2ª y 4ª la séptima.
Curso 2009/10 Codificación de Canal 47
Matriz generadora
Curso 2009/10 Codificación de Canal 48
Codificación de códigos LDPC
!! Generalmente, G es muy grande !! G no es en general dispersa !! Ejemplo: LDPC(10000,5000)
!! P es 5000x5000 !! Densidad de 1's=1/2 ! 12.5 x 106 1's
!! Códigos estructurados !! Codificación con registros de desplazamiento
Curso 2009/10 Codificación de Canal 49
Decodificación iterativa de LDPC's
!! Decodificación general de códigos bloque !! cHT=0 !! s=rHT ! e
!! Algoritmos basados en grafos
!!MAP (BCJR) para códigos basados en Trellis !! Suma-Producto (Paso de mensajes) para
códigos basados en grafos bipartidos
Curso 2009/10 Codificación de Canal 50
Grafo de Tanner
!! Grafo bipartido !! Nodos separados en dos clases !! Conexiones entre nodos de distinta clase
!!C0 !!C1 !!C2 !!C3 !!C4 !!C5 !!C6 !!C7
!!Nodos !!de bit
!!Nodos de !!chequeo
!!f0 !!f1 !!f2 !!f3
Curso 2009/10 Codificación de Canal 51
Decodificación: definiciones !! N(i) conjunto de las entradas no nulas de la
fila i de H, p.e: !! N(3)={2,4,8,9,10,12}
!! M(j) conjunto de las entradas no nulas de la columna j de H, p.e: !!M(10)={2,3,6}
!! N(i)\j’ : es N(i) sin la columna j’. Idem para M(j)/i’.
Curso 2009/10 Codificación de Canal 52
Matriz de Chequeo Paridad
6 7 6 5 5 5 5
Curso 2009/10 Codificación de Canal 53
Decodificación: definiciones II !! Se transmiten 1's y 0's (niveles ±1) con
una varianza de ruido "2 y se recibe y. !! Para el bit n, la probabilidad que sea 1:
!! y que sea cero:
Curso 2009/10 Codificación de Canal 54
Decodificación: definiciones III
!! : mensajes de nodo Ci a nodo fj !! prob. bit j sea x con los chequeos (sin i)
!! : mensajes nodo fi a nodo Cj !! prob. bit de chequeo i correcto fijado bit j =x !! resto de bits: probabilidades de
!! Similar a la información extrínseca intercambiada en los Turbo-Códigos
Curso 2009/10 Codificación de Canal 55
Algoritmo decodificación !! Inicialización
!! Solo se definen para los valores a 1 en H.
!! Paso 1 (horizontal): Para todo i=1,...,r y j=1,...n:
Se obtiene:
Curso 2009/10 Codificación de Canal 56
Algoritmo decodificación II !! Paso 2 (vertical): Para todo i=1,...,r y j=1,...n:
!! Se normalizan y para que sumen 1.
Curso 2009/10 Codificación de Canal 57
Algoritmo decodificación III
!! Decisión blanda (probabilidades a posteriori)
!! Decisión dura
!! Criterio de parada
Curso 2009/10 Codificación de Canal 58
Ejemplo !! Palabra transmitida c=[0 ... 0] !! Palabra recibida r=[-1.43 -2.67 -0.87 -0.71 -2.15
0.19 0.19 -1.04 -0.67 -0.83 -1.19 -0.2742 -1.59]. !! Decisión dura d=[0 0 0 0 0 1 1 0 0 0 0 0 0]. !! Probabilidades:
p0=[0.946 0.995 0.852 0.806 0.987 0.406 0.407 0.889 0.793 0.839 0.915 0.634 0.960]
Curso 2009/10 Codificación de Canal 59
Inicializar #q
!! p0-p1=[0.89 0.99 0.70 0.61 0.97 -0.19 - 0.19 0.78 0.59 0.68 0.83 0.27 0.92]
Curso 2009/10 Codificación de Canal 60
Cálculo #r
!! #r13=0.0193 $
Curso 2009/10 Codificación de Canal 61
Cálculo #r
!! #r14=0.0222 $
Curso 2009/10 Codificación de Canal 62
Cálculo #r
!! Cálculo de !! Cálculo de probabilidades a posteriori
Curso 2009/10 Codificación de Canal 63
Calculo qij
$ !! =0.2843
Curso 2009/10 Codificación de Canal 64
Calculo qj
$ !! =0.1449
Curso 2009/10 Codificación de Canal 65
Cálculo q0 y q1 !! q0=[0.17 0.17 0.14 0.11 0.13 0.06 0.05 0.11
0.15 0.14 0.13 0.12 0.17] !! q1=[0.00 0.00 0.01 0.02 0.00 0.05 0.07 0.01
0.01 0.01 0.01 0.02 0.00] !! Normalizar para que q0+q1=1. q0=[0.978 0.998 0.933 0.841 0.989 0.533
0.432 0.895 0.930 0.902 0.933 0.853 0.982] !! Recordamos que: p0=[0.946 0.995 0.852 0.806 0.987 0.406
0.407 0.889 0.793 0.839 0.915 0.634 0.960]
Curso 2009/10 Codificación de Canal 66
decisión dura
!! Primera decisión dura !! ce=sign(p1-p0)=[0000011000000]. !! Hce%0. !! Segunda decisión dura !! ce=sign(q1-q0)=[0000001000000]. !! Hce%0.
Curso 2009/10 Codificación de Canal 67
Segunda Iteración
!! q0=[0.971 0.998 0.904 0.882 0.985 0.802 0.739 0.897 0.926 0.933 0.920 0.879 0.979]
!! ce=sign(q1-q0)=[0000000000000]. !! Hce=0 (palabra correcta).
Curso 2009/10 Codificación de Canal 68
Diseño de códigos LDPC
!! Objetivo: maximizar dmin
!! Evitar ciclos cortos en el grafo de Tanner !! Problema combinatorio !!Método de búsqueda !!Métodos basados en geometría
!! Limitan el orden de los ciclos
Curso 2009/10 Codificación de Canal 69
Problemas abiertos
!! LDPC con rendimiento cercano a la capacidad !! Longitudes de código largas, muchas iteraciones,
relaciones S/N bajas
!! LDPC de palabras código relativamente cortas !! Alta tasa de codificación R#1 !! Codificación simple
!! Combinación con otras tecnologías !!OFDM, MIMO, ...