Está en la página 1de 9

Concepto

Los códigos de bloque son técnicas utilizadas para transformar un


conjunto de datos binarios “K” en otro un poco más largo denominado “N”
donde se agregan unos bits para dar redundancia al código saliente N,
donde (N>K). Los códigos lineales se denominan también códigos de
comprobación de paridad, pues la palabra código se obtiene a partir de
sumas módulo dos de subconjuntos de los bits de entrada (XOR). Un
código de este tipo queda completamente caracterizado por una matriz
generadora G.

El principio que se utiliza en los códigos de bloque consiste en estructurar


los datos en bloques de longitud fija y añadir a cada bloque un cierto
número de bits llamados bits de redundancia. La redundancia permite la
detección y corrección de errores y el precio que se paga es un caudal
binario mayor y, por consecuencia, mayor ancho de banda que el
requerido para la transmisión del alfabeto original.

A la hora de obtener el bloque original en el receptor, los bits de


redundancia pueden ser utilizados para corregir los errores introducidos
por el canal.

Sólo ciertas combinaciones de bits son aceptables y forman una colección


de palabras de código válidas.

Cuando los datos se transmiten y llegan al receptor hay dos posibilidades:

1. Que la palabra que se recibe sea una palabra de código válido.


2. Que la palabra que se recibe no sea un código válido, en cuyo
caso hay dos posibilidades:
 El receptor puede recrear el bloque original FEC (código
auto corrector).
 El receptor puede pedir que se retransmita el bloque
ARQ(código de auto-chequeo)
PARA QUÉ SIRVE
FEC
El segundo tipo de control de errores es el que se designa como corrección
de errores hacia adelante o FEC (forward error correction), en el que la
comunicación es unidireccional del transmisor al receptor. En este caso,
los bits de paridad agregados a la información en el transmisor, se
configuran de forma tal que no sólo permiten la detección de errores, sino
su corrección sin necesidad de requerir retransmisión. Tal capacidad de
corrección es limitada y, en general, no es posible corregir todos los errores
y recuperar la información original transmitida. Cuando no es posible
corregir el error, el receptor emplea alguna técnica para enmascararlo, por
ejemplo interpolando valores entre la información anterior y la posterior al
error. Estas técnicas de enmascaramiento u ocultación de errores no sólo
se emplean en la transmisión digital; desde hace bastantes años se aplican
en las máquinas reproductoras de vídeo para enmascarar la información
perdida como consecuencia de deficiencias microscópicas en el material
ferromagnético de las cintas de vídeo8.
ARQ
Clases de códigos
Código de Hamming.
Se debe tomar en cuenta algunos parámetros importantes que son
utilizados en su funcionamiento:

El peso de Hamming

La distancia de Hamming (d)

Una palabra código recibida puede analizarse para la existencia de


errores.
Distancia de Hamming
La “distancia de Hamming” son los pasos que hay que dar para convertir
algo en otro algo.
Por ejemplo, para convertir la palabra “Casa” en otra palabra diferente:

“Aire” en “Mire” ha cambiado una letra (un paso), por lo que la distancia
de Hamming es 1.
“Aire” en “Mija”, la distancia de Hamming es de 2.
“Aire” en “Mxra”, la distancia de Hamming es de 3.
“Aire” en “Tawl”, la distancia de Hamming es de 4.

Ahora, en binario la “distancia de Hamming” son los bits que cambian de


un grupo de bits a otro grupo de bits. En caso de un bit, por ejemplo, el 0
y se cambia a 1, la distancia de Hamming es de 1.

A razón de lo anterior se puede establecer como ejemplo una relación de


Dimensiones-cantidad de cambios es donde 2 N son las combinaciones y N
la dimensión. En 1era dimensión se tiene 2 combinaciones posibles y la
dado que el cálculo se hace con 2 N, por lo tanto, la distancia o cambio es
igual a 1. De la misma manera se establecerán las combinaciones y
distancia para 22, 23, 24, entre otros.

De manera ilustrativa se puede calcular la distancia entre combinaciones


en grafos ordenados con la representación espacial de los bits a cambiar y
una tabla de bits 2N como sigue:

Nos situamos en el espacio de 2 dimensiones (2bits). Si vamos del punto


00 al 01, la distancia a recorrer es de 1, puesto que recorremos una arista.
Ahora si vamos desde el 00 al 11, recorremos dos aristas por lo que la
distancia es de 2. Por último, en 4 dimensiones queremos ir desde 0110
hasta el 1001, recorremos un total de 4 aristas por lo que la distancia es
de 4.

1 Dimension 2 dimensiones 3 dimensiones 4dimensiones

Gracias a esta representación podemos desarrollar un concepto de


distancia mínima y distancia máxima de Hamming. La que interesa es la
distancia mínima de Hamming, siempre es el camino mínimo entre dos
puntos de dimensiones. Es decir, la “Distancia Mínima de Hamming” mide
el menor número de sustituciones (de los símbolos con los que trabajemos,
en el caso de las imágenes de los últimos ejemplos los símbolos son 0 y 1)
requeridos para cambiar algo a otro algo (para ir de un punto a otro).

