Trabajo BCH y LDPC
Trabajo BCH y LDPC
Trabajo BCH y LDPC
__________________________________________
1 http://en.wikipedia.org/wiki/BCH_code
2. CODIGOS BCH
Así, para una determinada razón de código, ésta está creciendo para considerar la
longitud del bloque que será requerida por el funcionamiento de la decodificación
de decisión dura para ser comparada con el funcionamiento de la decodificación
de decisión flexible. En la Figura 4. Los códigos BCH muestran que todos tienen
razones de código de aproximadamente ½. De la figura [4] surge que para una
razón de código fija, la decodificación de decisión dura del código BCH de 8 veces
n de longitud o mayor tiene un mejor rendimiento (para un P B de aproximadamente
10-6 o menor) que aquel de una decodificación de decisión flexible del código BCH
de longitud n. 59
Una subclase especial de los códigos BCH (el descubrimiento de los que
preceden los códigos BCH) es el particularmente útil conjunto no binario llamado
códigos de Reed–Solomon. [1]
En estos códigos cíclicos, se busca que tenga una longitud y distancia designada.
2.1 DEFINICIÓN.
Sea Fqr el cuerpo de escisión de Xn 1 que contiene a Fqr y sea r una
raíz n-esima primitiva de la unidad.
Sean Cambiando r, por , tenemos cinco
parámetros,
Llamamos código BCH de longitud n y distancia designada sobre Fqr y lo
denotamos Bq (el parámetro que sale del paréntesis) al Código
Cíclico generado por
_____________________________________________
1. http://www.um.es/docencia/jsimon/depmat/2011-2012/Codigos/ApuntesCodigosMasterCompleto.pdf
3. CODIFICACION Y ALGORITMO PARA DECODIFICACION DE BCH
Para cualquier entero r y t tales que t ¿ 2r-1-1 existe un código BCH de longitud n
= 2r-1 que corrige t errores y tiene dimensión k ¿ n-r*t (la dimensión lineal del
subespacio c de kn).
Un código BCH corrector de dos errores de longitud lineal cíclico que es generado
por:
3
G(x) = mβ ( x)∗mβ ( x)
Por ejemplo, sea el elemento primitivo de GF (24) construido con p(x)= 1 +x +x4,
entonces:
Como ya se vio:
G(x) = m1(x)*m3(x)
G(x) = 1 +x4 +x6 +x7 +x8 es el polinomio generador.
β0 β0
T
H =
[ ]
.
.
.
β1
r
β2 −2
.
.
.
β
β3
r
3 (2 −2 )
[] [ ]
β β 0 1 0 0 0 0 0 1
β2 β6 0 0 1 0 0 0 1 1
3 9
β β 0 0 0 1 0 1 0 1
β4 β 12 1 1 0 0 1 1 1 1
β5 1 0 1 1 0 1 0 0 0
β6 β3 0 0 1 1 0 0 0 1
β7 β6 1 1 0 1 0 0 1 1
β8 β9 1 0 1 0 0 1 0 1
β9 β 12 0 1 0 1 1 1 1 1
β10 1 1 1 1 0 1 0 0 0
β 11 β3 0 1 1 1 0 0 0 1
β12 β6 1 1 1 1 0 0 1 1
β13 β9 1 0 1 1 0 1 0 1
14 12
β β 1 0 0 1 1 1 1 1
HT =
e(x) = xi + x j y
wHT = eHT = [e() + e(3)] = [s1 , s3] = [i +j ,3i + 3j]
i +j = s1
3i + 3j = s3
Por ejemplo, sea w la palabra recibida con síndrome w() = s1 = 0111 y w(3)= s3 =
1010.
De la tabla s1 11 y s3 8 , entonces:
s3 β8
+ s 21= + β 22=β 8 β−11 + β 7= β12 + β 7 2
s1 β 11 = 1111+1101=0010=β
Errores en las posiciones 4 y 13, e(x) = x4 + x13, y el patrón de error es 0000 1 0000
0000 10
Solución.
1) Ya
2) No
3) No
3 11 3 33 3 8
4) s 1 =( β ) =β =β + β =s 3 , no
2 11 2 4 13
5) x +β x+β =0 , del ejemplo anterior, raíces β y β
6) Los errores en las posiciones 4 y 13, el patrón de errores es:
u = 000010000000010
Ejemplo.
Asumir que wHT= [w() + w(3)]= [3 , 9], obtener el patrón de errores.
Solución.
1) ya
2) No
3) No
3 3 3 9
4) s 1 =( β ) =β =s 3 Un error en la posición 3,el patrón de errores es:
u = 000100000000000
Ejemplo.
Asumir que w= 1101 1110 1011 000 se recibe. Obtener el vector transmitido.
Solución.
1) wHT= 0111 0110 [11 , 5] = [s1 , s3]
2) No
3) No
3 11 3 33 3 5
4) s 1 =( β ) =β =β + s 3 =β , no
s3 2 β 5
+ s 1= 11 +( β 11 )2 =β 9 + β7 0
5) s 1 β 0101 + 1101 = 1000 β , se tiene
2 11 0
x +β x+β =0
Se prueban
β 0 : β 0 +β 11 β 0 +β 0 =. ..≠0
β 1 : β2 +β 11 β 1 + β0 =. ..≠0
.
.
.
β 7 : β 14+ β11 β 7 + β 0=. . .=0
7 7 j 15 j 8
Una raíz es β . Como β β =1= β ⇒ β =β es la otra raíz.
6) Errores en la posiciones 7 y 8. Así:
u = 0000 0001 1000 000
En conclusión:
v = w+u = 1101 1111 0011 000
Es la palabra enviada. 1
____________________________________
1. www.fi-b.unam.mx/Profesores/AbelHerrera/.../descargas/capitulo7.doc
4. CODIFICADOR BCH
Los códigos Low Density Parity Check fueron creados por Robert G. Gallager en
MIT (Massachusetts Institute of Technology) en el 1960. Estos fueron olvidados
hasta aproximadamente los 90's. En su tesis de doctorado de 1961 (publicada en
1963), Gallager inventó los códigos LDPC y la decodificación iterativa. Pero debido
a limitaciones existentes en los equipos de la época y a ciertas confusiones los
sistemas de codificación iterativos fueron olvidados durante décadas. En 1993, se
inventó otro sistema de codificación iterativa: los códigos Turbo. A la luz de este
descubrimiento, los códigos LDPC fueron redescubiertos por MacKay y Neal en
1995. Luego de ese redescubrimiento, han surgido y siguen surgiendo una
cantidad importante de trabajos relacionados con el tema. Se relacionan con los
Turbo Codes, pero su estructura algebraica es más conocida.
El gran interés por los sistemas de codificación basados en códigos LDPC se debe
a que permiten comunicar con eficiencia muy cercana al límite establecido por
Shannon, con confiabilidad arbitrariamente grande y con muy baja complejidad
para una gran variedad de medios de comunicación 1.
__________________________________________________________________
1 http://en.wikipedia.org/wiki/Low-density_parity-check_code
6. CODIGOS LDPC
Los códigos LDPC son códigos lineales cuya propiedad esencial es la de tener por
lo menos una matriz de paridad de baja densidad, es decir con “pocos” elementos
distintos de cero. Formalmente, decimos que una secuencia (en el largo n ) de
códigos es LDPC si cada código tiene por lo menos una matriz de paridad en la
cual la cantidad de elementos distintos de cero es O(n).
Por ejemplo, consideremos la matriz de paridad del código de Hamming sigui ente:
0 0 01 1 11
(
A= 0 1 1 0 0 1 1
1 0 10 1 01 )
El grafo bipartito correspondiente se muestra en la Figura,
__________________________________________________________________
1http://www.rle.mit.edu/rgallager/documents/ldpc.pdf
Los elementos de V se denominan variables o nodos izquierdos y los elementos
de C se denominan checks o nodos derechos.
6.1 DEFINICIÓN.
H= [ A , I n−k ]
G=[ I k , A T ]
Por último, en sustitución de la quinta fila con la suma en módulo dos de las filas 5
y 4 de H en forma escalonada:
1 1 0 1 1 0 0 1 0 0
(
0
Hr= 0
0
0
1
0
0
0
1
1
0
0
0
0
1
0
1
0
1
1
1
1
1
1
1
0
1
1
0
1
1
0
0
0
1
0
0
1
0
1
)
A continuación, la matriz de control de paridad se pone en forma reducida
escalonada (es decir, de manera que cualquier columna que contenga un líder uno
tiene ceros en todas partes). La columna 1 ya está correcta y la entrada en la
columna de la 2 por encima de la diagonal se elimina mediante la sustitución de la
fila 1 con la suma módulo 2 de la primera y segunda fila. Del mismo modo la
entrada en la columna 3 encima de la diagonal se elimina mediante la sustitución
de la fila 2 con la suma de módulo 2 de las filas 2 y 3. Para borrar la columna 4 de
la fila 1 es reemplazar con la suma módulo 2 de la primera y cuarta fila. Por último,
para despejar la columna 5 implica añadir la fila 5 a la 1, 2 y filas de 4 da Hrr en
forma escalonada reducida:
1 0 0 0 0 0 1 1 1 0
0
Hr= 0
0
0
( 1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
1
0
1
0
0
0
1
1
1
1
0
0
0
1
0
0
1
1
1
)
Por último, el uso de permutaciones de columnas que se colocan en la matriz de
control de paridad en la forma estándar (donde las últimas m columnas de apoyo
invertido son las m columnas de Hrr que contienen los que llevan la delantera):
0 1 1 1 0 1 0 0 0 0
( 1
H std = 1
0
1
0
0
0
1
1
1
1
0
0
0
1
0
0
1
1
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
)
En este paso final las permutaciones de columnas se han utilizado por lo que las
palabras de código de apoyo invertido se han permutado versiones de las
palabras de código correspondiente a H. Una solución es hacer un seguimiento de
la permutación de columna utilizada para crear apoyo invertido, que en este caso
es,
Ԥ=[ 6 7 8 9 10 1 2 3 4 5 ]
1 1 0 1 1 0 0 1 0 0
(
0
H '= 0
1
0
1
0
1
0
1
0
0
1
0
1
0
0
1
0
0
0
1
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
0
1
0
1
)
con las mismas propiedades como H pero que comparte el mismo orden de los
bits de palabra de código como apoyo invertido.
Todo este procesamiento se puede hacer fuera de línea y sólo las matrices G y H'
proporcionan al codificador y decodificador respectivamente. Sin embargo, el
inconveniente de este enfoque es que, a diferencia de H, la matriz G lo más
probable es que no sea escasa y por lo que la multiplicación de matrices,
c=uG
% Noise parameters
SNRdB = 1;
sigma = sqrt(10^(-SNRdB/10));