0% encontró este documento útil (0 votos)
40 vistas5 páginas

Práctica 5 CDD

practica SD

Cargado por

erickf
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Temas abordados

  • diferencias entre códigos,
  • análisis de resultados,
  • funciones de MATLAB,
  • implementación de sistemas,
  • recuperación de datos,
  • funciones de simulación,
  • algoritmos de codificación,
  • resultados de simulación,
  • errores en transmisión,
  • tecnologías de codificación
0% encontró este documento útil (0 votos)
40 vistas5 páginas

Práctica 5 CDD

practica SD

Cargado por

erickf
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Temas abordados

  • diferencias entre códigos,
  • análisis de resultados,
  • funciones de MATLAB,
  • implementación de sistemas,
  • recuperación de datos,
  • funciones de simulación,
  • algoritmos de codificación,
  • resultados de simulación,
  • errores en transmisión,
  • tecnologías de codificación

Práctica# 5

CODIFICACIÓN DE DETECCIÓN Y CORRECCIÓN DE ERRORES


Mgtr. Marı́a José Ramı́rez Prado PAO 2023-2024

1 Objetivos
• Implementar un sistema de codificación y decodificación con código Hamming diseñando
funciones que tomen un mensaje binario como entrada y generen el código Ham-
ming correspondiente, ası́ como también funciones para recibir un código Hamming
y recuperar el mensaje original corregido en caso de que haya ocurrido algún error
en la transmisión.

• Comparar la tasa de error antes y después de la corrección de errores para evaluar


el desempeño del código Hamming en la corrección de errores enviando diferentes
mensajes a través del canal simulado.

2 Introducción
¿Qué es la Codificación de Detección y Corrección de Errores?

La codificación de detección y corrección de errores es una técnica esencial en la comuni-


cación digital de datos que busca garantizar la integridad y confiabilidad de la información
transmitida a través de canales ruidosos o propensos a errores, como redes de comuni-
cación o medios de almacenamiento.

El proceso implica agregar bits adicionales, conocidos como códigos de redundancia, a los
datos originales antes de enviarlos. Estos códigos están diseñados de manera inteligente
para permitir la detección y corrección de errores en el destino.

La detección de errores permite al receptor identificar si se han producido errores du-


rante la transmisión. Si se detectan errores, el receptor puede solicitar una retransmisión
o tomar medidas adecuadas para recuperar los datos faltantes o dañados.

Por otro lado, la corrección de errores implica que el receptor pueda recuperar la infor-
mación original incluso si se han producido errores durante la transmisión. Esto se logra
gracias a la incorporación de códigos correctores en el proceso, lo que permite reconstruir
los datos originales a partir de la información recibida.

Existen diversos algoritmos y esquemas de codificación de detección y corrección de er-


rores, como los códigos de Hamming, códigos Reed-Solomon, y códigos convolucionales,
entre otros. La elección del esquema depende del nivel de redundancia deseado, el tipo

1
de error que se espera y las limitaciones del canal de comunicación. En resumen, la cod-
ificación de detección y corrección de errores es una herramienta esencial para mejorar
la confiabilidad y precisión de la comunicación digital de datos en entornos propensos a
errores.

¿Qué son los Códigos de Hamming?

Los Códigos de Hamming son una técnica de detección y corrección de errores utilizada
en comunicación digital de datos. Desarrollados por Richard Hamming en la década de
1950, estos códigos son ampliamente utilizados en sistemas informáticos, redes y trans-
misiones digitales para garantizar la integridad de los datos transmitidos.

El propósito principal de los Códigos de Hamming es detectar y corregir errores que


pueden ocurrir durante la transmisión o almacenamiento de datos. Para lograr esto, se
añaden bits de paridad a los datos originales, lo que crea una redundancia controlada.
Estos bits de paridad permiten al receptor identificar y corregir errores, si es que se pro-
ducen, a través de cálculos matemáticos.

Existen diferentes tipos de Códigos de Hamming, como el (7,4) y el (15,11), que indican
la cantidad de bits de datos y bits de paridad respectivamente. Cuantos más bits de
paridad se agreguen, mayor será la capacidad de detección y corrección de errores del
código.

Los Códigos de Hamming han demostrado ser una herramienta valiosa en la transmisión
de datos en entornos propensos a errores, mejorando la confiabilidad y precisión de la
comunicación digital. Sin embargo, a medida que avanzan las tecnologı́as de codificación
y corrección de errores, también se han desarrollado otras técnicas más avanzadas, como
los códigos Reed-Solomon y códigos convolucionales, que se utilizan en aplicaciones donde
se requiere una mayor robustez contra errores.

3 Procedimiento
A continuación crearemos los siguientes archivos .m necesarios para las pruebas de este
laboratorio.

