Está en la página 1de 13

UNIVERSIDAD NACIONAL DE INGENIERÍA

FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA


ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M

LABORATORIO N.º 4
C o d i f i c a c i ó n de F u e n t e y de C a n a l
1. Objetivos
Los objetivos principales de esta práctica son los siguientes:
 Estudiar la cantidad de información media generada por una fuente
discreta o por una fuente continua cuantificada mediante el concepto de
entropía.
 Construir códigos de fuente capaces de proporcionar una tasa de salida
cercana a la entropía de la fuente: códigos de Huffman.
 Construir códigos de canal capaces de proporcionar una cierta protección
frente a errores: códigos de Hamming.

2. Contenido Teórico
A continuación, se va a realizar una breve descripción de los elementos que van a
ser necesarios para la realización de esta práctica: la codificación de fuente
(códigos de Huffman), y la codificación de canal (códigos de Hamming). Esta
descripción no va a sustituir la información recibida en el curso de Teoría de
Telecomunicaciones II, y se deberá acudir a las referencias bibliográficas de este
tema para comprender todos los aspectos teóricos que se van a tratar en estas
prácticas.

2.1. Codificación de Fuente

La salida que se tiene del codificador está en muchos casos correlacionada, y


algunos bits o cadenas de bits son mucho más probables que otros. Esto provoca
que se transmitan más bits de los que son estrictamente necesarios para enviar
la información deseada entre el transmisor y el receptor. La cantidad de
información por símbolo generada por una fuente viene medida por su entropía.
Suponiendo que una fuente discreta es capaz de generar un total de M valores
distintos, cada uno de ellos con probabilidad pi, su entropía se define como:

La entropía proporciona el límite inferior del número de bits por muestra


necesarios para transmitir la información de la fuente sin pérdidas, y es la tasa
de salida hacia la que debe tender un buen codificador de fuente. Cuando la
tasa de transmisión es mucho mayor que la entropía de la fuente, entonces es
posible que algunas de las propiedades de las modulaciones (por ejemplo su
anchura espectral) no sean idénticas a los valores teóricos, lo que puede dar
lugar a interferencias con otros sistemas de comunicaciones.
UNIVERSIDAD NACIONAL DE INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M

La codificación de fuente se encarga de eliminar dicha correlación de tal forma


que los bits que aparecen a su salida no sean correlacionados, y todas las
cadenas de cualquier longitud son igualmente probables, obteniéndose un
espectro similar al teórico y una cadena de bits a transmitir lo más corta posible.
Una de las formas más habituales de realizar la codificación de fuente es la
codificación de Huffman, en la que a cada símbolo o cadena de bits de idéntica
longitud se le asigna otra cadena de bits de longitud variable. Cuanto mayor sea
la probabilidad de aparición de un símbolo (o cadena de bits) menor será la
longitud de la cadena asignada, de tal forma que la longitud media de las
cadenas resultantes sea menor que la de las cadenas de bits originales. La
ventaja de este tipo de codificadores es que se pueden ilustrar de manera
sencilla. A continuación, presentamos un ejemplo.

Ejemplo:
Supongamos que se dispone de una fuente continua que discretizamos
empleando un cuantificador uniforme con 8 niveles. A continuación, codificamos
sus salidas, asignándole a cada muestra de entrada un símbolo compuesto por
tres bits. Las probabilidades de cada uno de estos símbolos son: P(000) =0.2,
P(001)=0.01, P(010) =0.4, P(011)=0.04, P(100) =0.1, P(101) =0.02, P(110) =0.07
y P(111) =0.16. En consecuencia, la entropía de esta fuente es:

que es significativamente inferior a los 3 bits por muestra que estamos


empleando si tomamos directamente la salida del codificador. La codificación de
Huffman le va asignar a cada cadena de 3 bits una cadena de longitud variable
que minimice el número de bits medio por símbolo. Por supuesto, dichas
cadenas de bits deben ser unívocamente decodificables. Para asignar estas
cadenas se ordenan los símbolos de acuerdo con sus probabilidades: desde el
más probable hasta el menos probable. A continuación, se juntan los dos
símbolos menos probables, dando lugar a un nuevo símbolo cuya probabilidad
es la suma de ambos, y se vuelven a ordenar. Esta operación (parte hacia
delante del algoritmo) se repite hasta que se hayan sumado todas las
probabilidades, generándose un árbol de símbolos. En la Figura 1 se muestran
las probabilidades ordenadas en cada iteración del algoritmo para este ejemplo.
UNIVERSIDAD NACIONAL DE INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M

Figura 1: Suma de probabilidades para construir el código de Huffman del ejemplo.

