tamaño: Warning: filesize()

Anuncio
Lección 12: Codificación de Canal.
Parte II
Gianluca Cornetta, Ph.D.
Dep. de Ingeniería de Sistemas de Información y Telecomunicación
Universidad San Pablo-CEU
Contenido
Códigos de Bloque Lineales
Detección y Corrección de Error
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
2
Códigos de Bloque Lineales
 Un código de bloque lineal es una clase de códigos con
control de paridad de tipo (n, k):
La operación de codificación consiste en transformar un
bloque de k dígitos de un alfabeto dado en un bloque
codificado de n dígitos
Cuando el alfabeto consiste de sólo dos elementos {0, 1},
el código se denomina binario
 Los mensajes de k bits (dentro de un conjunto de 2k
secuencias) se denominan k-tuplas
 Los bloques de n bits forman 2n posibles secuencias
denominadas n-tuplas
 La operación de codificación asigna de forma unívoca a
cada una de las 2k k-tuplas una de las posibles 2n ntuplas
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
3
Códigos de Bloque Lineales
 El conjunto Vn de las 2n n-tuplas define un espacio vectorial sobre el campo binario
de dos elementos {0, 1}
 El campo binario tiene asociadas dos operaciones: suma módulo 2 y multiplicación
Addition
00=0
01=1
10=1
11=0
Multiplication
00=0
01=0
10=0
11=1
 La suma módulo 2 se indica indistintamente con el símbolo  o con +
 Un subconjunto S de Vn es un subespacio si cumple con las siguientes condiciones:
 El vector formado por todos ceros pertenece a S
 La suma de dos vectores de S es también un elemento de S(es decir si Vi , Vj S Vk= Vi Vj S
–propiedad de clausura)
 Un conjunto Vn de 2k n-tuplas es un código de bloque lineal si y solo si es un
subespacio del espacio vectorial de todas las n-tuplas
 El objetivo de diseño de un código es:
 Minimizar el número de bits de redundancia para reducir el exceso de banda
 Aumentar la distancia entre los elementos del conjunto (es decir, el número de 0 y 1 que
difieren) para aumentar la tolerancia a errores de transmisión
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
4
Códigos de Bloque Lineales
 En general, un código (n, k) se puede generar fácilmente de forma
tabular (lookup table) con una ROM en las que cada entrada se
forma añadiendo a los k bits de mensaje, (n-k) bits de redundancia
procurando cumplir con las propiedades del vector nulo y de
clausura
 Cuando k es elevado este enfoque no es práctico y es preferible
generar los códigos en vez de almacenarlos en una memoria
 Un conjunto {U} de 2k palabras de código es un subespacio vectorial
k-dimensional del espacio vectorial binario n-dimensional por lo que
es siempre posible encontrar una base (es decir, un conjunto ntuplas de linealmente independientes) de k n-tuplas V1,V2,…,Vk que
puede generar todos los elementos de {U}, es decir:
U  m1V1  m2 V2    mk Vk
 Donde los mi ={0,1} (con i=1,…, k) son los dígitos del mensaje
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
5
Códigos de Bloque Lineales
 Es posible definir una matriz kn G generadora del código:
 V1   v11 v12  v1n 
  v
v
 v2 n 
G  V2    21 22




 V  v
 k   k1 vk 2  vkn 
 Por otro lado, el mensaje m es una matriz 1k, es decir, m=m1,m2,…, mk
 Codificar un mensaje m generando un código U equivale a realizar la
siguiente operación: U=mG
 Por ejemplo, dada la siguiente matriz generadora:
 V1  1 1 0 1 0 0
G  V2   0 1 1 0 1 0
 V  1 0 1 0 0 1
 3
 Generar un código (6, 3) para el mensaje m=[1 1 0] equivale a:
 V1 
G  1 1 0V2   1 V1  1 V2  0  V3  110100  011010  000000  101110
V 
 3
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
6
Códigos de Bloque Lineales
 Un código de bloque lineal sistemático (n, k) es una correspondencia de un espacio
