Está en la página 1de 10

Cuantificacin y Codificacin

P R CTI CA 6
( 2 sesiones)

Laboratorio de Seales y Comunicaciones


3 curso, Ingeniera Tcnica de Telecomunicacin
Especialidad Sistemas de Telecomunicacin
er

Javier Ramos Lpez, Fernando Daz de Mara, Fernando Prez Cruz y


David Luengo Garca

1. Objetivos
1.1. Objetivos de las prcticas de comunicaciones

El objetivo de las prcticas de comunicaciones es simular un sistema de comunicaciones


completo, en el que se consideren todos los aspectos bsicos que pueden influir en una
correcta transmisin desde la fuente hasta el destinatario de la informacin que se
pretende transmitir. Para realizar este sistema de comunicaciones va a ser necesario
tener en cuenta los conocimientos adquiridos en las asignaturas de Teora de la
Comunicacin (2 curso, 2 cuatrimestre) y Comunicaciones Digitales (3er curso, 1er
cuatrimestre). Los bloques fundamentales de un sistema de comunicaciones se muestran
en la Figura 1.

Figura 1: Bloques bsicos de un sistema de comunicaciones

En un sistema de comunicaciones pueden aparecer los siguientes elementos:

Muestreo: Bloque que proporciona a su salida un conjunto de muestras


discretas equiespaciadas de una seal continua de entrada limitada en banda. Si
el periodo de muestreo cumple el criterio de Nyquist (es decir, si la frecuencia
de muestreo es mayor que el doble del ancho de banda de la seal continua) se

puede recuperar la seal original a partir de las muestras sin error (al menos en
teora) mediante un filtrado paso bajo.

Codificador: Bloque que transforma las muestras discretas (pero con amplitud
continua) obtenidas en el proceso de muestreo, en un conjunto finito de
posibles amplitudes que se puedan codificar mediante una expresin binaria.
Forma, junto con el bloque de muestreo, el conversor analgico/digital.

Codificador de Fuente: Bloque que transforma la seal de entrada binaria en


una seal de salida binaria con una tasa menor o igual que la de la seal
original eliminando su redundancia.

Codificador de Canal: Bloque que transforma la entrada binaria en una salida


binaria de mayor o igual tasa que la original, introduciendo en ella redundancia
controlada. Dicha redundancia se va a emplear para detectar y/o corregir los
errores producidos por el canal de comunicaciones.

Modulador: Bloque que transforma la entrada binaria en una seal continua


adecuada para ser transmitida por el canal de comunicaciones. Tambin recibe
el nombre de codificador de forma de onda.

Canal de Comunicaciones: Bloque que simula el medio de transmisin


existente entre el transmisor y el receptor, y que engloba todos los efectos
indeseados (ruido, distorsin, etc.) que se producen durante la transmisin. Los
canales de comu-nicaciones considerados van a ser de dos tipos: canal aditivo
blanco Gaussiano (slo aade ruido Gaussiano) y canal limitado en banda
(canal que se comporta como un filtro paso bajo o paso banda y que adems
introduce ruido Gaussiano).

Los bloques del receptor realizan la operacin inversa de los bloques en el transmisor, y
en el orden inverso. Esto es, la primera operacin realizada es la ltima del transmisor
(decodificacin de canal) y viceversa (la ltima etapa consiste en la reconstruccin de la
seal analgica a partir de las muestras). Las operaciones de muestreo y reconstruccin
ya se han visto en la primera parte de la asignatura, de modo que en general se supondr
que se disponen, bien de muestras discretas que hay que cuantificar, bien directamente
de bits. En cualquier caso, en el receptor se decodificarn los bits en muestras, pero no
se reconstruir la seal analgica de la que provienen.
En esta asignatura no se van a tratar muchos de los aspectos que aparecen en las
comunicaciones digitales y que son tan relevantes como los antes expuestos: igualacin,
sincronizacin, diseo de sistemas, etc. Puesto que el objetivo de este curso es asentar
los conocimientos bsicos acerca de la cadena de elementos de un sistema de comunicaciones, se ha preferido dejar el estudio de estos aspectos para cursos ms avanzados.

