Vous êtes sur la page 1sur 20

Repblica Bolivariana De Venezuela

Ministerio Del Poder Popular Para La Defensa


Universidad Experimental Politcnica De Las Fuerzas Armadas
UNEFA- Ncleo Sucre



CDIGO HAMMING.




Profesor: Luis Rodrguez

Integrantes:
Julied Mrquez
Rosa Rodrguez
Alfremar Ramrez
Marielys Villalba
Maringeles Sanes
Seccin: 03
Ing. De Telecomunicaciones

Cuman, septiembre de 2014.
INTRODUCCIN

Hamming trabaj en los Laboratorios Bell en la dcada de 1940 en el
Modelo V ordenador Bell, una mquina basada en rels electromecnicos
con tiempos de ciclo en segundos. En las telecomunicaciones los cdigos de
Hamming son una familia de lineal cdigos de correccin de errores que
generalizan el cdigo de Hamming inventado por Richard Hamming en 1950.
Los cdigos Hamming pueden detectar hasta dos y corregir hasta un error de
bit. Por el contrario, el cdigo de paridad simple no puede corregir los
errores, y puede detectar slo un nmero impar de errores. Los cdigos de
Hamming son especiales ya que son cdigos perfectos, es decir, que
alcanzan la tasa ms alta posible para los cdigos con su longitud de bloque
y la distancia mnima la cual es de tres.

Por otro lado, en trminos matemticos, los cdigos de Hamming son
una clase de cdigos lineales binarios. Para cada nmero entero hay un
cdigo con longitud de bloque y la longitud del mensaje. Por lo tanto la tasa
de cdigos de Hamming plantea que es ms alta posible para los cdigos
con la distancia y la longitud de bloque. La matriz de comprobacin de
paridad de un cdigo de Hamming se construye haciendo una lista de todas
las columnas de longitud que no son cero, lo que significa que el cdigo de
doble del cdigo de Hamming es el cdigo Hadamard pinchado. La matriz de
comprobacin de paridad tiene la propiedad de que cualquiera de las dos
columnas se pairwise linealmente independientes.

Adems, los cdigos de Hamming slo pueden aadir muy poca
redundancia a los datos, y por lo tanto, slo se pueden detectar y corregir
errores si hay casi nada de ruido. Este es el caso en la memoria del
ordenador, donde los errores de bits son extremadamente raros y los cdigos
de Hamming se usan ampliamente. En este contexto, a menudo se utiliza un
cdigo de Hamming extendido con un bit de paridad adicional. Los cdigos
de Hamming permiten alcanzar ciertas distancias las cuales permiten al
decodificador distinguir entre la situacin en la que se produjo un error de
bit y la situacin en la que se produjeron dos errores de bit.
















