Sunteți pe pagina 1din 28

UNIVERSIDAD TECNOLOGICA DEL PERU

Telecomunicaciones

Tema 14_1
Técnicas de tratamiento digital con códigos
detectores /correctores de error

1
 Introducción
 Códigos FEC
 Código de Hamming
 Código de bloques lineales

2
Introducción

 En la transmisión de los símbolos codificados a través del canal se


producirán alteraciones de los mismos debido a la presencia de
perturbaciones (ruido, desfase, etc.) en el canal.
 Estas alteraciones producen errores en la información transmitida de manera
que el receptor procesa una información errada.
 Es necesario que antes de enviar los símbolos codificados a través del canal,
se realice una nueva codificación orientada a que el receptor pueda detectar y
corregir los errores producidos en el canal.

3
Definición de FEC

 Forward Error Correction (FEC) es un sistema de corrección de errores


para transmisiones de datos en el que el emisor añade datos redundantes
que permiten al receptor detectar y corregir errores sin la necesidad de
solicitar de nuevo los datos.

 Las técnicas FEC son una alternativa a la corrección de errores en medios


donde la retransmisión es demasiado costosa, como por ejemplo
aplicaciones en tiempo real, o imposible, como soportes físicos de
almacenamiento (CD, memorias FLASH, etc).

4
Definición de FEC

Existen dos razones primordiales que


sustentan el uso de las técnicas FEC:

1. La tasa de errores por bit en un


enlace poco confiable puede ser muy
grande, lo que resultará en un gran
número de retransmisiones.
2. En algunos casos, el tiempo de
propagación es muy elevado en
comparación con el tiempo de
transmisión. Por este motivo la
retransmisión del mensaje resultaría
muy costosa.

5
Definición de FEC

6
Código Hamming

Es un código (n,k) que sirve para detectar y corregir errores.


Sea
k: bits del dato
r: bits redundantes (código C)
r ≥ log2(k)+1

Ejemplo.
Se un dato de k=8 bits, por lo tanto r=4. Los bits de código se
colocan en potencias de dos:
k=(k0 k1 k2 k3 k4 k5 k6 k7)
C= C0 C1 C2 C3
n= C0 C1 k0 C2 k1 k2 k3 C3 k4 k5 k6 k7

Posición 1 2 3 4 5 6 7 8 9 10 11 12
C0 C1 k0 C2 k1 k2 k3 C3 k4 k5 k6 k7
20 21 22 23

7
Código Hamming
Cálculo de los Ci
Los Ci se calculan (si es paridad par) haciendo el XOR de los bits del dato
en cuya posición, el bit i de la misma coincida con el bit i de la posición del
Ci.
En caso de ser paridad impar se calculan del mismo modo pero se niega el
resultado. (Es decir si con paridad par C1=1 entonces con paridad impar
C1=0)
C0 = k0 ⊕ k1 ⊕ k3 ⊕ k4 ⊕ k6 = a (a=1 ó 0) (Paridad Par)
C0 = k0 ⊕ k1 ⊕ k3 ⊕ k4 ⊕ k6 = ā (a=1 ó 0) (Paridad Impar)
Bit de Validación Posiciones verificadas
C0 1,3,5,7,9,11,13,15,17, etc.
C1 2,3,67,10,11,14,15,18, 21,22, etc.
C2 4,5,6,7,12,13,14,15,20,21,22,23,etc.
C3 8,9,10,11,12,13,14,15,24,25,26,27,28, etc.

88
Código Hamming

Ejemplo
k =10110110 ⇒ k0 =1, k1 =0, k2 =1, k3 =1, k4 =0, k5 =1, k6 =1, k7 =0

Posición 1 2 3 4 5 6 7 8 9 10 11 12
C0 C1 1 C2 0 1 1 C3 0 1 1 0
20 21 22 23
Paridad Par
C0 = 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1= 1 → C0 =1
C1 = 1 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 = 1 → C1 =1
C2 = 0 ⊕ 1 ⊕ 1 ⊕ 0 = 0 → C2 =0
C3 = 0 ⊕ 1 ⊕ 1 ⊕ 0 = 0 → C3 =0

La palabra código es:


n= 111001100110

9
Código Hamming

El código recibido es 1 1 1 0 0 1 1 0 1 1 1 0 (Error bit de la posición 9)


Recalculamos los bits recibidos, deben ser de paridad par, entonces:

