Está en la página 1de 73

CODIFICACIÓN DE CANAL

2017B
Ing. Fanny Flores E.
Codificación de canal

2
Codificación de canal
 Técnicas de codificación empleadas en sistemas de
comunicación digital.
 Protegen los datos contra ruido (errores) introducidos
durante la transmisión.
 Mejoran el rendimiento BER del sistema.
 Provee ¨Ganancia de código CG¨ (en dB).
 CG es la diferencia en Eb/No entre un sistema codificado
y no codificado para un BER dado.
 Costo: expansión de ancho de banda

3
Codificación de canal
Pb

10-1 Coded

10-2
Uncoded
10-3

10-4

10-5
Coding Gain Eb/No (dB)

Ganancia de Código (CG) a costo de ancho de banda!


4
Clasificación de Codificación
de Canal
 La redundancia estructurada es utilizada para controlar
errores en 2 formas:
1. Automatic Repeat Request (ARQ):
 Detección de error y retransmisión.
 Enlace bidireccional.

5
Clasificación de Codificación
de Canal
2. Forward Error Correction
(FEC):
 Detección y corrección de
error.
 Enlace unidireccional.
 FEC se clasifica en:
 Códigos de bloque
 Ej: Hamming, BCH, RS, Turbo, LDPC,
etc.
 Códigos convolucionales
 La elección del tipo de código
FEC depende de las
aplicaciones, características
del canal, complejidad de la
implementación y costo. 6
Códigos de bloque
 Al vector de información de longitud k se añade r bits de
redundancia (también llamados bits de chequeo o
paridad).
k bits r bits

Information bits Parity bits

n bits codeword

Tamaño de la información: k
Bits de paridad: r
Tamaño de la palabra código (codeword): n = k + r

7
Códigos de bloque
 El vector de información de k bits es transformado
en una palabra código única de tamaño n.
Transmitter Receiver
Channel
k-bit n-bit n-bit k-bit
Encoder + Decoder

2 k codewords 2 n vectors

Noise

Código de bloque (n,k)


k
Velocidad del código =
n

Número de vectores de información = 2𝑘


Número de vectores de palabras código = 2𝑘 8
Códigos de bloque
 Un código de bloque
(n,k) es lineal si:
1. Las 2𝑘 palabras código 2n vectors constitute
forman un subespacio. the entire space V n

2. La suma de cualquier
par de palabras código
del código de bloque
(n,k) es otra palabra
código del grupo.
k
3. La palabra código (todo 2 vectors constitute
the subspace of codewords
cero) existe en el
grupo.

9
Distancia Hamming
 Es el número de posiciones en las que cualquier par de
palabras código difieren.
 Denotado por d(U,V) donde U yV son dos palabras código
de longitud n

n
d (U , V )   ui  vi (+ suma modulo-2)
i 1

10
Distancia Hamming mínima
 Es la distancia más pequeña entre todos los pares de
palabras código.
 Denotado por:
d min  min{d (U , V )}
 Para códigos de bloque lineales, es igual al peso
mínimo Wmin de todas las palabras código (excluyendo
la palabra código todo cero):
d min  wmin
 Peso: Es el número de elementos diferentes de 0 en una
palabra código.
11
Detección y Corrección de
errores
 Detección de error: El número máximo garantizado de
errores que el código puede detectar es:
ed 1
min

 Corrección de error: El número máximo garantizado


de errores que el código puede corregir es:

d
  1
t  min
  Tiene que ser número entero


2 
 
12
Distancia Hamming mínima
dmin para Corrección de errores

 U y V son palabras código válidas.


 Los círculos rojos son palabras código corrompidas con
1 a t errores.

➢ Para garantizar corrupción hasta t errores, la Distancia Hamming


mínima en un código de bloque tiene que ser dmin=2t+1
13
Código de chequeo de paridad
simple
 Ejemplo más sencillo para detección de errores.
 Codificación: el bit de chequeo se hace 0 o 1 para que el
total de números 1 en cada palabra código sea par.
 Ejemplo:
 Código (3,2):
n=3, k=2, r=1
número de palabras código = 2k = 4
R=2/3=0.666
dmin=2
e=1, t=0

14
Códigos de Repetición binaria
 Ejemplo más sencillo para corrección de errores.
 Codificación: El bit de información es tomado y