Una vez que el árbol está completamente construido (es decir, en el momento
en que todos los símbolos se han juntado en uno solo con probabilidad 1), se
recorre el árbol de derecha a izquierda (parte hacia atrás del algoritmo),
asociando con cada bifurcación (esto es, donde se han sumado 2
probabilidades) un 0 y un 1 en cada una de sus ramas (se puede hacer de
manera arbitraria). En la Figura 2 se muestra dicha asignación, donde siempre
se ha situado el 0 en la rama superior.

Figura 2: Asignación de bits a cada bifurcación del árbol del ejemplo.


UNIVERSIDAD NACIONAL DE INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M

Por último, se leen los bits de derecha a izquierda hasta llegar al símbolo original,
y dicha cadena de bits es la que se le asigna a cada símbolo de entrada. En la
Figura 3 se muestra la cadena de longitud variable asignada a cada cadena de
tres bits, pudiéndose apreciar que los símbolos más probables tienen asociadas
cadenas más cortas, y las menos probables cadenas asignadas más largas. Este
ejemplo es constructivo en el sentido de que cualquier código de Huffman se
puede obtener de la misma manera. Además, se puede demostrar que para una
asignación no fraccionaria de bits por símbolo dicho código es óptimo. Es decir,
se trata del que más se acerca al límite teórico dado por la entropía de la fuente.

Figura 3: Asignación de códigos realizada por el codificador de Huffman.

La calidad de un código de fuente se puede medir por diversos parámetros, de los


que en esta práctica únicamente consideraremos dos: la tasa de compresión y la
eficiencia. La longitud media de un código se define como la longitud en promedio de
una palabra del mismo:

donde ni es el número de bits usados para codificar el símbolo i-ésimo. Ahora, la tasa
de compresión de un código de Huffman se define como la relación de compresión
lograda frente a un código de longitud fija utilizado para codificar dicha fuente:
UNIVERSIDAD NACIONAL DE INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M

Una segunda medida de rendimiento es la eficiencia del código, que mide lo cercana
que se encuentra su longitud media del límite teórico dado por la entropía:

H X 
 .
L

Para un código de Huffman se cumple que:

Como ejemplo, el código del apartado anterior es un buen código, ya que su


longitud media es 2.44 (recuérdese que su entropía era 2.38), lo que implica una
tasa de compresión de 1.23 y una eficiencia del 97.54 % (el límite anterior nos
indica que para esta fuente la eficiencia de un código de Huffman debe ser superior
al 70.41 %).
Por último, aunque los códigos de Huffman sean óptimos para asignaciones no
fraccio- narias de bits, su rendimiento (longitud media del código) puede
encontrarse muy lejos de la entropía de la fuente. Esto sucede por ejemplo
cuando se dispone de una fuente con probabilidades muy dispares pero muy
pocos símbolos para realizar asignaciones de códigos de longitud variable (por
ejemplo, una fuente binaria cuyos símbolos tengan probabilidades 0.9 y 0.1). En
estos casos, el rendimiento se puede mejorar realizando una extensión del
código. La manera más sencilla de hacerlo consiste en suponer que los símbolos
consecutivos son independientes, tomar bloques de k símbolos en lugar de
tomarlos de uno en uno, y diseñar un código de Huffman para los Mk símbolos
resultantes. Se puede demostrar que mejora el rendimiento del código (esto es,
que disminuye su longitud media) conforme aumenta el valor de k, tendiendo su
longitud media hacia el valor de la entropía (límite teórico) cuando k tiende a
infinito. Obviamente, el inconveniente de realizar una extensión del código
estriba en que aumenta su complejidad conforme se van utilizando valores
mayores de k.

2.2. Codificación de canal


El codificador de canal introduce redundancia controlada de tal forma que si se
produce algún error en el canal de comunicaciones se pueda detectar y/o
corregir. Hay distintos sistemas de protección contra errores: códigos bloque,
códigos convolucionales, códigos de rejilla (“trellis”), etc. En esta práctica nos
vamos a centrar en los más sencillos: los códigos bloque lineales.
UNIVERSIDAD NACIONAL DE INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M

Estos códigos toman los bits de la entrada de k en k, y los transforman en n bits


de salida (es decir, añaden r=n-k bits de redundancia). Para llevar a cabo esta
transformación se multiplica un vector fila de k bits por una matriz de kxn
elementos binarios, y se realiza la operación de módulo 2 sobre el vector salida
de n elementos. Los bits de redundancia son los que van a permitir detectar y
corregir los errores que se produzcan en el canal de comunicaciones. En la
Figura 4 se muestra de forma esquemática y algebraica el funcionamiento del
codificador.

Figura 4: Modelo esquemático y algebraico del codificador de canal.

Es posible detectar la existencia de un error en el canal de comunicaciones con


