CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION...

26
CAPITULO VII TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen errores prácticamente inevitables debido a la presencia de ruido y a otros factores tales como la interferencia intersímbolo, la intermodulación y los ecos. Es por ello necesario establecer maneras, si nó para evitar los errores, por lo menos para poder reconocer su presencia y si es posible corregirlos. El proceso de control de error es de gran importancia pues debido a la baja redundancia de los datos digitales, un grupo de números o símbolos alfanuméricos erróneo puede parecerse a otro significando algo muy diferente. El concepto de redundancia lo podemos entender mejor mediante un sencillo ejemplo: el conjunto [00, 01, 10, 11] de palabras o mensajes binarios no es redundante porque todas las palabras posibles de dos dígitos binarios están contenidas en el conjunto; un error de transmisión en cualquiera de las palabras la convierte en otra palabra válida del conjunto y no habría manera de detectar el error. La redundancia es de capital importancia en el control de error pues, como lo estableció Shannon, no es posible transmitir sin error si los códigos utilizados tienen cero redundancia. El primer método de control de error que se utilizó fue el denominado “ecoplex”. En este método el transmisor envía un carácter, el cual es recibido en el receptor y retransmitido como un eco hacia el transmisor, de aquí el nombre de ecoplex. En el transmisor se examina el carácter eco recibido para ver si difiere del carácter original; si es diferente simplemente se corrige el error y se transmite de nuevo. Como un error de transmisión puede ocurrir en cualquiera dirección, es posible que un carácter erróneo en una dirección se convierta en el carácter correcto al regresar como eco y viceversa. Este método fue muy popular en los sistemas de teletipo, aunque todavía se utiliza en algunos sistemas de transmisión asincrónica. En los sistemas de comunicación actuales el control de error se efectúa mediante la aplicación de códigos especiales que agregan redundancia; estos códigos son de la clase de “códigos de canal” para diferenciarlos de los códigos de línea, vistos en el Capítulo . Esta redundancia agregada permite detectar y/o corregir los errores ocurridos durante la transmisión de los bloques de datos. En este capítulo vamos a describir en forma algorítmica algunos de los códigos más utilizados para la detección y/o corrección de errores. La teoría de los códigos es una materia muy compleja y altamente matemática y un estudio más detallado de estos códigos está fuera de los alcances de este libro. 7.2. DETECCION Y CORRECCION DE ERROR Cuando se recibe un bloque de dígitos binarios es necesario asegurarse de que no contiene errores de transmisión. Si se detecta que el bloque está en error, se tiene dos opciones: una es corregir el error en el sitio y la otra solicitar la retransmisión del bloque. Esta situación ha producido las dos técnicas de control de error comúnmente utilizadas: la

Transcript of CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION...

Page 1: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

CAPITULO VII

TECNICAS DE CONTROL DE ERROR

7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se

producen errores prácticamente inevitables debido a la presencia de ruido y a otros factores tales como la interferencia intersímbolo, la intermodulación y los ecos. Es por ello necesario establecer maneras, si nó para evitar los errores, por lo menos para poder reconocer su presencia y si es posible corregirlos. El proceso de control de error es de gran importancia pues debido a la baja redundancia de los datos digitales, un grupo de números o símbolos alfanuméricos erróneo puede parecerse a otro significando algo muy diferente.

El concepto de redundancia lo podemos entender mejor mediante un sencillo ejemplo: el conjunto [00, 01, 10, 11] de palabras o mensajes binarios no es redundante porque todas las palabras posibles de dos dígitos binarios están contenidas en el conjunto; un error de transmisión en cualquiera de las palabras la convierte en otra palabra válida del conjunto y no habría manera de detectar el error. La redundancia es de capital importancia en el control de error pues, como lo estableció Shannon, no es posible transmitir sin error si los códigos utilizados tienen cero redundancia.

El primer método de control de error que se utilizó fue el denominado “ecoplex”. En este método el transmisor envía un carácter, el cual es recibido en el receptor y retransmitido como un eco hacia el transmisor, de aquí el nombre de ecoplex. En el transmisor se examina el carácter eco recibido para ver si difiere del carácter original; si es diferente simplemente se corrige el error y se transmite de nuevo. Como un error de transmisión puede ocurrir en cualquiera dirección, es posible que un carácter erróneo en una dirección se convierta en el carácter correcto al regresar como eco y viceversa. Este método fue muy popular en los sistemas de teletipo, aunque todavía se utiliza en algunos sistemas de transmisión asincrónica.

En los sistemas de comunicación actuales el control de error se efectúa mediante la aplicación de códigos especiales que agregan redundancia; estos códigos son de la clase de “códigos de canal” para diferenciarlos de los códigos de línea, vistos en el Capítulo . Esta redundancia agregada permite detectar y/o corregir los errores ocurridos durante la transmisión de los bloques de datos. En este capítulo vamos a describir en forma algorítmica algunos de los códigos más utilizados para la detección y/o corrección de errores. La teoría de los códigos es una materia muy compleja y altamente matemática y un estudio más detallado de estos códigos está fuera de los alcances de este libro.

7.2. DETECCION Y CORRECCION DE ERROR Cuando se recibe un bloque de dígitos binarios es necesario asegurarse de que no

contiene errores de transmisión. Si se detecta que el bloque está en error, se tiene dos opciones: una es corregir el error en el sitio y la otra solicitar la retransmisión del bloque. Esta situación ha producido las dos técnicas de control de error comúnmente utilizadas: la

Page 2: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

422

“Corrección Directa de Error (Forward Error Correction, FEC)” y la “Solicitud de Repetición Automática (Automatic Repeat Request, ARQ)”. En la técnica FEC se utilizan códigos para detectar y corregir los errores en el receptor; mientras que en la técnica ARQ los códigos solamente detectan la presencia de errores en los datos recibidos y se solicita en alguna forma la repetición de los bloques que vienen en error. La técnica ARQ es la que se utiliza comúnmente en los protocolos de comunicación, vistos en los Capítulos IV y V.

Cualquiera que sea la estrategia de control de error, FEC o ARQ, la secuencia transmitida debe ser codificada, es decir, se le debe agregar una cierta redundancia. Esta codificación se efectúa en los CODEC y se localiza en la forma mostrada en la Fig. 7.1.

El diseñador de sistemas de control de error se enfrenta entonces a dos problemas fundamentales:

(a) Cómo sintetizar un código con la redundancia deseada o las características FEC o ARQ requeridas y, por supuesto, cómo diseñar e instrumentar el codificador y el descodificador (el CODEC) en una forma eficiente y sencilla.

(b) Cómo hacer que el código total (incluidos los dígitos redundantes) sea lo más eficiente posible, es decir, que la redundancia agregada sea mínima y máximo el rendimiento.

7.2.1. Rendimiento y Redundancia de un Código La inclusión de redundancia en la transmisión de datos tiene como consecuencia un

aumento en la velocidad de modulación de las secuencias transmitidas, lo cual se traduce en un aumento del ancho de banda requerido. Se puede definir entonces dos parámetros de gran interés en la codificación: el rendimiento E del código, y la redundancia R. En efecto:

100r transmitide posiblen informació Máxima

da transmitirealmenten InformacióE%Código del oRendimient == (7.1)

y la Redundancia, R% = [1- E]100 (7.2)

Por ejemplo, para el código [00, 01, 10, 11] se tiene:

%100100bits 2bits 2%E == y R% = 1 – 1 = 0%

En este código es fácil observar que el conjunto de mensajes o palabras no tiene redundancia; esto quiere decir que cualquier error en un dígito convierte la palabra en otra palabra válida pero diferente. En este caso no hay manera de detectar, y mucho menos corregir, cualquier error ocurrido en la transmisión. Comparemos esta situación con la transmisión del idioma español que es altamente redundante; es evidente que al recibirse, por ejemplo, la palabra “veloicdad”, se puede detectar que hubo una permutación entre la