k-dimensional a uno n-dimensional tal que parte de la secuencia generada coincide
con los k bits del mensaje. Los (n-k) bits restantes son los bits de paridad
 La matriz generadora de un código sistemático es:
 p11
p
G  P | I k    21
 
 pk1
p12 
p22 
p1,n k 
p2 ,  n  k 
pk 2  pk ,  n  k 
1 0  0
0 1  0



0 0  1
 P (de dimensiones k(n-k)) es la matriz de paridad, Ik es la matriz identidad kk y pij
={0,1}
 Un código formado por la n-tupla U=u1,u2,…, un que codifica un mensaje formado
por la k-tupla m=m1,m2,…, mk se obtiene de la siguiente manera:
u1 , u2 ,un  m1
m2
 p11
p
 mk   21
 
 pk1
p12 
p22 
p1,n k 
p2 ,  n  k 
pk 2  pk ,  n  k 
1 0  0
0 1  0



0 0  1
 Donde:
m p  m2 p1i    mk pki
ui   1 1i
mi n k
04/04/2013
for i  1,, n  k 
for i  n  k  1,, n
© 2012 Gianluca Cornetta, Comunicaciones Digitales
7
Códigos de Bloque Lineales
 Un vector de código sistemático puede expresarse como:
U  p1 p2  pnk m1 m2  mk


 


parity bits
 Donde:
message bits
p1  m1 p11  m2 p21    mk pk1
p2  m1 p12  m2 p22    mk pk 2

pn  k  m1 p1,n  k   m2 p2,n k     mk pk ,n  k 
 Por ejemplo, para el código un código (6, 3) del ejemplo anterior se
obtiene:
U  m1
m2
1 1 0
m3 0 1 1
1 0 1


P
04/04/2013
parity bits
message bits


 
 

1 0 0 
0 1 0  m1  m3 m1  m2 m2  m3 m
m
m3
1
2
















0 0 1
u
u
u6
u
u
u
4
5
2
1
3


I3
© 2012 Gianluca Cornetta, Comunicaciones Digitales
8
Códigos de Bloque Lineales
 En el proceso de decodificación se utiliza una matriz de control de paridad H
 Para cada matriz G kn existe una matriz H (n-k)n tal que las filas de G son
ortogonales a las filas de H, es decir GHT=0
 Donde:
 0 es la matriz nula k(n-k)
 HT es la matriz transpuesta de H con dimensiones n(n-k)

H  I nk
 1
 0
 
 I nk   0
| PT       p11
 PT  

  p21
 
 pk1

0
1
0
p12
p22






pk 2 



1 
p1,n  k  
p2 , n  k  


pk ,n  k  
0
0
 U es un código generado por G si y sólo si UHT=0, de hecho:
UH T  p1  p1
 Donde:
04/04/2013
p2  p2  pnk  pnk  0
p1  m1 p11  m2 p21    mk pk1
p2  m1 p12  m2 p22    mk pk 2

pn  k  m1 p1,n  k   m2 p2,n k     mk pk ,n  k 
© 2012 Gianluca Cornetta, Comunicaciones Digitales
9
Códigos de Bloque Lineales
 Sea r=r1,r2,…,rn el vector recibido (es decir, una de las posibles 2n ntuplas) resultante de la transmisión de U=u1,u2,…,un (es decir, una
de las posibles 2k n-tuplas), es decir r=U+e
 e=e1,e2,…,en es el patrón de error introducido por el canal, es decir,
ei=1 si y sólo si ri  ui (lo que se recibe es distinto de lo que se ha
transmitido)
 Existen pues 2n-1 patrones de error potenciales en el espacio de 2n ntuplas
 El síndrome S de r es definido como S=rHT
 Por consiguiente el síndrome es el resultado de un control de
paridad realizado sobre r para determinar si el vector recibido
pertenece al conjunto de códigos utilizados
 Si el control tiene éxito positivo S=0
 Si r contiene errores detectables S tiene algunos valores no nulos
 Si r contiene errores corregibles S tiene algunos valores no nulos que
permiten identificar el patrón de error
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
10
Códigos de Bloque Lineales
 Sabiendo que r=U+e