P0= 1⊕1⊕0⊕1⊕1⊕1 = 1 → impar error


P1= 1⊕1⊕1⊕1⊕1⊕1 =0
P2= 0⊕0⊕1⊕1⊕0 =0
P3= 0⊕1⊕1⊕1 = 1 → impar error

Luego:
Para determinar la posición del error es P(P3 P2 P1 P0) entonces:

P = (1001) esto indica la posición en que se produjo el error.

10
Códigos de Bloques Lineales

El alfabeto de fuente son considerados como bloques de mensaje


de una longitud fija; llamado u, estos son codificados en unos y
ceros que se constituyen en k dígitos de información. Hay un total
de 2k mensajes distintos de estos dígitos.

El codificador de canal, de acuerdo con ciertas reglas, transforma


cada mensaje entrante u, en una n-tupla binaria, v, con n > k. Esta
n-tupla binaria v es lo que llamamos palabra código (o vector
código) del mensaje u, con 2k mensajes posibles. A este conjunto
de palabras código 2k se denomina Código de bloque

11
Códigos de Bloques Lineales

σ k
n
σ = redundancia

12
k dígitos
2k mensajes
k=7, 2k = 128

13
Códigos de Bloques Lineales

 A un código bloque de longitud n y 2k palabras código se le llama


código lineal (n,k) si y sólo si sus 2k palabras código forman un
subespacio k-dimensional del espacio vectorial de las n-tuplas.

14
Códigos de Bloques Lineales
Ejemplo de código lineal (7,4)
Mensajes Palabras código
( 0 0 0 0) (0000000)
( 1 0 0 0) (1101000)
( 0 1 0 0) (0110100)
Un código binario es lineal si la suma ( 1 1 0 0) (1011100)
de módulo 2 de dos palabras código es ( 0 0 1 0) (1110010)
también una palabra código. ( 0 1 1 0) (0011010)
La tabla muestra un código lineal ( 1 1 1 0) (1000110)

(7,4). La suma de dos palabras código ( 0 0 0 1) (0101110)

resulta otra palabra código. ( 1 0 0 1) (1010001)


( 0 1 0 1) (0111001)
( 1 1 0 1) (1100101)
( 0 0 1 1) (0100011)
( 1 0 1 1) (1001011)
( 0 1 1 1) (0010111)
( 1 1 1 1) (1111111)

15
Códigos de Bloques Lineales

Se tiene un código lineal (n,k), consideramos a C un subespacio k-


dimensional del espacio de vectores Vn de las n-tuplas binarias, se
puede encontrar k palabras código linealmente independientes, g0,
g1,..., gk-1 en C, de tal forma que cada palabra código v en C es una
combinación lineal de esas k palabras código:
v = u0 g0 + u1 g1 + ... + uk-1 gk-1

donde ui= 0 ó 1, 0 ≤ i ≤ k. Ahora vamos a colocar estas k palabras


código linealmente independientes como las filas de una matriz k x n:

16
Códigos de Bloques Lineales

17
Forma del Bloque

Este consiste en una estructura sistemática de las


palabras código como la mostrada en la siguiente
figura, donde una palabra código se divide en dos
partes: la parte del mensaje y la parte de redundancia.
La parte del mensaje consiste de k bits de
información inalterada ( o mensaje) y la parte de
redundancia consiste de n - k bits de comprobación
de paridad, los cuales son una suma lineal de los bits
de información.
Un código lineal (n,k) sistemático queda
completamente definido por una matriz G k x n de la
siguiente forma
G = [P Ik].

18
Matriz Generadora G

De lo anterior tenemos g = (gi0 , gi1 , ..., gi,n-1) y u = (u0 , u1 , ..., uk-1) es


el mensaje que va a ser codificado. La palabra código correspondiente
puede ser dada de la siguiente manera:

v = u G = u0 g0 + u1 g1 + ... + uk-1 gk-1

EJEMPLO:
Sea código lineal (7,4) de la tabla anterior tiene
la siguiente matriz G (matriz generadora):

19
Forma Sistemática del Bloque