La “Distancia Mínima de Hamming” máxima de N Dimensiones; es decir, ir


de un punto a su más lejano con las dimensiones que sean, su camino
mínimo corresponderá con el número de las dimensiones (un ejemplo, en
la imagen del cubo anterior, el punto más alejado de 100 era el 011, y su
camino mínimo para conectar ambos puntos era de 3 aristas, que coincide
con las 3 Dimensiones con las que trabajamos).

Peso de Hamming

Es la diferencia entre dos puntos (A – B). Es otra forma de determinar


la longitud del camino (la cantidad de aristas) entre dos nodos/puntos.
ara calcular la diferencia de peso entre dos números binarios, su peso
es la cantidad de unos de cada número binario. Para calcular el peso
entre dos puntos se aplicará la función XOR (como resta de pesos) a los
pesos de esos dos puntos.

Por ejemplo, en el anterior ejemplo de 3 Dimensiones queremos conocer el


peso entre cualquiera de sus dos puntos. Calculamos el peso de cada
punto sumando la cantidad de 1s de dicho punto (Represento el peso de
cada punto con el símbolo de una pesa gris a su lado)

Ahora queremos conocer el peso entre los puntos 100 y 011. El peso de
100 es de 01 (1 en decimal), y el peso de 011 su peso es de 10 (2 en
decimal).

Restaríamos sus pesos con XOR

01 XOR 10 = 0 XOR 1 y 1 XOR 0 = 11

Buscar errores y corregirlos


Supongamos que nos llega por Internet (o un dato de un disco duro) la siguiente cadena de
bits, con bits de datos y “bits de paridad”. Tenemos que comprobar que esté bien el dato
antes de utilizarlo; no vaya a ser que por Internet debido a alguna interferencia se haya
cambiado algún bit ¡Comprobémoslo!

No sabemos si tiene algún error o no, puede que esté correcto, puede que tenga algunos bits
cambiados; tampoco sabemos si los que están mal son los bits que corresponden con los
datos o los propios “bits de paridad” ¿Entonces, si está mal algún “bit de paridad” ya no
podremos corregir o comprobar nada? También podemos saber si está mal algún “bit de
paridad” e incluso corregirlo, veamos cómo.

Lo primero que tenemos que hacer es rellenar la “matriz síndrome”. No rellenamos los
“bits de paridad”, pues es lo que utilizamos para realizar las comprobaciones; es lo que
tenemos que volver a calcular igual que antes.
Para saber los bits faltantes en el diagrama se calculan sumando los bits de cada fila y se
colocan en este y se rellena respectivamente. En la fila fp1 la suma es par por lo que el bit a
colocar en la fila y el diagrama es 0. De esta manera con la fila fp2 y fp4 y se rellena este
bit. Para fp2 tenemos 0 y para fp4 1.

Se puede comprobar que hay 2 “bits de paridad” que no coinciden en las filas “fP2” y
“fP4”, con lo que hay algo mal. Pero, ¿qué bit está mal? Con lo que deducimos que el bit
erróneo debe pertenecer a ambas filas. Por lo que, si no es “0” el bit erróneo, debe ser “1” y
lo corregimos.
El “0” de la posición 6 coincide con las filas “fP2” y “fP4” ; y es el que está mal.

Una vez corregido podemos quitar los “bits de paridad” y obtener el dato en perfecto
estado, así usarlo. Si era un trozo de una imagen, por ejemplo, después de comprobar el
resto de cachos y componer todos los bits de la imagen, podemos ya por fin visualizarla sin
ningún problema.

¿Y si el que está mal era un “bit de paridad”? Como el siguiente:

Su “matriz síndrome” nos revelará que lo único que está mal es el propio “bit de paridad”.
Pues como hemos dicho más arriba, los “bits de paridad” no son coincidentes con bits de
otras filas; por lo que si el error lo tiene el “bit de paridad” siempre va a estar en soledad.
Sabiendo que está mal podremos corregirlo o no, lo que nos importa es el dato realmente
que está correcto.
¿El código de Hamming hasta cuantos bits puede corregir? Evidentemente si todos son
erróneos, es imposible corregir nada, pues es otra cosa diferente que se validaría como
correcta (Si tenemos una puerta a la que le falta una bisagra la podemos arreglar; lo que no
podemos es suponer que una manzana es una puerta en mal estado e intentar “arreglarla”
poniéndole una bisagra, pues una manzana es otra cosa, no es una puerta). Para saber
cuántos bits se pueden corregir se necesita la “Distancia de Hamming” (la veremos en otro
artículo)

Ratio y Sobrecarga

Aplicaciones

Los códigos Hamming comúnmente son empleados en aplicaciones donde


ocurre un sólo error por bloque, como por ejemplo en el proceso de
escritura y lectura de una memoria RAM. Una familia de estos códigos
tiene los siguientes parámetros
Tamaño del bloque n = 2m-1bits
Bits de paridadm ; (m≥3)bits
Tamaño del mensajekbits
Distancia mínimadmin ≥ 2t+1bits
Errores a corregirt bits

También podría gustarte