Sie sind auf Seite 1von 24

OpenStax-CNX module: m36906

10. Codificacin de Canal: Cdigo


Hamming y Cdigo Convolucional

Mariangela Mezoa
Translated By:
Mariangela Mezoa

This work is produced by OpenStax-CNX and licensed under the


Creative Commons Attribution License 3.0

Abstract
Este mdulo contiene informacin acerca del bloque de codicacin de canal de un sistema de comunicaciones digitales, especcamente la codicacin por bloque (Cdigo Hamming) y la codicacin
convolucional para la deteccin y correccin de errores.

1 CODIFICACIN DE CANAL: CDIGO HAMMING Y CDIGO CONVOLUCIONAL


Gonzlez C. Y. Venuska
Mezoa R. Mariangela

Resumen

Este mdulo contiene informacin acerca del bloque de codicacin de canal de un sistema de comunicaciones digitales, especcamente la codicacin por bloque (Cdigo Hamming) y la codicacin convolucional
para la deteccin y correccin de errores.
Cuando transmitimos informacin, uno de los objetivos principales es el de minimizar la cantidad de
errores que pudieran producirse en el proceso. Esta transmisin depende del factor Seal a Ruido (S/N),
potencia y velocidad de transmisin. Si optimizando estas variables se necesita an mejorar la calidad de la
transmisin, entonces se deben buscar ciertos mtodos que aseguren y mejoren la abilidad. Es a partir de
aqu que surge el concepto de la codicacin para control de errores.

codicacin de canal

para el control de errores se encarga, bsicamente, de la adicin de dgitos

extra al mensaje a transmitir.

Ellos no poseen informacin como tal, pero hacen posible la deteccin y

La

correccin de errores en el bloque de recepcin del mensaje.

1.1 Deteccin y Correccin de Errores:


En un sistema de comunicaciones, detectar un error es ms sencillo que corregirlo. Si existen irregularidades,

ARQ:

el receptor puede pedir una retransmisin del mensaje que contiene el error (
Version

1.1: Feb 8, 2011 9:58 pm -0600

http://creativecommons.org/licenses/by/3.0/

http://cnx.org/content/m36906/1.1/

Automatic Repeat

OpenStax-CNX module: m36906

Request). Sin embargo, cuando el sistema no implementa esta tcnica por no ser prctico o simplemente
porque no es posible, debe aplicar redundancia en el cdigo a travs del mtodo
Correction).
El mtodo ms sencillo de redundancia en el cdigo consiste en repetir

FEC

