1. Introducción
Los errores de transmisión en los sistemas de comunicación digital dependen directamente de la relación señal a ruido (S/N) del canal.
La codificación para el control de errores consiste en la adición sistemática de dígitos extras al mensaje transmitido. Estos dígitos extras no llevan información por sí mismos, pero hacen posible la detección o corrección de errores en los dígitos del mensaje regenerado en el receptor.
2. Estrategias de Control de Errores
La codificación para la detección de errores sin corrección es más simple que la codificación para corrección. Según las características del canal, se elige una de estas dos estrategias:
ARQ — Automatic Repeat Request
Repetición automática por pedido- Requiere un canal de dos vías entre la fuente y el destino.
- El receptor solicita la retransmisión de la información que contiene errores detectados.
- Utilizado normalmente en redes de computadoras (Wi-Fi, TCP/IP).
FEC — Forward Error Correction
Corrección de errores hacia adelante- Se emplea cuando la retransmisión es imposible o impráctica.
- El sistema corrige los errores en el receptor sin pedir retransmisión.
- Típico en comunicaciones satelitales, broadcasting (TV Digital) y almacenamiento.
3. Código de Repetición
Cuando uno intenta hablar con otra persona en una habitación ruidosa, necesita repetir lo dicho para ser entendido. Una aproximación de fuerza bruta en comunicaciones digitales es la repetición: cada bit de mensaje se codifica en n bits idénticos.
Cualquier error de transmisión altera el patrón de repetición cambiando "0" por "1" o viceversa.
📊 Probabilidad de Error (Distribución Binomial)
Si un Error de Transmisión ocurre aleatoriamente y en forma independiente con probabilidad Pe = α, la probabilidad que ocurran "i" errores en una codificación de "n" bits sigue la Distribución Binomial:
P(i) = C(n, i) · αi · (1 − α)(n−i) donde: C(n, i) = n! / [i! · (n − i)!]
🎯 Ejemplo: Código de Triple Repetición
Palabras válidas: 000 o 111. Cualquier otra palabra recibida (ej. 001, 101) indica la presencia de error.
| Modo | Capacidad | Observación |
|---|---|---|
| Detección sin corrección | Hasta 2 errores | Errores triples se vuelven indetectables (P = α³) |
| Corrección | 1 error por palabra | Se asume que al menos 2 de los 3 bits son correctos |
P = 3α²(1−α) + α³), pero se reduce la eficiencia: la tasa de bits se reduce a 1/3 en el caso del código de triple repetición.
🧮 Calculadora de Distribución Binomial
Resultado:
4. Chequeo de Paridad
Los códigos más eficientes se basan en la noción de paridad:
- Paridad par: la palabra contiene un número par de "1"s.
- Paridad impar: la palabra contiene un número impar de "1"s.
La codificación por chequeo de paridad posee n − 1 bits de mensaje y 1 bit de chequeo, elegido de manera que todas las palabras codificadas tengan la misma paridad.
Ejemplo: n = 3, paridad par
Palabras válidas: 000, 011, 101, 110 (el último bit es el bit de paridad). Si recibimos 001, detectamos que es una palabra con error.
P(no detectar) ≈ C(n−1, 2) · α²
Con una disminución de la tasa de bits de solo 9/10, por eso es tan popular en sistemas de computación.
Paridad Bidimensional (Matricial)
Método de chequeo de paridad para la corrección de errores en un arreglo de K bits de mensaje, cuyas filas y columnas son chequeadas por 2·√K bits de paridad.
Un error en un bit de mensaje produce una fila y columna con error de paridad. La intersección permite corregir un bit y detectar doble error.
Errores en Ráfaga (Burst Errors)
Asumimos que los errores aparecen aleatoriamente (ruido blanco). Pero el ruido de impulso producido por transitorios de conmutación (switching) causa errores en ráfaga que afectan bits sucesivos.
Este problema se soluciona chequeando los bits por intervalos ampliamente espaciados.
5. Vectores de Código
Una palabra arbitraria de n-bits puede visualizarse en un espacio de n dimensiones como un vector. El código 101 es el Vector x(101).
- Código de Triple Repetición: x = (0, 0, 0) y = (1, 1, 1)
- Código de Chequeo de Paridad: x = (0, 0, 0) y = (0, 1, 1)
Los puntos llenos indican palabras de código válidas; los círculos vacíos, palabras inválidas (recibidas con error). En el cubo de triple repetición solo 000 y 111 son válidas; en el de paridad, las cuatro palabras con cantidad par de "1"s (000, 011, 101, 110).
6. Distancia de Hamming
La distancia de Hamming se relaciona directamente con el poder de control de error del código.
d(x, y) = número de elementos diferentes entre los códigos x e y
Ejemplo:
Si x = (1, 0, 1) e y = (1, 1, 0), entonces d(x, y) = 2.
La mínima distancia dm de un código es la distancia más pequeña entre dos códigos válidos. La detección de errores es siempre posible cuando el número de errores es menor que dm.
Capacidad de Control
- 🔍 Detección de errores: l ≤ dm − 1
- 🛠️ Corrección de errores: t ≤ ⌊(dm − 1) / 2⌋
Ejemplo aplicado: Código de Triple Repetición
Distancia mínima: dmín = 3 Detección: l ≤ 3 − 1 = 2 errores por palabra Corrección: t ≤ ⌊(3 − 1) / 2⌋ = 1 error por palabra
7. Códigos de Bloque
El poder del código depende del número de bits que se le agrega al mensaje. Una palabra codificada consiste en:
- k bits de mensaje (k < n)
- n − k bits de chequeo de paridad
Esta estructura se conoce como código de bloque.
Distancia mínima: dmín ≤ n − k + 1 Eficiencia (Tasa de código): R = k / n
8. Medición Práctica de la Probabilidad de Error
Para medir la probabilidad de error (Pe o α) en la práctica, se realiza una transmisión de prueba.
Ejemplo 1: Medición del Canal (Cálculo de α)
- Transmisión: El emisor envía un bloque de prueba de 10,000 bits con una secuencia conocida (ej. secuencia pseudoaleatoria).
- Recepción: El receptor compara lo que recibió con la secuencia original y cuenta los errores. Supongamos que encuentra 50 bits erróneos.
- Cálculo de Pe:
Pe (α) = Bits erróneos / Bits totales
= 50 / 10,000
= 0.005 (0.5%)
Este valor (α = 0.005) es la probabilidad de error base de tu canal sin codificación.
Ejemplo 2: Aplicación Práctica (Código de Triple Repetición)
Usamos la Distribución Binomial con el α medido para ver si vale la pena codificar:
- Sin codificación: Probabilidad de error = 0.5%
- Con triple repetición (n=3): El sistema falla solo si ocurren 2 o 3 errores en el mismo grupo de 3 bits.
P(fallo) = 3α²(1−α) + α³
= 3(0.005)²(1 − 0.005) + (0.005)³
= 3(0.000025)(0.995) + 0.000000125
≈ 0.000075 (0.0075%)
- La probabilidad de error bajó drásticamente de 0.5% a 0.0075% (≈66 veces mejor).
- El costo (trade-off): Para lograr esto, tuvimos que enviar 3 bits por cada 1 bit útil, reduciendo la tasa de bits (eficiencia) a 1/3.
Nota: En la vida real, los equipos de telecomunicaciones (routers, módems) hacen este conteo de errores automáticamente en segundo plano para estimar la calidad del enlace (BER - Bit Error Rate).
Ejemplo 3: Comparación con Código de Paridad
Usando el mismo canal medido (α = 0.005) con paridad simple (n=10):
P(no detectar) ≈ C(9, 2) · α²
≈ 36 · (0.005)²
≈ 36 · 0.000025 = 0.0009 (0.09%)
Eficiencia: R = 9/10 = 90%
La paridad es menos efectiva que la triple repetición para corregir, pero mucho más eficiente en términos de tasa de bits.
🧮 Calculadora de Probabilidad de Error
Resultado:
9. Protocolos ARQ (Automatic Repeat Request)
Cuando el sistema usa detección (no corrección) y existe un canal de retorno, el receptor pide retransmitir las tramas erróneas. Todo protocolo ARQ se apoya en cuatro mecanismos:
- ACK (acknowledge): aviso de que la trama llegó bien.
- NACK: aviso de que la trama llegó con error.
- Timeout: si el ACK no llega en un tiempo máximo, se retransmite automáticamente.
- Números de secuencia: identifican cada trama y permiten descartar duplicadas.
9.1 Stop-and-Wait ARQ
El emisor transmite una trama y espera su ACK antes de enviar la siguiente. Si llega NACK o se cumple el timeout, retransmite. Es el más simple, pero el canal queda ocioso mientras se espera la confirmación.
9.2 Go-Back-N
El emisor puede enviar hasta N tramas sin esperar ACK (ventana deslizante). Si la trama k llega con error, el receptor descarta k y todas las siguientes, y el emisor retransmite desde k en adelante. Solo usa ACK acumulativos: simple en el receptor, pero desperdicia ancho de banda cuando el canal es malo.
9.3 Repeat Selectivo (Selective Reject)
El receptor guarda en buffer las tramas buenas que llegan desordenadas y solo pide retransmitir la trama errónea (SREJ). Cuando llega la retransmisión, entrega todo en orden. Es el más eficiente, pero exige buffer y lógica de reordenamiento en el receptor.
9.4 Eficiencia y Comparación
Stop-and-Wait: η = Tt / (Tt + 2·Tp)
Con ventana N: η ≈ min(1, N·Tt / (Tt + 2·Tp)) (canal sin errores)
donde: Tt = tiempo de transmisión de la trama
Tp = tiempo de propagación del enlace
Ejemplo satélite: Tt = 10 ms, Tp = 270 ms
Stop-and-Wait: η = 10 / 550 ≈ 1.8%
Ventana N=55: η ≈ 550 / 550 = 100% (teórico)
| Protocolo | Ventana de Tx | Retransmite | Buffer en Rx | Uso típico |
|---|---|---|---|---|
| Stop-and-Wait | 1 trama | La trama errónea | No | Enlaces serie simples, enseñanza |
| Go-Back-N | N tramas | La errónea y todas las siguientes | No (descarta) | HDLC, protocolos tipo TCP |
| Repeat Selectivo | N tramas | Solo la errónea | Sí (reordena) | WiFi, TCP SACK, enlaces satelitales |
9.5 HARQ — ARQ Híbrido
Combina lo mejor de FEC y ARQ: primero se intenta corregir con el código; si el error supera la capacidad de corrección pero se detecta, se pide retransmisión.
- HARQ Tipo I: se retransmite el mismo paquete codificado; si sigue fallando, se descarta el anterior.
- HARQ Tipo II (redundancia incremental): cada retransmisión aporta paridad extra y el receptor combina todas las versiones recibidas, aumentando la probabilidad de éxito en cada intento.