repetido r veces.
 Ejemplo:
 Código (3,1)
n=3, k=1, r=2
número de palabras código = 2k = 2
R = 1/3=0.333
dmin=3
e = 2, t = 1
 Menor velocidad de código, pero mejor e y t, que el ejemplo
anterior.
15
Códigos de bloque Hamming
 Codificación popular y simple desarrollada por RW
Hamming.
 Tipo de códigos de bloque lineales para corrección de
errores. Usados ampliamente en comunicaciones digitales.
 Para cualquier entero positivo r  3, existe un código
Hamming con los siguientes parámetros:
 Tamaño del código: n = 2r - 1
 Número de bits de información: k = 2r - r - 1
 Número de bits de paridad: r=n-k
 Capacidad de corrección de error: t = 1
 Distancia mínima: dmin = 3
 Capacidad de detección de error: e = 2
16
Códigos de bloque Hamming
 Ej:
 r (n,k)
3 (7,4)
4 (15,11)
5 (31,26)

 Estos códigos son capaces de corregir hasta 1 error y


detectar hasta 2 errores.
 La codificación se realiza al obtener los bits de paridad de
una suma módulo 2 de los bits de información.

17
Códigos de bloque Hamming
 Ejemplo: Código Hamming (7,4)
 n=7, k=4, y r=3
 No. de palabras código=2k=24=16
 Asumimos que los 3 bits de
paridad pi, son generados por:

p1 = m1+m2+m4
p2 = m1+m3+m4
p3 = m2+m3+m4

 Donde mi son los bits de


información y + es una suma
módulo 2.

18
Códigos de bloque Hamming
 Cont. Ejemplo:
 La palabra código todo cero (0000000) está presente y la suma
módulo 2 de cualquier par de palabras código es otra palabra código
del grupo. Por lo tanto, el código de bloque binario (7,4) es un código
de bloque lineal.
 El vector V7 del espacio entero consiste de 2n=27=128 vectores.
 El vector del subespacio consiste de 2k=24=16 palabras código.
 R = k/n = 4/7 = 0.571
 dmin = Wmin = 3
 e= dmin-1=3-1=2
 t= (dmin-1) / 2= (3-1)/2 =1
 Por tanto, este código tiene capacidad de detectar hasta 2 errores y
corregir 1 error.

19
Codificación utilizando la Matriz
Generadora G
 Una matriz generadora G, es una matriz de k por n, que
consiste de k vectores linealmente independiente de
longitud n.
V  v v ...v



1   11 12 1n 

V  v v ...v 

G  2    21 22
 2n 
.   . . ....





V  v v ...v 
k   k1 k 2
 kn 

 Cada palabra código es generada por una combinación


lineal de estos k vectores.
20
Codificación utilizando la Matriz
Generadora G
 Proceso de codificación:
U  mG
➢ U es la palabra código generada de longitud n.
➢ m es el vector información de longitud k.

 El código es totalmente definido por G.


 Por lo tanto, el codificador solo necesita almacenar las k filas
de G en lugar de los 2k vectores totales del código.
 Esto representa una reducción en la complejidad del
sistema.
21
Construcción de G
 G consiste de 2 porciones:
 Los bits de paridad Ps y la matriz Identidad Ik (1s en la
diagonal principal y 0s en el resto):

G  P | I k 
p p ... p 10... 0 
 11 12 1r 
 
p p ... p 01...0
  21 22 2r 
. . .... ......



Donde pij =0 or 1
 p p ... p 0 0 ...
1 
 k1 k 2 kr 

22
Construcción de G
U mG p p ... p 10 ...0 
 11 12 1r 

    p p ... p 01...0 
 u ,u ,...,un    m ,m ,...,m   21 22 2r 
 1 2   1 2 k   . . .... .. .... 

p p ... p 00 ...1
Donde  k1 k 2 kr 

u  p  m p m p ...m p
1 1 1 11 2 21 k k1
u  p  m p m p ...m p
2 2 1 12 2 22 k k2
.
ur  pr  m p m p ...m p
1 1r 2 2r k kr
u m
r 1 1
.
un  m
k 23
Presentación de G
 Existen dos formas de presentación de G:

U  [ p1 , p2 ,..., pr ,m1 ,m2 ,...,mk ]  G  P | I k 


U  [m1 ,m2 ,...,mk , p1 , p2 ,..., pr ]  G  I k | P 

