Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PLC 2

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 8

Cdigo de redundancia cclica Los mtodos basados en el uso de paridad son sencillos de comprender y de implementar, suministran cierto grado

de proteccin contra los errores pero son limitados y su efectividad es cuestionable en determinadas aplicaciones. Por ello se utilizan solamente cuando resulta muy complicado muy costoso implementar otros mtodos. Adems, el de paridad vertical requiere que cada carcter lleve su proteccin contra errores, lo que lo hace adecuado en entornos asncronos, en entornos sncronos el uso de tantos bits de deteccin de errores consume un porcentaje importante de la capacidad del canal. Por ello es necesario, en entornos sncronos, emplear mtodos que tengan en cuenta dos factores importantes: 1. Deteccin ms segura de los errores. Dado que los datos se envan en bloques un solo error corrompe toda la informacin contenida en l, que es considerable,adems muchas veces los errores se presentan en rfagas *14+, por ello se requieren esquemas ms poderosos 2. Eficiencia. No se deben consumir demasiados recursos dejando libre la mayor parte del canal para datos. Un grupo de mtodos que cumplen con dichos requisitos son los llamados cdigos de redundancia cclica, que es un cdigo de deteccin de errores usado frecuentemente en redes digitales y en dispositivos de almacenamiento para detectar cambios accidentales en los datos. Los bloques de datos ingresados en estos sistemas contiene un valor de verificacin adjunto, basado en el residuo de una divisin de polinomios; el clculo es repetido, y la accin de correccin puede tomarse encontra de los datos presuntamente corrompidos en caso de que el valor de verificacin no concuerde; por lo tanto se puede afirmar que este cdigo es un tipo de funcin que recibe un flujo de datos de cualquier longitud como entrada y devuelve un valor de longitud fija como salida. El trmino suele ser usado para designar tanto a la funcin como a su resultado. Pueden ser usadas como suma de verificacin para detectar la alteracin de datos durante su transmisin o almacenamiento. Las CRC son populares porque su implementacin en hardware binario es simple, son fciles de analizar matemticamente y son particularmente efectivas para detectar errores ocasionados por ruido en los canales de transmisin. La CRC fue inventada y propuesta por W. Wesley Peterson en un artculo publicado en 1961. El CRC es un cdigo de deteccin de error cuyo clculo es una larga divisin de computacin en el que se descarta el cociente y el resto se convierte en el resultado, con la importante diferencia de que la aritmtica que usamos conforma que el clculo utilizado es el arrastre de un campo finito, en este caso los bits. El tamao del resto es siempre menor que la longitud del divisor, que, por lo tanto, determina el tamao del resultado. La definicin de un CRC especifica el divisor que se utilizar, entre otras cosas. Aunque un CRC se puede construir utilizando cualquier tipo de regla finita, todos los CRC de uso comn emplean una base finita binaria, esta base consta de dos elementos, generalmente el 0 y 1. El resto de este artculo se centrar en este tipo de composicin, es decir el mbito binario y los principios generales de los CRC. La integridad de los datos frente a la codificacin

Es til para deteccin de errores, pero, en condiciones de seguridad, no podemos confiar en que el CRC puede verificar plenamente que los datos son los correctos en caso de que se hayan producido cambios deliberados y no aleatorios. A menudo se piensa que si, cuando llega un mensaje, ste y su CRC coinciden, quiere decir que el mensaje no ha podido ser alterado durante su transmisin, aunque se haya transmitido por un canal abierto. Esta suposicin es falsa porque CRC es un mal mtodo de cifrado de datos. De hecho, el CRC no se trata realmente de un mtodo de cifrado, lo que realmente hace es utilizarse para el control de integridad de datos, pero en algunos casos se supone que se utilizarn para el cifrado. Cuando un CRC se calcula, el mensaje se conserva (no cifrado) y la constante de tamao CRC se sita hacia el final (es decir, el mensaje puede ser tan fcil como leer antes de la posicin que ocupa el CRC). Calculo del CRC La deteccin de errores se efecta mediante un registro de desplazamiento de varias secciones que alimentan compuertas O-Exc, como se muestra en la Fig.