(Forward Error

n veces el smbolo de mensaje.

Cuando los smbolos son 1 y 0, cualquier error de transmisin en una palabra cdigo recibida alterar el
patrn de repeticin cambiando un 1 a 0 (o viceversa).
aleatoria (e independiente) con probabilidad

Si los errores de transmisin ocurren de forma

Pe, entonces se pudiera denir la probabilidad de que ocurran

i errores en una palabra cdigo de n bits como:

Figure 1

Por ejemplo, si se considera un cdigo de repeticin triple (3, 1) (1 bit de mensaje, dos bits de repeticin,
palabra cdigo de tres bits), las palabras cdigo seran 000 y 111. Cualquier mensaje recibido que no coincida
con estas palabras cdigo evidencian la presencia de errores. Pero, si los tres bits estn errados (Se transmite
000 pero se recibe 111) entonces ser imposible detectar el error:

Figure 2

Si se quiere corregir el error, asumimos que al menos dos de los tres bits son correctos. Entonces, 001 se
decodica como 000 y 101 se decodica como 111. Esto corrige palabras con un solo error, pero para dos o
tres errores la probabilidad de que una palabra est errada resulta como:

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

Figure 3

1.2 Distancia Hamming


Una palabra cdigo de n bits puede ser representarse como un vector en un espacio de n dimensiones. Por
ejemplo, el cdigo 010 puede representarse como X=( 0 1 0 ).
repeticin (3, 1):

Figure 4: Vectores que representan palabras cdigo de tres bits.

http://cnx.org/content/m36906/1.1/

Tomemos el caso anterior de cdigo de

OpenStax-CNX module: m36906

En total se gracan las 8 posibles combinaciones de palabras cdigo y los puntos azules representan
el cdigo de repeticin.

La distancia que separa dos puntos cualesquiera se reconoce como la distancia

Hamming, que est relacionada con el poder de control de errores del cdigo (Fortaleza del cdigo) y se
dene como el nmero de elementos diferentes entre dos puntos. Por ejemplo:

Figure 5

La distancia mnima de un cdigo en particular es la distancia Hamming


de cdigo

vlidos.

ms pequea entre dos vectores

De esta forma, la deteccin de errores es posible siempre que se cumpla que el nmero de

errores de transmisin en una palabra cdigo sea menor a dmn , por lo que la palabra errada no es un vector
vlido. Si es mayor o igual, la palabra errada puede corresponder a un vector vlido y el error no podra ser
detectado.
La capacidad de correccin y deteccin de un cdigo se dene como:

Figure 6

Para el ejemplo desarrollado, dmn= 3, por lo que el cdigo de repeticin es capaz de corregir hasta 1
error por palabra y detectar hasta 2 errores. Evidentemente, la fortaleza del cdigo depende del nmero de
bits que se le agregan al mensaje original. La distancia mnima de una codicacin por bloque (repeticin)
se dene como:

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

Figure 7

1.3 Codicacin FEC


Un sistema FEC puede expresarse grcamente como:

Figure 8

Los bits de entrada llegan con una tasa de rb .

El codicador toma bloques de k bits del mensaje y

construye un cdigo de bloques (n, k) con tasa Rc=k/n<1. La tasa de bits del canal ser r= rb / Rc> rb .
La probabilidad de error tomar un valor de Pe1, que evidentemente depender de la energa de la seal
y la densidad de potencia del ruido en el receptor ([U+F068]0 ). Si Eb representa la energa promedio por
bit de mensaje, entonces la energa promedio por bit de cdigo es Rc.Eb. Entonces:

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

Figure 9

2 Codicacin por Bloques Lineal


Como ya se mencion antes, un

cdigo por bloques(n,k) consiste en vectores de n bits, con cada vector

correspondiente a un bloque nico de k bits de mensaje.


vectores de n bits, la meta est en seleccionar los 2
la

bloques de mensaje y 2

vectores de cdigo que cumplan con la condicin de que

distancia mnima Hamming sea lo ms grande posible.


Supongamos un vector de cdigo arbitrario tal que:

Figure 10

http://cnx.org/content/m36906/1.1/

Dado que existen 2

OpenStax-CNX module: m36906

Se cumple que esta codicacin por bloques es lineal si al sumar, en mdulo 2, dos palabras cdigo se
genera una tercera palabra cdigo vlida, incluyendo el cdigo de puros ceros. Esta suma se dene como:

Figure 11

Ahora bien, una codicacin por bloques sistemtica consiste en vectores cuyos primeros (o ltimos) k
elementos son idnticos a los bits de mensaje, tomando el resto de los elementos (n-k) como bits de chequeo.
Por lo tanto, un vector de cdigo se expresa como:

Figure 12

El vector de cdigo X puede obtenerse a travs de una multiplicacin de matrices:

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

Figure 13

La matriz identidad en G reproduce el vector de mensaje para los primeros k elementos de X, mientras
que la sub-matriz P genera el vector C a travs de

C=MP. Al igual que con la suma de vectores explicada

inicialmente, esta multiplicacin de matrices sigue el procedimiento de la suma mdulo 2.


Para la recepcin, tomaremos el vector Y. Cualquier error de transmisin resultar en Y6=X. Uno de los
mtodos ms fciles es haciendo uso de una
P. Se dene como:

http://cnx.org/content/m36906/1.1/

matriz de chequeo de paridad H derivada de la sub-matriz

OpenStax-CNX module: m36906

Figure 14

Si esta ltima condicin no se cumple, el cdigo recibido contiene errores. La deteccin de errores puede
basarse a partir del vector sndrome S:

Figure 15

Si todos los elementos de S son iguales a CERO, entonces hay dos posibilidades:

Y es igual a X o Y;
Y es igual a otro vector cdigo y el error de transmisin no se detecta.

De igual forma, los errores se indican con la presencia de elementos distintos a cero en S.
Ahora bien, si el vector X se corrompe con un vector de error E, el vector Y resultar en:

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

10

Figure 16

Por lo que S ser:

Figure 17

Esto evidencia que el Sndrome depender completamente del patrn de error, no del vector transmitido.
Al existir errores en la codicacin, S indicar en dnde se encuentra el mismo.
Si un cdigo debe corregir hasta t errores por palabra, entonces q y n deben cumplir con la desigualdad
o relacin de Hamming, denida como:

Figure 18

2.1 Cdigo Hamming


Es un cdigo de bloques lineal
ecuaciones:

http://cnx.org/content/m36906/1.1/

(n,k)

con 3 ms bits de chequeo/redundancia (q) que cumple con estas

OpenStax-CNX module: m36906

11

Figure 19

Dado que su distancia mnima siempre es 3 (sin importar el valor de q), este tipo de cdigo es capaz de
corregir hasta un error y detectar dos, por lo que:

Figure 20

Supongamos el caso Hamming (7,4) (n=7, q=3, k=4).

Para construir dicho cdigo, tomamos la sub-

matriz P de la matriz generadora G y la llenamos con todas las palabras de q bits que tengan dos o ms 1's,
sin ningn orden en particular. Como son k=4 bits de mensaje original, entonces la matriz G tendr cuatro
las. Entonces:

Figure 21

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

12

Dado un bloque de bits de mensaje M = (m1 m2 m3 m4 ), los bits de chequeo se calculan sustituyendo
los elementos de la sub-matriz P en la ecuacin C=MP, por lo que:

Figure 22

Para este ejemplo se pudiera construir un codicador Hamming de la siguiente forma:

Figure 23

Las palabras cdigo correspondientes a este cdigo Hamming (7,4) se observan en la tabla (Todas generadas a partir de C=MP):

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

13

Mensaje

Bits Redundantes

Table 1

2.2 Cdigos Convolucionales


A diferencia de la codicacin por bloque, los cdigos convolucionales trabajan bit por bit. Su estructura
pudiera generalizarse de la siguiente forma:

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

14

Figure 24

Esta estructura genera V smbolos a la salida por cada smbolo de entrada. Su tasa de smbolos de salida
ser entonces Rc=1/V. Existen 4 mtodos de representacin de los cdigos convolucionales:

Por Conexin.
Diagrama de estados.
rbol de cdigo.
Diagrama Trellis

2.3 Representacin por Conexin:


Supongamos que se tiene el siguiente codicador convolucional:

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

15

Figure 25

Para que el cdigo funcione correctamente, antes de que llegue el primer bit del mensaje el registro de
desplazamiento est `limpio' (Slo contiene 0's).
Supongamos que el mensaje de entrada es

http://cnx.org/content/m36906/1.1/

101.

Esto implica que la primera salida ser U1=0 y U2=0.

Entonces, el codicador har los siguientes pasos:

OpenStax-CNX module: m36906

16

Figure 26: Diagrama de conexin con salidas U1 y U2 cuando se tiene como mensaje de entrada la
secuencia 101. Se asume que inicialmente los registros estn vacos.

La secuencia de salida ser:

U1 U2
1

Table 2

2.4 Representacin por Diagrama de Estados:


El estado del codicador convolucional se dene como los contenidos de los registros de desplazamiento de
las k-1 etapas ms a la derecha del codicador. Para el ejemplo actual:

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

17

Figure 27: Diagrama de estados.

2.5 Representacin por rbol de cdigo:


La raz representa el estado inicial (U1U2=00). Si el prximo bit es un 0, se toma la ramicacin superior.
Dado que la longitud del registro es igual a 3 (L=3), entonces el rbol ser:

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

18

Figure 28

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

19

2.6 Diagrama Trellis


A travs de l se puede observar la evolucin del codicador por cada T que pase. El diagrama deber tener
k-1

nodos que representen los posibles estados (a,b,c y d). Entonces:

Figure 29

Para la decodicacin implementamos la

mxima verosimilitud

maximizar P(Z/Um), siendo Um las posibles secuencias recibidas.

http://cnx.org/content/m36906/1.1/

(maximum-likelihood), que busca

OpenStax-CNX module: m36906

20

Figure 30

Algoritmo de Viterbi: Se basa en el Diagrama de Trellis. Asigna a cada


mtrica que es igual a la distancia Hamming correspondiente a la rama recibida y todas las ramas

Esto puede verse a travs del


rama una

de Trellis que intervienen en ese instante de tiempo. Supongamos el siguiente ejemplo:

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

21

Figure 31

Como se observa, se debe esperar hasta el instante T4 (que es cuando empiezan a cerrarse los lazos) para
tomar una decisin sobre el camino ms corto. All, se tendrn dos caminos para llegar a ese instante:

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

22

Figure 32

Partiendo del estado a, en el estado 4 convergen dos trayectorias dos mtricas: la primera con un total de
4(la de arriba) y la segunda con un total de 3(la que va por debajo). Luego se analizan situaciones similares
en T4. Por ejemplo, al estado b en T4 se llega por dos trayectorias: la de arriba con mtrica 4 y la de abajo
con mtrica 3. Para T4 pero al estado c tambin se llega por dos caminos: el de arriba con mtrica 5 y el
de abajo con mtrica 0. Para T4 pero al estado d los dos caminos tienen mtricas 3 y 2 respectivamente.
Al eliminar todas las trayectorias de mtrica mayor, en este ejemplo se logra ya despejar el bit transmitido
entre la transicin T1-T2 y decidir que es un 1.

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

23

Figure 33

Se repite el mismo procedimiento para el nodo T5 y luego para los dems nodos hasta que se vayan
obteniendo cada uno de los bits transmitidos.
Se descartan entonces todos los caminos no viables. Este proceso debe repetirse hasta que se logre obtener
la secuencia original.

http://cnx.org/content/m36906/1.1/

OpenStax-CNX module: m36906

24

Figure 34

2.7 Simulacin en LabVIEW

[Media Object]

Las pruebas para las codicaciones Hamming(7,4), Hamming(15,11) y Convolucional pueden realizarse
descargando el VI del siguiente enlace:

1 This media object is a downloadable le. Please view or download it at


<http://cnx.org/content/m36906/1.1/canal.rar>

http://cnx.org/content/m36906/1.1/

Das könnte Ihnen auch gefallen