➢ Longitud de U es n (n=k+r):
➢ Longitud del mensaje es k.
➢ Longitud de bits de paridad es r.
➢ Dimensión de G es k por n (k filas y n columnas).
➢ Dimensión de Ik es k por k.
24
Codificación utilizando la Matriz
Generadora G
 Ejemplo 1:

Considerar el código de bloque binario (6,3). Existen 2k =23=8 vectores


información, por lo tanto existen 8 vectores palabras código, cada uno
de longitud 6.
Asumir que los tres bits de paridad, pi están dados por las siguientes
ecuaciones:
p1  m1  m3
p2  m1  m2
p3  m2  m3
Donde mi son los bits de información y + es suma en módulo 2.
25
Codificación utilizando la Matriz
Generadora G
 Cont. Ejemplo 1:
Vectores información Palabra código
m1 m2 m3 p1 p2 p3 m1 m2 m3
0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 1 0 0
0 1 0 0 1 1 0 1 0
1 1 0 1 0 1 1 1 0
0 0 1 1 0 1 0 0 1
1 0 1 0 1 1 1 0 1
0 1 1 1 1 0 0 1 1
1 1 1 0 0 0 1 1 1
26
Codificación utilizando la Matriz
Generadora G
 Cont. Ejemplo 1: 1 1 0 1 0 0
 
G   P | Ik   0 11 0 1 0
 
1 0 1 0 0 1

110100

U  [ m][G ]  [110] 011010

 
101001
 1(110100)  1(011010) 0(101001)  101110
ó
= 1 , 1+1 , 1 , 1 , 1 , 0 = 101110
27
Codificación utilizando la Matriz
Generadora G
 Ejemplo 2:
Para el código (6,3), asumir las siguientes ecuaciones para los bits de
paridad:
p1 m2  m3
p2 m1  m3
p3 m1 m2
a) Contruir G
b) Reescribir la ecuación de chequeo de paridad a partir de G.
c) Codificar m=[111]

28
Codificación utilizando la Matriz
Generadora G
 Cont. Ejemplo 2: 0 1 1 1 0 0
(a) G   P | I3   1 0 1 0 1 0
 
1 1 0 0 0 1
(b) U  mG
011100
 [m1 , m2 , m3 ] 101010
110 001
 [(m2  m3 ), (m1  m3 ), (m1  m2 ), (m1 ), (m2 ), (m3 )]
 [ p1 , p2 , p3 , m1 ,m2 ,m3 ]

(c) m = 1 1 1  uso U = mG = [0 0 0 1 1 1] 29
Decodificación con la Matriz de
chequeo de paridad H
 Para cada matriz generadora G existe una matriz H, de
modo que las filas de G son ortogonales a las filas de H.

GH  0T

 Para cumplir los requerimientos de ortogonalidad:

H   I r | PT 
 
➢ Donde Ir es una matriz identidad (r por r)
➢ PT es la matriz transpuesta (r por k) de la parte de paridad de la
matriz generadora G.

30
Decodificación con la Matriz de
chequeo de paridad H
 Es sencillo verificar que:

UH  0 T

➢ Donde U es una palabra código si y solo si UHT=0. Esto es


básicamente realizar la comprobación de paridad en U.

➢ Por tanto, con esta propiedad la matriz de chequeo de paridad H puede


ser usada para probar si un vector recibido es una palabra código válida
o no.

➢ Por ejemplo, la matriz H es usada para detectar errores


31
Decodificación con la Matriz de
chequeo de paridad H
 Test de Síndrome (para Detección de errores):

S  rH T
 Este síndrome es el resultado de una revisión de paridad
desarrollada sobre r para determinar si r es una palabra
código válida o no.
 Si S=0 entonces r es una palabra código válida y el
decodificador la acepta como su salida.
 Caso contrario, si S0 entonces r contiene errores y el
decodificador tomará acciones para localizar los errores y
corregirlos de ser posible.
32
Decodificación con la Matriz de
chequeo de paridad H
 Ejemplo 1
Asumir el código (6,3) con la matriz Generadora G mostrada abajo y el
vector recibido r=001110. Determinar si r es una palabra código válida o no
100
110100 100101 010
 

G  011010
    H 010110  001
     H  
T

101001 001011 110 


100 011 
010  
  101 