=UHT+eHT=0+eHT=eHT
se
obtiene
S=(U+e)HT
El test del síndrome da el mismo resultado tanto si se
realiza sobre el vector corrupto recibido r como si se realiza
sobre el patrón de error e que lo causado
 Es interesante evidenciar dos importantes propiedades
de la matriz H:
Ninguna columna de H puede ser nula, en caso contrario
un error en la posición correspondiente a la columna nula
no afecta S y por tanto es indetectable
 Todas las columnas de H deben ser únicas, en caso
contrario los error en las posiciones correspondientes a las
columnas idénticas serían indetectables
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
11
Códigos de Bloque Lineales
 Existe una correspondencia unívoca entre código corrupto y patrón de error, por tanto,
el test del síndrome no sólo permite detectar errores sino también corregirlos
 Es posible organizar las 2n n-tuplas que representan los vectores recibidos en forma
matricial
 Esta matriz se denomina matriz estándar y tiene las características siguientes:
 La primera fila contiene todos los códigos empezando por el código nulo U1
 La primera columna contiene todos los posibles patrones de error (U1 es el código nulo pero puede
considerarse también como el patrón de error e1, el patrón que representa la recepción sin errores,
es decir r=U)
 La matriz contiene todas las 2n n-tuplas del espacio Vn, cada n-tupla aparece sólo en una posición
(ninguna falta y ninguna es replicada)
2k n-tuplas
Coset leaders
04/04/2013
 U1
e
 2
 e3
 
 ej

 
e 2nk
U2
U 2  e2
U 2  e3

U2  e j

U 2  e 2 nk



Uj
U j  e2
U j  e3

Uj ej
 U j  e 2 nk
U 2k

U 2k  e 2 

U 2k  e3 
 2n/2k=2n-k cosets

 U 2k  e j 



 U 2k  e 2nk 



© 2012 Gianluca Cornetta, Comunicaciones Digitales
12
Códigos de Bloque Lineales
 El algoritmo de decodificación prueba a sustituir un código
corrupto recibido (una n-tupla cualquiera excepto las de la
primera fila) con un código valido que se encuentra en la
primera posición de la columna correspondiente
 Por ejemplo si se recibe Ui + ej y el error ej causado por el canal es
líder del coset, el vector recibido será decodificado correctamente
como Ui
 Un coset es un conjunto de números que tienen una característica
en común, el mismo síndrome
Cada coset es identificado unívocamente por su síndrome S, por lo que S
puede utilizarse para estimar el patrón de error
 Si es el líder del coset (es decir, el patrón de error de los
elementos del j-ésimo coset), entonces Ui + ej es una n-tupla
de este coset
 El síndrome de esta n-tupla puede escribirse como:
S  Ui  e j HT  Ui HT  e j HT  0  e j HT  e j HT
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
13
Códigos de Bloque Lineales
 Para corregir un error se sigue el procedimiento siguiente:
 Calcular el síndrome de r utilizando S=rHT
 Encontrar el líder del coset ej cuyo síndrome es igual a rHT
 Se asume que ej es el patrón de error generado por el canal
 Obtener el código esperado realizando la operación U = r + ej
 En aritmética módulo dos suma y resta son equivalentes por lo que esta operación
equivale a restar el error ej al mensaje r recibido
 En el caso de un código (6, 3) el conjunto Vn tiene 64 n-tuplas,por lo
que, una vez acotados los 6 posibles patrones de error sencillo, todavía
queda la posibilidad de poder corregir un patrón adicional
000000
000001
000010
000100
001000
010000
100000
010001
110100
110101
110110
110000
111100
100100
010100
100101
04/04/2013
011010
011011
011000
011110
010010
001010
111010
001011
101110
101111
101100
101010
100110
111110
001110
111111
101001
101000
101011
101101
100001
111001
001001
111000
011101
011100
011111
011001
010101
001101
111101
001100
110011
110010
110001
110111
111011
100011
010011
100010
© 2012 Gianluca Cornetta, Comunicaciones Digitales
000111
000110
000101
000011
001111
010111
100111
010110
14
Códigos de Bloque Lineales
 Dada una matriz generadora G de un código (n, k), la tabla que permite estimar el