estos códigos gracias a que a la salida del codificador se tiene un espacio
vectorial de dimensión n (con 2n posibles vectores, por lo tanto), dentro del cual
únicamente existen 2k vectores válidos. En consecuencia, 2n – 2k vectores no se
pueden dar a no ser que se haya producido al menos un error en el canal de
comunicaciones. Para corregir este error (o errores) se procede calculando la
distancia Hamming (es decir, el número de bits que son diferentes) entre el
vector recibido en el decodificador de canal y los 2k vectores válidos del código,
y decidiendo que se ha transmitido aquel cuya distancia de Hamming con el
recibido es menor.

Para realizar el proceso de detección se suele emplear una matriz de rxn


elementos que transforma el vector recibido en una cadena de r bits, el
síndrome, que identifica unívocamente cada uno de los errores que se han
podido producir en el canal de comunicaciones (hasta un cierto número máximo
de errores, que depende de la capacidad correctora del código bloque, y que
está relacionado con la mínima distancia de Hamming entre dos palabras
código). Una vez identificados los bits en que se han producido los errores,
puesto que la señal es binaria, se pueden modificar simplemente dichas
posiciones para obtener los bits supuestamente transmitidos. En la Figura 5 se
muestra de forma esquemática y algebraica del funcionamiento del
decodificador.
UNIVERSIDAD NACIONAL DE INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M

Figura 5: Modelo esquemático y algebraico del decodificador de canal.

La forma de medir la calidad de estos sistemas de protección contra errores no


es única, aunque habitualmente se basan en lo que se conoce como ganancia
de codificación. La ganancia de codificación se define como el aumento en la
energía media por bit que hay que introducir en la modulación posterior sin
codificación de canal para obtener la misma probabilidad de error que se obtiene
con esta codificación. El problema para medir esta ganancia radica en cómo se
debe calcular la probabilidad de error cuando se introduce el codificador de canal:
manteniendo la tasa de transmisión o aumentándola.

En el primer caso el tiempo de bit en la modulación posterior no varía (es decir,


se mantiene la tasa binaria), de modo que la introducción del código bloque va a
suponer una gran ganancia sobre el sistema sin codificar: la probabilidad de error
de bit (BER) del modulador sin codificar no cambia, y el código bloque va a ser
capaz de corregir algunos errores. Sin embargo, en este caso estaremos
transmitiendo a una tasa k/n veces menor que en el sistema original, puesto que
por cada n bits que transmitimos únicamente k son de información (los restantes
son bits de redundancia). En consecuencia, esta comparación puede parecer
injusta.
La segunda posibilidad consiste en mantener la amplitud de la modulación
constante y disminuir el tiempo de bit multiplicándolo por k/n (es decir, se
aumenta la tasa binaria), de tal forma que la tasa a la que se envían los bits de
información permanece inalterada. En este caso, al haber reducido la energía
por bit, la probabilidad de error del modulador sin codificar va aumentar, y el
código tendrá que compensar además este aumento en la tasa de error sobre el
sistema original.
UNIVERSIDAD NACIONAL DE INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M


Esta medida (que puede parecer más justa) a igualdad de potencia transmitida
por bit de mensaje y de tasa de bits por segundo, presenta el inconveniente de
aumentar el ancho de banda ocupado. Este efecto provoca que la comparación
sea nuevamente injusta, y en muchas aplicaciones limita su utilidad porque el
ancho de banda disponible puede ser fijo en algunas aplicaciones. El uso de
ambas medidas está ampliamente aceptado, siempre y cuando se especifique
claramente cual se está empleando.

2.3. Canal de comunicaciones

En este último bloque lo único que se va a hacer es sumar ruido Gaussiano y


blanco (AWGN) a la señal de salida del transmisor. En esta práctica nos vamos
a centrar en un canal genérico que únicamente añade ruido a la señal
transmitida. El canal va a estar caracterizado por una densidad espectral de
potencia No/2, aunque de momento vamos a trabajar simplemente con un canal
discreto equivalente. Este canal es un artefacto matemático (no existe en la
realidad) que sustituye los bloques del modulador, canal y demodulador por un
canal (discreto equivalente) que lo único que hace es cambiar de valor algunos
bits a la salida del codificador de canal con una cierta probabilidad de error
prefijada. En la Figura 6 se muestra su funcionamiento de forma esquemática. El
canal discreto equivalente es muy empleado cuando se quiere diseñar un
sistema genérico que no dependa del canal de comunicaciones empleado,
dejando su complejidad al diseño del modulador/demodulador. Además permite
trabajar siempre con bits (símbolos) en lugar de señales.

Figura 6: Modelo de Canal Discreto Equivalente.


UNIVERSIDAD NACIONAL DE INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M

3.- Cuestionario para el Informe Previo


