Vous êtes sur la page 1sur 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

crc=r(length(msg)+1:end)
disp('El Mensaje Codificado Es: ')
frame = bitor(mseg,r)

case 4

Vous aimerez peut-être aussi