CDIGO HAMMING.
Es un cdigo detector y corrector de errores que lleva el nombre de su
inventor, Richard Hamming. En los datos codificados en Hamming se pueden
detectar errores en un bit y corregirlos, sin embargo no se distingue entre
errores de dos bits y de un bit; para ello se usa Hamming extendido. Esto
representa una mejora respecto a los cdigos con bit de paridad, que pueden
detectar errores en slo un bit, pero no pueden corregirlo.
Explicacin del Cdigo Hamming.
Si se aaden junto al mensaje ms bits detectores-correctores de error
y si esos bits se pueden ordenar de modo que diferentes bits de error
producen diferentes resultados, entonces los bits errneos podran ser
identificados. En un conjunto de siete bits, hay slo siete posibles errores de
bit, por lo que con tres bits de control de error se podra especificar.
Hamming estudi los esquemas de codificacin existentes, incluido el
de dos entre cinco, y generaliz sus conclusiones. Para empezar, desarroll
una nomenclatura para describir el sistema, incluyendo el nmero de los bits
de datos y el de los bits detectores-correctores de error en un bloque. Por
ejemplo, la paridad incluye un solo bit para cualquier palabra de datos, as
que las palabras del Cdigo ASCII que son de siete bits, Hamming las
describa como un cdigo (8.7), esto es, un total de 8 bits de los cuales 7 son
datos. Con base a la anterior repeticin, sera un cdigo (3.1), siguiendo la
misma lgica. La relacin de la informacin es el segundo nmero dividido
por el primero, por nuestro ejemplo de la repeticin, 1/3.
Tambin estudi los problemas que surgan al cambiar dos o ms bits
a la vez y describi esto como distancia; la cual es ahora llamada distancia
de Hamming en su honor. La paridad tiene una distancia de 2, dado que
cualquier error en dos bits no ser detectado. La repeticin (3.1) tiene una
distancia de 3, pues es necesario el cambio simultneo de tres bits para
obtener otra palabra de cdigo. La repeticin (4.1), es decir; cada bit se
repite cuatro veces, tiene una distancia de 4; as que el cambio de dos bits
en el mismo grupo quedar sin definir.
Hamming estaba interesado en solucionar simultneamente dos
problemas: aumentar la distancia tanto como sea posible, a la vez que se
aumentan al mximo los bits de informacin. Durante los aos 40 desarroll
varios esquemas de codificacin que mejoraban notablemente los cdigos
existentes. La clave de todos sus sistemas era intercalar entre los bits de
datos los de paridad.
Hoy, el cdigo de Hamming se refiere al (7.4) que Hamming introdujo
en 1950. El cdigo agrega tres bits adicionales de comprobacin por cada
cuatro bits de datos del mensaje. El algoritmo de Hamming (7.4) puede
corregir cualquier error de un solo bit, pero cuando hay errores en ms de un
bit la palabra transmitida se confunde con otra, con error en un slo bit
siendo corregida, pero de forma incorrecta; es decir que la palabra que se
corrige es otra distinta a la original, y el mensaje final ser incorrecto sin
saberlo. Para poder detectar; aunque sin corregirlos, errores de dos bits se
debe aadir un bit ms, y el cdigo se llama Hamming extendido. El
algoritmo es el siguiente:
1. Todos los bits cuya posicin es potencia de dos se utilizan como
bits de paridad (posiciones 1, 2, 4, 8, 16, 32, 64, etc.).
2. Los bits del resto de posiciones son utilizados como bits de datos
(posiciones 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, etc.).
3. Cada bit de paridad se obtiene calculando la paridad de alguno de
los bits de datos. La posicin del bit de paridad determina la secuencia de los
bits que alternativamente comprueba y salta, a partir de ste, tal y como se
explica a continuacin. Posicin 1: salta 0, comprueba 1, salta 1, comprueba
1, entre otros. Posicin 2: salta 1, comprueba 2, salta 2, comprueba 2, etc.
Posicin 4: salta 3, comprueba 4, salta 4, comprueba 4, etc. Posicin 8: salta
7, comprueba 8, salta 8, comprueba 8, etc. Posicin 16: salta 15, comprueba
16, salta 16, comprueba 16, etc. Regla general para la posicin n es: salta n-
1 bits, comprueba n bits, salta n bits, comprueba n bits. Y as sucesivamente.
En otras palabras, el bit de paridad de la posicin comprueba los bits en las
posiciones que tengan al bit k en su representacin binaria. Dicho a la
inversa, el bit 4, chequea los bits 4, 5, 6, 7, al ser estos los de su
representacin binaria: 4=100(2), 5=101(2), 6=110(2) y 7=111(2). Por el
contrario, el mismo bit de paridad no comprueba el bit 8, debido a que en su
representacin binaria el bit nmero 3 (=4) es igual a 0 (8=1000B). As, por
ejemplo, para los primeros trminos se tiene: En la Posicin 1 (2^0 = 1),
comprobaramos los bits: 1, 3, 5, 7, 9, 11, 13... En la Posicin 2 (2^1 = 2), los
bits: 2, 3, 6, 7, 10, 11, 14, 15... En la Posicin 4 (2^2 = 4), los bits: 4, 5, 6, 7,
12, 13, 14, 15, 20, 21, 22, 23... En la Posicin 8 (2^3 = 8) tendramos: 8, 9,
10, 11, 12, 13, 14, 15, 24-31... Siguiendo el algoritmo hasta completar la
nueva cadena.
Ejemplo.
Considere la palabra de datos de 7 bits "0110101". Para ver cmo se
generan y utilizan los cdigos Hamming para detectar un error, observe las
tablas siguientes. Se utiliza la d para indicar los bits de datos y la p para los
de paridad.
En primer lugar los bits de datos se insertan en las posiciones
apropiadas y los bits de paridad calculados en cada caso usando la paridad
par.
P1 = D1 exor D2 exor D4 exor D5 exor D7
P2 = D1 exor D3 exor D4 exor D6 exor D7

