Este documento describe algoritmos de detección y corrección de errores utilizando códigos de Hamming y CRC implementados en MATLAB. Explica cómo insertar y eliminar bits de paridad en una cadena de datos usando Hamming, y cómo detectar y corregir errores mediante la comparación de la matriz de Hamming y el vector de error. También describe cómo implementar CRC en MATLAB para detectar errores en la transmisión de mensajes.
0 calificaciones0% encontró este documento útil (0 votos)
78 vistas4 páginas
Este documento describe algoritmos de detección y corrección de errores utilizando códigos de Hamming y CRC implementados en MATLAB. Explica cómo insertar y eliminar bits de paridad en una cadena de datos usando Hamming, y cómo detectar y corregir errores mediante la comparación de la matriz de Hamming y el vector de error. También describe cómo implementar CRC en MATLAB para detectar errores en la transmisión de mensajes.
Este documento describe algoritmos de detección y corrección de errores utilizando códigos de Hamming y CRC implementados en MATLAB. Explica cómo insertar y eliminar bits de paridad en una cadena de datos usando Hamming, y cómo detectar y corregir errores mediante la comparación de la matriz de Hamming y el vector de error. También describe cómo implementar CRC en MATLAB para detectar errores en la transmisión de mensajes.
Este documento describe algoritmos de detección y corrección de errores utilizando códigos de Hamming y CRC implementados en MATLAB. Explica cómo insertar y eliminar bits de paridad en una cadena de datos usando Hamming, y cómo detectar y corregir errores mediante la comparación de la matriz de Hamming y el vector de error. También describe cómo implementar CRC en MATLAB para detectar errores en la transmisión de mensajes.
Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
Descargar como docx, pdf o txt
Está en la página 1de 4
UNIVERSIDAD POLITÉCNICA SALESIANA
CARRERA DE INGENIERÍA ELECTRÓNICA
SEDE QUITO – CAMPUS SUR COMUNICACIONES DIGITALES
REALIZADO POR:
Caicedo Delgado Luis Fernando
Clavón Toapanta David Alejando Rea Flores Napoleón Enrique
CONTROL Y DETECCIÓN DE ERRORES
1. OBJETIVOS estándares) fue publicado en 1975. Es muy
popular por su simpleza de Obtener el código de transmisión implementación, fácil de analizar de una secuencia binaria mediante matemáticamente y es muy bueno la utilización de Matlab detectando errores causados por ruidos en Detectar y corregir errores los canales de transmisión. mediante CRC (Comprobación de DESCRIPCIÓN DE LOS ALGORITMOS DE Redundancia Cíclica) MATLAB 2. DESARROLLO Para la codificación de Hamming:
HAMMING 1. Toma una entrada de cadena del
usuario y realiza la inducción, Es un método general propuesto por R. W detección y corrección de errores Hamming, usando una distancia paso a paso en la pantalla mínima m. Con este método, por cada entero m existe un código de hamming de 2. Agregar bits de paridad a la cadena: 2m-1 bits que contiene m bits de paridad le pide al usuario que ingrese una y 2m-1-m bits de información. En este cadena binaria y genera la cadena código, los bits de paridad y los bits de con los bits de paridad correctos paridad se encuentran entremezclados de agregados. la siguiente forma: Si se numeran las posiciones de los bits desde 1 hasta 2m-1, los 3. Eliminar bits de paridad de la bits en la posición 2k, son los bits de paridad cadena: pide al usuario que ingrese y los bits restantes son bits de información. una cadena binaria y genera la Comprobación de redundancia cíclica o cadena con los bits de paridad control de redundancia cíclica (en eliminados. informática, CRC). Hace referencia a cyclic redundancy check, también llamado polynomial code checksum. El CRC es una función diseñada para detectar cambios accidentales en datos de computadora y es comúnmente usada en redes digitales y dispositivos de almacenamiento (como discos duros).
CRC
El CRC fue creado por W. Wesley Peterson
Ilustración 1 Inserción de datos para realizar la en 1961; el polinomio de 32 bits usado en corrección y codificación de Hamming. funciones CRC de Ethernet (y otros Ilustración 4 Detección y corrección del error.
Ilustración 2 Detección y corrección del error. Para poder visualizar a detalle el
Para CRC: funcionamiento de ambos programas, se debe recurrir a la programación de Matlab, 1. Toma una entrada de cadena del la misma que estará anexada en los usuario y realiza la inducción, documentos que forman parte de este detección y corrección de errores trabajo. paso a paso en la pantalla. El programa nos pide que ingresemos 3. CONCLUSIONES una cadena binaria y una cadena 1.- Por medio del código de corrección de que sea su divisor. errores de Hamming es posible no solo detectar, sino también enmendar los 2. Si existe un error, nos va a mostrar errores ocurridos sobre la cadena de un mensaje, el mismo que nos dirá información en el receptor. La detección y desde qué parte de la cadena se ha corrección de errores en un sistema de generado. transmisión de información depende de la inclusión de redundancia sobre la cadena de transmisión, es decir, a los datos se les añade información que permite dar una pequeña descripción de los mismos datos. La cantidad de errores a detectar o corregir en un sistema con código de Hamming depende de la distancia de Hamming “d”.
2.- Los códigos CRC son códigos que nos
ayudan a detectar errores en la Transmisión de un Mensaje. La Notación Polinomial se representa tomando en cuenta la n números de un código Binario expresando Ilustración 3 Inserción de datos para realizar la verificación y corrección mediante Comprobación de como un polinomio n-1 utilizando la Redundancia Cíclica. variable x. El polinomio Generador es estandarizado internacionalmente, y determina el número de bits (0) que se Anexo2. Corregir_Funcion.txt agrega al bit menos significativo del %error check Mensaje a Transmitir. El residuo determina %extracts parity bits and checks for errors function R=error_check(received_message,nbp) el Código CRC y depende del grado del O=received_message; polinomio de generación. Si el Residuo = 0 P=generate_hamming_matrix(O,nbp); no hay Errores y si el Residuo ≠ 0 existen %Finds positions where message string = 1 for V=1:nbp Errores en la Transmisión. T(V,:)=P(V,:).*O(1,:); end 4. BIBLIOGRAFIA %Finds if sum of ones for each parity line is even (0) or odd (1) Comprobación de redundancia for U=1:nbp cíclica; Ecured; 2018; R(U,:)=mod(length(find(T(U,:))),2); https://www.ecured.cu/Comprob end %%%%%%%%%%%%%%%%% aci%C3%B3n_de_redundancia_c% R; C3%ADclica flag=isequal(R,zeros(length(R),1)); MathWorks; comm. if flag==1 disp('No Existe Error') CRCDetector;https://www.mathw else orks.com/help/comm/ref/comm.c disp('Error Encontrado'); rcdetector-system-object.html end MathWords; Anexo3. Corregir_Mensaje_Funcion.txt comm.hdlcrcDetector;https://ww w.mathworks.com/help/comm/re %fixes erroneous bit function a=correct_message(message_received,nbp) f/comm.hdlcrcdetector-system- d=message_received; object.html error_pos=find_error(message_received, nbp); %modulo inverts a bit a=d; a(1,error_pos)=mod(d(1,error_pos)+1,2); 5. ANEXOS %Calculates parity bits and inserts them in the right spots[1 0 function E=insert_parity_bits(message,nbp) nbp=nbp; Anexo1. Buscar_Error_Funcion.txt A=message; E=insert_parity_spots(A,nbp); %error finder P=generate_hamming_matrix(E,nbp); %Compares Hamming matrix with error vector R to %%%%%%%%%%%%%%%%% find out what bit is %Finds spots in the message string where bits are = 1 %erroneous for V=1:nbp function b=find_error(message_received,nbp) Q(V,:)=P(V,:).*E; Y=message_received; End P=generate_hamming_matrix(Y,nbp); R=error_check(Y,nbp); Anexo4. Insertar_Bita_Funcion.txt for b=1:length(P) c=isequal(R(:,1),P(:,b)); Q; if c==1 %For each parity line, finds if the sum of bits that are R; 1 is even (0), or odd (1) P(:,b); for U=1:nbp bit=b; R(U,:)=mod(length(find(Q(U,:))),2); disp('Error Encontrado En El Bit') end disp(b) %%%%%%%%%%%%%%%%% break R; end %Adds the necessary parity bits in the message end for S=0:nbp-1 E(1,2^S)=R(S+1,1); end E; Anexo5. Principal.txt msg=input('Ingrese La Cadena Codificada [ ]:'); %poly=[1 1 0 0 1 1] clc poly=input('Ingrese El Polimonio En Bits [ ]:');
clearvars all [M N]=size(poly);
%menu mseg=[msg zeros(1,N-1)]; choice=menu('Elija Una Opcion','Codificar Cualquier Cadena [q r]=deconv(mseg,poly); De Bits Metodo Hamming','Encontrar Y Corregir Error r=abs(r); Metodo Hamming','Codificacion CRC','Detectar Error Con for i=1:length(r) Codificacion CRC'); a=r(i); switch choice if ( mod(a,2)== 0 ) case 1 r(i)=0; %asks the user to input a binary string else message=input('Inserte una cadena binaria de cualquier r(i)=1; longitud entre corchetes []: ') end end %calculates the length of the string crc=r(length(msg)+1:end) n=length(message); if crc==[zeros]; disp('No Hay error ') %mathematical formula that calculates the number of else parity bits disp('Existe Un Error ') nbp=floor(log2(n+ceil(log2(n))))+1; end
disp('El Mensaje Codificado Es: ')
%function insert_parity_bits calculates and inserts the
parity bits insert_parity_bits(message,nbp)
case 2
%asks the user to input a binary string
message=input('Ingrese Una Cadena De Bits Codificada []: ') nbp=input('Ingrese El Numero De Bits De Particion: ') %calculates the length of the string err=error_check(message,nbp); %mathematical formula that calculates the number of parity bits
%correct_message() corrects the error
Corregir=correct_message(message,nbp)
case 3
% The program generates CRC code for any given input
message stream & % generator polynomial %msg=[1 1 1 0 0 0 1 1 ] msg=input('Ingrese La Cadena De Bits [ ]:'); %poly=[1 1 0 0 1 1] poly=input('Ingrese El Polimonio En Bits [ ]:'); [M N]=size(poly); mseg=[msg zeros(1,N-1)]; [q r]=deconv(mseg,poly); r=abs(r); for i=1:length(r) a=r(i); if ( mod(a,2)== 0 ) r(i)=0; else r(i)=1; end end