Codificación de Canal PRÁCTICA 7

Anuncio
Codificación de Canal
PRÁCTICA 7
( 1 sesión)
Laboratorio de Señales y Comunicaciones (LSC)
3er curso, Ingeniería de Telecomunicación
Curso 2005 – 2006
Javier Ramos López, Fernando Díaz de María, Fernando Pérez Cruz y
David Luengo García
1. Objetivos
Los principales objetivos de esta práctica son los siguientes:
• Construir códigos de canal capaces de proporcionar una cierta protección frente a
errores: códigos de Hamming.
• Entender lo que es el síndrome y como se realiza la decodificación por síndrome.
• Aprender lo que es la ganancia de codificación y conocer las diferentes formas que
existen para su cálculo.
2. Cuestionario previo
2.1.
Rellene las tablas de los ejercicios 3.1 y 3.5 en las que se relaciona el síndrome
obtenido con cada uno de los posibles vectores de error.
2.2.
Desarrolle sobre el papel la función decod necesaria para el ejercicio 3.1.
2.3.
Desarrolle sobre el papel las funciones encod2 y sindrome2 (versiones modificadas de encod y sindrome) necesarias para el nuevo código del ejercicio 3.5.
2.4.
Una fórmula aproximada para la probabilidad de error de una señal codificada
mediante un código de Hamming es la siguiente:
(
pc = pe 1 − (1 − pe )
n −1
),
donde pe es la probabilidad de error antes de codificar, pc es la probabilidad de
error tras la codificación, y n es el número de bits de salida por cada bloque del
codificador. Suponiendo que la probabilidad de error sin codificar viene dada por
⎛ 2 Eb
pe = Q⎜⎜
⎝ N0
⎞
⎟,
⎟
⎠
calcule la probabilidad de error codificando con un código de Hamming (7, 4) y
con un código de Hamming (15, 11) para Pe = 0.0003, 0.001, 0.003, 0.01, 0.03,
0.1 y 0.3 en dos casos:
a)
Cuando se mantiene la tasa binaria, disminuyendo por tanto la tasa de
información real transmitida (esto es, como en el ejercicio 3.2).
b)
Cuando se aumenta la tasa binaria para mantener la tasa de información
transmitida (es decir, como en el ejercicio 3.3).
3. Codificación de Canal
Ejercicio 3.1. Desarrolle una función que decodifique una secuencia de bits con un
código de Hamming (n = 15 y k = 11), m = decod(s,r). Para ello se dispone de la
función c = encod(m) que realiza la codificación con la matriz generadora,
⎡1
⎢0
⎢
⎢0
⎢
⎢0
⎢0
⎢
G = ⎢0
⎢0
⎢
⎢0
⎢
⎢0
⎢0
⎢
⎢⎣0
0 0 0 0 0 0 0 0 0 0 0 0 1 1⎤
1 0 0 0 0 0 0 0 0 0 0 1 0 1⎥⎥
0 1 0 0 0 0 0 0 0 0 0 1 1 0⎥
⎥
0 0 1 0 0 0 0 0 0 0 0 1 1 1⎥
0 0 0 1 0 0 0 0 0 0 1 0 0 1⎥
⎥
0 0 0 0 1 0 0 0 0 0 1 0 1 0⎥ = [I P ] ,
0 0 0 0 0 1 0 0 0 0 1 0 1 1⎥
⎥
0 0 0 0 0 0 1 0 0 0 1 1 0 0⎥
⎥
0 0 0 0 0 0 0 1 0 0 1 1 0 1⎥
0 0 0 0 0 0 0 0 1 0 1 1 1 0⎥
⎥
0 0 0 0 0 0 0 0 0 1 1 1 1 1⎥⎦
cuya primera parte es una matriz identidad, de modo que los 11 primeros bits de c son
los de m (este es un ejemplo de un código sistemático), y de una función que calcula
los bits de síndrome s, s = sindrome(c), mediante la matriz H mostrada a continuación.
s
E
0000 000000000000000
0001
...
...
...
1111
...
⎡0
⎢0
H=⎢
⎢1
⎢
⎣1
0 0 0 1 1 1 1 1 1 1 1 0 0 0⎤
1 1 1 0 0 0 1 1 1 1 0 1 0 0⎥⎥
= PT
0 1 1 0 1 1 0 0 1 1 0 0 1 0⎥
⎥
1 0 1 1 0 1 0 1 0 1 0 0 0 1⎦
[
I
]
Para realizar la decodificación va a necesitar obtener el error asociado a cada síndrome.
Por lo tanto, se le pide que rellene de forma previa a la práctica la Tabla 1. Compruebe
que cada síndrome distinto del vector nulo se corresponde con una de las columnas de
H, y que la posición de la columna indica el bit erróneo. Esta información va a resultar
imprescindible para realizar la función de decodificación.
Nota: Para llevar a cabo el decodificador se recomienda el uso de las funciones
ser2par2 y par2ser2, que son variantes de las ya empleadas en la práctica anterior.
Síndrome
Vector de error
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Tabla 1: Síndrome y vector de error asociado para el código de Hamming (15, 11).
Ejercicio 3.2. Genere una secuencia de 110000 bits aleatorios y equiprobables. Dese
cuenta de que esto lo puede hacer con la función chan_bin de la sesión anterior (indique
cómo). Codifique dichos bits con el codificador de canal, introdúzcalos en el canal
discreto equivalente implementado por chan_bin con Pe = 0.0003, 0.001, 0.003, 0.01,
0.03, 0.1 y 0.3 (promedie 100 realizaciones para obtener resultados fiables), y calcule la
probabilidad de error de bit entre la entrada y la salida de chan_bin? Introduzca la salida
de chan_bin en el decodificador de canal y compruebe la probabilidad de error de bit a
la salida. Obtenga la razón entre el número de errores a la salida de decod y a su
entrada. ¿Qué ocurre cuando crece Pe?¿Qué significa esto?
Ejercicio 3.3. En el ejercicio anterior se pudo comprobar que al emplear la codificación
de canal los errores producidos por el canal se reducían de forma muy significativa. En
este ejercicio se va a explorar un método alternativo de medir la calidad del sistema
codificado y sin codificar. Suponga que la probabilidad de error del canal de
comunicaciones es Pe = Q ( 2 Eb N 0 ) , y que para mantener la tasa de bits de información
por segundo se ha reducido el tiempo de bit, de modo que la probabilidad de error se
incrementa en el canal a Pe = Q( 2 Eb N 0 k n ) . Genere 110000 bits aleatorios, codifí-
quelos con encod, y páselos por un canal discreto equivalente para diversos valores de
Eb N 0 entre 0 y 10 dB (utilice un paso de 1 dB) usando la probabilidad de error dada
por la segunda fórmula. Decodifique los bits obtenidos a la salida del canal y calcule la
probabilidad de error (promedie 100 realizaciones para obtener resultados fiables).
Represente gráficamente, empleando la función semilogy, la probabilidad de error a la
salida del decodificador en función de Eb N 0 (en dBs) y dibuje sobre ésta la
probabilidad de error del sistema sin codificar, empleando la primera fórmula de
probabilidad de error. ¿Observa algún resultado “extraño”? En caso afirmativo. ¿A qué
cree que puede ser debido?
Ejercicio 3.4. La ganancia de codificación se define como el valor M por el que hay que
multiplicar Eb N 0 (en unidades naturales) para que las probabilidades de error del
sistema sin codificación y con codificación de canal produzcan la misma BER. Calcule
dicha ganancia para los resultados de los ejercicios 3.2 y 3.3 (promediando 100
realizaciones como siempre) y represéntela en decibelios. ¿Cómo se comporta la
ganancia de codificación en cada caso? ¿Existen diferencias apreciables entre ambos
métodos de medida? En caso afirmativo, ¿a qué cree que son debidas?
Ejercicio 3.5. Repita los Ejercicios 3.1 a 3.4 para un código de Hamming con n = 7 y k
= 4, cuyas matrices G y H se muestran a continuación (genere 80000 bits en este caso,
promediando de nuevo 100 realizaciones). Para ello tendrá que modificar las funciones
encod y sindrome para ajustarlas a este código (desarrolle dos nuevas funciones encod2
y sindrome2), y rellenar la Tabla 4 (página siguiente) con los vectores de error
asociados a cada síndrome en este caso.
⎡1
⎢0
G=⎢
⎢0
⎢
⎣0
0
1
0
0
0
0
1
0
0
0
0
1
0
1
1
1
1
0
1
1
1⎤
1⎥⎥
0⎥
⎥
1⎦
⎡0 1 1 1 1 0 0 ⎤
H = ⎢⎢1 0 1 1 0 1 0⎥⎥
⎢⎣1 1 0 1 0 0 1⎥⎦
A la vista de los resultados de la práctica, ¿cuál de los dos códigos ofrece una mayor
protección frente a errores? Un código de Hamming (127, 120), ¿ofrecería mayor o
menor protección que los dos anteriores?
Síndrome
Vector de error
000
001
010
011
100
101
110
111
Tabla 2: Síndrome y vector de error asociado para el código de Hamming (7, 4).
Descargar