¡Una Quinta!
Las cuatro Tecno-Tapas anteriores se centraban un poco más en el hardware, hoy ya pasaremos a los algoritmos de detección y corrección de errores. Estos algoritmos están en la frontera entre el hardware y el software, ya que se pueden implementar tanto por hardware (con electrónica especifica para esto) o por software en lo que podríamos llamar un nivel superior.

Transmisión de datos
Cualquier transmisión de datos puede ser afectada por distintos problemas, interferencias electromagnéticas, errores en los sistemas, con lo que normalmente en cualquier transmisión de datos se implementan algoritmos de detección y/o corrección de errores.
En el sistema más básico, por ejemplo una transmisión serie RS-232, hay que elegir la velocidad de transmisión, la forma de controlar la transmisión y recepción (protocolo), y también se elige una característica que es la paridad.
¿Qué es eso de la paridad?
La paridad es una forma básica de detección de errores, no podemos hablar de corrección porque como veremos no tiene la capacidad de corregir un posible error.
Imaginemos que queremos transmitir un dato, por ejemplo la letra «a», que está representada en binario por, 01100001.
En la transmisión serie iremos transmitiendo uno a uno cada uno de los bits que forman el dato (la letra «a»), si transmitimos el dato tal cual, es decir, transmitiendo esos 8 bits, no tendremos ninguna forma de comprobar que el dato recibido es correcto.
Para detectar si el dato es correcto o no, tendremos que añadir más información a los datos transmitidos. En el caso de RS-232 se añade un bit más, el llamado bit de paridad. Este bit de paridad consiste en contar el número de «unos» que se han transmitido y en caso de que sea par se añade un «uno» adicional, y en el caso impar un «cero».
De esta forma para transmitir la letra «a» (01100001) finalmente se transmitirá (011000010). Así, en el caso de que se produzca un error en la transmisión, seremos capaces de detectarlo. Supongamos que una interferencia cambia uno de los bits transmitidos. Por ejemplo en el caso de la letra «a», recibimos (011001010), gracias al bit de paridad nos damos cuenta de que ha habido un error en la transmisión.
Si quisiésemos transmitir el dato «01100101» conforme al tipo de paridad que hemos elegido tendríamos que añadirle un 1 al final, ya que el número de unos es par. Como hemos recibido 011001010 sabemos que algo ha ido mal, así podemos pedir al emisor que vuelva a enviar ese dato.
Como vemos esto es una idea genial, pero no tenemos posibilidad de corregir el error en la recepción, y además en el caso de que se produzca dos errores ni siquiera seríamos capaces de detectarlo.
Todos los sistemas de transmisión de datos implementan algún tipo de detección y corrección de errores. Lo que se hace es añadir datos redundantes a los emitidos para que el receptor pueda detectar posibles errores, e incluso corregirlos. Siempre hay un límite a la hora de corregir errores, por eso cada sistema se dice que es capaz de detectar X errores y de corregir X-C errores. Siempre a costa de aumentar el número de datos enviados.
Para esto se utilizan unos polinomios generadores, de forma que se hacen combinaciones más o menos complicadas de los datos emitidos, y matemáticamente se puede inferir en los datos recibidos que bits han podido ser cambiados. Siempre dentro de un límite.
Por último solamente apuntar que esta técnica no solo se aplica en los sistemas de transmisión. También se puede implementar este tipo de corrección de datos en otro tipo de intercambio de información, como por ejemplo las memorias de los microprocesadores. En este último caso se añaden algunos bits al dato almacenado en memoria, de forma que cuando se accede a él, se puede comprobar si ha sido alterado o no.
Hasta aquí una pequeña introducción para saber en que consiste la detección y corrección de errores y tener un ligera idea de cómo se puede realizar.
Nos seguimos leyendo.
Tema importante, ampliamente empleado en la práctica. Porque la realidad no es ideal y hay que recurrir a estás técnicas para detectar y/o corregir esas perturbaciones que se pueden encontrar.
Un saludo,
Gracias por comentar 😉