CÓDIGOS DE DETECCIÓN DE ERROR CRC Y HAMMING Pilatasig Aynuca Alexis Fabian
[email protected]
Paucar Socasi Elvis Patricio
[email protected]
Ingeniería Mecatrónica, 6to. Nivel, Universidad de las Fuerzas Armadas ESPE Etensión !atacunga, M"r#uez de Maenza S$N !atacunga, Ecuador. 23 de Abril de 201
RESUMEN! "on%orme a la gran cantidad de &ro'lem as al momento de enviar envia r o rece&t ar un mensa(e, mensa(e, se )an determi determinado nado varias varias t*cnicas t*cnicas a utilizar &ara la detección de errores, en el &resente documento se analizara una de las t*cnicas m"s utilizadas &ara la solución de estos &ro'lemas. El código +amming El código -- son códigos #ue tiene como %unción detect detectar ar correg corregir ir los errore errores s #ue se )aan &roducido durante la transición de un mensa( mensa(e e con lo cual cual el rece&to rece&torr &uede analiza analizarr dete determ rmin inar ar,, de una una %orm %orma a con% con%ia ia'l 'le, e, si los los 'its 'its rece&tados corres&onden realmente a los del emisor. PALABRAS CLAVE: c#digo $a%ing& c#digo "'"& (etecci#n de errores.
1 INTRODUCCIÓN El c#digo c#digo )a%%ing )a%%ing tiende a ser un c#digo *ue *ue per%ite anali+ar& locali+ar y corregir errores& cuando el c#digo detecta *ue se $a producido dos errores& el c#digo reali+a un procedi%iento %ediante unas tablas las cuales cuales traba, traba,an an con bits de redund redundanc ancia ia las %is%as se deben introducir a lo largo de la palabra& con con la fina finali lida dad d *ue *ue cuan cuando do prod produ+ u+ca ca erro errore res s lo poda%os reali+ar la respectiva correcci#n "#digos "#digos de redund redundanc ancia ia c-clic c-clica a "'"/ "'"/ es un c#digo *ue detecta y corrige corrige de errores errores en la infor%aci#n de las teleco%unicaciones. teleco%unicaciones. os c#digos "'" a aplicaci#n aplicaci#n del c#digo c#digo "'" se reali+a reali+a %ediante %ediante divisiones divisiones a n%eros n%eros binarios& binarios& estos c#digos se utili+a para anali+ar los $ardare de las co%putadoras donde se puede encontrar errores de datos del dispositivo
2. CARACTERÍSTICAS GENERALES
2.2 CRC •
Su i%ple%entaci#n es sencilla y de f4cil entendi%iento.
•
Ade%4s puede detectar causados por el ruido.
errores
3. DESARROLLO 3.1 CÓDIGO HAMMING Por lo general el c#digo )a%%ing tiene una no%enclatura *ue contiene contiene dos n%eros los cuales se encuentran dentro de un parntesis& el pri%er n%ero representa el total de bits& %ientras el segundo representa el n%ero de bits *ue contiene la infor%aci#n En los los c#di c#digo gos s )a%% )a%%in ing g se encu encuen entr tra a el ter%ino paridad el cual contiene bits *ue contienen una potencia de 2& dependientes del el orden de la tabla por lo tanto los restantes ir4n con los los datos. datos. 5isuali+ar en la presente i%agen 1. 617 /a'la /a'la 0. /a'la de &aridad del código +amming p 1
p 2
Palabra de dato sin pariedad/ P1
1 0
P2
P8
p 3
d 2
0
1
0
1
0 0
P3
Palabra de dato con pariedad/
d 1
1
d 3
1
d 4
0
0
0
1
1
0
1
1
0
1
0
1
d 5
0
1
p 4
0
d 6
0
•
•
El c#digo )a%%ing es un c#digo de *ue per%ite detectar y corregir errores. per%ite detectar errores $asta en dos bit y corregir un bit Para la corregir los errores utili+a el %todo de paridad
0
1
0
1
0
1
0
1
0
1
3.2 Códig CRC El c#digo "'" o ta%bin lla%ada co%probaci#n de redundancia c-clica es una funci#n dise dise9a 9ada da para ara det detecta ectarr los los ca%b ca%bio ios s en la trans%isi#n de datos de un trans%isor a un receptor. Son ta%b ta%bi in n polino%iales.
cons consid ider erad ados os
co%o co%o
1 1
2.1 HAMMING •
d 7
c#di c#digo gos s
El ob,etivo de este %todo es a9adir r bits al %ensa,e de : bits& de tal for%a *ue la resultante a trans%itir sea :;r bits y sea divisible para un polino%io generador <x/. El receptor verifica si =x/ es divisible para <x/& y si no lo es significa *ue existe un error en la trans%isi#n de infor%aci#n.
!. PROCEDIMIENTO DE CODI"ICACIÓN Y DECODI"ICACIÓN !.1 HAMMING !.1.1 CODI"ICACIÓN Para la for%a %ec4nica las posiciones se colocan en la pri%era fila de la parte superior de la tabla teniendo co%o referencia el 0001& los bits de paridad se expresara 0. a. os bits de paridad *ue son representados con la letra P ser4n colocados en la pri%era colu%na de la tabla para a continuaci#n sean calculados b. en el caso de P1& el bit %enos significativo
a. Se debe escribir el c#digo *ue se recibe en los bits de datos de igual %anera *ue en la anterior en a*uellas celdas con el lti%o bit 1. 617 b. " alculare%os las paridades p1& p2& p3& p8 con el %is%o procedi%iento *ue se reali+# en la codificaci#n #. "o%para%os todas las paridades por e,e%plo! co%para%os p1 con p1.
d. El c#digo de $a%ing representa a los errores los errores uno y con cero a los aciertos y se descifra desde la parte inferior $acia la parte superior& estos valores ser4n transfor%ados a deci%al con la finalidad de *ue nos indi*ue la ubicaci#n del error& pero se debe tener en cuenta *ue el c#digo recibido se lo debe contar desde el 1er bit
!.2 CODIGO CRC !.2.1. TRANSMISION
de la paridad 1/ debe ba,arse por lo tanto las posiciones serian 0011& 0101&
Para la trans%isi#n se utili+a un polino%io generador <x/ *ue es predeter%inado de grado r& y es el %is%o tanto en el e%isor y co%o en el receptor. El generador tiene r;1 bits de longitud.
0111&1001& 1011. A continuaciones calcula%os la paridad& cuando la paridad es
a base para el c4lculo de del c#digo es la siguiente!
par los tr%inos de 1 deben ser par caso contrario se procede a co%pletar y agregar un 1 c. En el caso de P2. =ene%os *ue descender el bit de la posici#n cuyo valor de segundo bit sea 1 por lo tanto tendre%os 0011& 0110& 0111& 1010& 1011& etc. El %is%o procedi%iento
R
=
resto
D * 2
r
G
1/ D * 2
r
Es el despla+a%iento de los bits de datos $acia la i+*uierda&.
se reali+ara para los casos de P3 y P8. (ebe%os to%ar en cuenta *ue el bit de paridad se deber4 colocar en la celda adecuada. "o%o es! p1& p1/& p2& p2/ esto depender4 de la posici#n en la cual se encuentre la paridad. Por lti%o descende%os la palabra con la cual se e%piece a traba,ar con la finalidad de ocupar la lti%a fila. > obtendre%os el c#digo cifrado. El c#digo )a%ing se puede utili+ar de %anera directa recibiendo el c#digo final y anali+ando la paridad directa%ente en las filas de p1& p2& p3& p8. 627
!.1.2 DECODI"ICACIÓN En este procedi%iento se reali+ara si%ilar al de codificaci#n con la diferencia *ue extraere%os los bits de paridad& al %o%ento de co%parar deben ser iguales por ende no existir4 error& pero si es lo contrario significa *ue existe un error el cual podre%os corregir
Es la adicci#n de r bits 0s al final del bit de datos. Por e,e%plo! D
=
(100101) 2
r
y D * 2
r
=
=
3 entonces
(100101000 ) 2
Este polino%io se vuelve a dividir para el polino%io generador. Si el residuo de la divisi#n es cero se env-a el dato& si el cociente es diferente de cero se corrige el error y se env-a los datos 687.
!.2.2. RECEPCION El receptor recibe el %ensa,e del e%isor y debe dividirlo para el polino%io generador. Si el residuo es cero& el %ensa,e $a llegado correcta%ente. Si el residuo es diferente de cero& el %ensa,e a llegado con error y $ay *ue pedir una retrans%isi#n del %ensa,e. 687.
!.2.3. E$EMPLO
caracter-stica de detectar los errores en 2 bits Se re*uiere trans%itir 10011011. Polino%io G
=
x
3
+1
generador • • •
.
?ensa,e! 10011011. Polino%io generador! 1001 r3/ Se a9ade 3 bits 0 al final del %ensa,e! 10011011000 x
•
3
⋅ D
Se divide
10011011000 1001 00001011 1001 001000 1001 00010
entre <. 1001 10001010
Se trans%ite 10011011010
%. RESULTADOS El c#digo )a%%ig nos brinda un %todo para anali+ar el resultado deno%inado %todo $a%ing el cual es reali+ar una tabla en la cual se encuentre los valores de paridad *ue podr4n ser co%parados entre los err#neos y los originales. "uando son diferente se ubica el n%ero uno& por otro lado cuando son iguales se ubica el cero. Se descifra desde la parte inferior de la colu%na final $acia la parte superior de la %is%a colu%na& para posterior%ente transfor%ar a nu%ero deci%al con la finalidad de *ue nos indi*ue en *u lugar se reali+# el ca%bio en el dato original& to%ando en cuenta un conteo de i+*uierda a derec$a iniciando desde el pri%er bit El c#digo "'" es un %todo %uy interesante para detectar errores en el envi# de infor%aci#n ya *ue el %ensa,e del e%isor debe ser dividido para el polino%io generador. Si el residuo es cero& el %ensa,e $a llegado correcta%ente. Si el residuo es diferente de cero& el %ensa,e a llegado con error y $ay *ue pedir una retrans%isi#n del %ensa,e .
&. CONCLUSIONES Sin i%portar el tipo de infor%aci#n *ue se desea trans%itir desde un trans%isor a un receptor& sie%pre $ay la posibilidad de *ue se presenten errores en la trans%isi#n de datos& es decir la infor%aci#n *ue sale del trans%isor es diferente a la *ue llega al receptor& la causa %4s i%portante de errores es la trans%isi#n de ruido elctrico& *ue es la variaci#n de volta,e o corriente y *ue sie%pre est4n presentes en los siste%as electr#nicos& para esto existe los c#digos de detecci#n d de errores.
?ediante el an4lisis de este docu%ento se puede concluir lo siguiente! El c#digo )a%%ing nos per%ite corregir cual*uier error *ue contenga un solo bit& tiene la
El c#digo )a%%ing es utili+ado en diversos ca%pos de la ingenier-a con la finalidad de corregir errores en el %o%ento de recibir un %ensa,e os c#digos con bits de paridad tienen la caracter-stica de detectar los errores en un solo bit pero no tienen a corregirlos. El c#digo "'" es un %todo %uy interesante para detectar errores en el envi# de infor%aci#n ya *ue el %ensa,e del e%isor debe ser dividido para el polino%io generador. Si el residuo es cero& el %ensa,e $a llegado correcta%ente. Si el residuo es diferente de cero& el %ensa,e a llegado con error y $ay *ue pedir una retrans%isi#n del %ensa,e
'. RE"ERENCIAS 617 "o% un icaciones digitales& ate%an& Andy& ?arco%bo& Fec$a de Publicaci#n! 200B&cap. 3& p4g. 8C& 8B. $t t p ! DD e+ p1 .es pe.ed u. ec !2 0 0D li bDespespDdoc (etail.actiondoc(101CCBGp00$a%%i ng 627 ntroducci#n a la infor%4tica 8a. ed. /( P r ie t o Espinosa& Alberto loris 'ui+ & Anton io =orr es "antero& Huan "arl os ( ?c
.