↑

📡 Codificación para el Control de Errores

Detección • Corrección • ARQ • FEC • Distancia de Hamming

UNIVERSIDAD NACIONAL DE LA PATAGONIA SAN JUAN BOSCO
Facultad de Ingeniería — Departamento de Electrónica
Comunicaciones 1 — 2026

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
⚠ Contrapartida: La probabilidad de error con codificación es mucho menor (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.

m₁ m₂ m₃ c₁ m₄ m₅ m₆ c₂ m₇ m₈ m₉ c₃ c₄ c₅ c₆
Paridad bidimensional: c₁–c₃ chequean filas, c₄–c₆ chequean columnas

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.

m m m C m m m C m m m C m m m C
Ejemplo "CD de música o DVD": los bits de cada palabra (mismo color) se transmiten separados para que una ráfaga no destruya la palabra completa

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)
001 011 101 111 010 000 100 110
Código de Triple repetición
001 011 101 111 010 000 100 110
Código de Chequeo de paridad

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
✅ En resumen: A mayor distancia mínima, mayor capacidad de control de errores, pero menor eficiencia (más bits de redundancia). El diseño de un código busca el equilibrio óptimo entre ambos factores según la aplicació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 α)

  1. Transmisión: El emisor envía un bloque de prueba de 10,000 bits con una secuencia conocida (ej. secuencia pseudoaleatoria).
  2. Recepción: El receptor compara lo que recibió con la secuencia original y cuenta los errores. Supongamos que encuentra 50 bits erróneos.
  3. 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%)
✅ Conclusión del ejemplo:
  • 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.

Emisor Receptor timeout Trama 0 ACK 0 Trama 1 ACK 1 Trama 2 ¡se pierde! Re-transmisión Trama 2 ACK 2
Stop-and-Wait: se transmite de a una trama; si el ACK no llega, el timeout dispara la re-transmisión
⚠ Eficiencia baja en enlaces largos: en un enlace satelital (Tp ≈ 270 ms) con tramas de 10 ms, el canal se usa solo ≈1.8% del tiempo. Por eso existen los protocolos con ventana.

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.

Go-Back-N: se retransmite desde la trama fallada 0 1 3 4 5 2 2 3 4 5 Repeat Selectivo: solo se retransmite la trama fallada 0 1 3 4 5 2 2 3 (buffer) 4 (buffer) 5 (buffer)
Ante un error en la trama 2: Go-Back-N retransmite 2, 3, 4 y 5; Repeat Selectivo retransmite solo 2 y conserva 3, 4 y 5 en buffer

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.
✅ Dato práctico: 4G/5G usan HARQ con hasta 8 procesos paralelos (mientras se espera el ACK de uno, se transmiten otros), y WiFi emplea un esquema similar con block-ACK. Es el mecanismo que cierra el círculo entre la detección (sección 4) y la retransmisión (sección 2).