e-mail: carlos_y.1721@hotmail.com Ana Liseth Quishpe Mena e-mail: lisphysicalmatt11229@gmail.com Ingeniería Automotriz, 5to Nivel "A", Universidad de las Fuerzas Armadas ESPE- Extensión Latacunga, Marquez de Maenza S/N Latacunga, Ecuador. Fecha de presentación: 10 de Noviembre del 2014 RESUMEN: En el presente artículo se realizó la investigación acerca de los códigos binarios CRC y Hamming, donde los códigos binarios (CRC) son conocidos también como redundancia cíclica, es un código de detección de errores que se usa frecuentemente en redes digitales y en los dispositivos de almacenamiento para detectar cambios accidentales en los datos, en cambio el Código Hamming es un código detector y corrector de errores , para lo cual realizamos una investigación exhaustiva en el internet para poder obtener información acerca de dichos códigos, analizando la información y colectar lo más esencial de los contenidos relacionados con dicho tema, con lo cual podremos conocer el procedimiento para implementar cada uno de estos códigos binarios y conocer su funcionamiento en la informática y asi implementarlo en su respectivo momento. PALABRAS CLAVE 1 INTRODUCCIÓN 1.1 DETECCION DE ERRORES Se denomina error a toda alteración que provoca que un mensaje recibido no sea una copia fiel del mensaje transmitido. Debido a los defectos existentes en los medios físicos utilizados para la transmisión, pueden producirse errores en la información transmitida, caracterizándose la calidad de la información por la tasa de errores. La tasa de errores depende de las condiciones de los elementos del soporte físico utilizado en la transmisión y se expresa como la relación entre el número de bits erróneos recibidos y el número total transmitidos. La calidad de la información es incompatible, en algunos casos, con los niveles de seguridad necesarios, en las aplicaciones informáticas, por lo que es necesario disponer de unos equipos que permitan detectar o incluso corregir los errores producidos por la transmisión. Los errores que se producen en la transmisión tienden a agruparse en ráfagas, en lugar de producirse aisladamente. Este aspecto supone una ventaja, pues facilita la detección de los errores, dado que, de esta forma, afecta sólo a un subconjunto de la información transmitida y es, por tanto, posible reconstruir este subconjunto a partir del resto. En todos los casos, la protección contra los errores consiste en insertar en cada extremo del enlace un dispositivo, un codificador y un decodificador.[1] 1.2 CODIGO HAMMING 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 un bit y corregirlos.[2] 1.2.1 LA PARIDAD 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 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 un número par de bits, el bit de paridad será válido y el error no será detectado. Se utiliza cuando se cumplen simultáneamente 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 más) bits es muy baja, por lo que cuando no detecta error es altamente probable que el código 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 información en forma serial (un bit a continuación de otro) ni con los sistemas de transmisión 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 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.[3] MECANISMO UTILIZADO PARA LA DETECCION Y CORRECCION DE ERRORES Adicionar ciertos bits de control llamados bits de paridad al mensaje original. Los bits de paridad corresponden a los bits que son potencias de 2: 1, 2, 4, 8, 16, etc. según el tamaño del mensaje. [4] Figura 1. Posición bits de potencia. [4] El mensaje se ubica en los bits restantes. Figura 2. Ubicación del mensaje. [4] Los bits de control o paridad se calculan basados en unos criterios. Estos criterios se calculan dependiendo del tamaño del mensaje. Para un mensaje de longitud 4 se realiza lo siguiente: El bit de paridad 1 (P1) se calcula con la paridad de los bits de datos 3, 5, 7. El bit de paridad 2 (P2) se calcula con la paridad de los bits de datos 3, 6, 7. El bit de paridad 4 (P4) se calcula con la paridad de los bits de datos 5, 6, 7. Se envía el mensaje el receptor recalcula los bits de paridad. Si no coinciden, el mensaje es errado.[4] Figura 3. Comprobación del mensaje. [4] Ejercicio: Enviar el siguiente mensaje 1101. El mensaje se ubica en los bits correspondientes como lo enunciamos anteriormente las potencias de 2 son reservadas. Figura 4. Ubicación del mensaje. [4] Los bits de control o paridad se calculan y se ubican. Figura 5. Cálculo de los bits de control. [4] Se envía el mensaje ocurre un error en la transmisión, y el bit 5 falla. Figura 6. Error de envío. [4] El receptor realiza los cálculos de los bits de paridad nuevamente para luego compararlos. Figura 7. Comparación de mensajes. [4] Con la respectiva comparación nos podemos dar cuenta en q bits se está cometiendo un error en comparación al mensaje real y analizamos que bits son controlados por el bit de paridad 1 (P1) y el 4 (P4), pero que no son controlados por P2. Procedemos al análisis: El bit de paridad 1 (P1) se calcula con la paridad de los bits de datos 3, 5, 7. El bit de paridad 2 (P2) se calcula con la paridad de los bits de datos 3, 6, 7. El bit de paridad 4 (P4) se calcula con la paridad de los bits de datos 5, 6, 7. Por lo cual se llega a una conclusión que el bit que estamos buscando es el 5 por lo cual esto nos indica que el mismo estaba errado y se vuelve armar la cadena original corrigiendo dicho bit. 1.3 CODIGO DE REDUNDANCIA CÍCLICA (CRC) Este apartado trata del código detector-corrector de errores polinómico (también conocido como código de redundancia cíclica CRC). El método de redundancia cíclica (CRC Cyclic Redundancy Check) es otra técnica muy usada para detección de errores. Trabaja al nivel de mensaje, agregando varios caracteres de control al final, siendo lo más común 2 o 4 bytes de control. La técnica añade unos bits de CRC, de la siguiente manera en tres pasos básicos: 1. Se añade una tira de n ceros, siendo n el número inmediatamente menor al número de bits del divisor predefinido (que tiene n+1 bits). 2. Dividir la nueva unidad de datos por el divisor predefinido usando un proceso de división binaria. Si el resto de la división es 0 es un dato correcto caso contrario el sistema lo rechaza. De acuerdo con las teorías de las reglas de la teoría del campo algebraico, la aritmética del polinomio se realiza en módulo 2. No hay términos de acarreo para la suma ni de préstamo para la resta; las dos operaciones son idénticas al