-Estado del arte de la entropía, Precisar quiénes fueron Huffman y Hamming.
-Estado del arte de la codificación de fuente y de canal
-Defina los Códigos existentes, incluya los Turbocódigos
-Aplicaciones de la codificación.

4.-Cuestionario d e I n f o r m e F i n a l

4.1. Calcule la entropía de las siguientes fuentes discretas:


i. Fuente binaria con probabilidades 0.9 y 0.1.
ii. Fuente con tres símbolos cuyas probabilidades son 0.73, 0.25 y 0.02.
iii. Fuente que puede emitir 6 símbolos con probabilidades 0.4, 0.2, 0.1, 0.1, 0.1 y
0.1.
4.2. Obtenga un código de Huffman para cada una de las fuentes de la pregunta 3.1.
Compruebe si se trata de buenos códigos o no, calculando en cada caso su tasa
de compresión y su eficiencia.
4.3. Calcule las probabilidades de los símbolos resultantes de realizar una
extensión del código para la primera fuente de la pregunta 3.1 con k = 2 y k = 3.
Halle la entropía por conjunto de k símbolos y por símbolo en cada caso. ¿Qué
conclusiones obtiene respecto al comportamiento de la entropía con k?

4.4. Obtenga un código de Huffman para los códigos extendidos de la pregunta 3.3,
y compruebe que mejora el rendimiento del código calculando su tasa de compresión
y su eficiencia en cada caso.

4.5. Se dispone de una fuente continua que se cuantifica usando un cuantificador


del tipo “mid-riser” con rango dinámico entre -1 y 1. Calcule la entropía de la fuente
discreta resultante (en función del número de niveles del cuantificador) en los casos
siguientes:
4.5..1. La amplitud de la fuente analógica sigue una FDP uniforme entre -1 y 1.
4.5.2. La amplitud de la fuente analógica sigue una FDP Gaussiana con media
cero y varianza 2.
4.5.3. Desarrolle sobre el papel las funciones entropia, extension y encod, de:

a).- Desarrolle una función que calcule la entropía de una fuente discreta. Esta
función, h = entropia(p), recibirá como entrada un vector p de dimensiones N x 1 o
1 x N con la probabilidad de ocurrencia de cada símbolo de la fuente, comprobará
que se trata efectivamente de un vector de probabilidades válido.
Ing. Víctor Andrés Córdova Bernuy

9
UNIVERSIDAD NACIONAL DE INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M

Por lo que debe devolver un mensaje de error mediante la función error de Matlab
en caso contrario devolverá su entropía: h. Evalúe su rendimiento obteniendo la
entropía de las tres fuentes de la pregunta 4.1 y comprobando que coincide con el
resultado teórico.
b).- Codifique la función px=extension(p,k), que obtiene el vector de probabilidades
px, para una fuente discreta cuyos símbolos siguen el vector de probabilidades p,
cuando se toman símbolos de k en k (esto es, se ha realizado una extensión del
código de orden k). Asuma que los símbolos son independientes. Utilice la función
para obtener una extensión de la primera fuente de la pregunta 3.1 con k=1,...,6.
Calcule la entropía de los alfabetos extendidos y obtenga un código de Huffman
para cada uno de ellos. Compruebe que la entropía, la tasa de compresión y la
eficiencia coinciden con los teóricos (calculados en las preguntas 3.3 y 3.4) cuando
sea posible (esto es, para k = 1, 2 y 3). Dibuje la longitud media por símbolo del
alfabeto original frente a k, y compruebe cómo desciende uniformemente hacia el
límite teórico dado por la entropía de la fuente original

C).- 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,

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 = sindrom(c), mediante la matriz H mostrada
a continuación.

Ing. Víctor Andrés Córdova Bernuy

1
0
UNIVERSIDAD NACIONAL DE INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M

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
3. 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 sesión
anterior.

Ing. Víctor Andrés Córdova Bernuy

1
1
UNIVERSIDAD NACIONAL DE INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M

Síndrome Vector de error

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

Tabla 3: Síndrome y vector de error asociado para el código de Hamming (15,11).

Rellene las tablas 3 y 4 en las que se relaciona el síndrome obtenido con cada uno
de los posibles vectores de error.

Ing. Víctor Andrés Córdova Bernuy

1
2
UNIVERSIDAD NACIONAL DE INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

GUÍA DE LABORATORIO DE TELECOMUNICACIONES II - EE514-M

Síndrome Vector de error

000

001

010

011

100

101

110

111

Tabla 4: Síndrome y vector de error asociado para el código de Hamming (7,4).

Referencias:
1.- B.P. Lathi. Sistemas de Comunicación.

Ing. Víctor Andrés Córdova Bernuy

1
3

También podría gustarte