P3 = D2 exor D3 exor D4
P4 = D5 exor D6 exor D7

La nueva palabra de datos (con los bits de paridad) es ahora
"10001100101". Consideremos ahora que el bit de la derecha, por error,
cambia de 1 a 0. La nueva palabra de datos ser ahora "10001100100".
Sin errores.

Comprobacin de los bits de paridad (con primer bit de la derecha sin cambiar).



Clculo de los bits de paridad en el cdigo Hamming
Con errores.

Si se analiza en la tabla anterior la paridad que se debe obtener a la
derecha tras la llegada del mensaje sin errores debe ser siempre 0 (por cada
fila), pero en el momento en que ocurre un error esta paridad cambia a 1, de
all el nombre de la columna "prueba de paridad 1". Se observa que en la fila
en que el cambio no afect la paridad es cero y llega sin errores.
El paso final es evaluar los bits de paridad (el fallo se encuentra en
d
7
). El valor entero que representan los bits de paridad es 11 (si no hubieran
ocurrido errores este valor seria 0), lo que significa que el bit dcimo primero
de la palabra de datos (bits de paridad incluidos) es el errneo y necesita ser
cambiado.

Cambiando el bit dcimo primero 10001100100 se obtiene de nuevo
10001100101. Eliminando los bits de patrn de la paridad no se tienen en
cuenta los bits de paridad. Si el error se produjera en uno de ellos, en la
comprobacin slo se detectara un error, justo el correspondiente al bit de
paridad causante del mismo.
Comprobacin de los bits de paridad (con primer bit de la derecha cambiado)
Hamming Extendido.
Para detectar errores en 2 bits se utiliza un bit adicional de paridad
(Hamming Extendido) donde puede darse el caso de 3 posibilidades:


