Está en la página 1de 4

CODIFICACIÓN DE CANAL

Mecanismos de control de errores para detectar y corregir errores de bits producidos en el canal con el fin de
proteger la información contenida en los datos. Pueden ser de tipo FEC (corrección de errores hacia delante)
como los códigos de bloques (Hamming, Reed-Salomón, BCH, Golay) y convolucionales (Trellis, Viterbi, Turbo
códigos) y de tipo BEC ó ARQ (solicitud de retransmisión automática) como CRC, cheksum, paridad, etc.
Codificación de Hamming.- Técnica de bloques lineal que consiste en que cada secuencia de información
dividido en bloques de k bits genera palabras de código C (codewords) de n bits usando una matriz generadora G:
C = DxG, dmín = n – k
G Æ Matriz generadora de k filas y n columnas (p.g. n = 2 -1, k = 2m-1-m, m≥3)
m

D Æ k bits de datos C Æ n bits de código η = k/n Æ Eficiencia de código


dmín Æ Distancia de Hamming, mínima diferencia en bits entre palabras de código.
T = (dmín-1)/2 Æ Capacidad de correción de T bits S = (dmín-1) Æ Capacidad de detección de S bits
Regla de ‘máxima verosimilitud’, determina la codificación correcta hallando la palabra de Hamming más
parecida (de mayor verosimilitud) a la palabra recibida en el Rx.
Problema
Determine la codificación de Hamming para la secuencia de datos 101011100 dividido en bloques de 3 bits
transmitido a 2400 bps usando la matriz G indicada. Implemente el diagrama de bloques lineal indicando Vtx. Para
la decodificación use la regla de ‘verosimilitud máxima’ y el concepto de matriz HT

1 0 0 1 0 1 d1 El mecanismo de codificación se denota como FEC(n,k).


 
G = 0 1 0 0 1 1 d 2 Como la matriz G tiene k = 3 filas y n = 6 columnas, entonces
0 0 1 1 1 0 d 3
tenemos un código de Hamming FEC(6,3)
Solución
Cada secuencia de datos se divide en bloques de 3 bits: D = [d1, d2, d3]
Efectuando el producto matricial tenemos: C = DxG = [d1, d2, d3, d1⊕d3, d2⊕d3, d1⊕d2]
En la tabla se muestran todas las combinaciones de D posibles y sus respectivos códigos de Hamming. Observe
que dmín=3 entre todas las palabras de código. Por tanto, el código puede corregir por lo menos T = 1 error y
detectar hasta S = 2 errores. La figura muestra el diagrama de bloques lineal correspondiente.

D C Eficiencia:
d1 d2 d3 c1 c2 c3 c4 c5 c6 η = k/n = 1/2

1 1 1 1 1 1 0 0 0
1 1 0 1 1 0 1 1 0
Salida codificada
1 0 1 1 0 1 0 1 1
1 0 0 1 0 0 1 0 1
0 1 1 0 1 1 1 0 1 101 011 100 101011 011101 100101
0 1 0 0 1 0 0 1 1 2400 bps Vtx = (6/3)(2400) = 4800 bps
0 0 1 0 0 1 1 1 0
0 0 0 0 0 0 0 0 0

Ej. secuencia recibida: 101111 010101 100101 Æ 101011 011101 100101


1 0 1 c 1 1 0 1 0 1 1 1 0 1 Secuencia corregida
  1 1 0 1 0 0 1 0 0
0 1 1 c 2
1 0 0 0 0 1 0 0 1
1 1 0 c 3 La regla de máxima verosilimilitud se
HT =   0 1 0 1 1 0 0 0 0
aplica encontrando las palabras de
1 0 0 c 4 0 0 1 Síndrome ≠ 0 Síndrome = 0 códigos más parecidas a las recibidas
0 1 0 c 5 1 0 0 Error en C3 No hay error
en el Rx, al menos con una diferencia
 
0 0 1 c 6 Síndrome ≠ 0
de 1 bit (dmín =1)
Error en C4

1
Codificación CRC.- Se basa en polinomios generadores G(x) para obtener las palabras de código T(x) a partir del
mensaje M(x). Tiene capacidad de detección de errores manteniendo un alto grado de eficiencia de código. El
receptor CRC detecta errores si la división R(x)/G(x) tiene residuo diferente de ‘cero’. Se define:

T(x)=M(x) U FCS, FCS = Residuo o secuencia de chequeo de trama

Ej. Determine la palabra T(x) usando el polinomio generador G(x) = x4+x+1 para el mensaje 1011010101.

10110101010000 |10011
10011 1010101010
--10110 Obs:
10011 - G(x)= 1.x4 + 0.x3 + 0.x2 + 1.x + 1
--10110 ∴ Divisor = 10011
10011
--10110 - Se agrega al dividendo tantos ceros
10011 como grado tenga G(x)
--10100 - El residuo FCS tiene tantos bits como
10011
--1110 = Residuo = FCS grado tenga G(x)

T(x)= 10110101011110 Æ Mensaje transmitido


M(x) FCS

Q
Datos CRC
+ D + D D D
P
2 3 4
1 x x x x

Salida de k bits Salida de bits de


