Hernández Unidad IV Comunicación de datos Entonces, si: M ( x)(2 n ) R( x) = Q( x) + , donde Q(x) es el cociente, G ( x) G ( x) 4.4 M ( x)(2 n ) + R( x) = Q( x) , suponiendo aritmética módulo 2. G ( x) 4.5 Es fácil confirmar este resultado sustituyendo la expresión correspondiente a: M(x)(2n)/G(x) en la segunda ecuación (4.5), lo que nos da: M ( x)(2 n ) + R( x) R ( x) R( x) = Q( x) + + , G ( x) G ( x) G ( x) 4.6 Lo que es igual a Q(x), ya que en aritmética módulo 2 cualquier número sumado a si mismo produce cero; es decir, el residuo es cero. Para aprovechar esto, el contenido total de la trama, M(x), junto con un conjunto concatenado de tantos ceros como dígitos de FCS que se van a generar (lo que es equivalente a multiplicar el mensaje por 2n, donde n es el número de dígitos de la FCS), se divide módulo 2 por un segundo número binario, G(x), el polinomio generador, que contiene un dígito más que la FCS. La división equivale a realizar la operación de XOR bit por bit en paralelo conforme se procesa cada bit de la trama. El residuo R(x) será entonces la FCS que se transmitirá al final de los dígitos de información. De manera similar, en el receptor, el flujo de bits de llegada, entre ellos los dígitos de la FCS, se divide otra vez entre el mismo polinomio generador, esto es, M(x)(2n)+R(x)/G(x), y, si no se presentan errores, el residuo sólo contendrá ceros. En cambio si hay un error, el residuo será distinto de cero. 155 Hernández Unidad IV Comunicación de Datos Ejemplo: se va a transmitir una serie de bloques de mensaje (tramas) de ocho bits por un enlace de datos empleando CRC para detectar errores. El polinomio generado será 11001, encontrar lo siguiente: a).- El proceso de generación de la FCS. b).- El proceso de verificación de la FCS. En la figura 4.5 se ilustra la generación de la FCS para el mensaje 11100110. En primer lugar, se concatenan cuatro ceros al mensaje, lo que equivale a multiplicar por 24, ya que la FCS tendrá cuatro bits. Después, esto se divide (módulo 2) por el polinomio generador (número binario). La operación de división módulo 2 es equivalente a efectuar la operación de XOR bit a bit en paralelo conforme se procesa cada uno de los bits del dividendo (operación de resta en complementos a 2). Figura 4.5 Ejemplo de CRC. 156 Hernández Unidad IV Comunicación de datos Así mismo, con aritmética módulo 2 podemos hacer una división en cada uno de los residuos parciales, siempre que los dos números tengan la misma longitud, es decir, siempre que los dos bits más significativos sean unos. No hay que considerar la magnitud relativa de los dos números, el residuo de 4 bits resultante (0110) es la FCS, que entonces se añade al final del mensaje original en el momento de su transmisión, el cociente es irrelevante. Para resolver la parte b) del ejemplo; en el receptor, la secuencia completa de bits recibida se divide por el mismo polinomio generador que se usó en el transmisor. En la figura 4.5b se muestran dos ejemplos de ello. En el primero se supone que no se presentan errores, por lo que el residuo es cero, y tampoco se usa el cociente. En el segundo, en cambio, se supone que existió una ráfaga de errores de cuatro bits al final de la secuencia transmitida. En consecuencia, el residuo obtenido no es cero, lo que indica que hubo un error de transmisión. Es importante la elección del polinomio generador porque éste determina los tipos de errores que es posible detectar. Supongamos que la trama transmitida, T(x), es; 11010110 0110 Y que el patrón de error, E(x), es; 00000000 1001 Es decir, un 1 en una posición de bit indica un error. Entonces, con aritmética módulo 2: Trama recibida = T(x) + E(x). 4.7 Ahora bien: 157 Hernández Unidad IV Comunicación de Datos T ( x) + E ( x) T ( x) E ( x) = + G ( x) G ( x) G ( x) 4.8 Pero T(x)/G(x) no produce ningún residuo. Por tanto, sólo se detectará un error si E(x)/G(x) produce un residuo. Todos los G(x) tienen al menos tres términos (bits 1) y E(x)/G(x) producirá un residuo, con aritmética módulo 2, con todos los errores de un solo bit y de dos bits, que entonces se podrán detectar. A la inversa, una ráfaga de errores con la misma longitud que G(x) puede ser múltiplo de G(x); en tal caso, no producirá ningún residuo y pasará inadvertida. En síntesis, un polinomio generador de R bits detectará: ∗ Todos los errores de un solo bit. ∗ Todos los errores de dos bits. ∗ Todos los errores de bit en número impar. ∗ Todas las ráfagas de errores < R. ∗ La mayor parte de las ráfagas de errores ≥ R. La forma de representación regular de un polinomio generador consiste en indicar las posiciones que sean 1´s binarios como potencias de X. Así, los siguientes son ejemplos de CRC que se emplean en la práctica: CRC - 16 = X16 + X15 + X2 + X0 CRC – CCITT = X16 + X12 + X5 + X0 CRC – 32 =X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 X1 + X0 Así pues, CRC-16 en forma binaria es equivalente a: 1 1000 0000 0000 0101 158