1.2. Objetivos de esta prctica

Los objetivos principales de esta prctica son los siguientes:


Aprender a construir cuantificadores uniformes y no uniformes.
Estudiar los diferentes factores que intervienen en su diseo.
Evaluar su rendimiento, mediante el ruido de cuantificacin y la relacin seal a
ruido, para distintos tipos de seales.

2. Contenido Terico
A continuacin se va a realizar una breve descripcin de los dos elementos que van a ser
necesarios para la realizacin de esta primera prctica: el cuantificador, y el codificador.
Esta descripcin no va a sustituir la informacin recibida en las asignaturas de Teora de
la Comunicacin y Comunicaciones Digitales, y se deber acudir a las referencias
bibliogrficas de estas asignaturas para comprender todos los aspectos tericos que se
van a tratar en estas prcticas.

2.1. Cuantificacin y codificacin

Este bloque se encarga de transformar las muestras discretas en bits. En este curso
nicamente se va a tratar el problema de la cuantificacin escalar, en la que las
muestras provenientes del muestreador se procesan de forma independiente unas de las
otras. El objetivo del cuantificador es asignar a cada valor dentro de un rango continuo
(seal sin cuantificar) una muestra representativa del mismo de entre un conjunto
discreto de elementos posibles (seal cuantificada). A su vez, estos valores discretos se
pueden caracterizar unvocamente mediante un nmero finito de bits utilizando un
codificador posterior (seal codificada).
Existen dos tipos bsicos de cuantificadores. La cuantificacin uniforme es aquella en
la que todos los segmentos en que se divide la recta real son de igual longitud, salvo en
los extremos del cuantificador. Si las amplitudes de la seal sin cuantificar se
distribuyen uniformemente dentro del rango dinmico del cuantificador, entonces la
funcin de densidad probabilidad del error de cuantificacin es uniforme entre -/2 y
/2 ( es el escaln de cuantificacin). Dentro de los cuantificadores uniformes se
pueden distinguir dos clases bsicas: los cuantificadores mid-tread y mid-riser.

Figura 2: Cuantificadores mid-tread y mid-riser.

Ambos tipos de cuantificadores (mid-tread y mid-riser) se muestran en la Figura 2.


En un cuantificador mid-tread, si la muestra a cuantificar (seal de entrada) es cero
o prcticamente cero (esto es, se encuentra entre 0.5 y 0.5), el cuantificador va a
devolver siempre el valor cero. Desafortunadamente, no se trata de un cuantificador
simtrico: para los valores positivos tiene un escaln de cuantificacin menos que para
los negativos.
Por otro lado, un cuantificador mid-riser presenta el mismo nmero de escalones
para la parte positiva y negativa de la seal, pero las muestras prximas a cero van a
fluctuar entre dos niveles (en el caso en que slo haya muestras de ruido a la entrada del
cuantificador y no exista seal a codificar). Esta fluctuacin puede ser indeseable
(porque puede forzar a que se transmitan bits cuando no hay informacin que transmitir)
o puede ser deseable (en sistemas de transmisin continua asegura que la lnea se
mantiene siempre activa, ya que hay bits constantemente cambiando de valor a causa
del ruido a la entrada del cuantificador).
Por ltimo, el rango dinmico de los cuantificadores se define como el rango de
valores de la seal de entrada dentro del cual el error mximo entre la seal de entrada y
la cuantificada es menor o igual a /2. El rango dinmico para los dos cuantificadores
presentados es de 4 a 3 para el cuantificador mid-tread, Figura 2(a), y de 3.5 a
3.5 para el cuantificador mid-riser. Los valores de entrada fuera del rango dinmico
producen un error que se conoce como error de sobrecarga, y que se debe tratar de
evitar ajustando cuidadosamente el rango dinmico del cuantificador con el de la seal,
ya que puede ser mucho mayor que el error de cuantificacin e independiente de .
En muchas ocasiones la cuantificacin uniforme no es la mejor opcin porque existe
mucha actividad en algunas zonas del rango dinmico y muy poca en otras. Un caso
tpico es aquel en el que aparecen muchas muestras entorno a cero y muy pocas en los
extremos del rango dinmico. Por ejemplo, este el caso de las seales de voz, para las