patrón de error a partir del síndrome se construye a partir de la relación Sj=ejHT con
j=1,…,2n-k
 Cada fila de la tabla contiene el síndrome Sj y su respectivo patrón de error ej
 El decodificador calcula el síndrome S=rHT relativo al vector recibido r
 El decodificador busca en la tabla un Sj tal que Sj=S para determinar el patrón de error ej que lo ha
generado
 ej=ê es una estimación del error
 El decodificador suma ê a r (una suma módulo 2 equivale a una resta) para obtener una estimación
Û del código transmitido:
ˆ  r  eˆ  U  e  eˆ  U  e  eˆ 
U
 Si el error estimado es igual al error real (es decir, e=ê) entonces Û=U; en caso contrario la
estimación es equivocada y el error indetectable
 En el caso de códigos pequeños como el (6, 3) la implementación del decodificador es muy sencilla.
Por ejemplo, el código considerado en los ejemplos anteriores tiene un síndrome S=rHT igual a:
S  r1
04/04/2013
r2
r3
r4
r5
1
0
0
r6 1

0
1
0
1
0
1
1
0
0
0  s1  r1  r4  r6
1  s  r  r  r
0  2 2 4 5
1 
 s3  r3  r5  r6
1
© 2012 Gianluca Cornetta, Comunicaciones Digitales
15
Códigos de Bloque Lineales
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
16
Detección y Corrección de Error
 No todos los códigos recibidos pueden ser detectados correctamente
 Se define peso de Hamming w(U) del código U el número de elementos de U
no nulos
 Se define distancia de Hamming d(U,V) entre dos vectores U y V el número
de elementos por los que difieren, es decir:
U  100101101  d U, V   6
V  011110100
 Observe que U+V=111011001 es un vector tal que los elementos en las
posiciones en las que U y V difieren valen 1
 Por construcción resulta que d(U,V)= w(U+V)
 Asimismo resulta que w(U) =d(U,0)
 La mínima distancia de Hamming de un conjunto de códigos caracteriza la
robustez del mismo (es decir su capacidad de detectar y corregir errores)
 Si U y V son palabras de código de un espacio Vn  también está W=U+V en
Vn, por tanto: d(U,V)= w(U+V) = w(W)
 La distancia mínima dmin puede calcularse simplemente observando el peso de
cada elemento del conjunto (excepto el vector nulo)
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
17
Detección y Corrección de Error
 Para detectar cuál es el código recibido, el detector aplica el algoritmo de
máxima verosimilitud (maximum likelihood) sobre el vector recibido r:
Pr | Ui   max Pr | U j 
U j
 Para un canal binario simétrico (Binary Symmetric Channel –BSC) la
verosimilitud P(r|Ui) es inversamente proporcional a la distancia de Hamming
entre r y Ui
 El decodificador escoge Ui si y sólo si:
d r, Ui   min d r, U j 
U j
 El decodificador determina la distancia de Hamming entre r y todos los posibles
códigos Uj y selecciona Ui tal que:
d r, Ui   d r, U j  for i, j  1,, M and i  j
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
18
Detección y Corrección de Error
 Transmito U y recibo r1. El vector recibido
cae en la región de decisión de U por lo
que el decodificador detecta este código
 Si r1 es el resultado de un error sencillo la
estimación realizada es correcta, pero si r1
es el resultado de un error cuádruple la
estimación es incorrecta
 Un error quíntuple hace que el símbolo
estimado es V (es decir, un símbolo
correcto) por lo que el error es
indetectable
 En este ejemplo la distancia entre los dos
códigos válidos (U y V) es dmin=5, y es
posible detectar y corregir hasta errores
dobles
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
19
Detección y Corrección de Error
 La máxima capacidad de corrección de error t es definida como:
 d  1
t   min 
 2 
 Un código de bloque lineal (n, k) con capacidad de corregir errores de clase t
puede corregir también un único error de clase t +1
 Un código de bloque lineal que puede corregir sólo hasta errores de clase t se