Cdigos pre-Hamming
Antes de los cdigos Hamming se utilizaron ciertos cdigos detectores
de error, como lo fueron el cdigo linteing, pero ninguno lleg a ser tan eficaz
como los de Hamming. A continuacin se describen algunos de estos
cdigos.
Paridad.
La paridad consiste en aadir un bit, denominado bit de paridad, que
indique si el nmero de los bits de valor 1 en los datos precedentes es par o
impar. Si un solo bit cambiara por error en la transmisin, el mensaje
cambiar de paridad y el error se puede detectar (ntese que el bit donde se
produzca el error puede ser el mismo bit de paridad). La convencin ms
comn es que un valor de paridad 1 indica que hay un nmero impar de unos
en los datos, y un valor de paridad de 0 indica que hay un nmero par de
unos en los datos.
La comprobacin de paridad no es muy robusta, dado que si cambia
de forma uniforme un nmero par de bits, el bit de paridad ser vlido y el
error no ser detectado. Se utiliza cuando se cumplen simultneamente dos
condiciones: que la probabilidad de que falle un bit es baja y que las fallas de
bits son sucesos independientes. De esta forma la probabilidad de que fallen
dos (o ms) bits es muy baja, por lo que cuando no detecta error es
altamente probable que el cdigo sea efectivamente correcto. Cabe destacar
que dichas condiciones se ajustan al caso de las memorias de las
computadoras modernas pero no ocurre lo mismo con los dispositivos de
almacenamiento que guardan la informacin en forma serial (un bit a
continuacin de otro) ni con los sistemas de transmisin de datos seriales ya
que en estos casos el hecho que falle un bit est vinculado, en forma no
despreciable, a la falla de otro adyacente.
Por otro lado, la paridad, aunque puede detectar que hay error, no
indica en qu bit se cometi. Los datos se deben desechar por entero y
volverse a transmitir. En un medio ruidoso, una transmisin correcta podra
tardar mucho tiempo o incluso, en el peor de los casos, no darse nunca. El
chequeo de paridad, aunque no es muy bueno, usa un nico bit, por lo que
produce muy poca sobrecarga, y adems permite la correccin de ese bit si
es conocida su posicin.
Dos entre cinco.
En los aos 40, Bell utiliz un cdigo algo ms sofisticado conocido
como dos-entre-cinco. Este cdigo se basa en que cada bloque de cinco bits
(conocido como penta-bit) tuviera exactamente dos unos, asegurando as
que tenga una Distancia de Hamming igual a dos. De este modo, la
computadora podra detectar posibles errores cuando en su entrada no haba
exactamente dos unos en cada penta-bit.
Este cdigo segua nicamente detectando errores por cambio en un
solo bit; si en un mismo penta-bit un 0 cambiaba a 1 y un 1 cambiaba a 0, la
regla de dos-entre-cinco se segua cumpliendo y el error quedaba sin
descubrir.
Repeticin.
Este cdigo consista en repetir cada bit de datos varias veces para
asegurarse de que la transmisin era correcta. Por ejemplo, si el bit de datos
que se enva fuera un 1, un cdigo de repeticin con n=3, enviara "111". Si
los tres bits recibidos no eran idnticos, haba un error. En un ambiente sin
demasiado ruido, la mayora de las veces solamente cambiara un bit en
cada paquete de tres bits. Por lo tanto, datos del tipo 001, 010, y 100 se
corresponden al bit 0, mientras que 110, 101, y 011 se corresponden con el
bit 1. Es como si el bit original se obtuviera por mayora en una "votacin". Un
cdigo con esta capacidad de reconstruir el mensaje original en la presencia
de errores se conoce como cdigo corrector de errores.
Sin embargo, este cdigo no puede reparar correctamente todos los
errores. En nuestro ejemplo, si el error en la transmisin provocara el cambio
simultneo de dos bits y el receptor recibiera "001", el sistema detectara el
error, pero considerando que el bit original era 0, lo cual es incorrecto. Si se
aumenta el nmero de veces que se repite cada bit a cuatro (n=4), es posible
detectar los errores en dos bits pero obviamente no se podrn corregir; con
cinco, es posible corregir errores de dos bits, pero no lo podr hacer en
errores de tres bits.
Por otra parte, el cdigo de la repeticin es extremadamente ineficaz,
pues reduce la velocidad de transmisin por tres en nuestro ejemplo original
y su eficacia cae drsticamente al aumentar el nmero de veces que cada bit
se repite para detectar y corregir ms errores. El uso del cdigo de bloques
no lineales para deteccin de errores no es muy implementado por lo tanto
emplearemos el cdigo de errores lineales para la correccin de errores.
Chequeo por Paridad.
Paridad Horizontal y Vertical.
La paridad horizontal y vertical es utilizada en algunos cdigos de bloque
para una combinacin de chequeo de (LRC / VRC) para detectar errores. El
LRC: Longitudinal Redundancy Checking ("Chequeo de Redundancia
Horizontal") y el VRC: Vertical Redundancy Checking ("Chequeo de
Redundancia Vertical").
Proceso.
El proceso para calcular la paridad de bloque es el siguiente:
Los caracteres a transmitir se agrupan en bloques de n filas y m
columnas.
Se calcula el bit de paridad de cada fila y se aade al principio (o al
final, segn convenio) de la fila.
Se calcula el bit de paridad de cada columna y se aade al principio (o
al final, segn convenio) de la columna.
El bloque final a transmitir tendr por tanto una fila y una columna ms
que el original.
La nueva columna estar formada por los bits de paridad horizontal de
todas las filas.
La nueva fila estar formada por los bits de paridad vertical de todas
las columnas.
Adicionalmente se emplea un bit de paridad cruzada que se calcula a
partir de los bits de paridad de filas y columnas.
Los chequeos de paridad horizontal y vertical se usan para detectar y
corregir los posibles errores que se puedan producir durante la transmisin
de datos.
En el siguiente ejemplo se chequea la paridad de un bloque de 48 bits,
distribuido en 6 filas de 8 bits cada una. Se usa paridad par.

Paridad Par o Impar
Un recurso sencillo para determinar si se han producido
reagrupamientos de bits durante la transmisin o el procesamiento consiste
en agregar un bit de paridad a los que ya representan a cada carcter. Si
agregamos un bit 1 de paridad solo a aquellos caracteres con l nmero
impar de bits 1 que les corresponde, obtendremos un cdigo en el cual todos
los caracteres estn integrados por un nmero par de bits 1. As, con
invertirse el valor de un bit se produce una combinacin no valida (impar).
Este mtodo de paridad impar o par es un caso particular del caso M de N.

Chequeo de Paridad Vertical (VRC).
Es un mtodo simple, aplicable a nivel byte. Su uso esta directamente
relacionado con el cdigo ASCII. El mtodo de codificacin de smbolos
ASCII, utiliza los valores binarios obtenidos con 7 bits para representar los
datos. El mximo valor binario representable es 7F(hex)=127(dec), por lo
tanto se tienen 128 posibilidades distintas (de 0 a la 127).
Se definen la "paridad" de un carcter en dos maneras:
Paridad "par", cuando l nmero total de bits en "1" en el byte es par.
Paridad "impar", cuando l nmero total de bits en "1" es impar.
En el momento de la transmisin, el extremo emisor calcula el bit de
paridad y lo adosa a los datos. El receptor recalca la paridad y la compara
con el criterio utilizado.
Este mtodo no asegura que no hayan ocurrido errores. Basta que
cambie su valor dos bits de datos simultneamente para que la paridad sea
correcta pero el dato no. VRC disminuye la paridad de que el dato final sea
errneo.
Chequeo de Paridad Longitudinal (LRC).
Si en lugar de considerar 7 bits como el dato a trasmitir en el momento de
calcular la paridad, consideramos un conjunto de caracteres con sus bits de
VRC y sobre esto calculamos la paridad, estaremos usando LRC.
Tomando el i-simo bit de cada byte y calculando a partir de ellos el bit de
paridad resultante obtendremos el i-simo bit del "BCC", para y variando
entre 1 y 8. Cuando se usa LRC, se agrega a un carcter al final del mensaje
que contiene todos los bits de paridad calculados como se dijo
anteriormente. Este byte adicional, se llama BCC (Block Check Character).
Chequeo Bidimensional.
El uso combinado de los mtodos vertical y longitudinal se conoce como
chequeo bidimensional.
Con el vertical obtendremos la abscisa y con la longitudinal la ordenada
del punto (bit) errneo, con una gran probabilidad de acierto. Parte de los
errores no filtrados por el vertical, pueden detectarse con esta tcnica
combinada.
Paridad Horizontal y Vertical.
Cuando se agrega un bit a cada grupo de bits que representan un
carcter en la forma que hemos descrito, la paridad se denomina vertical. El
nombre viene de la posicin relativa de los bits, si los observamos sobre la
cinta de papel en sentido longitudinal. La paridad horizontal, como se podra
suponer, resulta de agregar un bit al final del bloque de bits a lo largo de la
cinta. Si damos paridad horizontal a cada uno de los caracteres de la cinta,
se formara un carcter de paridad a continuacin por los caracteres de
informacin.

El uso de una paridad horizontal y vertical combinadas permite
superar una de las mayores desventajas que estos esquemas ofrecen por
separado: la incapacidad para localizar con exactitud el o los bits errneos.
En la matriz que se ilustra en la siguiente figura, el medio de recepcin ha
verificado la paridad horizontal y vertical de los caracteres entrantes e
identificado aquellos errneos debido a que su paridad no es la correcta.
Invirtiendo de los bits equivocados, el dispositivo receptor puede corregir el
carcter.

Aun cuando el esquema de paridad horizontal y vertical combinadas
ofrece mucha ms proteccin que cualquiera de ellas individualmente,
presenta un problema, y es que una codificacin rectangular de errores
pasara inadvertida. En la siguiente figura se mostrara una situacin posible
(pero muy improbable) en la cual los errores no seran detectados mediante
el empleo de paridad combinada horizontal y vertical. Si una fuente
perturbadora y generadora de errores invirtiese el valor de los bits marcados
con un crculo, los bits de paridad seguiran siendo vlidos y el error no sera
notado.

Errores no detectados por Paridad combinada Horizontal y Vertical.
Paridad Entrelazada
Para salvar en cierta medida este inconveniente de la paridad horizontal y
vertical se puede emplear otro mtodo de deteccin de errores, denominado
paridad entrelazada. Esta tcnica requiere dos bits de paridad por carcter:
uno de paridad par o impar para los bits primero, tercero y quinto de un
cdigo de seis bits, y el otro, tambin de paridad, para los bits que estn en
segundo, cuarto y sexto lugar, como lo muestra la figura, se formara la
paridad entrelazada de un carcter de seis bits. La paridad entrelazada
puede reducir enormemente la posibilidad de que un error pase sin ser
detectado, comparndola con la de un sistema sin verificacin. Este mtodo
se denomina tambin verificacin de redundancia cclica.


Generacin de Paridad Entrelazada Par.
Todo sistema de control de errores por paridad tiene un inconveniente
ms: la posibilidad de que la misma paridad sea recibida con error. A menos
que el error de informacin coincida exactamente con el otro; ser detectado
y podr corregirse por retransmisin.









CONCLUSIONES
Las principales contribuciones a la ciencia de Hamming fueron
el cdigo Hamming, la ventana Hamming y la distancia
Hamming.

El cdigo de Hamming es un cdigo que detecta errores y los
corrige; en los datos codificados.


La distancia de Hamming es la efectividad de los cdigos de
bloque y depende de la diferencia entre una palabra de cdigo
vlida y otra.

La paridad est fundamentada en aadir un bit, llamado bit de
paridad, que diga si el nmero de los bits de valor 1 en los
datos anteriores es par o impar.


La paridad detecta que hay error, pero no indica en qu bit se
efectu.

Para detectar errores de dos bits, se debe aadir un bit ms, y
el cdigo se llama Hamming extendido.




BIBLIOGRAFA

Codigo Hamming. Revisado (25-09-14).
<http://es.wikipedia.org/wiki/C%C3%B3digo_HammingS>.
Paridad Horizontal y Vertical. Revisado (25-09-14).
<http://es.wikipedia.org/wiki/Paridad_horizontal_y_vertical>.
Cdigo Hamming. Revisado (26-09-14).
<http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=8&ved=
0CE4QFjAH&url=http%3A%2F%2Fwww.cimat.mx%2F~alram%2FSO%2FCo
digoHamming.ppt&ei=PiAqVJ998OewBLyZgbAJ&usg=AFQjCNF3XmFHeP5
mQPv0AtWXA6wGd67_2w>.