de datos FCS
En la figura se muestra el codificador CRC para G(x) = x4+x+1. El interruptor se mantiene en la posición Q hasta
que el k-ésimo bits de datos accede al último elemento de retardo D o registro r = n – k = 4, luego el interruptor
conmuta a la posición P, para transmitir los r = 4 bits de comprobación de paridad o FCS.
En el Rx se recibe el mensaje R(x) = T(x) + efectos del canal. Se debe comprobar que el R(x) recibido sea múltiplo
de G(x), es decir que la operación R(x)/G(x) tenga residuo = 0. Si el residuo ≠ 0 significa que hay errores.
En HDLC (High Level Data Link Control) se usa CRC de grado 16 con G(x) = x16 +x12 + x5 + 1 de la norma UIT-T
V.41 en la práctica se comprueba que este CRC puede detectar el 99.9 % de los errores. Otros CRC son:
CRC-12: x12 +x11 + x3 +x2 + x + 1
CRC-16: x16 +x15 + x2 + 1
CRC-32: x32 +x26 + x23 +x22 + x16 + x12 +x11 + x10 + x8 + x7 + x5 +x4 + x2 + x + 1
CRC-12 se emplea cuando la longitud del carácter es de 6 bits... genera FCS de 12 bits
CRC-16 y UIT-T V.41 se emplean para caracteres de 8 bit (byte)... genera FCS de 16 bits
CRC-32 genera FCS de 32 bits y se emplea en IEEE-802 y tx síncrona point-to-point
En tx de datos de costas distancias en vez de códigos correctores FEC, es preferible emplear códigos detectores
BEC, ya que seguidos de una retransmisión ARQ, se consigue ahorrar bits de redundancia y BW. En éste sentido
el CRC se comporta como un híbrido FEC/ARQ.

2
Codificación Convolucional.- Se basa en el desplazamiento de celdas S de un registro de estado para obtener
las palabras de código. Es un gran corrector de errores a costa de una baja eficiencia de código. Destaca la
codificación Trellis usada en las últimas versiones de fax-módem y la decodificación de Viterbi.
Ej. Determine la codificación Convolucional para el mensaje 110101 usando diagramas de estado.
Datos
S1 S2 S3
Procedimiento:
- Determinación de la lógica combinacional. Elaboración
de una tabla de verdad. Ej.
XOR XOR V1 = S1 ⊕ S3
V2 = S1 ⊕ S2
v1 v2 - Elaboración de un diagrama de estados o de otros
Salida algoritmos de codificación: árbol, rejilla, etc.
codificada - Determinación de la codificación convolucional

Solución: Se implementa el siguiente algoritmo de codificación:


1/00
Tabla de verdad Diagrama de estados
11
S3 S2 S1 V1 V2 1/10 0/11
0 0 0 0 0 entrada salida 0/01
0 0 1 1 1 S1/ V1 V2 S2 S1 01 10
0 1 0 0 1 Estado 1/01
0 1 1 1 0 siguiente
1 0 0 1 0 S3 S2 1/11 0/10
1 0 1 0 1 Estado 00
1 1 0 1 1 presente Estado
1 1 1 0 0 inicial y 0/00
final

Secuencia de entrada: 1 1 0 1 0 1 0 0 0

Secuencia de salida: 11 10 11 01 01 01 01 10 00

3
Scrambling (interleaving).- Se basa en la aleatorización de la información codificada con el fin de facilitar la
corrección de errores en el receptor. Ante una situación de ráfaga de errores de bits en el canal, la operación de
‘scrambling’ aisla los errores de bits para que sean corregidas una por una por la técnica de control de errores
correspondiente.
Bit 1 Bit 5 Bit 9 Bit l3
Bit 2 Bit 6 Bit 10 Bit l4
Bit 3 Bit 7 Bit 11 Bit l5
Bit 4 Bit 8 Bit 12 Bit 16

d FEC/ARQ c Scramblig Salida Descramblig c FEC/ARQ d

11010100 1110110101010110 1100111110010110 110xxxx110010110 1x101x010x01x110 11010100

1 1 0 0 1 x 1 0
1 1 1 l 1 x 0 l
1 0 0 l 0 x 0 l
0 1 1 0 x 1 1 0

CONTROL DE ERRORES POR PARIDAD


Este método detecta un solo error en transmisiones asíncronas y protocolos orientados al byte.
Con este esquema se añade un bit de paridad a cada carácter antes de ser transmitido. Luego en el receptor si se
verifica la paridad, se asume que no hubo errores. Si es diferente se asume que hubo un error. Sin embargo no
hay posibilidad de detectar dos errores de bits.

CHECKSUM
Cuando se transmiten bloques de caracteres, hay una probabilidad incrementada de que un carácter, y de aquí el
bloque, contenga un error. La probabilidad de que un bloque tenga un error es conocida como Block Error Rate
(BKER). En este método se colocan los caracteres en un bloque de dos dimensiones. A cada carácter se le
adiciona un bit de paridad con el método de control de errores por paridad. Adicionalmente se le añade un bit de
paridad por cada posición de bits a través de todos los caracteres. Es decir se genera un carácter adicional LRC.

Bit 1 Bit 2 Bit n BP


Bytes de controles de paridad:
Carácter 1 b11 b21 bn1 R1

LRC Control de redundancia longitudinal Carácter 2 b12 b22 bn2 R2


VRC Control de redundancia vertical
Carácter m b1m b2m bnm Rm
LRC C1 C2 Cn Cn+1

VRC