Logo Studenta

Bello Muñoz Edgar Alejandro Practica 9 - Edgar Bello

¡Estudia con miles de materiales!

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.

Continuar navegando