En la Fig. 7.6(a) se muestra la configuracin normalizada por el UIT-T en su Recomendacin V.41, aunque hay dos tipos ms de configuracin, llamadas CRC-16 y CRC-12, que veremos ms adelante. Ntese que los dgitos LSB y MSB se refieren al registro: el lado LSB corresponde al trmino X16 y se enva de primero, es decir, es el primer dgito del BCC. Previo a la codificacin, el registro se inicializa a cero. A medida que cada dgito de datos se presenta en la primera compuerta O-Exc, se va desplazando el contenido del registro y se efectan las operaciones correspondientes. En la Fig. 7.6(b) se muestra el

contenido del registro cuando el primer dgito fue un UNO. Este dgito UNO se desplaza a cada impulso del reloj de sincronizacin 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 dgito cualquiera se refleja en las diferentes clulas del registro durante un tiempo bastante grande despus que el mismo dgito fue transmitido. En cuanto al receptor, la configuracin del registro es idntica a la del transmisor: el registro se inicializa a cero y los dgitos recibidos se aplican a su entrada. Finalizada la recepcin del mensaje codificado, si el mensaje recibido es igual al mensaje transmitido, el contenido del registro ser cero, es decir, el registro contendr slo CEROS. Esta situacin se verifica no importa la forma de conexin de las compuertas O-Exc, de ah que existan varios tipos de cdigo CRC. Una excepcin es en los protocolos SDLC y HDLC en los cuales el registro se inicializa con un valor predeterminado y al final de la codificacin el contenido es distinto de cero (0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1) . En los protocolos SDLC y HDLC a la secuencia BCC del registro se la denomina FCS (frame check sequence). La caracterstica ms 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 rfaga de errores pueda producir un clculo en el CRC que sea igual a la secuencia de datos tal como fue transmitida antes de la ocurrencia de los errores. Un mensaje codificado en forma cclica consiste en una secuencia especfica de datos y un BCC. Sea n igual al nmero total de dgitos del mensaje codificado o palabra cdigo, y m el nmero de dgitos de informacin; entonces, el BCC tendr (n m) dgitos. El mensaje codificado se deduce de dos polinomios que son representaciones algebraicas de dos secuencias binarias: el polinomio generador PG(X) de k dgitos y el polinomio mensaje M(X) de m dgitos. El polinomio generador identifica el tipo de cdigo (CRC UIT-T, CRC-12, CRC-16, etc.), y el polinomio mensaje es simplemente la secuencia de dgitos de informacin. Estos polinomios son expresiones algebraicas de la forma Xp + Xp1 + Xp2 + ... + X3 + X2 + X1 + X0

Para su representacin en forma binaria, se coloca un 1 en las posiciones donde X 0, y un 0 cuando X = 0. La convencin establecida es la de colocar el trmino X0 (que es igual a 1) a la derecha. Por ejemplo, una expresin 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 polinomio es 5, el trmino Xp con p = 5 representa el LSB y la secuencia binaria correspondiente tendr p + 1 = 6 dgitos. El LSB siempre se coloca a la izquierda. El BCC est representado por un polinomio B(X) y el polinomio que representa la seal transmitida tendr la forma T(X) = M(X) + B(X) = Xn-mM(X) + B(X) de n dgitos. 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, [ ]

Tanbien :

T(X) = M(X) + B(X), donde M(X) = Xn-mM(X)

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 (n m) es el nmero de dgitos del BCC. La multiplicacin 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 efecta una divisin mdulo 2. Entonces,

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 ntese que en la prctica 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 transmisin, la divisin ser exacta y el resto B(X) ser cero. Si el resto B(X) es distinto de cero, hubo errores en la transmisin y se demandar la repeticin del bloque correspondiente.

Ejemplo de aplicacin del CRC Determine el BSC(Block Character Sequence), para los siguientes polinomios generadores de datos y CRC. datos P(x) = x + x + x + x + x + x 10110111 CRC G(x) = x + x + x + x 110011 Solucin Primero P(x) es multiplicado por el nmero de bits en el cdigo CRC, 5. x (x + x + x + x + x + x ) = x + x + x + x + x + x = 1011011100000 Al dividir este polinomio por G(x) obtenemos R(x) BCS que resulta:
5 7 5 4 2 1 0 12 10 9 7 6 5 5 4 1 0 7 5 4 2 1 0