Tenemos que u= ( u0, u1,...,uk-1) es el mensaje que hay que codificar. Por
lo tanto, la palabra código correspondiente es:
v = ( v0 , v1 , v2 , ... , vn-1) = ( u0 , u1 , ... , uk-1) G
EJEMPLO
Si u = ( u0, u1, u2, u3) es el mensaje que hay que codificar, y v = ( v0, v1,
v2, v3, v4, v5, v6 ) es la correspondiente palabra código. Considerando la
matriz G y multiplicando las matrices obtenemos los dígitos de la
palabra código v:
v6 = u3 v5 = u2
v4 = u1 v3 = u0
v2 = u1 + u2 + u3 v1 = u0 + u1 + u2
v0 = u0 + u2 + u3
Por lo tanto la palabra código correspondiente a ( 1 0 1 1 ) es ( 1 0 0 1 0 1 1 )
20
Matriz de comprobación de paridad

Hay otra matriz útil asociada con cada código lineal de bloque. Como
ya se explicó en el tema anterior, para cada matriz G de dimensiones
k x n con k filas linealmente independientes, existe una matriz H de
dimensiones ( n - k ) x n con n - k filas linealmente independientes de
tal manera que cada vector en el espacio de las filas de G es ortogonal
a las filas de H y cada vector que es ortogonal a las filas de H esta en
el espacio de las filas de G .
Una n-tupla v es una palabra código en el código generado por G si y
sólo si

v HT = 0
H

H = [ In-k PT ] 21
Síndrome y detección de errores

Consideramos un código lineal (n,k) con su matriz generadora G y su


matriz de comprobación de paridad H. Sea v una palabra código que
se transmite en un canal ruidoso, y r es el vector recibido a la salida
del canal. Debido a que el canal es ruidoso, r puede ser distinto de v.
El vector suma de r y v es e; e es una n-tupla tal que ei=1 si ri es
distinto de vi y ei=0 si ri=vi. A esta n-tupla se le llama vector de
error. Los 1's que aparecen en e son errores de transmisión
producidos porque el canal es ruidoso.

22
Síndrome y detección de errores

Al recibirse r, el decodificador calcula la (n-k)-tupla denominada Síndrome


s, esta se define como ( s0, s1,..., sn-k-1 ) :

s = r HT
s = 0 → el receptor acepta r como la palabra código transmitida
s ≠ 0 → r no es una palabra código , el receptor detecta la presencia de un
error.

Pero, puede existir errores a pesar de s = 0. Esto sucede cuando el vector de


error es idéntico a una palabra código. Estos errores son errores
indetectables.
El síndrome depende solo del vector de error, y no de la palabra código
transmitida, es decir
s = rHT = (v + e)HT = vHT(=0) + eHT = eHT

23
Síndrome y detección de errores

EJEMPLO
Vamos a calcular el síndrome del código cuya matriz de comprobación
de paridad es la siguiente:

Si r = ( r0, r1, r2, r3, r4, r5, r6 ) es el vector recibido, el síndrome se calcula
de la siguiente manera:

24
Síndrome y detección de errores

Con lo cual los dígitos que componen el síndrome son:


s0 = r0 + r3 + r5 + r6
s1 = r1 + r3 + r5 + r6
s2 = r2 + r4 + r5 + r6

25
Síndrome y detección de errores

Si consideramos el código ( 7,4 ), donde v = ( 1 0 0 1 0 1 1 ) es la palabra


código transmitida y r = ( 1 0 0 1 0 0 1 ) es el vector recibido.
El receptor calcula el síndrome :
s = r HT = ( 1 1 1 ) → error

Una vez hecho esto, el receptor intenta determinar el verdadero vector de


error e. Los dígitos de error están relacionados con los del síndrome por las
siguientes ecuaciones lineales.
1 = e 0 + e3 + e5 + e6
1 = e 1 + e3 + e4 + e5
1 = e 2 + e4 + e5 + e6

Deducidas de s = eHT
26
Síndrome y detección de errores

Hay 24 =16 patrones de error que satisfacen a e.


El vector de error e = ( 0 0 0 0 0 1 0 ) es el que
tiene el menor número de componentes distintas
de cero. Si el canal es BSC, e = ( 0 0 0 0 0 1 0 ) es
el vector de error más probable de los que
satisfacen las ecuaciones de arriba.

v* = r + e = ( 1 0 0 1 0 0 1 ) + ( 0 0 0 0 0 1 0 ) = (
1 0 0 1 0 1 1 ).

v* es la palabra código transmitida →


decodificación correcta.

27
FIN

28

S-ar putea să vă placă și