codigos para correccion de errores

Upload: abel-edwin

Post on 06-Jul-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Codigos Para Correccion de Errores

    1/16

      UNIVERSIDAD NACIONAL DESAN ANTONIO ABAD DEL

    CUSCO

      FACULTAD DE INGENIERÍA:ELÉCTRICA, ELECTRÓNICA, MECÁNICA YMINAS

    CARRERA PROFESIONAL DE INGENIERÍA

    ELÉCTRICA TEMA:

    Curso: Sistemas Digitales IDocente:  Ing. Edga !. A"a#$n Va"d%&%aAlumno: A'(" Ed)%n C#*+##*% C-aCódigo:  /0/012Semestre: 02/34IFecha: C#*, 02 d( 5a+* d(" 02/3

    CUSCO-PERU

    2!"

    CODIGOS PARA DETECCIÓN Y CORRECCIÓN DE ERRORES

    (Sistemas Digitales)

  • 8/17/2019 Codigos Para Correccion de Errores

    2/16

    PRESENTACIÓN

    El presente trabajo es una compilación de información principalmenteteórico del tema: “Códigos para Detección y Corrección de Errores” enque son de mucha importancia y de mucha aplicación hoy en día enmuchos sistemas digitales.

    dem!s en este trabajo de obtención de nue"os conocimientos# aparte delo estudiado en clase es una importante acotación para podercomprender mejor este tema tan importante.

    $inalmente espero cumplir con lo requerido para este fin.

    tentamente:

    bel Ed%in

  • 8/17/2019 Codigos Para Correccion de Errores

    3/16

    D(6(##%$n + #*(##%$n d(

    (*(En matem!ticas# computación y teoría de la información# la detección y corrección deerrores es una importante pr!ctica para el mantenimiento e integridad de los datos atra"&s de diferentes procedimientos y dispositi"os como medios de almacenamientoconfiables. ' (e considera como precursor de este tipo de tecnologías el cme Comodityand )hrase Code usado en los telegramas.

    In6*d##%$n

    *a comunicación entre "arias computadoras produce continuamente un mo"imiento dedatos# generalmente por canales no dise+ados para este propósito ,línea telefónica-# yque introducen un ruido eterno que produce errores en la transmisión.

    )or lo tanto# debemos asegurarnos que si dicho mo"imiento causa errores# &stospuedan ser detectados. El m&todo para detectar y corregir errores es incluir en losbloques de datos transmitidos bits adicionales denominados redundancia.

    (e han desarrollado dos estrategias b!sicas para manejar los errores:

     

    /ncluir suficiente información redundante en cada bloque de datos para que sepuedan detectar y corregir los bits erróneos. (e utili0an códigos de corrección deerrores.

      /ncluir sólo la información redundante necesaria en cada bloque de datos paradetectar los errores. En este caso el n1mero de bits de redundancia es menor. (eutili0an códigos de detección de errores.

    (i consideramos un bloque de datos formado por m bits de datos y r de redundancia# lalongitud final del bloque ser! n# donde n 2 m 3 r.

    4ipo de códigos detectores

    )aridad simple ,paridad hori0ontal-Consiste en a+adir un bit de m!s a la cadena que queremos en"iar# y que nos indicar! siel n1mero de unos ,bits puestos a '- es par o es impar. (i es par incluiremos este bit conel "alor 2 5# y si no es así# lo incluiremos con "alor 2 '.

    Ejemplo de generación de un bit de paridad simple:

    6ueremos en"iar la cadena “'''5'55”:'7 Contamos la cantidad de unos que hay: 8 unos97 El n1mero de unos es par por tanto a+adimos un bit con "alor 2 57 *a cadena en"iada es '''5'555El receptor ahora# repite la operación de contar la cantidad de “unos” que hay ,menos el1ltimo bit- y si coincide# es que no ha habido error.

    )roblemas de este m&todo:

    http://es.wikipedia.org/wiki/Matem%C3%A1ticashttp://es.wikipedia.org/wiki/Matem%C3%A1ticashttp://es.wikipedia.org/wiki/Matem%C3%A1ticashttp://es.wikipedia.org/wiki/Computaci%C3%B3nhttp://es.wikipedia.org/wiki/Teor%C3%ADa_de_la_informaci%C3%B3nhttp://es.wikipedia.org/wiki/Detecci%C3%B3n_y_correcci%C3%B3n_de_errores#cite_note-simmons-1http://es.wikipedia.org/wiki/Detecci%C3%B3n_y_correcci%C3%B3n_de_errores#cite_note-simmons-1http://es.wikipedia.org/wiki/Acme_Comodity_and_Phrase_Codehttp://es.wikipedia.org/wiki/Acme_Comodity_and_Phrase_Codehttp://es.wikipedia.org/wiki/Tel%C3%A9grafohttp://es.wikipedia.org/wiki/Tel%C3%A9grafohttp://es.wikipedia.org/wiki/Tel%C3%A9grafohttp://es.wikipedia.org/wiki/Comunicaci%C3%B3nhttp://es.wikipedia.org/wiki/Comunicaci%C3%B3nhttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Canal_de_comunicacioneshttp://es.wikipedia.org/wiki/Ruidohttp://es.wikipedia.org/wiki/Bithttp://es.wikipedia.org/wiki/Redundanciahttp://es.wikipedia.org/wiki/Computaci%C3%B3nhttp://es.wikipedia.org/wiki/Teor%C3%ADa_de_la_informaci%C3%B3nhttp://es.wikipedia.org/wiki/Detecci%C3%B3n_y_correcci%C3%B3n_de_errores#cite_note-simmons-1http://es.wikipedia.org/wiki/Acme_Comodity_and_Phrase_Codehttp://es.wikipedia.org/wiki/Acme_Comodity_and_Phrase_Codehttp://es.wikipedia.org/wiki/Tel%C3%A9grafohttp://es.wikipedia.org/wiki/Comunicaci%C3%B3nhttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Canal_de_comunicacioneshttp://es.wikipedia.org/wiki/Ruidohttp://es.wikipedia.org/wiki/Bithttp://es.wikipedia.org/wiki/Redundanciahttp://es.wikipedia.org/wiki/Matem%C3%A1ticas

  • 8/17/2019 Codigos Para Correccion de Errores

    4/16

    ;ay una alta probabilidad de que se cuelen casos en los que ha habido error# y que elerror no sea detectado# como ocurre si se cambian dos n1meros en la transmisión en"e0 de uno.

    es:

    *os c!lculos que reali0a el equipo transmisor para calcular su C?C son:

    '. +ade tantos ceros por la derecha al mensaje original como el grado delpolinomio generador 

    9. Di"ide el mensaje con los ceros incluidos entre el polinomio generador 

    . El resto que se obtiene de la di"isión se suma al mensaje con los ceros incluidos

    8. (e en"ía el resultado obtenido

    Estas operaciones generalmente son incorporadas en el hard%are para que pueda ser

    calculado con mayor rapide0# pero en la teoría se utili0an los polinomios para facilitar losc!lculos.

    Ejemplo de obtención del C?C:

    Datos:@ensaje codificado en binario: ''5'55'

    )olinomio generador:

    Aperaciones:

    '7 Abtener el polinomio equi"alente al mensaje:

    97 @ultiplicar el mensaje por ,a+adir 8 ceros por la derecha-:

    7 Di"idir en binario el mensaje por el polinomio generador y sacar el resto:

    87 Concatenar el mensaje con el resto ,en módulo 9 tambi&n-:

    B7 4ransmitir el mensajeEl equipo receptor debe comprobar el código C?C para detectar si se han producido ono errores.

    Ejemplo de los c!lculos del receptor:

    '7 @ediante el protocolo correspondiente acuerdan el polinomio generador 97 Di"ide el código recibido entre el polinomio generador 7 Comprueba el resto de dicha operación

     .' (i el resto es cero# no se han producido errores .9 )rocesar el mensaje

     .' (i el resto es distinto de cero# significa que se han producido errores .9 ?een"iar el mensaje

     .9 /ntentar corregir los errores mediante los códigos correctoresEn resumen# este m&todo requiere de un polinomio generador que# elegidocorrectamente# puede llegar a detectar gran cantidad de errores:

    http://es.wikipedia.org/wiki/WANhttp://es.wikipedia.org/wiki/Hardwarehttp://es.wikipedia.org/wiki/WANhttp://es.wikipedia.org/wiki/Hardware

  • 8/17/2019 Codigos Para Correccion de Errores

    5/16

      Errores simples: todos

     

    Errores dobles: todos

      Errores en las posiciones impares de los bits: todos

     

    Errores en r!fagas con una longitud menor que el grado del polinomiogenerador: todos

      Atras r!fagas: un porcentaje ele"ado y cercano al '55

    S5a d( #*57*'a#%$n

    Es un m&todo sencillo pero eficiente sólo con cadenas de palabras de una longitudpeque+a# es por esto que se suele utili0ar en cabeceras de tramas importantes u otrascadenas importantes y en combinación con otros m&todos.

    $uncionalidad: consiste en agrupar el mensaje a transmitir en cadenas de una longituddeterminada * no muy grande# de por ejemplo ' bits. Considerando a cada cadena

    como un n1mero entero numerado seg1n el sistema de numeración . continuación se suma el "alor de todas las palabras en las que se di"ide el mensaje# y sea+ade el resultado al mensaje a transmitir# pero cambiado de signo.

    Con esto# el receptor lo 1nico que tiene que hacer es sumar todas las cadenas# y si elresultado es 5 no hay errores.

    Ejemplo:

    @ensaje '5'55'''5'5'

    '7 cordar la longitud de cada cadena:

    97 cordar el sistema de numeración:

    7 Di"idir el mensaje: '5' 55' ''5 '5'

    87 sociar cada cadena con un entero: B ' B

    B7 (umar todos los "alores y a+adir el n1mero cambiado de signo: 'F

    7 En"iar B ' B 'F codificado en binarioEl receptor:

    '7 (uma todos los "aloresG si la suma es 5# procesa el mensajeG si no# se ha producidoun error.Este m&todo al ser m!s sencillo es óptimo para ser implementado en soft%are ya que sepuede alcan0ar "elocidades de c!lculo similares a la implementación en hard%are

    Distancia de ;amming basada en comprobación

    http://es.wikipedia.org/wiki/Cabecera_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Binariohttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Cabecera_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Binariohttp://es.wikipedia.org/wiki/Software

  • 8/17/2019 Codigos Para Correccion de Errores

    6/16

    ;ipercubo binario de dimensión cuatro.

    (i queremos detectar d bit erróneos en una palabra de n bits# podemos a+adir a cadapalabra de n bits d3' bits predeterminados al final# de forma que quede una palabra den3d3' bits con una distancia mínima de ;amming de d3'. De esta manera# si uno recibeuna palabra de n3d3' bits que no encaja con ninguna palabra del código ,con unadistancia de ;amming H2 d3' la palabra no pertenece al código- detecta correctamentesi es una palabra errónea. 1n m!s# d o menos errores nunca se con"ertir!n en unapalabra "!lida debido a que la distancia de ;amming entre cada palabra "!lida es de almenos d3'# y tales errores conducen solamente a las palabras in"!lidas que se detectancorrectamente. Dado un conjunto de mIn bits# podemos detectar H2 d bits errorescorrectamente usando el mismo m&todo en todas las palabras de n bits. De hecho#podemos detectar un m!imo de mId errores si todas las palabras de n bits sontransmitidas con un m!imo de d errores.

    Ejemplo

    )alabras a en"iar:

    '. 55555'

    9. 55555'

    . 5555'5

    Codificadas con distancia mínima de ;amming 2 955555' 5555

    55555' 55''

    5555'5 ''55

    (i las palabras recibidas tienen una distancia de ;amming H 9# son palabras incorrectas.

    L%6a d( "* 586*d* d( #*(##%$n + d(6(##%$n d((*(

      Dígito "erificador 

      $EC ,$or%ard Error Correction-

      Código Jinario de Kolay

      Código ;amming

    http://es.wikipedia.org/wiki/Hipercubohttp://es.wikipedia.org/wiki/Hipercubohttp://es.wikipedia.org/wiki/Distancia_de_Hamminghttp://es.wikipedia.org/wiki/C%C3%B3digos_detectores_y_correctores_de_errorhttp://es.wikipedia.org/wiki/D%C3%ADgito_verificadorhttp://es.wikipedia.org/wiki/FEChttp://es.wikipedia.org/wiki/C%C3%B3digo_Binario_de_Golayhttp://es.wikipedia.org/wiki/C%C3%B3digo_Hamminghttp://es.wikipedia.org/wiki/Hipercubohttp://es.wikipedia.org/wiki/Distancia_de_Hamminghttp://es.wikipedia.org/wiki/C%C3%B3digos_detectores_y_correctores_de_errorhttp://es.wikipedia.org/wiki/D%C3%ADgito_verificadorhttp://es.wikipedia.org/wiki/FEChttp://es.wikipedia.org/wiki/C%C3%B3digo_Binario_de_Golayhttp://es.wikipedia.org/wiki/C%C3%B3digo_Hamming

  • 8/17/2019 Codigos Para Correccion de Errores

    7/16

      Jit de paridad

     

    ?eed(olomon

    C$d%g* d( #*n6*"El código de control es un mecanismo de detección de errores utili0ado para "erificar lacorrección de un dato# generalmente en soporte inform!tico. *os dígitos de control seusan principalmente para detectar errores en el tecleo o transmisión de los datos.

    Keneralmente consisten en uno o m!s caracteres num&ricos o alfab&ticos a+adidos aldato original y calculados a partir de &ste# mediante un determinado algoritmo. lgunosde los ejemplos de uso frecuentes son los n1meros de identificación personal# códigosde barras# tarjetas de cr&dito y códigos bancarios.

    D(n*5%na#%$n>o eiste unanimidad en la denominación de esta t&cnica en el mundo hispanoparlante.*a traducción directa del ingl&s check digit  sería dígito de chequeo# de verificación o decontrol . Estas denominaciones solamente son aplicables cuando se trata# efecti"amente#de uno o "arios dígitos y no de otros caracteres. @!s correctas son las "ariantescarácter de chequeo# de verificación o de control # aunque &sta 1ltima tiene otrosignificado específico en el conteto de la inform!tica. 4ambi&n son aplicables código decontrol  ,la forma m!s usada de entre las correctas-# de chequeo o de verificación#aunque esta 1ltima epresión se refiere casi siempre a t&cnicas para filtrar el acceso ap!ginas %eb# como los captcha.

    U6%"%9a#%$n

    Es utili0ado normalmente en representaciones num&ricas que eijan integridad# comopor ejemplo:

      Documentos de identificación: lgunos documentos de identificación como lac&dula de identidad o el D>/ dependiendo del país.

      Códigos de pagos: >1mero de factura# n1mero de identificación tributaria# etc.

      Códigos en general: Cuenta bancaria# cuenta corriente# n1mero de matrícula#código de barras# /(J># etc.

    C!lculo del dígito "erificador El m&todo de c!lculo de esos dígitos "aría conforme el caso. (in embargo# muchos deellos se basan en dos rutinas tradicionales: @ódulo '' y @ódulo '5.

    M$d"* //

    El m&todo denominado módulo 11 detecta errores en un solo dígito e intercambiossimples o dobles. (e basa en aplicar un factor de chequeo ponderado a cada dígito deln1mero original. El c!lculo se reali0a como sigue: L'M

    http://es.wikipedia.org/wiki/Bit_de_paridadhttp://es.wikipedia.org/wiki/Reed-Solomonhttp://es.wikipedia.org/wiki/Detecci%C3%B3n_de_erroreshttp://es.wikipedia.org/wiki/Detecci%C3%B3n_de_erroreshttp://es.wikipedia.org/wiki/Algoritmohttp://es.wikipedia.org/wiki/Algoritmohttp://es.wikipedia.org/wiki/C%C3%A9dula_de_identidadhttp://es.wikipedia.org/wiki/C%C3%A9dula_de_identidadhttp://es.wikipedia.org/wiki/C%C3%B3digo_de_barrashttp://es.wikipedia.org/wiki/C%C3%B3digo_de_barrashttp://es.wikipedia.org/wiki/Tarjeta_de_cr%C3%A9ditohttp://es.wikipedia.org/wiki/Tarjeta_de_cr%C3%A9ditohttp://es.wikipedia.org/wiki/IBANhttp://es.wikipedia.org/wiki/Idioma_ingl%C3%A9shttp://es.wikipedia.org/wiki/Cifra_(matem%C3%A1tica)http://es.wikipedia.org/wiki/Cifra_(matem%C3%A1tica)http://es.wikipedia.org/wiki/Car%C3%A1cter_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Car%C3%A1cter_de_controlhttp://es.wikipedia.org/wiki/Car%C3%A1cter_de_controlhttp://es.wikipedia.org/wiki/Captchahttp://es.wikipedia.org/wiki/C%C3%A9dula_de_identidadhttp://es.wikipedia.org/wiki/C%C3%A9dula_de_identidadhttp://es.wikipedia.org/wiki/DNIhttp://es.wikipedia.org/wiki/DNIhttp://es.wikipedia.org/wiki/Facturahttp://es.wikipedia.org/wiki/Facturahttp://es.wikipedia.org/wiki/Identificaci%C3%B3n_tributariahttp://es.wikipedia.org/wiki/Identificaci%C3%B3n_tributariahttp://es.wikipedia.org/wiki/C%C3%B3digo_cuenta_clientehttp://es.wikipedia.org/wiki/C%C3%B3digo_de_barrashttp://es.wikipedia.org/wiki/ISBNhttp://es.wikipedia.org/wiki/D%C3%ADgito_verificador#cite_note-hp-1http://es.wikipedia.org/wiki/D%C3%ADgito_verificador#cite_note-hp-1http://es.wikipedia.org/wiki/Bit_de_paridadhttp://es.wikipedia.org/wiki/Reed-Solomonhttp://es.wikipedia.org/wiki/Detecci%C3%B3n_de_erroreshttp://es.wikipedia.org/wiki/Algoritmohttp://es.wikipedia.org/wiki/C%C3%A9dula_de_identidadhttp://es.wikipedia.org/wiki/C%C3%B3digo_de_barrashttp://es.wikipedia.org/wiki/C%C3%B3digo_de_barrashttp://es.wikipedia.org/wiki/Tarjeta_de_cr%C3%A9ditohttp://es.wikipedia.org/wiki/IBANhttp://es.wikipedia.org/wiki/Idioma_ingl%C3%A9shttp://es.wikipedia.org/wiki/Cifra_(matem%C3%A1tica)http://es.wikipedia.org/wiki/Car%C3%A1cter_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Car%C3%A1cter_de_controlhttp://es.wikipedia.org/wiki/Car%C3%A1cter_de_controlhttp://es.wikipedia.org/wiki/Captchahttp://es.wikipedia.org/wiki/C%C3%A9dula_de_identidadhttp://es.wikipedia.org/wiki/DNIhttp://es.wikipedia.org/wiki/Facturahttp://es.wikipedia.org/wiki/Identificaci%C3%B3n_tributariahttp://es.wikipedia.org/wiki/C%C3%B3digo_cuenta_clientehttp://es.wikipedia.org/wiki/C%C3%B3digo_de_barrashttp://es.wikipedia.org/wiki/ISBNhttp://es.wikipedia.org/wiki/D%C3%ADgito_verificador#cite_note-hp-1

  • 8/17/2019 Codigos Para Correccion de Errores

    8/16

    '. cada dígito del n1mero base se le asigna un factor de chequeo ponderado.Dicho factor ser! 9 para el dígito menos significati"o ,el que est! m!s a laderecha- y# en orden# # 8# B# # F para los siguientes. (i hubiera m!s de dígitosla secuencia se repetiría de modo que el s&ptimo dígito se multiplicaría por 9# elocta"o por # etc.

    9. Cada dígito del n1mero base se multiplica por el factor de chequeo asignado.

    . (e suman los resultados de todas las multiplicaciones.

    8. l resultado de la suma se le calcula el módulo '' ,de ahí el nombre del m&todo-#es decir# el resto de la di"isión entera entre ''.

    B. '' se le resta el módulo calculado en el punto anterior. (i el resultado de laresta es H '5# dicho resultado es el dígito de control que busc!bamos. (i elresultado es '' el dígito de control es 5 y si el resultado es '5 el dígito de controlresultante es '.

    El siguiente esquema desarrolla un ejemplo de c!lculo:

    >1mero ejemplo: 8'9'BN

    )asos ' y 9  333333333 33  O 8 O ' O 9 O O ' O B O O O O N O  333333333 33  O O O O O O O O  9 F B 8 9  O O O O O O O O  2'9 29 2'8 2 2B 295 2P 2

    )aso '9 39 3'8 3 3B 395 3P 3 2 '58

    )aso 8 '58 mod '' 2 B ,ya que '58 2 '' P 3 B-

    )aso B '' B 2

    ?esultado 2 8'9'B "eces se usan "ariantes# como sustituir el resultado por una letra cuando el resultadoes '5. )or ejemplo# en Chile el ?ol Qnico >acional ,?- y el ?ol Qnico 4ributario ,?

  • 8/17/2019 Codigos Para Correccion de Errores

    9/16

    En "e0 de ser hecha la sumatoria de las multiplicaciones# ser! hecha la sumatoria de losdígitos de las multiplicaciones ,si una multiplicación da '9# por ejemplo# ser! sumado ' 39 2 -.

    *a sumatoria ser! di"idida por '5 y si el resto ,módulo '5- es diferente de cero# el dígitoser! '5 menos este "alor. En caso que el resto sea cero# ese ser! el dígito "erificador.

    Estas condiciones finales# sin embargo# podr!n ser alteradas conforme el caso.

    C*(##%$n d( (*( -a#%aad("an6(

    *a corrección de errores hacia adelante ,en ingl&s# Forward Error Correction o FEC - esun tipo de mecanismo de corrección de errores que permite su corrección en el receptorsin retransmisión de la información original. (e utili0a en sistemas sin retorno osistemas en tiempo real donde no se puede esperar a la retransmisión para mostrar losdatos. Este mecanismo de corrección de errores se utili0a por ejemplo# en lascomunicaciones "ía sat&lite# en las grabadoras de DVD y CD o en las emisiones de 4D4 para terminales mó"iles ,est!ndar  DVJ;-# concretamente en este 1ltimo caso se trata deun tipo especial de $EC# el denominado @)E$EC.

    $uncionamiento*a posibilidad de corregir errores se consigue a+adiendo al mensaje original unos bitsde redundancia. *a fuente digital en"ía la secuencia de datos al codificador# encargadode a+adir dichos bits de redundancia. la salida del codificador obtenemos ladenominada palabra código. Esta palabra código es en"iada al receptor y &ste# mediante

    el decodificador adecuado y aplicando los algoritmos de corrección de errores# obtendr!la secuencia de datos original. *os dos principales tipos de codificación usados son:

     

    Códigos bloque. *a paridad en el codificador se introduce mediante un algoritmoalgebraico aplicado a un bloque de bits. El decodificador aplica el algoritmoin"erso para poder identificar y# posteriormente corregir los errores introducidosen la transmisión.

      Códigos con"olucionales. *os bits se "an codificando tal y como "an llegando alcodificador. Cabe destacar que la codificación de uno de los bits est!enormemente influenciada por la de sus predecesores. *a decodificación paraeste tipo de código es compleja ya que en principio# es necesaria una grancantidad de memoria para estimar la secuencia de datos m!s probable para losbits recibidos. En la actualidad se utili0a para decodificar este tipo de códigosalgoritmo de Viterbi# por su gran eficiencia en el consumo de recursos.

    Ventajas$EC reduce el n1mero de transmisiones de errores# así como los requisitos de potenciade los sistemas de comunicación e incrementa la efecti"idad de los mismos e"itando lanecesidad del reen"ío de los mensajes da+ados durante la transmisión.

    CompromisosEn general incluir un n1mero mayor de bits de redundancia supone una mayorcapacidad para corregir errores. (in embargo# este hecho reduce notablemente elr&gimen binario de transmisión# y aumenta el retardo en la recepción del mensaje.

    http://es.wikipedia.org/wiki/Correcci%C3%B3n_de_erroreshttp://es.wikipedia.org/wiki/DVDhttp://es.wikipedia.org/wiki/DVDhttp://es.wikipedia.org/wiki/CDhttp://es.wikipedia.org/wiki/CDhttp://es.wikipedia.org/wiki/TDThttp://es.wikipedia.org/wiki/DVB-Hhttp://es.wikipedia.org/wiki/DVB-Hhttp://es.wikipedia.org/wiki/DVB-Hhttp://es.wikipedia.org/wiki/MPE-FEChttp://es.wikipedia.org/wiki/Algoritmo_de_Viterbihttp://es.wikipedia.org/wiki/Correcci%C3%B3n_de_erroreshttp://es.wikipedia.org/wiki/DVDhttp://es.wikipedia.org/wiki/CDhttp://es.wikipedia.org/wiki/TDThttp://es.wikipedia.org/wiki/DVB-Hhttp://es.wikipedia.org/wiki/MPE-FEChttp://es.wikipedia.org/wiki/Algoritmo_de_Viterbi

  • 8/17/2019 Codigos Para Correccion de Errores

    10/16

    C$d%g* a55%ngEn inform!tica# el código de ;amming es un código detector y corrector de errores quelle"a el nombre de su in"entor# ?ichard ;amming. En los datos codificados en ;ammingse pueden detectar errores en un bit y corregirlos# sin embargo no se distingue entreerrores de dos bits y de un bit ,para lo que se usa ;amming etendido-. Esto representa

    una mejora respecto a los códigos con bit de paridad# que pueden detectar errores ensólo un bit# pero no pueden corregirlo.

    C$d%g* 7(4a55%ng

    ntes de los códigos ;amming se utili0aron ciertos códigos detectores de error# como lofueron el código linteing# pero ninguno llegó a ser tan efica0 como los de ;amming. continuación se describen algunos de estos códigos.

    Pa%dad

    *a paridad consiste en a+adir un bit# denominado bit de paridad# que indique si eln1mero de los bits de "alor ' en los datos precedentes es par o impar. (i un solo bitcambiara por error en la transmisión# el mensaje cambiar! de paridad y el error se puededetectar ,nótese que el bit donde se produ0ca el error puede ser el mismo bit deparidad-. *a con"ención m!s com1n es que un "alor de paridad ' indica que hay unn1mero impar de unos en los datos# y un "alor de paridad de 5 indica que hay un n1meropar de unos en los datos.

    *a comprobación de paridad no es muy robusta# dado que si cambia de forma uniformeun n1mero par de bits# el bit de paridad ser! "!lido y el error no ser! detectado. (e utili0a

    cuando se cumplen simult!neamente dos condiciones: que la probabilidad de que falleun bit es baja y que las fallas de bits son sucesos independientes. De esta forma laprobabilidad de que fallen dos ,o m!s- bits es muy baja# por lo que cuando no detectaerror es altamente probable que el código sea efecti"amente correcto. Cabe destacar quedichas condiciones se ajustan al caso de las memorias de las computadoras modernaspero no ocurre lo mismo con los dispositi"os de almacenamiento que guardan lainformación en forma serial ,un bit a continuación de otro- ni con los sistemas detransmisión de datos seriales ya que en estos casos el hecho que falle un bit est!"inculado# en forma no despreciable# a la falla de otro adyacente.

    )or otro lado# la paridad# aunque puede detectar que hay error# no indica en qu& bit se

    cometió. *os datos se deben desechar por entero y "ol"erse a transmitir. En un medioruidoso# una transmisión correcta podría tardar mucho tiempo o incluso# en el peor delos casos# no darse nunca. El chequeo de paridad# aunque no es muy bueno# usa un1nico bit# por lo que produce muy poca sobrecarga# y adem!s permite la corrección deese bit si es conocida su posición.

    D* (n6( #%n#*

    En los a+os 85# Jell utili0ó un código algo m!s sofisticado conocido como dosentrecinco. Este código se basa en que cada bloque de cinco bits ,conocido como pentabit-tu"iera eactamente dos unos# asegurando así que tenga una Distancia de ;amming igual a dos. De este modo# la computadora podría detectar posibles errores cuando ensu entrada no había eactamente dos unos en cada pentabit.

    http://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/C%C3%B3digos_detectores_y_correctores_de_errorhttp://es.wikipedia.org/wiki/C%C3%B3digos_detectores_y_correctores_de_errorhttp://es.wikipedia.org/wiki/Richard_Hamminghttp://es.wikipedia.org/wiki/Richard_Hamminghttp://es.wikipedia.org/wiki/Paridad#Paridad_en_telecomunicacioneshttp://es.wikipedia.org/wiki/Paridad#Paridad_en_telecomunicacioneshttp://es.wikipedia.org/wiki/Bit_de_paridadhttp://es.wikipedia.org/wiki/Bit_de_paridadhttp://es.wikipedia.org/wiki/A%C3%B1os_1940http://es.wikipedia.org/wiki/Alexander_Graham_Bellhttp://es.wikipedia.org/wiki/Alexander_Graham_Bellhttp://es.wikipedia.org/wiki/Distancia_de_Hamminghttp://es.wikipedia.org/wiki/Distancia_de_Hamminghttp://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/C%C3%B3digos_detectores_y_correctores_de_errorhttp://es.wikipedia.org/wiki/Richard_Hamminghttp://es.wikipedia.org/wiki/Paridad#Paridad_en_telecomunicacioneshttp://es.wikipedia.org/wiki/Bit_de_paridadhttp://es.wikipedia.org/wiki/A%C3%B1os_1940http://es.wikipedia.org/wiki/Alexander_Graham_Bellhttp://es.wikipedia.org/wiki/Distancia_de_Hamming

  • 8/17/2019 Codigos Para Correccion de Errores

    11/16

    Este código seguía 1nicamente detectando errores por cambio en un solo bitG si en unmismo pentabit un 5 cambiaba a ' y un ' cambiaba a 5# la regla de dosentrecinco seseguía cumpliendo y el error quedaba sin descubrir.

    R(7(6%#%$n

    Atro código utili0ado# consistía en repetir cada bit de datos "arias "eces para asegurarse

    de que la transmisión era correcta. )or ejemplo# si el bit de datos que se en"ía fuera un'# un código de repetición con n2# en"iaría R'''R. (i los tres bits recibidos no eranid&nticos# había un error. En un ambiente sin demasiado ruido# la mayoría de las "ecessolamente cambiaría un bit en cada paquete de tres bits. )or lo tanto# datos del tipo 55'#5'5# y '55 se corresponden al bit 5# mientras que ''5# '5'# y 5'' se corresponden con elbit '.

  • 8/17/2019 Codigos Para Correccion de Errores

    12/16

    ;amming estaba interesado en solucionar simult!neamente dos problemas: aumentar ladistancia tanto como sea posible# a la "e0 que se aumentan al m!imo los bits deinformación. Durante los a+os 85 desarrolló "arios esquemas de codificación quemejoraban notablemente los códigos eistentes. *a cla"e de todos sus sistemas eraintercalar entre los bits de datos los de paridad.

    ;amming ,F#8- ;oy# el código de ;amming se refiere al ,F.8- que ;amming introdujo en'PB5. El código de ;amming agrega tres bits adicionales de comprobación por cada

    cuatro bits de datos del mensaje. El algoritmo de ;amming ,F.8- puede corregir cualquier error de un solo bit# pero cuando hay errores en m!s de un bit# la palabra transmitida seconfunde con otra con error en un sólo bit# siendo corregida# pero de forma incorrecta#es decir que la palabra que se corrige es otra distinta a la original# y el mensaje final ser!incorrecto sin saberlo. )ara poder detectar ,aunque sin corregirlos- errores de dos bits#se debe a+adir un bit m!s# y el código se llama ;amming etendido. El procedimientopara esto se eplica al final. El algoritmo es el siguiente:

    '. 4odos los bits cuya posición es potencia de dos se utili0an como bits de paridad,posiciones '# 9# 8# W# '# 9# 8# etc.-.

    9. *os bits del resto de posiciones son utili0ados como bits de datos ,posiciones # B# #F# P# '5# ''# '9# '# '8# 'B# 'F# etc.-.

    . Cada bit de paridad se obtiene calculando la paridad de alguno de los bits de datos. *aposición del bit de paridad determina la secuencia de los bits que alternati"amentecomprueba y salta# a partir de &ste# tal y como se eplica a continuación. )osición ':salta 5# comprueba '# salta '# comprueba '# etc. )osición 9: salta '# comprueba 9# salta 9#comprueba 9# etc. )osición 8: salta # comprueba 8# salta 8# comprueba 8# etc. )osiciónW: salta F# comprueba W# salta W# comprueba W# etc. )osición ': salta 'B# comprueba '#salta '# comprueba '# etc. ?egla general para la posición n es: salta n' bits#comprueba n bits# salta n bits# comprueba n bits... X así sucesi"amente. En otras

    palabras# el bit de paridad de la posición comprueba los bits en las posiciones quetengan al bit Y en su representación binaria. Dicho a la in"ersa# el bit 8# chequea los bits8# B# # F# al ser estos los de su representación binaria: 82'55,9-# B2'5',9-# 2''5,9- yF2''',9-. )or el contrario# el mismo bit de paridad no comprueba el bit W# debido a que ensu representación binaria el bit n1mero ,28- es igual a 5 ,W2'555J-. sí# por ejemplo#para los primeros t&rminos se tiene: En la )osición ' ,9Z5 2 '-# comprobaríamos los bits:'# # B# F# P# ''# '... En la )osición 9 ,9Z' 2 9-# los bits: 9# # # F# '5# ''# '8# 'B... En la)osición 8 ,9Z9 2 8-# los bits: 8# B# # F# '9# '# '8# 'B# 95# 9'# 99# 9... En la )osición W ,9Z2 W- tendríamos: W# P# '5# ''# '9# '# '8# 'B# 98'... (iguiendo el algoritmo hastacompletar la nue"a cadena.

    E;(57"*Consideremos la palabra de datos de F bits R5''5'5'R. )ara "er cómo se generan yutili0an los códigos ;amming para detectar un error# obser"e las tablas siguientes. (eutili0a la d para indicar los bits de datos y la p para los de paridad.

    En primer lugar los bits de datos se insertan en las posiciones apropiadas y los bits deparidad calculados en cada caso usando la paridad par.

    p' p9 d' p d9 d d8 p8 dB d dF

    )alabra de datos ,sin paridad-: 5 ' ' 5 ' 5 '

    p' ' 5 ' 5 ' '

    http://es.wikipedia.org/wiki/Bit_de_paridadhttp://es.wikipedia.org/wiki/Bit_de_paridadhttp://es.wikipedia.org/wiki/Bit_de_paridad

  • 8/17/2019 Codigos Para Correccion de Errores

    13/16

    p9 5 5 ' 5 5 '

    p 5 ' ' 5

    p8 5 ' 5 '

    )alabra de datos ,con paridad-: ' 5 5 5 ' ' 5 5 ' 5 '

    C!lculo de los bits de paridad en el código ;amming

    )' 2 D' eor D9 eor D8 eor DB eor DF)9 2 D' eor D eor D8 eor D eor DF) 2 D9 eor D eor D8)8 2 DB eor D eor DF

    *a nue"a palabra de datos ,con los bits de paridad- es ahora R'555''55'5'R.Consideremos ahora que el bit de la derecha# por error# cambia de ' a 5. *a nue"apalabra de datos ser! ahora R'555''55'55R.

    (in errores

    p' p9 d' p d9 d d8 p8 dB d dF)rueba de

    paridadJit de

    comprobación

    )alabra de datosrecibida:

    ' 5 5 5 ' ' 5 5 ' 5 ' '

    p' ' 5 ' 5 ' ' Correcto 5

    p9 5 5 ' 5 5 ' Correcto 5

    p 5 ' ' 5 Correcto 5

    p8 5 ' 5 ' Correcto 5

    Comprobación de los bits de paridad ,con primer bit de la derecha sin cambiar-

    Con errores

    p' p9 d' p d9 d d8 p8 dB d dF)rueba de

    paridadJit de

    comprobación

    )alabra de datosrecibida:

    ' 5 5 5 ' ' 5 5 ' 5 5 '

    p' 5 5 ' 5 ' 5 Error '

    p9 ' 5 ' 5 5 5 Error '

    p 5 ' ' 5 Correcto 5

    p8 ' ' 5 5 Error '

    Comprobación de los bits de paridad ,con primer bit de la derecha cambiado-

    (i se anali0a en la tabla anterior la paridad que se debe obtener a la derecha tras lallegada del mensaje sin errores debe ser siempre 5 ,por cada fila-# pero en el momentoen que ocurre un error esta paridad cambia a '# de allí el nombre de la columna Rprueba

    de paridad 'R. (e obser"a que en la fila en que el cambio no afectó la paridad es cero yllega sin errores.

    El paso final es e"aluar los bits de paridad ,recuerde que el fallo se encuentra en dF-. El"alor entero que representan los bits de paridad es '' ,si no hubieran ocurrido errores

  • 8/17/2019 Codigos Para Correccion de Errores

    14/16

    este "alor seria 5-# lo que significa que el bit d&cimo primero de la palabra de datos ,bitsde paridad incluidos- es el erróneo y necesita ser cambiado.

    p8 p p9 p'

    Jinario ' 5 ' '

    Decimal W 9 ' [ 2 ''

    Cambiando el bit d&cimo primero '555''55'55 se obtiene de nue"o '555''55'5'.Eliminando los bits de patrón de la paridad no se tienen en cuenta los bits de paridad. (iel error se produjera en uno de ellos# en la comprobación sólo se detectaría un error# justo el correspondiente al bit de paridad causante del mismo.

    a55%ng Eótese que este m&todo detecta los errores# pero no los corrige ,sal"o en el caso de quela palabra transmitida sea de tama+o ' bit-. Eisten dos "ariantes de este m&todo# bit deparidad par y bit de paridad impar:

    http://es.wikipedia.org/wiki/Ayuda:C%C3%B3mo_referenciarhttp://es.wikipedia.org/wiki/Ayuda:C%C3%B3mo_referenciarhttp://es.wikipedia.org/wiki/Wikipedia:Verificabilidadhttp://es.wikipedia.org/wiki/Wikipedia:Verificabilidadhttp://es.wikipedia.org/wiki/Wikipedia:Fuentes_fiableshttp://es.wikipedia.org/wiki/Wikipedia:Fuentes_fiableshttp://es.wikipedia.org/wiki/Wikipedia:Fuentes_fiableshttp://es.wikipedia.org/wiki/Ayuda:C%C3%B3mo_referenciarhttp://es.wikipedia.org/wiki/Ayuda:C%C3%B3mo_referenciarhttp://es.wikipedia.org/wiki/Ayuda:C%C3%B3mo_referenciarhttp://es.wikipedia.org/w/index.php?title=Bit_de_paridad&action=historyhttp://es.wikipedia.org/w/index.php?title=Bit_de_paridad&action=historyhttp://es.wikipedia.org/w/index.php?title=Bit_de_paridad&action=historyhttp://es.wikipedia.org/wiki/Bithttp://es.wikipedia.org/wiki/Bithttp://es.wikipedia.org/wiki/N%C3%BAmeros_pares_e_impareshttp://es.wikipedia.org/wiki/N%C3%BAmeros_pares_e_impareshttp://es.wikipedia.org/wiki/N%C3%BAmeros_pares_e_impareshttp://es.wikipedia.org/wiki/N%C3%BAmeros_pares_e_impareshttp://es.wikipedia.org/wiki/Detecci%C3%B3n_de_erroreshttp://es.wikipedia.org/wiki/Detecci%C3%B3n_de_erroreshttp://es.wikipedia.org/wiki/Control_de_redundancia_c%C3%ADclicahttp://es.wikipedia.org/wiki/Control_de_redundancia_c%C3%ADclicahttp://es.wikipedia.org/wiki/Control_de_redundancia_c%C3%ADclicahttp://es.wikipedia.org/wiki/Ayuda:C%C3%B3mo_referenciarhttp://es.wikipedia.org/wiki/Wikipedia:Verificabilidadhttp://es.wikipedia.org/wiki/Wikipedia:Verificabilidadhttp://es.wikipedia.org/wiki/Wikipedia:Fuentes_fiableshttp://es.wikipedia.org/wiki/Ayuda:C%C3%B3mo_referenciarhttp://es.wikipedia.org/w/index.php?title=Bit_de_paridad&action=historyhttp://es.wikipedia.org/wiki/Bithttp://es.wikipedia.org/wiki/N%C3%BAmeros_pares_e_impareshttp://es.wikipedia.org/wiki/N%C3%BAmeros_pares_e_impareshttp://es.wikipedia.org/wiki/Detecci%C3%B3n_de_erroreshttp://es.wikipedia.org/wiki/Control_de_redundancia_c%C3%ADclica

  • 8/17/2019 Codigos Para Correccion de Errores

    15/16

    En el caso de la paridad par# se cuentan el n1mero de unos. (i el total es impar# el bit deparidad se establece en uno y por tanto la suma del total anterior con este bit de paridad#daría par. (i el conteo de bits uno es par# entonces el bit de paridad,par- se deja en 5#pues ya es par.

    En el caso de la paridad impar# la situación es la contraria. (e suman los bits cuyo "alores uno# si da un n1mero impar de bits# entonces el bit de paridad,impar- es cero. X si lasuma de los bits cuyo "alor es uno es par# entonces el bit de paridad,impar- se estableceen uno# haciendo impar la cuenta total de bits uno.

    R((d4S*"*5*n?eed(olomon es un código cíclico no binario y constituye una subclase de loscódigos JC;. *os códigos cíclicos son una subclase de los códigos de bloque est!ndar de detección y corrección de errores que protege la información contraerrores en los datos transmitidos sobre un canal de comunicaciones. Este tipode código pertenece a la categoría $EC ,Forward Error Correction-# es decir#corrige los datos alterados en el receptor y para ello utili0a unos bits adicionales

    que permiten esta recuperación a posteriori.

    El código fue in"entado por /r"ing (. ?eed y Kusta"e (olomon ,de ahí sunombre- en el a+o 'P5. Este código encuentra actualmente aplicado en !reascomo los CD# telefonía mó"il y sondas espaciales ,la sonda Kalileo a `1piter  en'PWP# la sonda @agallanes a Venus ese mismo a+o o la sonda

  • 8/17/2019 Codigos Para Correccion de Errores

    16/16

    CONCLUCIONESC*n#"%5* >( (