que es mucho ms probable tener muestras con amplitudes pequeas, que adems van a
requerir una mayor resolucin que las muestras de gran amplitud.
Una posibilidad para solucionar este problema consiste en utilizar un cuantificador
uniforme con la precisin mxima requerida, pero esto puede llevar a transmitir muchos
ms bits de los necesarios en la zona donde dicha precisin no es necesaria. En
consecuencia, la solucin habitual consiste en emplear cuantificadores no uniformes
en los que los segmentos adjudicados a cada escaln no son de igual longitud. La forma
usual de realizar un cuantificador no uniforme es pasando la seal por un compresor
(funcin no lineal de la entrada) que expanda la parte del rango dinmico que hay que
cuantificar con mayor calidad y contraiga la parte del rango dinmico que hay que
cuantificar con menor calidad. A la salida del decuantificador hay que colocar la
funcin inversa (expansor) para recuperar la seal original (obviamente con un cierto
error de cuantificacin inevitable). En la Figura 3 se muestra de forma esquemtica el
funcionamiento del compresor-expansor (compansor).

Figura 3: Construccin de un cuantificador/codificador no uniforme con un compansor.

Una de las leyes empleadas para el compresor-expansor es la conocida como Ley A


empleada en Telefona:
x
1
$ A x / xmax
si
0
%
%
!
xmax A
1 + ln A
c( x ) !
=#
xmax !1 + ln (A x / x )
x
1
max
si
%
%1
!
1 + ln A
A xmax
"
La funcin anterior proporciona la salida para valores de x positivos. Para valores
negativos simplemente hay que tomar c(|x|). El valor estndar de A es 87.56.

3. Cuestionario previo
3.1.

Desarrolle sobre el papel las funciones q_midriser, c_midriser y d_midriser de


los ejercicios 4.1 al 4.3. Qu niveles de salida debe proporcionar el cuantificador
mid-riser para N = 3 y N = 4?

3.2.

Obtenga la expresin terica de la potencia del ruido de cuantificacin


suponiendo que este se encuentra distribuido uniformemente entre -/2 y /2.

3.3.

Calcule la potencia media para las siguientes seales:


Sinusoide con amplitud A.
Seal con fdp uniforme de la amplitud entre -1 y 1.
Seal con fdp Gaussiana de la amplitud con media cero y varianza 2.
Cul es la relacin seal a ruido de cuantificacin (en dBs) en funcin del
nmero de bits del cuantificador para cada uno de los tres casos anteriores
(asuma que la potencia del ruido de cuantificacin es la obtenida en 3.2)? Cmo
vara la relacin seal a ruido al aumentar el nmero de bits?

3.4.

Se dispone de una variable aleatoria Gaussiana, x, de media nula y varianza


unidad. A partir de x se genera una nueva variable aleatoria, y = ax + b. Deduzca
la expresin de la fdp de y. Si se desea obtener una variable aleatoria Gaussiana
con media y varianza 2, cunto tienen que valer a y b?

3.5.

La forma ms sencilla y habitual de estimar la fdp de una variable aleatoria X es