001
S  rH  001110   100  S ≠ 0 por tanto, un error ha
T

110  ocurrido y r no es una palabra


011  código válida.
 
101  33
Decodificación del Síndrome
 Asumir Ui palabra código transmitida y ej el ruido de
canal. U r=U + e
i i j
+

ej
 El vector recibido r es básicamente la suma de Ui y el
vector error ej.
 Por lo tanto, si conocemos el patrón del error ej
entonces es posible encontrar U por simple sustracción.

34
Decodificación del Síndrome
 Si el patrón de error causado por el canal es un líder
coset (vector error permitido), entonces el vector
recibido r será decodificado correctamente en la palabra
código transmitida Ui.
 Cada fila es llamada coset y el patrón de error en cada fila es
llamada líder coset.
 Si el patrón de error no es un líder coset (vector error no
permitido), resultará una decodificación errada.
 Tenemos que definir un set de patrones de error
corregibles y calcular el síndrome para cada uno.

35
Decodificación del Síndrome (Cálculo
de Síndrome de un coset)
 Si ej es el patrón de error del coset jth, entonces el vector
r = Ui + ej está en este coset.
 El síndrome de este vector r es:

S = r HT = (Ui + ej) HT= Ui HT + ej HT


 Como Ui es una palabra código, entonces UiHT=0, y
podemos escribir:

S = ej HT

36
Decodificación del Síndrome (Cálculo
de Síndrome de un coset)

 Esto significa que todos los miembros de un coset tienen


el mismo síndrome.
 El síndrome para todos los cosets es diferente.
 Por tanto, el síndrome calculado tanto en el vector
recibido r como en el vector error ej es el mismo.
 Este es un fundamento importante para el proceso de
decodificación.
 El mapeo entre los patrones de error y el síndrome es
uno a uno.

37
Decodificación del Síndrome (Pasos)

 Definir 2r patrones de error corregibles ej , y calcular el


síndrome S = ejHT para cada uno.
 Comenzar con el patrón de no error (vector todo 0),
 Seguido por patrones de un solo error (“1” en una posición),
 Luego los patrones de 2 errores (“1” en dos posiciones), etc.
 Hasta terminar todos los 2r posibles patrones.

 Construir la tabla de búsqueda de Síndrome.


 Construir una tabla de búsqueda de todos los patrones de error
corregibles e, y sus correspondientes síndromes S.

38
Decodificación del Síndrome (Pasos)
 Paso 1:
 Calcular el síndrome del vector recibido r utilizando:

S = r HT

 Paso 2:
 Encontrar el correspondiente patrón de error del síndrome
(calculado en el paso 1) utilizando la tabla de búsqueda de
síndrome.
 Este patrón de error es un estimado del error introducido por el
canal.
 Denotarlo como e

39
Decodificación del Síndrome (Pasos)
 Paso 3:
 Encontrar un estimado de la palabra código
transmitida U , restando el patrón de error estimado
𝑒Ƹ de r, así:
Uˆ  r  eˆ  r  eˆ
 Notar que:
 Si e  e 
entonces U  U . Por tanto, error corregible.
 Si e  e entonces U  U . Por tanto, error al decodificar.

40
Decodificación del Síndrome
 Ejemplo 1:
Asumir el código de bloque lineal (6,3) con la siguiente
matriz generadora G
110100 
G 
 011010 
 

101001 
Determinar si el decodificador es capaz de garantizar
corrección de error simple (1 error)

41
Decodificación del Síndrome
 Cont. Ejemplo 1:

 Este código tiene 2k=23=8 palabras código válidas, 2r=23=8


patrones de error corregibles.
 El arreglo standard consiste de 2n=26=64 vectores de longitud
6.
 El último patrón de error es escogido arbitrariamente para
completar el arreglo de 8 vectores.
 La decodificación será correcta si y solo si el patrón de error
causado por el canal es uno de los vectores en la primera
columna.

42
Decodificación del Síndrome
 Cont. Ejemplo 1:

 000000 110100 011010 101110 101001 011101 110011 000111


 000001 110101 011011 101111 101000 011100 110010 000110
 000010 110110 011000 101100 101011 011111 110001 000101
 000100 110000 011110 101010 101101 011001 110111 000011
 001000 111100 010010 100110 100001 010101 111011 001111
 010000 100100 001010 111110 111001 001101 100011 010111
 100000 010100 111010 001110 001001 111101 010011 100111
 010001 100101 001011 111111 111000 001100 100010 010110