denomina código perfecto
 La probabilidad PM de error de mensaje en un canal binario simétrico con
probabilidad de transición (es decir, probabilidad de error de bit p) es:
PM 
n
  nj  p 1  p 
j
n j
j t 1
 Se trata de un valor limitado superiormente que se vuelve igual al límite
superior en el caso de decodificadores que sólo detectan hasta errores de
clase t (bounded distance decoders)
 La probabilidad de error de bit PB es:
1
PB 
n
04/04/2013
n
j nj  p j 1  p 
j t 1  

n j
© 2012 Gianluca Cornetta, Comunicaciones Digitales
20
Detección y Corrección de Error
 Un código de bloque con distancia mínima de Hamming dmin garantiza la
capacidad de detectar hasta errores de clase e:
e  d min  1
 En un espacio de 2n n-tuplas existen 2n-1 posibles patrones de error
 Si el vector recibido es igual a uno de los posibles códigos válidos el error es
indetectable, por tanto existen 2k-1 posibles patrones de errores indetectables
 El número de errores detectables es (2n-1) - (2k-1) =2n-2k
 Se define con Aj el número de palabras de código de peso j de un código de
bloque lineal (n, k)
 A0,A1 ,…,An representan las distribuciones de pesos del código
 Si el código se utiliza para detectar errores en canales binarios simétricos, la
probabilidad de error indetectable es:
n
Pnd   A j p j 1  p 
n j
j 1
 Si la distancia mínima del código es dmin, los valores A1 ,…,Admin-1 son nulos
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
21
Detección y Corrección de Error
 Es posible buscar una solución de compromiso entre el máximo t de un código
y su capacidad de corregir errores
 Un código de bloque lineal con distancia mínima de Hamming dmin puede
corregir simultáneamente  errores y detectar simultáneamente  errores (
 ) si:
d min      1
 Cuando ocurre un número de errores menor o igual a t, el código puede
detectarlos y corregirlos
 Cuando ocurre un número de errores superior a t e inferior a e + 1, el código
puede detectarlos pero sólo puede corregir un subconjunto de ellos
 Por ejemplo, si dmin= 7   +  = 6, por tanto existen las siguientes
posibilidades:
Detect ()
3
4
5
6
04/04/2013
Correct ()
3
2
1
0
© 2012 Gianluca Cornetta, Comunicaciones Digitales
22
Detección y Corrección de Error
 Un detector puede ser diseñado con la capacidad de cancelar la recepción de un símbolo en el caso de
ambigüedad o de malfuncionamiento transitorio del canal de comunicación
 Estos tipos de canal se caracterizan por un alfabeto de entrada de Q símbolos y por uno de salida de Q +
1 símbolos
 El símbolo adicional es el indicador de cancelación (erasure flag)
 Cuando un detector realiza un error de símbolo, necesita dos parámetros para corregirlo: la posición del
error y el valor correcto del símbolo (en el caso de símbolos binarios sólo la posición)
 Si el detector declara un símbolo como cancelado, aunque el valor correcto del símbolo no se conoce a
priori, la posición del símbolo cancelado es sabida
 La decodificación de códigos cancelados puede ser más sencilla de la corrección de errores
 Asumiendo que sólo haya  símbolos cancelados, un código con distancia mínima de Hamming dmin
puede corregir los símbolos cancelados si :
d min    1    d min  1
 Esta condición es mucho más ventajosa de la de corrección de error: t(dmin -1)/2
 Asumiendo que haya  símbolos cancelados y  símbolos erróneos, un código con distancia mínima de
Hamming dmin puede corregir todos los símbolos cancelados y erróneos si :
d min  2    1
 El algoritmo de corrección es el siguiente:
 Se sustituyen las posiciones  canceladas con ceros y se decodifica el código
 Se sustituyen las posiciones  canceladas con unos y se decodifica el código
 De los dos valores decodificados se elige el que lleva a un mínimo número de correcciones en las posiciones
restantes
04/04/2013
© 2012 Gianluca Cornetta, Comunicaciones Digitales
23
Descargar