Corrección de errores
Las
redes de computadoras deben ser capaces de transmitir datos de un dispositivo a
otro con cierto nivel de precisión. Para muchas aplicaciones, el sistema debe
garantizar que todos los datos recibidos son iguales a los transmitidos. Sin embargo,
siempre que una señal electromagnética fluye de un punto a otro, está sujeta a
interferencias impredecibles debido al calor, el magnetismo y diversas formas
de electricidad. Esta interferencia puede cambiar la forma o temporización de
la señal. Si la señal transporta datos binarios codificados, tales cambios
pueden alterar su significado.
Las
aplicaciones requieren entonces un mecanismo que permita detectar y corregir
los posibles errores ocurridos en la transmisión. Algunas aplicaciones tienen
cierta tolerancia de errores (transmisión de audio/video), mientras que para
otras aplicaciones se espera un alto nivel de precisión (transmisión de
archivos).
La
corrección de errores es más difícil que la detección en la detección solo se
quiere determinar si ha ocurrido un error, existiendo dos posibles respuesta:
si o no. La corrección como tal es sencilla, consiste en tan solo en invertir los
valores de los bits erróneos; sin embargo, es necesario previamente determinar
la cantidad de bits erróneos, y aún más importante la ubicación de los mismos
dentro de la unidad de datos.
La
corrección de errores se puede conseguir de dos formas. La primera, cuando se
descubre un error, el receptor puede pedir al emisor que retransmita toda la
unidad de datos. Con la segunda, el receptor puede usar un código de corrección
de errores, que corrija automáticamente determinados errores.
VCR
(chequeo de paridad vertical o paridad
de carácter)
Este método hace uso del agregado
de bits de control.
Se trata de la técnica más
simple usada en los sistemas de comunicación digitales y es aplicable a nivel
de byte ya que su uso está directamente relacionado con el código ASCII.
Como se recordara, el código
ASCII utiliza 7 bits para representar los datos, lo que da lugar a 128
combinaciones distintas. Si definimos un carácter con 8 bits (1 byte) quedara
un bit libre para control, ese bit se denomina bit de paridad y se puede
escoger de dos formas:
· Paridad par
·
Paridad impar
Según el número total de
unos en esos 8 bits, incluyendo el octavo bit (el de paridad), sea par o impar.
El uso de un bit adicional
para la paridad disminuye la eficiencia, y por tanto la velocidad en el canal, el
cálculo es sencillo pasamos de 7 bits de datos a 7+1, ello conduce de acuerdo a
la expresión 2.10 a un overhead de (1- 7/8) 100% = 12.5% de disminución en la
eficiencia.
En el extremo de transmisión
el codificador de canal calcula el bit de paridad y lo adosa a los 7 bits de
datos. El decodificador de canal recibe los 8 bits de datos calcula la paridad
y la compara con el criterio utilizado.
Este método tampoco asegura
inmunidad a errores, basta con que dos bits cambien su valor simultáneamente para
que el error no sea detectado pues la paridad será correcta y el dato no. Sin embargo
este sencillo sistema permite que una línea telefónica discada que transmite
entre 103 y 104 bps con una tasa de error de 10-5
mejore a 10-7.
Debe mencionarse que en transmisión
serial la interpretación de una secuencia 0 y 1 presenta un problema, pues el
bit menos significativo se transmite primero y el significativo al último.
En una secuencia de tres
letras ABC no hay duda de identificar a la A como la primera letra, sin embargo
si escribimos sus códigos ASCII con el bit de paridad tendremos:
Esta representación induce a
confusión pues no es la de transmisión serial. Tenemos dos alternativas para
mejorarla:
·
Flecha a la derecha
El bit del extremo derecho
del primer carácter es el primero en ser transmitido y el ultimo corresponderá al
extremo izquierdo del ultimo carácter, la flecha indica el sentido en que
fluyen los bits. Los datos para ser interpretados deben tomarse en grupos de 8
y ser leídos de derecha a izquierda.
·
Flecha a la izquierda
Este caso, es común cuando
se utiliza un osciloscopio para monitorear líneas de datos ya que el primer bit
recibido queda en el extremo izquierdo de la pantalla, la flecha indica aquí también
el sentido en que fluyen los bits: requiere para interpretar correctamente los
caracteres tomar grupos de 8 bits y leerlos de izquierda a derecha.
LRC
(chequeo de paridad horizontal, longitudinal o de columna)
Este chequeo de paridad en
vez de estar orientado al carácter lo está al mensaje, y consiste en que cada posición
de bit de un mensaje tiene bit de paridad, así por ejemplo toman todos los bits
b0 de todos los caracteres que componen el mensaje y se calcula un
bit de paridad par o impar, según el criterio definido, este bit de paridad es
el bit b0 de un carácter adicional que se transmite al final del
mensaje, y se procede luego sucesivamente con los demás bits incluyendo el de
paridad. El carácter así construido se denomina BCC (Block Check Character),
Históricamente
entre el 75 y el 98% de los errores presentes son detectados por LRC, los que
pasan desapercibidos se deben a limitaciones propias del método, así por ejemplo
un error en b2 en dos diferentes caracteres simultáneamente produce
un LRC valido.
Chequeo de paridad bidimensional
(VRC / LRC)
La combinación de dos métodos
precedentes proporcionan mayor protección y no supone gran consumo de recursos
y, aunque tiene la misma sencillez conceptual de los métodos de paridad lineal,
es más complicado y por ello menos popular.
El uso simultaneo de VRC y
LRC hace que pasen indetectados errores en un número par de bits que ocupen
iguales posiciones en un número par de caracteres, circunstancia muy poco
probable.
En caso de que se trate de
un solo error el uso simultaneo de VRC y LRC permite determinar con precisión cual
es el bit erróneo y por tanto corregirlo. Otras combinaciones de errores pueden
ser detectadas y algunas además corregidas.
No hay comentarios:
Publicar un comentario