En informática, el código de Hamming es un código 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 uno o en dos bits, y también corregir errores en un solo bit. Esto representa una mejora respecto a los códigos con bit de paridad, que pueden detectar errores en sólo un bit, pero no pueden corregirlo.
La paridad consiste en añadir un bit, denominado bit de paridad, que indique si el número de los bits de valor 1 en los datos precedentes es par o impar. Si un solo bit cambiara por error en la transmisión, el mensaje cambiará de paridad y el error se puede detectar (nótese que el bit donde se produzca el error puede ser el mismo bit de paridad). La convención más común es que un valor de paridad de 1 indica que hay un número impar de unos en los datos, y un valor de paridad de 0 indica que hay un número par de unos en los datos.
La comprobación de paridad no es muy robusta, dado que si cambia de forma uniforme más de un solo bit, el bit de paridad será válido y el error no será detectado. 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 retransmitir. En un medio ruidoso, una transmisión correcta podría 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 además permite la corrección de ese bit si es conocida su posición.
Sin embargo, este código no puede reparar correctamente todos los errores. En nuestro ejemplo, si el error en la transmisión provocara el cambio simultáneo de dos bits y el receptor recibiera "001", el sistema detectaría el error, pero considerando que el bit original era 0, lo cual es incorrecto. Si se aumenta el número de veces que se repite cada bit a cuatro (n=4), es posible detectar los errores en dos bits pero obviamente no se podrán corregir; con cinco, es posible corregir errores de dos bits, pero no lo podrá hacer en errores de tres bits.
Hamming estudió los esquemas de codificación existentes, incluido el de dos entre cinco, y generalizó sus conclusiones. Para empezar, desarrolló una nomenclatura para describir el sistema, incluyendo el número de los bits de datos y el de los bits detectores-correctores de error en un bloque,
también estudió los problemas que surgían al cambiar dos o más bits a la vez y describió esto como "distancia" (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 repetición tiene una distancia de 3, pues son necesarios el cambio simultáneo de tres bits para obtener otra palabra de código.
El código de Hamming se refiere al
que Hamming introdujo en 1950. El código de Hamming agrega tres bits adicionales de comprobación por cada cuatro bits de datos del mensaje.
El algoritmo de Hamming puede corregir cualquier error de un solo bit, y detecta todos los errores de dos bits.
El algoritmo es simple:
1. Todos los bits cuya posición 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 posición 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 continuación.
Posición 1: comprueba 1, salta 1, comprueba 1, etc.
Posición 2: comprueba 1, salta 2, comprueba 2, salta 2, comprueba 2, etc.
Posición 4: comprueba 3, salta 4, comprueba 4, salta 4, comprueba 4, etc.
Posición 8: comprueba 7, salta 8, comprueba 8, salta 8, comprueba 8, etc.
Posición 16: comprueba 15, salta 16, comprueba 16, salta 16, comprueba 16, etc.
Y así sucesivamente.
En otras palabras, el bit de paridad de la posición 2^k comprueba los bits en las posiciones que tengan al bit k en su representación binaria. Dicho a la inversa, el bit 13, por ejemplo, es chequeado por los bits 8, 4 y 1, al ser estos los de su representación binaria: 13=1101(2); 8=1000(2); 4=0100(2); 1=0001(2).
Así pues en la Posición 1, comprobaríamos los bits: 3, 5, 7, 9, 11...; en la Posición 2, los bits: 3, 6, 7, 10, 11, 14, 15...-; en la Posición 4 tendríamos: 5, 6, 7, 12, 13, 14, 15... Así hasta completar la nueva cadena.
también estudió los problemas que surgían al cambiar dos o más bits a la vez y describió esto como "distancia" (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 repetición (3.1) tiene una distancia de 3, pues son necesarios el cambio simultáneo de tres bits para obtener otra palabra de código.

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"; cuando se analice el modo en que se obtienen los bits de paridad en los códigos de Hamming se observarán variaciones en la paridad, lo que significará que hay error.

El paso final es evaluar los bits de paridad (recuerde que el fallo se encuentra en d7). El valor entero que representan los bits de paridad es 11, lo que significa que el bit décimo primero de la palabra de datos (bits de paridad incluidos) es el erróneo y necesita ser cambiado.

Cambiando el bit décimo primero 10001100100 se obtiene de nuevo 10001100101. Eliminando los bits de paridad de Hamming se vuelve a obtener la palabra de datos original 0110101.
Los códigos cíclicos también se llaman CRC (Códigos de Redundancia Cíclica) o códigos polinómicos. Su uso está muy extendido porque pueden implementarse en hardware con mucha facilidad y son muy potentes.
Estos códigos se basan en el uso de un polinomio generador G(X) de grado r, y en el principio de que n bits de datos binarios se pueden considerar como los coeficientes de un polinomio de orden n-1.
Por ejemplo, los datos 10111 pueden tratarse como el polinomio x4 + x2 + x1 + x0
A estos bits de datos se le añaden r bits de redundancia de forma que el polinomio resultante sea divisible por el polinomio generador. El receptor verificará si el polinomio recibido es divisible por G(X). Si no lo es, habrá un error en la transmisión.
Los bits de datos se dividen en bloques (llamados frames en inglés), y a cada bloque se le calcula r, que se denomina secuencia de comprobación de bloque (Frame Check Sequence, FCS, en inglés)
Los polinomios generadores más usados son:
CRC-12: x12 + x11 + x3 + x2 + x1 + 1. Usado para transmitir flujos de 6 bits, junto a otros 12 de redundancia. Es decir, usa bloques de 6 bits, a los que les une un FCS que genera de 12 bits.
CRC-16: x16 + x15 + x2 + 1. Para flujos de 8 bits, con 16 de redundancia. Usado en Estados Unidos, principalmente.
CRC-CCITT: x16 + x12 + x5 + 1. Para flujos de 8 bits, con 16 de redundancia. Usado en Europa, principalmente.
CRC-32: x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1. Da una protección extra sobre la que dan los CRC de 16 bits, que suelen dar la suficiente. Se emplea por el comité de estándares de redes locales (IEEE 802) y en algunas aplicaciones del Departamento de Defensa de Estados Unidos.
Si tenemos un polinomio generador tal que G(x)=x2+1 podremos obtener a partir de él que el CRC es capaz de detectar todos los errores impares, genera una redundancia de 2 bits y no será capaz de detectar todos los errores dobles, por ejemplo una secuencia error-válido pasaría siempre inadvertida.
Múltiplex es la transmisión simultánea de varios canales de información separados en el mismo circuito de comunicación sin interferirse entre sí. Para la comunicación de voz, esto significa dos o más canales de voz en una sola portadora. Para los sistemas telefónicos significa muchos canales en un sólo par de cables o en una sola línea de transmisión coaxial.
La multiplexión por división de tiempo (MDT) es un medio de transmitir dos o más canales de información en el mismo circuito de comunicación utilizando la técnica de tiempo compartido. Se adapta bien a las señales binarias que consisten en impulsos que representan un dígito binario 1 o 0. Estos impulsos pueden ser de muy corta duración y sin embargo, son capaces de transportar la información deseada; por tanto, muchos de ellos pueden comprimirse en el tiempo disponible de un canal digital. La señal original puede ser una onda analógica que se convierte en forma binaria para su transmisión, como las señales de voz de una red telefónica, o puede estar ya en forma digital, como los de un equipo de datos o un ordenador.
La multiplexión por división de tiempo es un sistema sincronizado que normalmente implica una MIC. Las señales analógicas se muestrean y la MAI los transforma en impulsos, y después la MIC codifica los muestreos. Después los muestreos se transmiten en serie en el mismo canal de comunicación, uno cada vez. En el receptor, el proceso de desmodulación se sincroniza de manera que cada muestreo de cada canal se dirige a su canal adecuado. Este proceso de denomina múltiplex o transmisión simultánea, porque se utiliza el mismo sistema de transmisión para más de un canal de información, y se llama MDT porque los canales de información comparten el tiempo disponible.
La parte de preparación de la señal y modulación del sistema se denomina multiplexor (MUX), y la parte de desmodulación se llama desmultiplexor (DE-MUX). En el MUX un conmutador sincronizado (interruptor electromecánico) conecta secuencialmente un impulso de sincronización, seguido por cada canal de información, con la salida. La combinación de este grupo de impulsos se denomina cuadro. El impulso de sincronización se utiliza para mantener la transmisión y recepción sincronizadas, es decir, para mantener en fase el sincronizador del receptor con el del transmisor. En el DEMUX un desconmutador dirige impulsos de sincronización hacia el sincronizador del receptor, y el muestreo de información envía los impulsos hasta sus canales correctos para su posterior análisis.
Una ventaja de la MDT es que puede utilizarse cualquier tipo de modulación por impulsos. Muchas compañías telefónicas emplean este método en sus sistemas MIC/MDT.
Al igual que la MDT, la multiplexión por división de frecuencia (MDF) se utiliza para transmitir varios canales de información simultáneamente en el mismo canal de comunicación. Sin embargo, a diferencia de la MDT, la MDF no utiliza modulación por impulsos. En MDF, el espectro de frecuencias representado por el ancho de banda disponible de un canal se divide en porciones de ancho de banda más pequeños, para cada una de las diversas fuentes de señales asignadas a cada porción. Explicado de forma sencilla, la diferencia entre los dos sistemas es ésta: En MDF, cada canal ocupa continuamente una pequeña fracción del espectro de frecuencias transmitido; en MDT, cada canal ocupa todo el espectro de frecuencias durante sólo una fracción de tiempo.
En el transmisor las frecuencias de cada canal se cambian por medio de moduladores y filtros equilibrados. Entonces las salidas de los filtros se alimentan a un MUX, donde se sitúan una junto a otra en un canal de banda ancha para su transmisión en grupo. En el receptor un DEMUX cambia los canales a sus frecuencias originales mediante filtrado. A continuación, las señales filtradas pasan a un modulador equilibrado y después a un filtro PB para su posterior recuperación.
Es un caso particular de la multiplexación por división en el tiempo. Consiste en no asignar espacios de tiempo fijos a los canales a transmitir, sino que los tiempos dependen del tráfico existente por los canales en cada momento.
Sus características son:
* Tramos de longitud variables.
* Muestreo de líneas en función de su actividad.
* Intercala caracteres en los espacios vacíos.
* Fuerte sincronización.
* Control inteligente de la transmisión.
Los multiplexores estáticos asignan tiempos diferentes a cada uno de los canales siempre en función del tráfico que circula por cada uno de estos canales, pudiendo aprovechar al máximo posible el canal de comunicación.
Se resumen las nociones básicas para comprender el proceso que sufre una información, ya sea esta un sonido, una imagen o bien datos informáticos que se desea hacer llegar a un receptor a través de una onda electromagnética o un cable conductor.
La modulación nace de la necesidad de transportar una información a través de un canal de comunicación a la mayor distancia y menor costo posible. Este es un proceso mediante el cual dicha información (onda moduladora) se inserta a un soporte de transmisión.
Una portadora puede modularse de diferentes modos dependiendo del parámetro de la misma sobre el que se actúe.
Se modula en amplitud una onda que llamaremos portadora, cuando la distancia existente entre el punto de la misma en el que la onda vale cero y los puntos en que toma el valor máximo ó mínimo se altera.

Es la amplitud (intensidad) de la información a transmitir la que varía la amplitud de la onda portadora. Y resulta que, al añadir esta información se obtiene tres frecuencias:
La frecuencia de la portadora FP
La frecuencia suma de la portadora y la información fp+fm.
La frecuencia diferencia de la portadora y la información fp-fm.
Donde:
fp = Frecuencia portadora
fm = Frecuencia moduladora
La condición de modulación será cuando fp >> fm
En una onda portadora de 3500 Khz y que se module con una onda senoidal cuya frecuencia sea de 3000 Hz (3 Khz) presentará estas tres frecuencias:
fp= 3500 Khz
fp+fm= 3500 Khz + 3 Khz= 3503 Khz
fp-fm= 1000 Khz - 3 Khz= 3497 Khz

Este análisis nos lleva a pensar que, como normalmente la información no la compone una única onda, sino varias dentro de una banda, sería necesario hacer uso de un gran ancho de banda para transmitir una información cuyas frecuencias estuvieran comprendidas entre los 20 Hz y 20.000 Hz (limites de la banda de frecuencias audibles por el oído humano) con buena calidad.
Partiendo de la idea de que la modulación de amplitud comprende ocupar la frecuencia propia de la portadora y las adyacentes que aparecen al modularla, analizaremos el siguiente caso:
Teniendo una portadora de 1000 Khz queremos modularla con una información cuyas frecuencias comprenden entre los 5 KHz y los 10 Khz a la que llamaremos banda base. La onda modulada presentará las siguientes frecuencias:
fp= 1000 Khz
fp+fm= 1000 KHz + 5 KHz= 1005 Khz, y 1000 KHz + 10 KHz= 1010 Khz, es decir, todas las frecuencias comprendidas entre los 1005 KHz y 1010 Khz, la que tomará el nombre de banda lateral superior.
fp-fm= 1000 KHz - 5 KHz= 995 Khz, y 1000 KHz - 10 KHz= 990 Khz todas las comprendidas entre 990 KHz y 995 Khz, la que tomará el nombre de banda lateral inferior.

Diferenciándose la banda lateral superior (USB), las de frecuencia más elevada, de la banda lateral inferior (LSB)
Como la frecuencia portadora no es información, los transmisores con esta clase de modulación suprimen la portadora (de ahí que también conozcamos este tipo de modulación como de "portadora suprimida" - AM-PS), y transmiten únicamente las bandas laterales, y aún mejor, solo una de ellas. Esto tiene grandes ventajas sobre la modulación de portadora continua, fundamentalmente en el rendimiento y en el ancho de banda mejorando la relación señal/ruido.
a) Al suprimirse la portadora en ausencia de información, el ahorro de energía es muy considerable, además la disipación de potencia que el paso final de potencia de RF de un transmisor de esta clase soporta es menor que el de otro tipo de portadora continua (AM o FM), para la misma potencia. Debido a esto último un transceptor que disponga de los dos modos de modulación es capaz de suministrar hasta el doble de potencia en banda lateral que en modulación de amplitud.
b) Otra ventaja de la SSB es la reducción del ancho de banda que se consigue al eliminar una de las bandas laterales. Cuando se selecciona el modo USB se están filtrando todas las frecuencias de la banda lateral inferior, que podrán ser ocupadas por otra estación.
La modulación SSB es usada habitualmente por los servicios marítimos (estaciones costeras telefonía dirigida a barcos...) o los aviones (en viajes transoceánicos) cuando las distancias a salvar son grandes y se necesitan grandes potencias de emisión.
La modulación de amplitud tiene en la práctica dos inconvenientes: por un lado, no siempre se transmite la información con la suficiente calidad, ya que el ancho de banda en las emisiones está limitado; por otra parte, en la recepción es difícil eliminar las interferencias producidas por descargas atmosféricas, motores, etc.
La modulación de frecuencia consiste en variar la frecuencia de la onda portadora de acuerdo con la intensidad de la onda de información. La amplitud de la onda modulada es constante e igual que la de la onda portadora.
La frecuencia de la portadora oscila más o menos rápidamente, según la onda moduladora, esto es, si aplicamos una moduladora de 100 Hz, la onda modulada se desplaza arriba y abajo cien veces en un segundo respecto de su frecuencia central, que es la portadora; además el grado de esta variación dependerá del volumen con que modulemos la portadora, a lo que denominamos "índice de modulación".

Debido a que los ruidos o interferencias que se mencionaron anteriormente alteran la amplitud de la onda, no afecta a la información transmitida en FM, puesto que la información se extrae de la variación de frecuencia y no de la amplitud, que es constante.
Como consecuencia de estas características de modulación podemos observar cómo la calidad de sonido o imagen es mayor cuando modulamos en frecuencia que cuando lo hacemos en amplitud. Además al no alterar la frecuencia de la portadora en la medida que aplicamos la información, podemos transmitir señales sonoras o información de otro tipo (datos o imágenes), que comprenden mayor abanico de frecuencias moduladoras, sin por ello abarcar mayor ancho de banda.
INICIO