Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
INSTITUTO POLITÉCNICO NACIONAL Escuela Superior de Cómputo Bello Muñoz Edgar Alejandro Fundamentos de Diseño Digital Profesor: Fernando Aguilar Sánchez Práctica 9 Código Hamming Fecha de entrega: 16 de mayo de 2021 Introducción Los códigos detectores-correctores de errores son el medio por el cual los errores que pueden ser introducidos en los datos digitales, como resultado de la transmisión a través de un canal de comunicación, pueden ser corregidos en base a los datos recibidos. Los códigos de Hamming son probablemente entre los códigos correctores de errores los más famosos. Fueron descubiertos de forma independiente por Marcel Golay en 1949 y Richard Hamming en 1950. En informática, el código de Hamming es un código detector y corrector de fallos que lleva el nombre de su inventor, Richard Hamming. En los datos codificados en Hamming se pueden advertir fallos en un bit y corregirlos, no obstante no se distingue entre fallos de 2 bits y de un bit (para lo que se utiliza Hamming extendido). Esto representa una mejora con respecto a los códigos con bit de paridad, que pueden advertir fallos en solo un bit, mas no pueden corregirlo. Ya antes de los códigos Hamming se emplearon algunos códigos detectores de fallo, como lo fueron el código Linteing, sin embargo ninguno ha conseguido ser ser tan eficiente como los de Hamming. La paridad consiste en agregar un bit, llamado bit de paridad, que indique si el número de los bits de valor 1 en los datos precedentes es par o bien impar. Si un solo bit cambiara por fallo en la transmisión, el mensaje cambiará de paridad y el fallo se puede advertir (nótese que el bit donde se genere el fallo puede ser exactamente el mismo bit de paridad). La convención más habitual es que un valor de paridad 1 señala que hay un número impar de unos en los datos, y un valor de paridad de 0 señala que hay un número par de unos en los datos. La comprobación de paridad no es muy robusta, puesto que si cambia de forma uniforme un número par de bits, el bit de paridad va a ser válido y el fallo no va a ser detectado. Se emplea cuando se cumplen simultáneamente 2 condiciones: que la probabilidad de que falle un bit es baja y que las fallas de bits son acontecimientos independientes. Así la probabilidad de que fallen 2 (o bien más) bits es bajísima, con lo que cuando no advierte fallo es enormemente probable que el código sea ciertamente adecuado. Se puede destacar que dichas condiciones se ajustan al caso de las memorias de las computadoras modernas mas no ocurre lo mismo con los dispositivos de almacenaje que guardan la información en forma serial (un bit después de otro) ni con los sistemas de transmisión de datos seriales puesto que en estos casos el hecho que falle un bit está vinculado, en forma no abominable, a la falla de otro lindante. Por otra parte, la paridad, si bien puede advertir que hay fallo, no señala exactamente en qué bit se cometió. Los datos se deben desechar enteramente y volverse a trasmitir. En un medio estruendoso, una transmisión adecuada podría tardar un buen tiempo o bien aún, en el peor caso, no darse jamás. El chequeo de paridad, si bien no es buenísimo, emplea un solo bit, con lo que genera poquísima sobrecarga, y esto es una muy buena noticia en cuanto a optimización de recursos. Desarrollo Tabla de verdad # A B C D mi C1 C2 A C3 B C D 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 14 0 0 1 0 1 1 0 2 0 1 1 0 6 1 1 0 0 1 1 0 3 1 1 0 0 12 0 1 1 1 1 0 0 4 0 1 0 0 4 1 0 0 1 1 0 0 5 1 0 1 1 11 0 1 1 1 0 1 1 6 0 0 1 1 3 1 0 0 1 0 1 1 7 1 0 0 0 8 1 1 1 0 0 0 0 8 0 0 0 1 1 1 1 0 0 0 0 1 9 1 1 1 1 15 1 1 1 0 1 1 1 Obtención de ecuaciones canónicas Simulación del circuito Circuito lógico Código VDHL Conclusiones El código Hamming, aunque consiste de un principio muy sencillo, es una herramienta de gran utilidad para la transmisión de información ya que permite comparar bit a bit que la información haya sido correctamente transmitida, de tal forma que con una implementación sencilla puede ser posible su codificación y decodificación, e inclusive la implementación total de la corrección de una cadena de información binaria. Referencias • Educación.Quiroga, P. (2010). Arquitectura de Computadoras. México: Alfaomega. library ieee; use ieee.std_logic_1164.all; entity hamming is port(Ain,Bin,Cin,Din: in std_logic; C1,C2,A,C3,B,C,D: out std_logic); end hamming; architecture codigo of hamming is signal C: std_logic_vector(2 downto 0); ATTRIBUTE synthesis_off OF C: SIGNAL IS true: begin A<=Ain; B<=Bin; C<=Cin; D<=Din; C1<= (not Ain and Bin) or (not Ain and Din) or (Bin and Din) or (Ain and not Bin and not Cin); C2<= (not Cin and Din) or (Ain and not Cin) or (Ain and Din) or (not Ain and C and not Din); C3<=(Cin and Din) or (Bin and not Cin); end codigo; • Morris, M. (2007). Diseño digital. Cuarta Edición. México: Pearson. • Floyd, T. (2010). Fundamentos de Sistemas Digitales. México: Pearson Educación.
Compartir