Resto 01001 significa R(x) = 0x + 1x + 0x + 0x + 1 Se transmite entoces T(x) = x P(x) + R(x) o sea 1011011101001 Suponiendo que se reciba TR(x) 1011011101001 (lo mismo que se transmiti),al dividir TR(x) por G(x) el resto ser cero indicando que se recibi correctamente bien se separa lo que se supone es x P(x) se divide por G(x) y el resto se compara con R(x)( se recomienda al lector efectuar la divisin) . Es posible demostrar[1] que la condicin para que un cdigo polinomial no detecte un error es que el polinomio que lo representa sea mltiplo del polinomio generador. Por ello la seleccin del polinomio generador es muy importante ya que si se elige adecuadamente es muy difcil que un error pase indetectado. En el caso del polinomio generador de 17 bits descripto como CCITT V.41 puede demostrarse que detecta:
k k

Todos los bits errneos que se produzcan en nmero impar Todos los errores que afecten en bloque 16 menos bits (single-error bursts, seb) 99.9969% de todos los posibles bloques de error(seb) de 17 bits. 99.9984% de todos los posibles bloques de error(seb) de longitud superior a 17 bits. A modo de comentario, la lnea telefnica de la Subseccin 3.2.3 con CRC mejorara su BER a 10 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 configuracin del registro depende del cdigo CRC que se quiere instrumentar. El nmero de etapas del registro es igual al grado k del polinomio generador y el nmero de compuertas O-Exc es tambin una funcin del polinomio. En la Fig. 7.6 se mostr el registro utilizado para el cdigo CRC UITT cuyo polinomio es PG(X) = X16 + X12 + X5 + 1. Cuando opera con caracteres de 8 dgitos (un octeto) el BCC tendr 2 octetos, como se pudo apreciar en el ejemplo de aplicacin. En la
-14

Fig. 7.7 se muestra los cdigos 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

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

Cdigos Matriciales (Array Codes) Los cdigos matriciales son cdigos de deteccin y correccin de error , y en su forma ms sencilla, son una generalizacin del cdigo SRC pero extendido a dos dimensiones. En efecto, a la prueba de paridad horizontal se le agrega una prueba de paridad vertical y una prueba de prueba, lo que permite no slo detectar sino corregir un error en el bloque transmitido. En estos cdigos se utiliza la paridad par. En la Fig. 7.4 se muestra la Matriz Principal, la Submatriz y el mecanismo de codificacin.

La palabra dato se distribuye en la Submatriz de F filas y C columnas. En los cdigos matriciales la matriz principal generalmente es rectangular y C > F; la matriz ser cuadrada cuando C = F. El rendimiento y la redundancia sern:

Sea m el nmero de dgitos de informacin y k el de redundancia. Se tiene entonces, n = m + k = (C +1)(F + 1); m = C F; k = C + F +1; 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 cdigo 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 dgito, este error puede ser corregido de inmediato pues su emplazamiento se conoce con exactitud, como se puede apreciar en la Fig. 7.5.

(a) Bloque enviado en Serie por Filas

(b) Bloque Recibido. Error en un dgito de informacin

(c) Bloque Recibido. Error en un dgito de prueba

(d) Bloque Recibido. Error en el dgito de prueba de prueba

Los cdigos matriciales son muy eficientes en lo que se refiere a la correccin de errores, particularmente si la matriz es cuadrada. Estos cdigos pueden extenderse tambin a ms de dos dimensiones. Ejemplo 7.4 Cdigo Matricial. Se recibi la siguiente secuencia codificada 011011101100111001011011011101 Diga cul fue la palabra mensaje transmitida y el rendimiento de transmisin. Solucin: 011011101100111001011011011101 Son 30 dgitos = 5 filas x 6 columnas Los 30 dgitos 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 dgito B3 que debe entonces ser CERO. Por lo tanto, la palabra mensaje transmitida fue 0110110010111000110101110

En cuanto al rendimiento,

También podría gustarte