FUENTE CODEC Tx/Rx CANAL Tx/Rx CODEC DESTINO

Fig. 7.1. Control de Error (FEC o ARQ).

Page 3: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

423

“i” y la “c”, pues la palabra tal como está escrita no existe en español. Por otro lado, un conjunto de mensajes puede ser parcialmente redundante, pero con una estructura que lo hace ineficiente en cuanto a la protección contra errores. Por ejemplo, en el caso de los números telefónicos se puede decir que son parcialmente redundantes, pues no todas las combinaciones de números son utilizadas o que en algunos casos el orden de los dígitos pudiera tener algún significado. Este tipo de secuencias no es apropiado para ser protegido eficientemente contra errores de transmisión.

Si mediante alguna forma controlada se le agrega dígitos de redundancia a una secuencia que necesita protección, la información adicional proporcionada por esos dígitos se puede utilizar para detectar y/o para corregir errores. Por ejemplo, en el código [00, 01, 10, 11] se le agrega a cada palabra un dígito extra de acuerdo con las siguientes condiciones: un CERO si el número de UNOS en la palabra original es par o ausencia de UNOS, o un UNO si el número de UNOS en la palabra original es impar. Esta es la denominada “paridad par”. El dígito extra se denomina “dígito de paridad” y el número de UNOS de la palabra resultante es el “peso” o “ponderación” del código. En la Fig. 7.2 se muestra este proceso.

En general, se dice que hay “paridad par” cuando la ponderación (número de UNOS) de la palabra codificada es cero o par. Si la ponderación es impar, se tiene la “paridad impar”.

El código tiene ahora la forma [000, 011, 101, 110] y se puede detectar un simple error en cualquiera de las cuatro palabras del código. En efecto, supóngase que se transmitió la palabra 101 y que debido a las condiciones de transmisión se recibió la palabra 111. En el receptor se recalcula el dígito redundante con base en los dos primeros obteniéndose un CERO, pero esto está en conflicto con el dígito redundante recibido que es un UNO, de modo que el receptor deduce que hay un error presente, aunque no sabe si lo que se transmitió fue 101 ó 011. De todas maneras, se ha detectado la presencia de un error que se puede corregir solicitando la repetición o tomando alguna acción predeterminada.

♣ Ejemplo 7.1

En las siguientes secuencias codificadas el dígito de paridad está en negrita. Diga qué tipo de paridad (Par o Impar) es:

100101101, 010111001010, 101001110111001001101, 0111100101000110100101000

0 0 00 1 11 0 11 1 0

Dígitos Redundantes o de VerificaciónDígitos de Información

Código Resultante [000, 011, 101, 110]

Cuatro palabras codificadas con paridad par

Fig. 7.2. Mecanismo de Codificación con Paridad Par

Page 4: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

424

Solución: Recordemos la Regla de Paridad: “Si la Ponderación (número de UNOS en la palabra codificada) es cero o par, se tiene la Paridad Par. Si la ponderación es impar, se tiene la Paridad Impar”.

Primera secuencia 5 UNOS paridad impar

Segunda secuencia 6 UNOS paridad par

Tercera secuencia 12 UNOS paridad par

Cuarta secuencia 11 UNOS paridad impar ♣

La verificación efectuada por el receptor en el código de la Fig. 7.2 se denomina “prueba de paridad (parity check)” y ella permite detectar errores sencillos o triples (error también en el dígito redundante), pero no errores dobles (por ejemplo, enviado 101, recibido 011). Nótese que esta prueba de paridad no permite la corrección ni de un simple error, pues no hay información suficiente en la redundancia agregada que permita hacerlo. El precio que se paga al agregar redundancia es una disminución del rendimiento de transmisión y una exigencia mayor sobre el ancho de banda del sistema, pues si la velocidad de información se mantiene constante, hay que aumentar la velocidad de modulación. Para el caso de la Fig. 7.2, se puede ver que el rendimiento y la redundancia son E% = (2/3)100 = 66,6% y R% = 33,3%; sin embargo, el ancho de banda requerido es 1,5 veces el ancho de banda original.

El proceso de agregar redundancia se denomina “codificación” y el de deducir la presencia o ausencia de errores, “descodificación”. Hemos utilizado estos términos pues son la traducción literal de las correspondientes inglesas (“encoding” y “decoding”), pero debe tenerse en cuenta que la palabra binaria ella misma es producida por otro proceso de codificación previo.