43
Decodificación del Síndrome
 Cont. Ejemplo 1:
 Definir 8 patrones de error:
 Patrón de no error (e1) : 000000
 Patrones de 1 solo error (e2-e7): 000001, 000010, 000100, 001000, 010000,
100000
 Patrón de 2 errores (e8) : 010001 (elegido arbitrariamente).
 Calcular el síndrome para cada patrón de error:
100  100 
010 010
   
001 001
S j  ej H T  ej   e.g . S1  e1 H T  [000000]    [000]
110  110 
011 011
   
101  101 
 Repetir los cálculos para obtener S1, S2, S3,….. S8.
44
Decodificación del Síndrome
 Cont. Ejemplo 1:
Patrón de error (ej) Síndrome (Sj=ejHT)
000000 000
000001 101
000010 011
000100 110
001000 001
010000 010
100000 100
010001 111

 Cada síndrome es único, por lo tanto el decodificador puede


identificar el patrón ej al cual corresponde.
 Este código puede corregir todos los patrones de error simples
(1 error), y un patrón de error doble.
45
Decodificación del Síndrome
 Ejemplo 2:
Para el mismo código de bloque lineal (6,3) del ejemplo 1,
asumir que el vector recibido es r=[001110]. Mostrar los
pasos de decodificación del síndrome utilizando la tabla de
búsqueda desarrollada anteriormente.

46
Decodificación del Síndrome
 Cont. Ejemplo 2:

 Paso 1: S = [001110] HT = 100

 Paso 2: e = 100000 (utilizando la tabla de búsqueda)

 Paso 3: U  r  e
= 001110 + 100000
= 101110

➢ Notar: 101110 es una palabra código válida, y por


tanto un error ha sido corregido.

47
Codificación BCH
 Los códigos Hamming tienen una ganancia de código
limitada ya que solo permiten corregir 1 error.

 Los códigos BCH son una generalización de los códigos


Hamming, que permiten la corrección de múltiples
errores, aumentando la ganancia de código.

 Proveen una amplia elección de longitudes de bloque,


velocidades de código, tamaño de alfabeto y capacidad
de corrección.

48
Codificación BCH
 Los códigos BCH pueden ser diseñados para corregir casi
cualquier número de errores.
 A altas velocidades, típicamente superan a cualquier otro
código de bloque con los mismos n y k a un SNR
moderado.
 Ejemplos: (n, k, dmin):
 (7,4,3)
 (15,11,3)
 (15,7,5)
 (15,5,7)
 (31,26,3)
 (31,16,7)
 (31,11,11) ….
49
Códigos Convolucionales
 La estructura de los Códigos Convolucionales (CC) es
fundamentalmente diferente a los Códigos de Bloque (BC).
 En los BC cada secuencia de entrada de k bits de información
es mapeada en una secuencia única de salida de n bits de
longitud de una forma fija, sin considerar los bits de
información previos.
 En los CC cada secuencia de entrada de k bits de información
es codificada en una secuencia de salida de n bits de
longitud, pero ésta depende no solo de los k bits de
información sino también de las últimas (K-1)k entradas del
codificador.

50
Códigos Convolucionales
 Los CC son códigos con memoria, a diferencia de los BC,
que son sin memoria.
 Cada palabra código en BC depende solo de los bits de
entrada a ser codificados.
 CC tiene una estructura más compleja.
 No podemos separar la secuencia de palabras código de
salida en palabras código independientes, toda la
secuencia debe ser considerada.
 CC son principalmente para corrección de errores.
 El decodificador Viterbi es el algoritmo de decodificación
más importante.
51
Códigos Convolucionales
 Un codificador convolucional está descrito por tres
enteros:

 k Número de bits de información que ingresan al codificador


 n Número de bits de salida del codificador
 K Restricción de longitud del código convolucional. Este es el
número de estados en el registro de cambios del codificador.

m Convolutional U
(k) Encoder (n)
(K)
52
Códigos Convolucionales
 Estructura básica del codificador
1 2 3 ... kK
Input sequence kK -stage
shift register
m=m1, m2, ..., mi, ...
(shifted in k at a time)

1 2 ... n n modulo-2
adder

Codeword sequence U=U1, U2, ..., Ui, ...


