Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Msabido
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4351783
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
1.2. Modelo de sistema de transmisión de datos
El canal introduce errores debido a interferencias y ruido ▪
• Errores simples: 0 → 1 000 → 010
Se dan en el caso de perturbaciones de la señal muy cortas
Por ejemplo en un canal a 1Mbps, la duración de la perturbación 1μs
• Errores a ráfagas: 2 o más bits se han modificado
En un canal a 1Mbps, una perturbación 10ms afecta 10000bits
Ráfaga de error de longitud L. Conjunto de L bits consecutivos en los que el primero y el último son erróneos.
La distancia entre el último bit de la ráfaga y el primero de la ráfaga siguiente será mayor o igual a L
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
1.3. Principio de funcionamiento
- Palabra código: agrupación de bits válida (0000; 011010101)
- Código binario C: conjunto de palabras código binarias C1={00,100,1111} C2={001,100,111}
- Código bloque: código que tiene todas las palabras de igual longitud.
o n=longitud de las palabras del código
o |C|=Número de palabras del código
- Consideraciones previas:
o Las palabras emitidas y recibidas tienen el mismo número de bits. No se pierden bits en el canal.
o Las palabras se delimitan correctamente. (Sincronización)
o Los errores son aleatorios e independientes. (Probabilidad)
Detección de errores:
• Siempre se transmite una palabra código
• Si la palabra recibida no pertenece al código
Corrección de errores:
• Si la palabra recibida es ERRONEA, entonces se busca la palabra código más parecida.
• A partir de esa palabra código estimada el decodificador entrega al destino una estimación del mensaje m’.
CÓDIGO DE PARIDAD PAR
No es bueno para estimar. Solo detecta
Se añade un bit al mensaje de manera que el #1s sea par.
errores simples pero no los corrige.
Mensaje (m): 00111
Palabra código (x): 001111 Bit de redundancia 𝑑𝐻 (𝐶) = 2
Palabra recibida (y): 000111 ¿Pertenece al código? El número de unos es impar -> error
Palabra código estimada: ¿? 100111 ó 010111 ó 001111 13 Se ha detectado el error
CÓDIGO DE REPETICIÓN
0→000 1→111 Bloque |C|=2 n=3 Detecta y corrige errores simples (errores de 1 bit) pero
Mensaje (m): 0 solo detecta los errores dobles
Palabra código (x): 000 Bits de redundancia
Palabra recibida (y): 001 ¿Pertenece al código?
Palabra código estimada: 000 El decodificador devuelve la palabra más parecida a la palabra enviada.
Se ha corregido el error
CÓDIGO CON NÚMEROS DE PALABRAS CÓDIGO 2n
Sea un código binario con longitud de palabra código n y con un número de palabras código igual a |C|=2n
Si n = 2 → |C| = 2n = 4 → C = {00,01,10,11} Estamos utilizando todas las posibles combinaciones ¡No es bueno!
Palabra código (x): 01
En este caso el decodificador no ha detectado el
Palabra recibida (y): 00 ERROR Los errores del canal han transformado una
Palabra código estimada: 00 ¿Pertenece al código? palabra código en otra palabra código. Los códigos de
longitud de palabra n que contienen las 2n palabras
código no son capaces de detectar errores
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4351783
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Disminución en la probabilidad de error
Sea un código de longitud de palabra n y capaz de corregir 1 error por palabra, la probabilidad de error de palabra
decodificada (PER) se calcula como:
𝑃𝐸𝑅 = 𝑃(2, 𝑛) + 𝑃(3, 𝑛) + ⋯ + 𝑃(𝑛, 𝑛)
Donde cada término de la suma es la probabilidad de que en una palabra de longitud n haya j errores:
𝑛
𝑃(𝑗, 𝑛) = ( 𝑗 ) 𝐵𝐸𝑅 𝑗 (1 − 𝐵𝐸𝑅)𝑛 −𝑗
Para un código C(n,k) capaz de corregir e errores, la probabilidad de error codificada por palabra PER:
𝑛
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4351783
2. Códigos bloque
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
|C|=2𝑘 η=k/n
Distancia de Hamming = #de bits en que difieren dos palabras 𝑑𝐻 (10111,11100)=3
El criterio de decodificación que se aplica es el de máxima probabilidad: La palabra transmitida con mayor probabilidad es la
palabra código con menor distancia de Hamming respecto a la recibida
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4351783
3.1. Codificación
Ejemplo de codificación de un código (6,5) Ejemplo de codificación del código de paridad par (6,5)
CÓDIGOS SISTEMÁTICOS
Código sistemático es un código lineal tal que su matriz generadora tiene la forma G = [𝐼𝑘 |𝑃]
Una matriz generadora estándar es este tipo G = [𝐼𝑘 |𝑃]
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4351783
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
3.2. Decodificación
En decodificación se emplea la matriz de chequeo de paridad o matriz H.
La matriz H tiene r=n-k filas por n columnas. 𝐻(𝑛−𝑘)𝑥𝑛
Si la matriz G es de forma estándar, G = [𝐼𝑘 |𝑃 ] , la matriz H se calcula de esta forma:
Proceso de decodificación:
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Ejemplo 1: Cálculo de la matriz H para el código de paridad par (7,4)
Esta matriz no está en forma estándar. No podemos utilizar estas ecuaciones para hallar H.
Para intentar tener una matriz en forma estándar, podemos realizar operaciones lineales con las filas de G (sumar filas o cambiar
el orden de las filas) y obtendremos una matriz que genera el mismo código C(n,k)
En este caso, simplemente sumando las filas, 1+3->1 y 2+4->4, obtenemos la matriz G en forma estándar.
Ahora si que podemos aplicar la fórmula para hallar H.
Ejemplo 4: Cálculo de la matriz H para el código (5,2)
Esta matriz no está en forma estándar. No podemos utilizar estas ecuaciones para hallar H.
Para calcular la matriz H, habrá que transformar el código original C en un código lineal sistemático C’ a partir de la
transformación de la matriz G => G’ (G’ tiene forma estándar)
Aplicar las ecuaciones a G’ para obtener una matriz H´
Por último, volver a transformar el cambio de H’ para obtener el código original y así obtener H.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4351783
Hay que buscar el número mínimo de columnas que sumadas den 0. En este caso 3. Por ejemplo, h4+h5+h6 => Distancia 3
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Ejemplo: Cuál es la distancia de un código lineal (6,5) con
Hay que buscar el número mínimo de columnas que sumadas den 0. En este caso 2. Por ejemplo, h1+h2 => Distancia 2
DESIGUALDAD DE SINGLETON
Si se quiere diseñar un código lineal de distancia de Hamming d, ¿Cuántos bits de redundancia habrá que añadir?
Desigualdad de Singleton. Cota superior de distancia mínima para cualquier código lineal (n,k)
𝑑 ≤ (𝑛 − 𝑘) + 1
Ejemplos:
Un código lineal C(7,4) tendrá como distancia de Hamming máxima 4
𝑑 ≤ (3 + 1); 𝑑 ≤ 4
Si se quiere diseñar un código lineal de distancia 9, será necesario como mínimo añadir 8 bits (n-k como mínimo
debe ser 8)
9 ≤ 𝑛 − 𝑘 + 1 => 𝑛 − 𝑘 = 8
3.3. Código de paridad
CÓDIGO DE PARIDAD PAR
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4351783
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Otra manera de realizar la suma:
000010=2; El primer bit indica el signo; Si 0=>positivo;
1011011=-36; Si 1=>Negativo, se busca el complemento
100100=26+22=-36
3.5. Ventajas
1. El proceso de codificación es más rápido y requiere menos espacio de almacenamiento
2. El proceso de decodificación más simple y rápido
Ejemplos de códigos lineales:
- Códigos Hamming: Se utilizan para la detección de errores en la memoria RAM de los ordenadores (códigos
SECDED "single error correction, double error detection")
- Códigos de Golay
o Comunicaciones digitales: Sondas espaciales
- Códigos Reed-Muller: Se utilizan para detección de errores en sistemas de almacenamiento como CDs, DVD
y discos duros
4. Códigos cíclicos
Un código lineal C(n,k) es cíclico si cualquier rotación de una palabra código es también palabra código
Ejemplo: C= {000, 110, 101, 011}
Se representan mediante polinomios C= {0, x2+x, x2+1, x+1}
Un código cíclico queda definido completamente por su polinomio generador g(x)
g(x) es un polinomio de grado n-k y tiene término independiente.
Cualquier palabra código se puede escribir como: c(x) = g(x) · m(x)
El polinomio generador de un código C es el polinomio de menor grado
Ejemplo: C= {0, x2+x, x2+1, x+1} → g(x)=x+1
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4351783
Codificar el siguiente mensaje m(x)= 𝑥 3 +𝑥 2 utilizando el siguiente polinomio generador g(x)= 𝑥 3 +x+1
a) m(x)*𝑥 𝑛−𝑘 =m(x)* 𝑥 3 = 𝑥 6 +𝑥 5 (1100 000)
b) Dividir 𝑥 6 +𝑥 5 entre g(x); el resto es x (010)
c) c(x)= 𝑥 6 +𝑥 5 +x (1100 010)
4.2. Decodificación
Los códigos CRC son códigos cíclicos que se utilizan para detectar errores
Capaces de detectar muchas combinaciones de error
Fáciles de implementar para cod/dec
Códigos muy utilizados para las comunicaciones de redes cableadas
Algunos códigos CRC estándar:
CRC-16 g(x)= 𝑥 16 +𝑥 15 +𝑥 2 +x+1 n-k=16
16 12 5
CRC-16 g(x)= 𝑥 +𝑥 +𝑥 +1
CRC-32 g(x)= 𝑥 32+𝑥 26 +𝑥 23 +𝑥 22 +𝑥 16 +𝑥 12 +𝑥 11 +𝑥 10 +𝑥 8 +𝑥 7 +𝑥 5 +𝑥 4 +𝑥 2 +x+1 (n-k=32; utilizado en redes LAN)
Ejemplo de la capacidad detectora
En general los CRC son capaces de detectar todos los errores simples, dobles e impares y las ráfagas de longitud
menor o igual a n-k. Además, detectan algunas ráfagas de error de longitud n-k+1 o mayor.
Por ejemplo:
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4351783
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Detecta todos los errores simples
Detecta todos los errores impares.
Detecta todos los errores dobles.
Detecta todas las ráfagas de error de longitud menor o igual que 32
Detecta algunas ráfagas de error de longitud 33
Detecta algunas ráfagas de error de longitud mayor que 33
Justificación de la capacidad detectora de CRC
r(x)=c(x)+e(x)=g(x)q(x)+e(x) donde g(x) es el polinomio generador
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Longitud del código para que
podemos detectar errores dobles
Se debe diseñar g(x) para que se capaz de detectar ciertos errores:
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4351783
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
El circuito queda determinado en función de n-k (número de registros de desplazamiento de 1 bits) y del polinomio
generador (conexiones verticales).
Bits de entrada: 1010001101 00000
El circuito debe calcular los n-k bits de redundancia que se añaden al mensaje
Se necesitan 15 ticks de reloj.
5 bits de
redundancia
Decodificador Resto
Circuito decodificador de un C(n,k):
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4351783
Si queremos corregir errores, ¿cúal sería la distancia mínima necesaria del código?
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Se necesita un código con capacidad de correción 4 errores por palabra.
Para corregir 4 errores=> dmin=9
El número de bits de redundancia que hay que añadir a cada mensaje tendría que ser de 8 o más bits (desigualdad
de singleton)
Código de bloque:
• Cada bloque de 260 bits (20ms de voz) se clasifica en dos clases diferentes:
o 182 clase 1 (bits protegidos)
o 78 de clase 2 (bits no protegidos)
• Estos bits se reordenan en orden decreciente de importancia y se pasan al codificador de bloque.
• Los primeros 50 bits de clase 1 se protegen a través de 3 bits de paridad con un código cíclico (53,50).
• Los bits de información y paridad de clase 1 se reordenan y se añaden 4 bits de cola iguales a 0. El resultado
es 189 bits: 182 info + 3 paridad + 4 de cola.
• Estos 189 + 78 van al código convolucional de ratio 1/2 y resultan 2*189+78=456 bits (22,8 kbps)
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4351783