Los códigos de detección solamente (ARQ) o de detección y corrección de error (FEC) se denominan, en general, “Códigos de Bloque”. La redundancia se agrega a cada “palabra de datos” (o “palabra mensaje”) y la expresión total [datos + redundancia] se denomina “palabra código” o “palabra codificada”. El número de dígitos en cada palabra código es la “longitud de bloque”, y habrá tantas palabras código como palabras mensaje o palabras de datos. Si la palabra mensaje tiene m dígitos y la redundancia agregada es de k dígitos, la longitud de bloque de la palabra código será de )km(n += dígitos.

Sería muy interesante poder calcular la probabilidad de error en un bloque de datos en un enlace dado, pero desafortunadamente esto es muy difícil. En primer lugar, porque los errores en los enlaces tienden a ser dependientes y ocurren en ráfagas; no hay modelos matemáticos apropiados para determinar la longitud o la intensidad de estas ráfagas, las cuales varían ampliamente dentro de un mismo enlace. En segundo lugar, porque para cualquier código razonable la frecuencia de errores es muy pequeña y muy difícil de medir experimentalmente debido a sus características aleatorias. Como resultado de estas dificultades, la efectividad de un código FEC o ARQ se caracteriza mediante tres parámetros: (1) la distancia mínima del código, (2) la capacidad de detección de ráfagas, y

Page 5: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

425

(3) la probabilidad de que una secuencia aleatoria de datos sea aceptada como libre de errores. La distancia mínima de un código se define como el mínimo número de errores necesarios para convertir una palabra código en otra. La longitud de una ráfaga de errores en un bloque es el número de dígitos desde el primer dígito en error hasta el último, ambos inclusive. La capacidad de detección de ráfagas de un código se define como el entero B más grande tal que el código pueda detectar todas las ráfagas de longitud ≤ B. Todos estos parámetros se pueden calcular, pero eso está fuera de los propósitos de este libro.

7.3. ESQUEMAS DE DETECCION Y/O CORRECCION DE ERROR La necesidad de saber si los datos recibidos están o nó correctos impulsó el diseño

de numerosos esquemas o códigos para la detección y/o corrección de errores. A continuación vamos a describir algunos de los esquemas más conocidos utilizados en las telecomunicaciones.

7.3.1. Repetición La repetición es la forma más simple de detección de error. La redundancia consiste

en transmitir cada dígito de información dos veces y las dos versiones se comparan en el receptor. En esta forma se puede detectar errores en alguno de los dígitos. Los dígitos de información se pueden repetir también dos o más veces, y en el receptor se hace una prueba de mayoría (O-exclusivo o módulo 2) para establecer el valor correcto del dígito de información si por lo menos uno de los ellos llegó en error. En general, m transmisiones del

mismo dígito permite detectar (m – 1) errores y corregir

21ment errores. Sin embargo,

el precio a pagar en términos del rendimiento es alto. En efecto,

para m = 2 → E = 1/2

para m = 3 → E = 1/3

para m transmisiones → E = 1/m

pero la técnica de detección y corrección es sumamente sencilla aunque lenta.

7.3.2. Códigos de Ponderación Constante

Los códigos de ponderación constante son códigos de bloque con N palabras código que consisten en todas las secuencias binarias posibles de longitud n que contienen m UNOS. Por ejemplo, sea el código siguiente donde:

n = 4 ; m = 2 ; N = 6 1 1 0 0 1 0 1 0 Secuencias posibles: 1 0 0 1 0 1 0 1 0 0 1 1 0 1 1 0

N es el número de palabras código y viene dado por

Page 6: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

426

)!mn(!m!nN−

= (7.3)

Las N secuencias particulares se obtienen desarrollando las 2n secuencias binarias tomándose aquellas que contienen m UNOS.

Con este tipo de código se puede detectar errores simples, y errores dobles si los errores son ambos en los UNOS o ambos en los CEROS. Un esquema frecuentemente utilizado es aquel para el cual m = 3, n = 7 y N = 32, aplicado en la telegrafía.

Estos códigos se conocen también con las denominaciones “código m-de-n” y “código de relación fija o constante”. Son de fácil instrumentación, pero su rendimiento es relativamente bajo.

♣ Ejemplo 7.2

En el Código de Ponderación Constante, escriba todas las secuencias de longitud 5 que contienen tres UNOS.

Solución:

n = 5; m = 3. Se desarrollan todas las 2n secuencias y de allí se extraen aquellas que contienen tres UNOS; son 25 = 32 secuencias:

00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111

Las secuencias que contienen tres UNOS están remarcadas en negrita; son 10. Por lo tanto,

Número de palabras codificadas N = 10.

Verificación, expresión (7.3): 102132154321N =⋅⋅⋅⋅⋅⋅⋅⋅

=

7.3.3. Suma de Verificación (Checksum) En este método la palabra mensaje forma un bloque sobre el cual se efectúa una

cierta operación. El resultado de esta operación se agrega como redundancia formando la palabra código la cual se transmite. En el destino se repite la misma operación sobre la palabra mensaje y el resultado de esa operación se compara con la redundancia transmitida. Si los dos resultados son iguales, se estima que el bloque de datos fue recibido correctamente, y se reconoce la recepción correcta del mensaje; pero si los resultados no son iguales se considera que el mensaje está en error y se pide la retransmisión del mismo. Este es el procedimiento más utilizado en los protocolos de comunicación vistos.

Uno de los esquemas más conocido es la "suma de verificación (checksum)" que se utiliza en el protocolo XMODEM. La operación consiste en sumar los valores de los caracteres contenidos en el campo Información y dividir la suma por 255. El cociente se

Page 7: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

427

descarta y lo que se transmite como BCC es el resto de la división. Matemáticamente, el BCC se puede generalizar mediante la expresión

1-2N

ASCII caracteres los de ValorstoReBCC

N

1∑

= (7.4)

donde N es el número de caracteres de la palabra mensaje; el número n de dígitos del BCC es igual a 1)N(logn 2 += . En el caso del protocolo XMODEM, N = 128 y n = 8 dígitos; el BCC irá en un octeto.

♣ Ejemplo 7.3

Durante un intercambio de información en XMODEM la suma de los valores de los 128 caracteres contenidos en el campo Información es igual a 10850. Determine el BCC correspondiente.

Solución:

En el CODEC se efectúa la siguiente operación (que para más claridad la efectuamos en decimal, aunque en la práctica las operaciones son binarias o hexadecimales):

El BCC que se le agrega a la trama es entonces 00110001. Nótese que el LSB se envía de primero. ♣

7.3.4. Código de Prueba de Paridad Sencilla Este es el tipo de código detector de error que introducimos someramente en la

Sección 7.1. Un código de prueba de paridad sencilla (“simple redundancy check, SRC”) de longitud de bloque n se puede establecer efectuando una prueba de paridad sobre los m dígitos de información de la palabra de datos o palabra mensaje.

El dígito de paridad es la suma módulo 2 de los valores de los m dígitos de la palabra mensaje, es decir, sea c el dígito de paridad, entonces,

∑=

=⊕⊕⊕⊕=m

1jjm321 2 módulo dd....dddc ; n = m + 1 (7.5)

donde ⊕ ≡ suma módulo 2 [recuérdese que BABABA +=⊕ ]; d1 es el dígito de menor peso (LSB) y m el número de dígitos de información. El dígito de paridad c se agrega a la

10850 255 0650 42 El cociente no se utiliza 140 => Resto => BCC = 10001100

LSB MSB

Page 8: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

428

palabra mensaje y se transmite de último, siendo n = m + 1 la longitud de la palabra código; la paridad es par. La palabra transmitida tiene entonces la forma [ cdddd m321 ⋅⋅⋅ ].

Con este código se puede detectar errores sencillos, triples, en general, un número impar de errores en una palabra código; sin embargo, si el número de errores es par, los errores no pueden ser detectados. En consecuencia, se puede decir que este código detectará solamente el 50% de los errores de transmisión. El rendimiento es bueno: E = m/n y

n/1R = ; si m >> 1, el aumento en el ancho de banda es despreciable y el rendimiento es casi del 100%.

7.3.5. Código de Prueba de Paridad Vertical y Horizontal La prueba de paridad vertical (VRC) es un esquema de detección de error similar a

la prueba de paridad sencilla aplicada a cada uno de los caracteres de un bloque de datos. Por su parte, la prueba de paridad horizontal o longitudinal (HRC o LRC) se utiliza para determinar si un error de transmisión ha ocurrido en un mensaje compuesto por caracteres. La secuencia de dígitos en el LRC se calcula en el transmisor y se transmite como el último carácter del mensaje; es el carácter BCC visto en el Capítulo III . En el receptor el BCC se recalcula y el BCC recalculado se compara con el BCC transmitido. Si son iguales, se supone que no hubo errores en la transmisión; si son diferentes, hubo error en la transmisión y se puede solicitar la retransmisión del bloque completo. En la Fig. 7.3 se muestra el mecanismo de generación de las paridades VRC y LRC, en ASCII. El BCC contiene 8 dígitos.

Sentido de Transmisión LRC (par)→

Caracteres …… E L [ ] B I T …… BCC

b0 1 0 0 0 1 0 → 0

b1 0 0 0 1 0 0 → 1

b2 1 1 0 0 0 1 → 1

b3 0 1 0 0 1 0 → 0

b4 0 0 0 0 0 1 → 1

b5 0 0 1 0 0 0 → 1

b6 1 1 0 1 1 1 → 1

VRC↓ Paridad (impar) 0 0 0 1 0 0 → 1

Fig. 7.3. Mecanismo de paridad vertical impar y paridad horizontal par

7.3.6. Códigos Matriciales (Array Codes)

Los códigos matriciales son códigos de detección y corrección de error , y en su forma más sencilla, son una generalización del código SRC pero extendido a dos dimensiones. En efecto, a la prueba de paridad horizontal se le agrega una prueba de

Page 9: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

429

paridad vertical y una prueba de prueba, lo que permite no sólo detectar sino corregir un error en el bloque transmitido. En estos códigos se utiliza la paridad par. En la Fig. 7.4 se muestra la Matriz Principal, la Submatriz y el mecanismo de codificación.

La palabra dato se distribuye en la Submatriz de F filas y C columnas.

En los códigos matriciales la matriz principal generalmente es rectangular y C > F; la matriz será cuadrada cuando C = F. El rendimiento y la redundancia serán

)1F)(1C(

1FCE-1R ; )1F)(1C(

FCE++++

==++

⋅= (7.6)

Sea m el número de dígitos de información y k el de redundancia. Se tiene entonces,

mkRy

nmE 1;FCk ;FCm );1F)(1C(kmn ==++=⋅=++=+=

Para la matriz de la Fig. 7.4(b),

m = 6; k = 6; n = m + k = 12; C = 3; F = 2; E =1/2 ; R = 1/2.

La palabra código de longitud n se puede transmitir en un formato apropiado, por ejemplo, serialmente por filas o columnas, o paralelamente en (F+1) secuencias paralelas. Cuando las pruebas de paridad vertical y horizontal fallan, es decir, que se detecta un error en un dígito, este error puede ser corregido de inmediato pues su emplazamiento se conoce con exactitud, como se puede apreciar en la Fig. 7.5.

Prueba Horizontal

Prueba de Prueba

Prueba Vertical

Ffilas

C columnas

F x C dígitos de Información

EJEMPLO:

Palabra Dato: 1 1 1 1 0 0 1 1 1 11 1

1 10 0

0 0Palabra Codificada:1 1 1 1 1 0 0 1 0 1 1 0

Paridad Par

(a) Matriz de (F +1)x (C +1) dígitos (b) Matriz de Codificación y Secuencia Transmitida

Fig. 7.4. Generación del Código Matricial

Page 10: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

430

Los códigos matriciales son muy eficientes en lo que se refiere a la corrección de errores, particularmente si la matriz es cuadrada. Estos códigos pueden extenderse también a más de dos dimensiones.

♣ Ejemplo 7.4

Código Matricial. Se recibió la siguiente secuencia codificada

011011101100111001011011011101

Diga cuál fue la palabra mensaje transmitida y el rendimiento de transmisión.

Solución:

011011101100111001011011011101

Son 30 dígitos = 5 filas x 6 columnas

Los 30 dígitos se colocan en una matriz de 5 filas por 6 columnas y se verifica la paridad tanto horizontal como verticalmente. Puede observarse que la paridad no se verifica en el dígito B3 que debe entonces ser CERO. Por lo tanto, la palabra mensaje transmitida fue

0110110010111000110101110

0 1 1 0 1 1

1 0 1 1 0 0

1 1 1 0 0 1

0 1 1 0 1 1

0 1 1 1 0 1

1 2 3 4 5 6

A

B

C

D

E

1 0 1 0

0

1

Dígito en error

1 0 1 0 0 1 0 1 1 1 1 1

0 1 1

1 1 1

1 1 1 0

0 01 1

1 1 1 1

1 1 1 0 0 1 0 1 1 1 1 1(a) Bloque enviado en Serie por Filas

(b) Bloque Recibido. Error en un dígito de información

1 1 1

1

0

10 0

1 1 1 1

Dígito en error Dígito en error1 1

1 1

1 1 1

0 0

0 0

0

1 0 1 1 0 1 0 1 1 1 1 1 1 0 1 0 0 1 0 1 1 1 1 0(c) Bloque Recibido. Error en un dígito de prueba

(d) Bloque Recibido. Error en el dígito de prueba de prueba

Fig. 7. 5. Mecanismo de Corrección de Error.

Page 11: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

431

En cuanto al rendimiento, %6,661006x55x4%E ==

♣ 7.3.7. Código de Hamming

Dentro de la clase de códigos detectores/correctores de error el código Hamming es un código óptimo aún más eficiente que los códigos matriciales. La teoría de este código es muy compleja pero vamos a explicar su aplicación en una forma algorítmica. Los pasos de aplicación del algoritmo de Hamming son los siguientes (ver la TABLA No. 1):

Algoritmo de Codificación Hamming

(1) Considere que la palabra dato tiene la forma

donde m es el número de dígitos de la palabra dato.

(2) Con este valor de m seleccione la longitud n del bloque en la columna 1 de la Tabla No.1 o en la Tabla No. 2. Por ejemplo, para m = 8 → n = 12.

(3) En la columna 2, Tabla No. 1, identifique las posiciones que son potencias enteras de 2i (i = 0, 1, 2,….), es decir, 20 = 1 → posición 1; 21 = 2 → posición 2; 422 = → posición 4; etc.

TABLA No. 1. CODIFICACION DE HAMMING ← 7 6 5 4 3 2 1 c4 c3 c2 c1 ck/dm 2i n 0 0 0 1 c1 20 1 0 0 1 0 c2 21 2 0 0 1 1 d1 - 3 0 1 0 0 c3 22 4 0 1 0 1 d2 - 5 0 1 1 0 d3 - 6 0 1 1 1 d4 - 7 1 0 0 0 c4 23 8 1 0 0 1 d5 - 9 1 0 1 0 d6 - 10 1 0 1 1 d7 - 11 1 1 0 0 d8 - 12 1 1 0 1 d9 - 13 1 1 1 0 d10 - 14 1 1 1 1 d11 - 15

d1 d2 d3 d4 dmLSB MSB

Page 12: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

432

(4) En la columna 3 coloque los dígitos de paridad c1, c2, c3, …… en las posiciones identificadas en (3), y en el resto de las posiciones coloque los dígitos de información d1, d2, d3,…… La columna 3 constituye la “palabra codificada clave”, la cual tendrá la forma (remarcada en la Tabla No.1)

Para facilitar la descodificación, se envía primero los m dígitos de información seguidos de los k dígitos de paridad. La palabra codificada transmitida tendrá entonces la forma

(5) En las columnas 4 en adelante escriba en binario los números del 1 al n, e identifique la columna 4 con c1, la 5 con c2 y así sucesivamente, como se muestra en la Tabla No. 1.

(6) La ecuación para cada dígito de paridad ci, se obtiene directamente de las columnas 4 en adelante. Por ejemplo, se suman en módulo 2 todos los dígitos de información dj cuya expresión en la columna 4 contiene un UNO. El cálculo de los Dígitos de Paridad para n ≤ 15, m ≤ 11 y k ≤ 4 nos da:

c1 = d1 ⊕ d2 ⊕ d4 ⊕ d5 ⊕ d7 ⊕ d9 ⊕ d11

c2 = d1 ⊕ d3 ⊕ d4 ⊕ d6 ⊕ d7 ⊕ d10 ⊕ d11

c3 = d2 ⊕ d3 ⊕ d4 ⊕ d8 ⊕ d9 ⊕ d10 ⊕ d11 (7.7)

c4 = d5 ⊕ d6 ⊕ d7 ⊕ d8 ⊕ d9 ⊕ d10 ⊕ d11

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Si )1n(logk también ;1km2 entonces 2)1n(2 2k1kk +≥++≥>+≥ − .

La Tabla se puede extender para cualquier valor de n.

Estas relaciones nos permiten determinar m, k ó n cuando se conocen o establecen las otras dos. El rendimiento y la redundancia son:

100nk100

kmkR% ;100

nm100

kmm%E =

+==

+= (7.8)

DATOS BCC

LSB MSB

Sentido del Flujo de Datos

d1 d2 d3 dm c1 c2 ck

c1 c2 d1 c3 d2 d3 d4 c4 d5

Sentido del Flujo de Datos m dígitos de informaciónk dígitos de paridadn = m + k

Page 13: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

433

En la Tabla 2 se muestra la relación entre estas variables.

TABLA No. 2. Relación entre m, k, n, E y R m k n E% R% 3 3 6 50 50 4 3 7 57 43 5 4 9 56 44 6 4 10 60 40 7 4 11 64 36 8 4 12 67 33 9 4 13 69 31

10 4 14 71 29 11 4 15 73 27

Algoritmo de Descodificación Hamming

Para la descodificación y corrección de error se siguen los siguientes pasos:

(1) En el receptor se recalculan los dígitos de paridad a partir de los dígitos de información de la palabra codificada recibida.

(2) Los dígitos de paridad recalculados ,ic y los recibidos ci se suman dígito a dígito

en módulo 2 obteniéndose una expresión denominada “síndrome”, es decir,

∑=

⊕==k

1i

,ii ccSSíndrome (7.9)

(3) Si el síndrome S es una k-tupla formada por puros CEROS, entonces se supone que no hubo error en la transmisión.

(4) Si el síndrome S es distinto de CERO (contiene por lo menos un UNO), entonces se lee en sentido inverso (el dígito menos significativo pasa a ser el más significativo y así sucesivamente). El valor del inverso del síndrome indica la posición en la Tabla No. 1, columna 1, de un error sencillo en la palabra codificada clave de la columna 3, el cual se puede corregir.

♣ Ejemplo 7.5

Supongamos que la palabra codificada recibida fue la de la figura

Recalculemos la paridad:

0011c

;0011c ;0011c,3

,2

,1

=⊕⊕=

=⊕⊕==⊕⊕=

Cálculo del síndrome: Dígitos de paridad recalculados '

ic 0 0 0 Dígitos de paridad recibidos ci 0 1 1

Síndrome S = 0 1 1 ≠ 0

DATOS BCC

d1 d2 d3 d4 c1 c2 c3

1 1 1 0 0 1 1

Page 14: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

434

Puesto que el síndrome es distinto de cero, hubo error en la transmisión.

Corrección del error:

Inversión del síndrome c3 c2 c1

Síndrome invertido 1 1 0 ≡ 6

Por consiguiente, en la Tabla No. 1, posición 6, columna 1, hay un error correspondiente al dígito d3 de la columna 3, el cual se puede corregir cambiando el UNO por un CERO. La palabra codificada correcta transmitida fue entonces

Se han desarrollado otros códigos FEC y ARQ, entre los cuales se tiene los códigos cíclicos y los códigos convolucionales. Entre los códigos cíclicos el más conocido es el código CRC que describiremos a continuación.

7.3.8. Códigos de Redundancia Cíclica (CRC) Uno de los esquemas de detección de error más eficiente en cuanto a su

instrumentación (circuitería) es el denominado Código de Redundancia Cíclica (Cyclic Redundancy Code, CRC), que es uno de la clase de los códigos cíclicos.

La detección de errores se efectúa mediante un registro de desplazamiento de varias secciones que alimentan compuertas O-Exc, como se muestra en la Fig. 7.6.

En la Fig. 7.6(a) se muestra la configuración normalizada por el UIT-T en su Recomendación V.41, aunque hay dos tipos más de configuración, llamadas CRC-16 y CRC-12, que veremos más adelante. Nótese que los dígitos LSB y MSB se refieren al registro: el lado LSB corresponde al término X16

y se envía de primero, es decir, es el primer dígito del BCC.

d1 d2 d3 d4 c1 c2 c3

1 1 0 0 0 1 1

Entradade Datos

LSB MSB

(a)Entrada de un "1"

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1

(b)

1 1 0 100

Secuencia de Entrada (Datos)

Reloj de Sincronización (c)

Fig. 7.6. Registro CRC UIT-T V.41. Utilizado en los Protocolos SDLC y HDLC

X16 12 5 0X X X

Page 15: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

435

Previo a la codificación, el registro se inicializa a cero. A medida que cada dígito de datos se presenta en la primera compuerta O-Exc, se va desplazando el contenido del registro y se efectúan las operaciones correspondientes. En la Fig. 7.6(b) se muestra el contenido del registro cuando el primer dígito fue un UNO. Este dígito UNO se desplaza a cada impulso del reloj de sincronización y eventualmente llegará a las otras compuertas afectando el contenido del registro. La consecuencia general que debe tenerse en cuenta es que el efecto de un dígito cualquiera se refleja en las diferentes células del registro durante un tiempo bastante grande después que el mismo dígito fue transmitido.

Al finalizar la codificación de un mensaje, la estación transmisora envía el mensaje propiamente más el contenido del registro, el cual es el BCC correspondiente, formando el mensaje codificado.

En cuanto al receptor, la configuración del registro es idéntica a la del transmisor: el registro se inicializa a cero y los dígitos recibidos se aplican a su entrada. Finalizada la recepción del mensaje codificado, si el mensaje recibido es igual al mensaje transmitido, el contenido del registro será cero, es decir, el registro contendrá sólo CEROS. Esta situación se verifica no importa la forma de conexión de las compuertas O-Exc, de ahí que existan varios tipos de código CRC. Una excepción es en los protocolos SDLC y HDLC en los cuales el registro se inicializa con un valor predeterminado y al final de la codificación el contenido es distinto de cero 1) 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0( . En los protocolos SDLC y HDLC a la secuencia BCC del registro se la denomina FCS (frame check sequence).

La característica más importante del CRC es que debido a su forma realimentada el estado exacto del registro depende en gran parte de su historia pasada. Como consecuencia, es muy poco probable que una ráfaga de errores pueda producir un cálculo en el CRC que sea igual a la secuencia de datos tal como fue transmitida antes de la ocurrencia de los errores.

La teoría matemática que justifica la utilización de este código es sumamente compleja y no se dará detalles de la misma. Sin embargo, vamos a explicar su aplicación práctica en una forma algorítmica y mediante ejemplos.

Un mensaje codificado en forma cíclica consiste en una secuencia específica de datos y un BCC. Sea n igual al número total de dígitos del mensaje codificado o palabra código, y m el número de dígitos de información; entonces, el BCC tendrá (n – m) dígitos.

El mensaje codificado se deduce de dos polinomios que son representaciones algebraicas de dos secuencias binarias: el polinomio generador PG(X) de k dígitos y el polinomio mensaje M(X) de m dígitos. El polinomio generador identifica el tipo de código (CRC UIT-T, CRC-12, CRC-16, etc.), y el polinomio mensaje es simplemente la secuencia de dígitos de información. Estos polinomios son expresiones algebraicas de la forma

01232p1pp XXXX...XXX +++++++ −−

Para su representación en forma binaria, se coloca un “1” en las posiciones donde X ≠ 0, y un “0” cuando X = 0. La convención establecida es la de colocar el término X0

(que es igual a 1) a la derecha. Por ejemplo, una expresión algebraica o polinomio de la forma X5 + X3 + X + 1 se representará en binario en la forma 1 0 1 0 1 1. El grado de este

Page 16: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

436

polinomio es 5, el término Xp con p = 5 representa el LSB y la secuencia binaria correspondiente tendrá p + 1 = 6 dígitos. El LSB siempre se coloca a la izquierda.

El BCC está representado por un polinomio B(X) y el polinomio que representa la señal transmitida tendrá la forma T(X) = M’(X) + B(X) = Xn-mM(X) + B(X) de n dígitos. El polinomio B(X) se elige de tal manera que el polinomio T(X) sea exactamente divisible por el polinomio generador PG(X). En otras palabras, B(X) es el resto que resulta cuando el polinomio M’(X) se divide por el polinomio generador PG(X), es decir,

)X(B)X(PG)X(M de exacto Cociente

)X(PG)X('M

+

= (7.10 )

También, T(X) = M’(X) + B(X), donde M’(X) = Xn-mM(X) (7.11)

Las operaciones expresadas en (7.10) y (7.11) se pueden realizar en binario mediante el algoritmo siguiente:

1. M’(X) se obtiene multiplicando el polinomio mensaje M(X) por Xn-m donde )mn( − es el número de dígitos del BCC. La multiplicación de Xn-m por M(X)

en binario equivale a agregar (n – m) ceros a la forma binaria de M(X).

2. El producto resultante Xn-m M(X) se divide por el polinomio generador PG(X) y se calcula el resto B(X), es decir, se efectúa una división módulo 2. Entonces,

)X(B)X(PG)X(M de exacto Cociente

)X(PG)X(MX mn

+

=

La forma binaria de B(X) es el BCC.

3. En binario, el polinomio T(X) tendrá la forma siguiente:

T(X) = Xn-m M(X) + B(X) = M’(X) + B(X)

T(X) es el mensaje codificado que se transmite y que tendrá el siguiente formato Nótese que en la práctica m >> (n – m); por ejemplo, en transmision X.25 el

valor de m puede llegar a 32808, mientras que (n – m) = 16.

4. En el receptor el mensaje codificado T(X) recibido se divide por el mismo polinomio generador PG(X). Si no hay errores en la transmisión, la división será exacta y el resto B(X) será cero. Si el resto B(X) es distinto de cero, hubo errores en la transmisión y se demandará la repetición del bloque correspondiente.

Las operaciones 1 a 4 son efectuadas por el registro de la Fig. 7.6.

T(X) DATOS m dígitos BCC (n - m) dígitos

LSB MSB

n dígitos

LSB MSB Dirección del Flujo de Datos

Page 17: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

437

La división (paso 2) se efectúa en binario sin “excesos” (carriers) ni “defectos” (borrows). En este caso, el resto B(X) siempre tendrá un dígito menos que el polinomio generador PG(X). Por lo tanto, se verifica que n – m = k - 1, de donde n = m + k - 1. El número de dígitos de B(X) es k – 1 y su grado k - 2. En la práctica m >> k, lo que implica que el rendimiento de este código es muy bueno.

♣ Ejemplo de aplicación del CRC UIT-T Rec. V.41, Fig. 7.6.

Sea M(X) = X7 + X5 + X4 +X + 1 => 1 0 1 1 0 0 1 1 ; m = 8 dígitos

X7 corresponde al LSB de M(X).

PG(X) = X16 + X12 + X5 + 1 => 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1; k = 17 dígitos

X16 corresponde al LSB de PG(X).

BCC → n – m = k - 1 = 16 dígitos y n = m + k - 1 = 24 dígitos

1. Producto Xn-m M(X) = X16(X7 + X5 + X4 + X + 1)

= X23 + X21 + X20 + X17 + X16

Xn-m M(X) => 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 → 24 dígitos

2. División del producto Xn-m M(X) por PG(X):

101100110000000000000000 : 10001000000100001 10001000000100001 0011101100010000100 El Cociente no se utiliza 10001000000100001 011001000101001010 10001000000100001 010000001011010110 10001000000100001 00001001011110111000 => B(X) => 1001011110111000 → 16 dígitos

2. El resto B(X) se suma al producto Xn-m m(X) para obtener T(X):

Xn-m M(X) → 101100110000000000000000 + B(X) → 1001011110111000 T(X) → 101100111001011110111000 => 24 dígitos

T(X) se transmite; es un bloque de 24 dígitos. Nótese que T(X) es ahora divisible (en módulo 2) por PG(x).

Page 18: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

438

3. En el receptor se divide T(X) por PG(X):

101100111001011110111000 : 10001000000100001 10001000000100001 0011101110000111001 10001000000100001 El Cociente no se utiliza 011001100000110001 10001000000100001 010001000000100001 10001000000100001 00000000000000000 => Resto R(X) = 0

No hubo error en la transmisión. Si hubiera habido un error en el T(X) recibido, el Resto hubiera sido distinto de cero.

♣ En general, en el transmisor el BCC se calcula y se acumula en un registro de desplazamiento y se agrega al mensaje formando la palabra codificada a transmitir. La configuración del registro depende del código CRC que se quiere instrumentar. El número de etapas del registro es igual al grado k del polinomio generador y el número de compuertas O-Exc es también una función del polinomio. En la Fig. 7.6 se mostró el registro utilizado para el código CRC UIT–T cuyo polinomio es PG(X) = X16 + X12 + X5 + 1. Cuando opera con caracteres de 8 dígitos (un octeto) el BCC tendrá 2 octetos, como se pudo apreciar en el ejemplo de aplicación. En la Fig. 7.7 se muestra los códigos CRC-12 y CRC-16; los polinomios correspondientes son:

CRC-12: PG(X) = X12 + X11 + X3 + X2 + X + 1

CRC-16: PG(X) = X16 + X15 + X2 + 1

0 1 2 3 4 5 6 7 8 9 10 1112 11 3 2X X X X X 1

MSB LSB

Entrada de Datos

(a) Código CRC-12. Utilizado en el Transcódigo de 6 dígitos

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 MSB LSB

Entradade Datos

16 15 2X X X1

(b) Código CRC-16. Utilizado en los Protocolos BSC y DDCMP

Fig. 7.7. Codificadores CRC de aplicación práctica.

Page 19: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

439

El polinomio generador del CRC utilizado en las Redes Ethernet tiene la forma

PG(X) = X32 + X26 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1

mientras que en el protocolo industrial DNP 3.0 se utiliza el polinomio

PG(X) = X16 + X13 + X12 + X11 + X10 + X8 + X6 + X5 + X2 + 1

Los códigos CRC detectan todos los errores sencillos y dobles, todos los errores con un número impar de dígitos, todas las ráfagas de errores de longitud igual o menor de 16 dígitos, el 99,997% de las ráfagas de 17 dígitos y el 99,998% de todas las ráfagas iguales o superiores a 18 dígitos. Por esta razón, los códigos CRC son muy utilizados para el control de error en los sistemas de telecomunicaciones.

El rendimiento de los códigos CRC es excelente, casi del 100% puesto que m >> k. En general, la instrumentación de este código es muy sencilla, como se puede ver en las figuras 7.6 y 7.7.

Matemáticamente, los códigos CRC son códigos de bloque lineales. En la codificación lineal el grupo de m dígitos de información es aplicado al codificador, el cual responde con un bloque codificado de n dígitos que depende solamente de los m dígitos de entrada; cada bloque es procesado independientemente de los demás. Por esta razón estos códigos son llamados “códigos de bloque lineales (n, m)”, y como siempre hay redundancia agregada, siempre se verifica que n > m.

El CRC no es el único código de bloque lineal; en la práctica se encuentran también los códigos Golay y BCH (Bose-Chaudhuri-Hocquenghem) que solamente nombraremos.

Los códigos descritos hasta ahora, con la excepción del código de ponderación constante, son ejemplos de los códigos lineales cuyas palabras codificadas están formadas por los dígitos de información más los dígitos de redundancia. Los códigos de ponderación constante en general son códigos no lineales. Los códigos pueden ser no lineales ya sea porque ellos no tienen una estructura de “ información + redundancia” o porque contienen dígitos de paridad no lineales, es decir, que no son módulo 2. Los códigos lineales tienen un alto grado de complejidad matemática, pero al mismo tiempo esa estructura matemática compleja los hace relativamente simples para sintetizar, codificar y descodificar. Por otro lado, los códigos no lineales son en general difíciles de sintetizar y procesar.

Para más información sobre los códigos cíclicos y convolucionales, ver la Bibliografía y la Recomendación UIT-T V.41.

Page 20: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

440

7.4. PRINCIPIO DE LA ALEATORIZACION

7.4.1. Introducción

En los sistemas de transmisión digital se utiliza una técnica denominada “aleatorización” o “seudoaleatorización” (scrambling) que permite la regeneración de los impulsos del reloj de sincronización y por lo tanto previene la generación de errores en las secuencias recibidas. El “scrambling” es otra forma de codificación de canal.

La operación de un código no debería depender de las estadísticas de la secuencia binaria y no imponer restricciones sobre el tipo de información a transmitir; por ejemplo, no debería causar problemas de sincronización una secuencia de varios ceros seguidos. Muchos códigos funcionan de acuerdo con lo previsto por la teoría sólo cuando los UNOS y los CEROS ocurren con igual probabilidad, y cuando la ocurrencia de un CERO o un UNO cualquiera es independiente de los UNOS o CEROS anteriores o posteriores. Esta situación no siempre se da y por eso a veces es necesario utilizar técnicas que mezclan o desordenan (scramblers) los dígitos para que la secuencia parezca más aleatoria. Por supuesto, en el destino hay que “desaleatorizar” o reordenar los dígitos a su forma original para que la información no se destruya.

Un sistema de transmisión digital en principio acepta cualquiera secuencia arbitraria de dígitos y la reproduce exactamente a su salida sin más efecto en la secuencia que la introducción de un retardo fijo debido a la propagación. En la práctica, la secuencia se puede reproducir de manera inexacta, esto es, puede contener errores en la transmisión y el retardo puede variar originando una fluctuación de temporización. Si estos efectos se presentan aleatoriamente y son substancialmente independientes de la secuencia real transmitida, se dice que el sistema es independiente de las secuencias de dígitos y los errores se pueden detectar y/o corregir con los esquemas que hemos visto. Sin embargo, puede que en la práctica no suceda así y que se observe que la presencia de errores y de fluctuación depende de la configuración de los dígitos que constituyen la secuencia transmitida.

Vamos a ilustrar esta situación con un ejemplo sencillo. Supongamos que se transmite secuencias binarias NRZ. Si las secuencias contienen largas cadenas de sólo UNOS o sólo CEROS, el receptor será incapaz de regenerar los impulsos de reloj y se producirá errores en la secuencia recibida. La idea fundamental en que se basa la seudoaleatorizacion, es, pues, la de reducir la probabilidad de errores modificando la secuencia transmitida en tal forma que se reduzca la probabilidad de aparición de secuencias particulares que podrían causar dificultades, es decir, hay que hacer que la secuencia transmitida sea o parezca lo más aleatoria posible. Una ventaja adicional de la seudoaleatorización es que centra al espectro en el canal disminuyendo las componentes espectrales en los bordes de la banda que podrían producir interferencia en los canales adyacentes, y con la eliminación de componentes continuas se impide la aparición de impulsos periódicos en el espectro.

Page 21: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

441

7.4.2. Seudoaleatorizador Autosincronizante El seudoaleatorizador autosincronizante es un dispositivo comúnmente utilizado en

los Módems de las Series V y X del UIT-T. Este es un dispositivo de realimentación hacia adelante en un registro de desplazamiento de varias secciones que alimentan compuertas O-Exc, como se muestra en la Fig. 7.8(a) y (b).

Esta configuración básica es la empleada en los Módems UIT-T V.27, en los cuales, mediante ciertos mecanismos de guarda, el sistema puede evitar secuencias repetidas de 1, 2, 3, 4 y 12 dígitos. En la práctica este circuito se construye de tal manera que no permite transiciones en la salida en los instantes de reloj. El reloj actúa solamente sobre el registro.

La estructura de los aleatorizadores nos permite caracterizarlos mediante un polinomio generador, como se hizo para los códigos CRC. Por ejemplo, el aleatorizador V.27 de la Fig. 7.8 se puede caracterizar mediante el polinomio PG(X) = X7 + X6 + 1.

Podemos demostrar fácilmente que la secuencia Z(n) de salida es igual a la secuencia de entrada X(n). En efecto, sea X(n) la entrada en un intervalo n cualquiera. Como cada una de las células del registro produce retardos unitarios, entonces de la Fig. 7.8(a),

Y(n) = X(n) ⊕ [Y(n-6) ⊕ Y(n-7)] (7.12)

Donde Y(n) es la salida del aleatorizador y entrada del desaleatorizador. También, de la Fig. 7.8(b),

Z(n) = Y(n) ⊕ [Y(n-6) ⊕ Y(n-7)] (7.13)

Reemplazando (7.12 ) en (7.13),

Z(n) = X(n) ⊕ Y(n-6) ⊕ Y(n-7) ⊕ Y(n-6) ⊕ Y(n-7)

Z(n) = X(n) ⊕ [Y(n-6) ⊕ Y(n-6)] ⊕ [Y(n-7) ⊕ Y(n-7)]

Pero en la suma modulo 2 se verifica que

Y(n-6) ⊕ Y(n-6) = Y(n-7) ⊕ Y(n-7) = 0; 0 ⊕ 0 = 0 y X(n) ⊕ 0 = X(n)

Entonces, Z(n) = X(n) ⊕ 0 ⊕ 0 = X(n) ⊕ 0 = X(n)

X(n) Entrada de Datos

Datos transmitidos Datos recibidos

7 6 5 4 3 2 1 1 2 3 4 5 6 7

Salidade Datos

Z(n) Y(n) Y(n)

(a) Aleatorizador o Desordenador (b) Desaleatorizador o Reordenador

Fig. 7.8. Aleatorizador y Desaleatorizador UIT-T V.27.

Page 22: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

442

El lector puede verificar que si la secuencia de entrada al aleatorizador tiene la forma 1 1 0 0 1 1 0 1, la secuencia de salida del aleatorizador será 0 0 0 0 1 1 0 1. Si esta secuencia se aplica al desaleatorizador, a su salida se recuperará la secuencia original (La flecha indica el sentido del flujo de datos, y se supone que el registro ha sido inicializado a cero antes de la codificación).

La ventaja de este tipo de seudoaleatorización consiste en que es autosincronizante, es decir, que no necesita ningún reloj suplementario para su sincronización. El mayor inconveniente estriba en que produce una extensión o aumento de los errores. Si durante la transmisión ocurre errores en los dígitos, la salida resultante después de suprimida la seudoaleatorización contendrá errores adicionales, uno por cada derivación utilizada en el registro de desplazamiento. Supongamos que el registro tiene una longitud de X elementos y contiene Y derivaciones (incluida la derivación de entrada). El efecto de la desaleatorización será aumentar la proporción de errores en un factor aproximadamente igual a Y y extender en X dígitos la longitud de toda ráfaga de errores.

Una solución para el problema de la extensión de errores con seudoaleatorizadores autosincronizantes es su emplazamiento en la cadena de transmisión. Normalmente el aleatorizador se sitúa inmediatamente antes del enlace de transmisión con el desalea-torizador inmediatamente después del enlace. Con esta disposición los descodificadores de control de error se encuentran antes del desaleatorizador con lo que la extensión de errores causada por este último no perturba el proceso de corrección de errores. Además, si el corrector de errores es capaz de corregir la mayoría de los errores de transmisión, habrá menos errores que lleguen al desaleatorizador para que éste los extienda. En la Fig. 7. 9 se muestra esta disposición.

En conclusión, los seudoaleatorizadores autosincronizantes son eficaces para suprimir la dependencia de la secuencia, pero introducen una extensión de los errores. La consecuencia es que cualquier dispositivo de corrección de errores que se utilice de esa forma para mantener un sistema de transmisión bastante flexible, tendría que ser mucho más complicado.

El problema de extensión de errores se puede evitar utilizando un tipo distinto de seudoaleatorizador, denominado “seudoaleatorizador de reposición” en el que se genera una secuencia seudoaleatoria de longitud máxima que se suma a la secuencia transmitida. En el receptor se genera una secuencia seudoaleatoria idéntica que se resta de la secuencia transmitida. Mientras las secuencias seudoaleatorias estén en fase, las dos operaciones se anulan mutuamente y se recupera la secuencia original transmitida. En esta forma no se produce extensión de error. Para mantener los generadores de secuencias seudoaleatorias en fase, es necesario enviar información adicional de sincronización, lo que se traduce en un

ALEATO- RIZADOR

CODEC FEC

ENLACE CODEC FEC

DESALEATO- RIZADOR

Fig. 7.9. Emplazamiento de los Aleatorizadores/Desaleatorizadores.

Page 23: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

443

aumento de la velocidad de modulación y de la complejidad de los equipos para procesar la información de sincronismo. En ciertos casos se puede aprovechar señales existentes de alineación de trama para la sincronización del desaleatorizador.

Los procesos de aleatorización y desaleatorización son ampliamente utilizados en los Módems V.26, V.27, V.27 bis, V.27 ter, V.29, V.32, V.35 y V.36. En la Fig. 7.10 se muestra el circuito utilizado en el Módem V.27.

oo dígitos

6 7 9 12

Registro de Desplazamiento

0Salida

de Datos

Entrada de Datos

Aleat

Desaleat

ooo

oo

Reloj

:32 :2J

K

Q

Q _

Invierte undígito de datos

Reset

Relojo

Fig. 7.10. Aleatorizador/Desaleatorizador del Módem UIT-T V.27.

Retardo

Page 24: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

444

7.5. Resumen

Durante la transmisión de información digital a través de un sistema o canal se producen errores prácticamente inevitables debido a la presencia de ruido y a otros factores tales como la interferencia intersímbolo, la intermodulación, la fluctuación de fase, ecos, etc. Es por ello necesario establecer maneras, si nó para evitar los errores, por lo menos para poder reconocer su presencia y si es posible corregirlos.

En los sistemas de comunicación actuales el control de error se efectúa mediante la aplicación de códigos especiales que agregan redundancia. Esta redundancia agregada permite detectar y/o corregir los errores ocurridos durante la transmisión de los bloques de datos. En este capítulo vamos a describir en forma algorítmica algunos de los códigos más utilizados para la detección y/o corrección de errores.

Cuando se recibe un bloque de dígitos binarios es necesario asegurarse de que no contiene errores de transmisión. Si se detecta que el bloque está en error, se tiene dos opciones: una es corregir el error en el sitio y la otra solicitar la retransmisión del bloque. Esta situación ha producido las dos técnicas de control de error comúnmente utilizadas: la “Corrección Directa de Error (Forward Error Correction, FEC)” y la “Solicitud de Repetición Automática (Automatic Repeat Request, ARQ)”. En la técnica FEC se utiliza códigos para detectar y corregir los errores en el receptor; mientras que en la técnica ARQ los códigos solamente detectan la presencia de errores en los datos recibidos y se solicita en alguna forma la repetición de los bloques que vienen en error.

En este capítulo se define, en primer lugar, el rendimiento y la redundancia de un código, que son los parámetros para determinar la eficacia de un código determinado. Hay otros parámetros tales como la “distancia mínima”, la “capacidad de detección de ráfagas” y otros que citamos pero que no describimos pues están fuera del marco de este libro.

Los esquemas para la detección y/o corrección que se describen en este capítulo son: código de repetición, códigos de ponderación constante, codigo de suma de verificación, código de prueba de paridad sencilla, código de prueba de paridad vertical y horizontal, códigos matriciales, código de Hamming y códigos de redundancia cíclica (CRC). Por ser el Código CRC muy utilizado en muchos de los protocolos de comunicación vistos hasta ahora, su descripción es más detallada, aunque no entramos en su justificación teórica.

Aunque la aleatorización no es un esquema de control de error, su descripción y operación descansa sobre los mismos principios de los códigos CRC. En particular, la aleatorización permite la regeneración de los impulsos de reloj y por lo tanto previene la generación de errores en las secuencias de datos transmitidas. En este capítulo se introduce solamente la noción de lo que es la aleatorización y sobre qué principios se basa, así como algunos tipos de aleatorizador utilizados en la práctica.

Page 25: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

445

7.5. CUESTIONARIO

1. Explique las razones fundamentales para la utilización de la detección y corrección de errores, y en qué sitios del sistema deben colocarse los dispositivos que efectúan las funciones de codificación y descodificación.

2. Defina lo que es el “Rendimiento de un Código” y explique su significado. ¿Para qué se le agrega “Redundancia” a un código dado? Se observa una palabra codificada con paridad sencilla, ¿ Cómo se puede reconocer si la paridad es par o impar?

3. En control de error ARQ, se tienen diferentes formas para solicitar la repetición del bloque o bloques en error. Investigue los esquemas más utilizados en la práctica.

4. En el Código de Ponderación Constante, escriba todas las secuencias de longitud 6 que contienen 4 UNOS. ¿Cuál es el valor de la redundancia?

5. En el protocolo XMODEM determine el valor (en decimal) y la forma (en binario) del BCC cuando el campo Información contiene 38 caracteres X, 30 caracteres Y, 30 caracteres Z y 30 caracteres W.

6. La palabra MURCIELAGO se va a transmitir con codificación horizontal y vertical en la forma mostrada en la Fig. 7.3. Demuestre que el BCC es 0 0 0 0 0 0 0 0.

7. En un sistema que utiliza un código matricial se recibió la siguiente palabra código:

1 0 1 1 0 1 1 0 1 0 0 0 0 1 1 1 1 1 1 0 0 1 0 0 1 1 1 0 1 0

Diga si hay error en la transmisión y cuál fue la palabra mensaje transmitida. ¿Cuál es el valor de la redundancia?

8. Utilizando el código matricial se quiere transmitir la palabra 10110011001001110111. Construya la matriz principal, muestre la forma de la palabra código transmitida y determine la redundancia.

9. En un sistema que utiliza el código Hamming se recibió siguiente la palabra código:

Verifique si hay error en la transmisión. Si ese es el caso, diga cuál dígito está en error. ¿ Cuál es el valor de la redundancia?

10. En un sistema que utiliza el código de Hamming la palabra mensaje tiene la forma 1 0 0 1 1 0 1 0 1 1 . Demuestre que la palabra codificada transmitida tiene la forma 1 0 0 1 1 0 1 0 1 1 1 0 1 0.

11. Diga las características principales de los Códigos CRC y los más utilizados en la práctica.

12. Dibuje el registro CRC cuyo polinomio generador es PG(X) = X8 + X4 + X2 + 1.

13. Dibuje los registros CRC utilizados en la LAN Ethernet y en el protocolo industrial DNP 3.0.

DATOS BCC 1 0 0 1 1 1 1 0 0 0 0 0

Page 26: CAPITULO VII TECNICAS DE CONTROL DE ERROR VII...TECNICAS DE CONTROL DE ERROR 7.1. INTRODUCCION Durante la transmisión de información digital a través de un sistema o canal se producen

VII. TECNICAS DE CONTROL DE ERROR

446

14. En el código CRC-12 el polinomio generador es PG(X) = X12 + X11 + X3 + X2 + X + 1 y el polinomio mensaje es M(X) = X7 + X4 + X2 + X + 1. Demuestre que el mensaje codificado transmitido T(X) es 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 1 0 0 1 1.

15. Sea un código CRC cuyo polinomio generador es P(X) = X5 + X4 + X + 1 y el polinomio mensaje M(X) = X7 + X5 + X4 + X2 + X + 1. Demuestre que el BCC tiene la forma B(X) => 01001

16. En el protocolo DNP 3.0 el polinomio mensaje es M(X) = X7 + X5 + X3 + X + 1. Determine el mensaje codificado transmitido T(X).

17. Diga las características, funciones y aplicaciones de la aleatorización.

18. Dibuje el aleatorizador y el desaleatorizador de un sistema dado, si el aleatorizador se puede representar con un polinomio generador de la forma PG(X) = X7 + X5 + 1.