where Ui = u 1i , u 2i , ... , u ni
53
Códigos Convolucionales
 Ejemplo 1:
CC con velocidad ½ y restricción de longitud K=3, con los
siguientes vectores de conección:
g1  [1 1 1] g 2  [1 0 1]
+
Input bits Output coded bits
u1
m
U
k=1 K=3 u2 n=2

Suponer que a los tiempos t1, t2, t3, t4, t5 y t6 los bits de
entrada son 101000, respectivamente
54
Códigos Convolucionales
 Cont. Ejemplo 1:
+ +
u1 u2 u1 u2
u1 u1
1 t1 1 0 0 1 1
0 t4 0 1 0 1 0
u2 u2
+ +

+ +
u1 u2 u1 u2
u1 u1
0 t2 0 1 0 0 t5
1 0 0 0 1 1 1
u2 u2
+ +

+ +

u1 u2 u1 u2
u1 u1
1 t3 0 t6 0 0 0
1 0 1 0 0 0 0
u2 u2

+ +

Secuencia I/P : m=101000 -- Secuencia O/P U = 1 1 1 0 0 0 1 0 1 1 0 0 55


Códigos Convolucionales
 Tabla de codificación completa
Bit Register Current Next Output Codeword

I/P (0 or 1) Content State (ti) State (t i+1) u1 u2

0 000 00 00 0 0
1 100 00 10 1 1

0 010 10 01 1 0
1 110 10 11 0 1

0 001 01 00 1 1
1 101 01 10 0 0

0 011 11 01 0 1
1 111 11 11 1 0 56
Códigos Convolucionales
 Diagrama de estados
0/00

1/11 00
0/11
1/00
10 01

0/10

1/01 11 0/01

1/10
57
Diagrama Trellis
 Diagrama de transición de estados en función del
tiempo.

 Trellis es una secuencia de 2K-1 estados (puntos) para


cada ciclo de reloj.

 Las ramas corresponden a las transiciones entre


estos estados,

 Las etiquetas de las ramas corresponden a la salida


del codificador.
58
Diagrama Trellis
State t1 t2 t3 t4 t5
00 00 00 00
00
11 11 11 11

11 11
10 10
00 00
Branch
10 codeword
10
01

01 01 01 01 01

11
10 10
repeats
Input bit 0
Input bit 1

59
Decodificación Viterbi (VD)
 Método de decodificación de códigos convolucionales más
ampliamente utilizado.

 La tarea del decodificador es estimar el camino a través


del diagrama Trellis.

 La secuencia recibida es comparada con todas las


posibles secuencias.

 La secuencia que tiene la mayor similitud (más próxima


en distancia) a la secuencia recibida, es elegida como la
salida del decodificador. 60
Decodificación Viterbi (VD)
 El algoritmo VD implica cálculo de la cantidad de similitud
entre la señal recibida al tiempo ti, y todos los caminos
Trellis entrando en cada estado al tiempo ti.

 Cuando dos caminos entran al mismo estado, se elige el


que tenga la menor métrica.

 Este camino elegido es llamado sobreviviente.

61
Decodificación Viterbi (VD)
 VD es un decodificador de similitud máxima que elige
el camino trellis con su correspondiente secuencia a la
mínima distancia de la secuencia recibida.

 Con codificación “Hard decision”


 El algoritmo VD encuentra el camino que está a la mínima
distancia Hamming de la secuencia recibida.

 Con codificación “Soft decision”


 El algoritmo VD encuentra el camino que está a la mínima
distancia Euclideana de la secuencia recibida.

62
Decodificación Viterbi (VD)
State t1 t2 t3 t4 t5 t6
00 2 00 1 00 1 00 1 00 1 ...
00
11 11 11 11 11
0 1 1 1 1

1 1 1
10 11 11 1 11 1
10 1 00 Branch
00 00
2 metric

01 10 10 0 10 2
2
0
01

0 01 2 01 01
01 01 2 01 0
0 0
11
10 2 10 0 10 2