mediante un histograma: un diagrama que divide el rango del vector x en
segmentos de igual longitud y cuenta el nmero de elementos de x que caen
dentro de cada segmento. La fdp as estimada se puede poner como
Nb
' x ) xi $
",
f ( x) = ! pi *%
i =1
& (i #

donde xi es el centro de cada segmento del histograma, Nb es el nmero de


segmentos, i representa su anchura (igual para todos los segmentos habitualmente), y () representa un pulso centrado en xi y de anchura total i. Si se
dispone de un vector de longitud M y Ni es el nmero de puntos que caen dentro
del segmento i-simo, obtenga el valor de pi en funcin de Ni, M, Nb y (el rango
total de posibles valores de x).
3.6.

Desarrolle sobre el papel las funciones ley_A y ley_A_inv del ejercicio 4.9. Qu
niveles de salida debe proporcionar el cuantificador mid-riser para N = 3 y
valores de A = 10, 20 y 87.6? Dibuje su relacin entrada-salida en el caso en que
N
=
3
y
A
=
20.

4. Cuantificacin y Codificacin
Ejercicio 4.1. Codifique la funcin xq = q_midriser(x,N), que proporciona la salida de
un cuantificador mid-riser uniforme de N bits y margen dinmico entre 1 y 1, cuando
a la entrada del cuantificador se encuentra el vector de muestras x. La funcin
q_midriser proporciona un vector xq de longitud igual a la longitud de x, y que slo
puede tomar un nmero finito de 2N valores. Compruebe el correcto funcionamiento del
cuantificador generando una seal de entrada cuya amplitud vaya desde -1.2 a 1.2 con
paso 0.001, y dibujando la relacin entre la seal de entrada y la seal cuantificada para
N = 3.
Ejercicio 4.2. Utilizando la funcin q_midriser desarrollada en el ejercicio anterior,
construya otra funcin y = c_midriser(x,N) que realice el proceso completo de cuantificacin y codificacin. La entrada ser el vector de muestras x, y la salida debe ser una
secuencia binaria de longitud N veces la de x. Para ello puede emplear las funciones
xpcm = bin_enc(xq,N) e y = par2ser(xpcm). La primera pasa de un vector de nmeros
reales cuantificados/decuantificados a una matriz de tamao la longitud de xq por N. La
segunda serializa la matriz xpcm por filas. Compruebe el correcto funcionamiento del
cuantificador/codificador construyendo una seal de entrada de longitud 2N tal que sus
muestras se encuentren de manera consecutiva dentro de cada uno de los 2N escalones
del cuantificador para N = 3, y observando los bits transmitidos. Para cada muestra, se
transmite primero el bit ms significativo (MSB) o el menos significativo (LSB)?
Ejercicio 4.3. Codifique la funcin xr = d_midriser(y,N) que proporciona la salida de
un decuantificador mid-riser uniforme de N bits y margen dinmico entre 1 y 1,
cuando a la entrada del decuantificador se dispone de un vector binario en el que cada N
bits representan un valor a reconstruir. La funcin d_midriser proporciona un vector,
xr, real de longitud igual a la longitud de y entre N. Para ello puede emplear las
funciones x_bin = ser2par(y,N) y xr = bin_dec(x_bin). La primera parareliza un vector
binario en una matriz con N columnas. La segunda convierte un vector binario de N bits
en un valor de reconstruccin entre 1 y 1. Compruebe su correcto funcionamiento
dibujando la relacin entrada-salida en este caso (es decir, la relacin entre la seal
original, x, y la decuantificada, xr) y viendo que coincide con la del ejercicio 4.1.
Ejercicio 4.4. Codifique la funcin x = coseno(A,fo,phi,M) que genera un vector x con
M muestras de un coseno con amplitud A, frecuencia discreta fo y fase phi. Usando esta
funcin genere un vector, x, de 100 muestras de un seno con frecuencia f0 = 0.03 y
amplitud A = 1.5. Dibuje la sinusoide y la seal de salida tras pasar por el
cuantificador/decuantificador, xr, en la misma grfica, y el ruido de cuantificacin (la
diferencia entre la seal original y la reconstruida) para N = 3 y N = 8 en otra grfica.
Observa algn efecto extrao? Realice los ajustes necesarios sobre la seal para
corregirlo
y
repita
el
ejercicio.

Ejercicio 4.5. Genere una nueva sinusoide con amplitud A = 1, fo = 0.05 y fase aleatoria
entre 0 y 2 (utilice la funcin rand). Calcule la potencia del ruido de cuantificacin
para esta seal con N comprendido entre 1 y 8 usando M = 1000 puntos, y rellene la
columna correspondiente de la Tabla 1. Repita el clculo para una seal distribuida
uniformemente entre -1 y 1, y para una seal con amplitud Gaussiana de media nula y
varianza 1/4 (use la funcin randn). Rellene las otras dos columnas de la Tabla 1.

Bits

Sinusoide

Uniforme

Gaussiana

1
2
3
4
5
6
7
8
Tabla 1: Ruido de cuantificacin para diferentes seales y nmero de bits.

Dibuje la relacin seal a ruido de cuantificacin en dBs para cada caso y comprela
con la terica. Coinciden los resultados? En caso negativo indique a qu son debidas
las diferencias en cada uno de los tres casos.
Ejercicio 4.6. Estime la fdp del ruido de cuantificacin para cada una de las tres seales
del ejercicio anterior con N = 4 mediante un histograma con 25 segmentos (bins)
usando las funciones hist y bar. Coincide el resultado con la fdp terica? Explica este
resultado las diferencias en la relacin seal a ruido de cuanti-ficacin observadas en el
ejercicio anterior?
Ejercicio 4.7. La funcin chan_bin(xser,Pe) simula un canal binario con probabilidad
Pe de que un bit se reciba errneamente. Calcule la potencia del ruido (la diferencia
entre la seal decuantificada y la real) cuando se codifica la sinusoide del ejercicio 4.5
con la funcin c_midriser con N = 3 y N = 8 para una probabilidad de error en chan_bin
entre Pe = 10-5 y Pe = 10-1 (con paso 10-1). Promedie 1000 realizaciones para obtener
resultados ms fiables. Dibuje en una grfica la relacin seal a ruido en dBs para cada

valor de Pe y comprela con la obtenida en el ejercicio 5.5 (sin errores). Qu


conclusiones obtiene?
Ejercicio 4.8. Un cdigo de Gray es aquel en el que nicamente cambia un bit entre
smbolos consecutivos. La ventaja de los cdigos de Gray (frente a la codificacin
binaria natural) es que un error en un bit representa un menor error en la seal final
decodificada. Repita el ejercicio anterior utilizando cdigos de Gray. Para ello,
construya dos nuevas funciones, c_midriser2 y d_midriser2, en las que se deben utilizar
(en el punto adecuado) las funciones bin2gray(xpcm) y gray2bin(xrpcm) para convertir
de binario natural a cdigo de Gray y viceversa.
Ejercicio 4.9. Codifique una funcin que realice la ley A, x_comp = ley_A(x,A), para
cuantificacin no uniforme y su funcin inversa, x_exp = ley_A_inv(x_comp,A),
supuesto xmax = 1. Para comprobar su correcto funcionamiento genere una seal de
entrada como la del ejercicio 4.1 y, para A = 20, represente: la relacin entre x y
x_comp, la relacin entre x_exp y x (sin proceso de cuantificacin), y la relacin
entrada-salida del cuantificador no uniforme.
Ejercicio 4.10. Cargue el fichero voz.wav, [x,fs,nbits] = wavread(voz.wav), y estime
su fdp. A la vista de la misma, resulta adecuada una cuantificacin lineal? Aplique la
ley A a la seal de voz con A = 87.6. Dibuje la seal original y la seal comprimida en
el dominio del tiempo y estime la fdp de esta ltima. Resulta ms adecuada esta nueva
seal para aplicar el cuantificador lineal? Calcule, para N = 8, la relacin seal a ruido
de cuantificacin en ambos casos (cuantificacin uniforme y no uniforme). Calcule
tambin el error medio porcentual (esto es, la media del error en cada punto dividido por
el valor de la seal en dicho punto) Cree que ha mejorado la seal codificada al
introducir esta no linealidad? Puede comprobarlo escuchando las diferentes seales de
voz mediante el comando wavplay(x,fs).
Ejercicio 4.11. Cargue ahora la seal proporcionada en el fichero logistico.mat,
represntela y estime su fdp mediante un histograma. Resulta adecuado utilizar un
cuantificador uniforme en esta ocasin? y un cuantificador no uniforme empleando la
ley A? En caso negativo, qu tipo de relacin de compansin es recomendable para
esta seal? Comprubelo calculando la relacin seal a ruido de cuantificacin y el error
medio porcentual en cada caso para N = 8.