hamming encode.m

% Funcion para codificar un mensaje usando el codigo Hamming (7 , 4)


function encoded_message = hamming_encode ( message )
G = [1 0 0 0 1 1 1;
0 1 0 0 1 1 0;
0 0 1 0 1 0 1;
0 0 0 1 0 1 1];
encoded_message = mod ( message * G , 2) ;
end

2
hamming decode.m

% Funcion para decodificar un mensaje usando el codigo Hamming (7 , 4)


function decoded_message = hamming_decode ( received_message )
H = [1 1 0 1 1 0 0;
0 1 1 1 0 1 0;
1 0 1 1 0 0 1];
syndrome = mod ( H * received_message ’ , 2) ’;
error_position = bi2de ( syndrome ) + 1;
if error_position <= 7
received_message ( error_position ) = mod ( received_message (
error_position ) + 1 , 2) ;
end
decoded_message = received_message (1:4) ;
end

simulate channel.m

% Funcion para simular un canal de transmision con errores aleatorios


function received_message = simulate_channel ( encoded_message ,
error_rate )
% error_rate : Probabilidad de error en el canal ( entre 0 y 1)
n = length ( encoded_message ) ;
error_vector = rand (1 , n ) < error_rate ;
received_message = mod ( encoded_message + error_vector , 2) ;
end

calculate bit error rate.m

% Funcion para calcular la tasa de error bit a bit entre dos mensajes
function bit_error_rate = c a l c u l a t e _ b i t _ e r r o r _ r a t e ( original_message ,
received_message )
errors = sum ( original_message ~= received_message ) ;
bit_error_rate = errors / length ( original_message ) ;
end

Crearemos un archivo llamado Test.m en donde realizaremos las siguientes pruebas:

Implementación de un sistema de codificación y decodificación con código


Hamming

message = [0 1 1 0]; % Mensaje binario de 4 bits


encoded_message = hamming_encode ( message ) ;
disp ( ’ Mensaje codificado : ’) ;
disp ( encoded_message ) ;

received_message = [1 1 0 0 1 1 0]; % Mensaje recibido con errores


decoded_message = hamming_decode ( received_message ) ;
disp ( ’ Mensaje decodificado : ’) ;
disp ( decoded_message ) ;

3
Simulación del canal de transmisión con errores

encoded_message = [1 0 1 1 0 0 1]; % Mensaje codificado


error_rate = 0.1; % Tasa de error del canal
received_message = simulate_channel ( encoded_message , error_rate ) ;
disp ( ’ Mensaje recibido : ’) ;
disp ( received_message ) ;

Comparación de la tasa de error antes y después de la corrección de errores

original_message = [1 0 1 0]; % Mensaje original de 4 bits


encoded_message = hamming_encode ( original_message ) ; % Codificacion del
mensaje
error_rate = 0.1; % Tasa de error del canal

received_message = simulate_channel ( encoded_message , error_rate ) ; %


Simulacion del canal
disp ( ’ Mensaje recibido : ’) ;
disp ( received_message ) ;

decoded_message = hamming_decode ( received_message ) ; % Decodificacion


del mensaje recibido
disp ( ’ Mensaje decodificado : ’) ;
disp ( decoded_message ) ;

% Asegurar que los mensajes tengan la misma longitud


original_message = original_message (:) ;
decoded_message = decoded_message (:) ;

bef ore_error_ra te = c a l c u l a t e _ b i t _ e r r o r _ r a t e ( original_message ,


received_message ) ;
disp ( ’ Tasa de error antes de la correccion : ’) ;
disp ( be fore_e rror_r ate ) ;

after_error_rate = c a l c u l a t e _ b i t _ e r r o r _ r a t e ( original_message ,
decoded_message ) ;
disp ( ’ Tasa de error despues de la correccion : ’) ;
disp ( after_error_rate ) ;

4 Resultados
Para cada uno de los escenarios de simulación realizados en Test.m se debe mostrar las
capturas de la ejecución junto con una breve descripción de lo observado.

5 Actividades
1. ¿Qué es el código de Hamming y cuál es su objetivo principal en la comunicación
digital?

2. ¿Cómo se calcula la distancia mı́nima de un código Hamming y qué importancia


tiene en la detección y corrección de errores?

4
3. ¿Cuál es la diferencia entre un código de Hamming (7, 4) y un código de Hamming
(7, 3)? ¿Cuándo se prefiere uno sobre el otro?

4. ¿Cuáles son las ventajas y desventajas de usar códigos de detección y corrección


de errores, como el código Hamming, en comparación con técnicas de detección de
errores simples, como el bit de paridad?

6 Conclusiones y Recomendaciones

También podría gustarte