63
Decodificación Viterbi (VD)
Rx Sequence: 11 01 01 10 01
0 / 00 2 [2] 00 1 [3] 00 1 [4,3] 00 1 [4,1] 00 1
00 [2,4]
1 11 1 11 1
1 / 11 11 11
0 1 [3] 1 [4,3]
[0] 1 [4,1] 1
11 11 11 [2,4]
10 1
1 00 1
00 00
10
10 10 10 2
2 2 0
[3,2]
01 [3,4]
[2] [5,0] 0
01 0 2
01 01 01
01 01 01 0
0 0 2
11 0 2 [1,4]
10 2 10 [5,2] 10
Input bit 0 [0] [3,2]
Input bit 1

Secuencia I/P = 11 01 01 10 01  Secuencia O/P = 11 01 01 00 01 64


Distancia libre
 La distancia libre tiene un efecto significativo en la capacidad
de corrección de error, y por tanto en el rendimiento del BER
de CC, así como la distancia mínima Hamming para BC.
 La distancia libre representa la distancia Hamming mínima
entre todos los pares posibles de palabras código en el
código.
 Dado que un CC es un código lineal, es sencillo encontrar la
distancia mínima entre cada palabra código y la palabra
código de todo ceros.
 En CC, consideramos la secuencia de palabra código completa
ya que no es posible dividir la secuencia del código en
palabras código distintas.
65
Distancia libre
 Para el ejemplo anterior:
State t1 t2 t3 t4 t5 t6
00 00 00 00 00
00
11

10 11 11 11
10

01

01

01 01

11
10
66
Distancia libre
 Para el ejemplo anterior:
 Una ruta de longitud 3 sale desde “todo cero“ al tiempo t1
(estado 00) y regresa al mismo estado al t4.
 Secuencia todo cero: U = 00 00 00
 Secuencia de eventos de error: V = 11 10 11
 d(U,V) = 5

 La ruta de eventos de error representa la decisión con la que la


secuencia recibida está más próxima a la palabra código (11 10
11) que la secuencia realmente transmitida (00 00 00).

67
Capacidad de corrección de
error
 Utilizando la misma ecuación de corrección de error que
en codificación de bloque, con dmin reemplazado por df,
la capacidad de corrección de error de los CC es:
 d f  1
t 
 2 
 Donde df es la distancia libre del código.
 Para el ejemplo previo:
 df = 5  t=2
➢ Por tanto, el código puede corregir 2 errores.

68
Codificador convolucional
 Ejemplo:
Un codificador convolucional de velocidad 1/3 y con restricción de
longitud 3, se indica a continuación.
1st bit

I/P

O/P

2nd bit

3rd bit 69
Codificador convolucional
 Cont. Ejemplo:
1. Construir la tabla de codificación y dibujar el diagrama Trellis
mostrando los bits de entrada y las palabras código de salida en
las ramas Trellis.
2. Asumir un estado inicial S2=1 y S3=0. Indicar la secuencia de
estados y la salida del codificador para (110).
3. Con referencia al diagrama Trellis, utilizar decodificación Viterbi
para decodificar la secuencia recibida Z= (0 1 1 1 0 0 1 1 0 1 1 0
1 1 1), donde el bit de la izquierda es el primero en ser recibido.
4. Mostrar los valores de las métricas de los caminos en cada nodo
en el Trellis. Indicar la salida del decodificador y la
correspondiente secuencia de bits de información.

70
Codificador convolucional
 Cont. Ejemplo:
0/ 000 000 000 000
00
011 011 011 011
1 / 011

101 101 101


10
110 110 110
111
111 111 111
01
100
100 100 100
010 010 010

11
001 001
001
Input bit 0
Input bit 1 71
Codificador convolucional
 Cont. Ejemplo:
 Secuencia de estados:

 Secuencia de la salida del codificador:

72
Codificador convolucional
 Cont. Ejemplo:
Rx Secuencia: 011 100 110 110 111
000 2 [2] 000 1 [3] 000 2 [5,4] 000 2 [6,3] 000 3
00 [6,4]
2 2 1
011 011 011 011 011
0 3 [5] 2 [5,2]
[0] 2 [6,1] 1
101 101 101 [4,4]
10 0
0 110 1
110 110
111
111 111 1110
2 1 1
[1,5]
01
[2] 1 [6,1] 1 [3,4] 2
100
100 100 100
010 010 010
0 1 1 2
11 3 2 [3,5]
001 3 001 [3,6] 001
[0] [6,3]
Input bit 0
Input bit 1
Secuencia código O/P = 011 100 010 110 111
Secuencia información O/P = 1 1 0 1 0 73

También podría gustarte