Está en la página 1de 15

Prctica 2

Fundamentos de Sistemas de Comunicacin

Hernndez Leal, Misael Alejandro Alejos Jimnez, Jess Ricardo Ingeniera Electrnica Tlaquepaque, Jalisco. Noviembre de 2011

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2

Contenidos
Contenidos .................................................................................................................................................... 1 Objetivo ........................................................................................................................................................ 1 Introduccin .................................................................................................................................................. 1 Parte 1: Anlisis del canal ............................................................................................................................. 1 Distorsin .................................................................................................................................................. 1 Respuesta en frecuencia ............................................................................................................................ 2 Tcnica 1: Anlisis de respuesta al impulso ......................................................................................... 2 Tcnica 2: Respuesta al ruido gaussiano aditivo................................................................................... 3 Tcnica 3: Respuesta a una seal compuesta ........................................................................................ 4 Parte 2 ........................................................................................................................................................... 6 Parte 3 ........................................................................................................................................................... 7 Experimento 1 ........................................................................................................................................... 7 Experimento 2 ......................................................................................................................................... 10 Preguntas ..................................................................................................................................................... 12 Bibliografa ................................................................................................................................................. 13

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2

Objetivo
El objetivo de esta prctica es evaluar la calidad del canal de audio de las computadoras, para identificar las bandas de frecuencia donde es posible transmitir sin distorsin. Para evaluar la calidad del canal utilizaremos los diagramas de ojo.

Introduccin
Para realizar la evaluacin del canal de audio realizaremos varios experimentos de transmisin de diferentes tipos de seales y analizando las seales recibidas mediante diagramas de ojo. Los diagramas de ojo nos permiten visualizar que tan limpia est una seal o si ha ocurrido algn error de smbolo en la transmisin. Estos diagramas consisten en la superposicin de secciones de una seal que duran el mismo tiempo y que corresponden a cierta cantidad de smbolos por captura1. El diagrama de ojo de una seal sana se debe mostrar muy abierto, mientras que el diagrama de ojo de una seal mala es muy cerrado o en casos extremos quiz no tenga forma alguna. Los experimentos bsicamente consisten en generar una seal especfica y guardarla en un archivo de audio, para despus reproducirla (sin ningn tipo de ecualizacin) a travs del canal de audfonos y capturarla en el canal de micrfono (interconectando ambos puertos con un cable de audio). Se realizar un anlisis tanto de la seal a transmitir como de la seal recibida, para as poder hacer comparaciones y poder evaluar la calidad del canal fcilmente. El software utilizado tanto para la generacin como para la captura de las seales ser el MatLab, y todos los cdigos estn disponibles junto con las explicaciones de la prctica en este documento.

Para dichos experimentos, utilizaremos la entrada y la salida de audio (los puertos de micrfono y audfonos respectivamente) de una computadora HP DV5 1135LA. Adems, para todos los experimentos contenidos en esta prctica utilizaremos una frecuencia de muestreo , que es una frecuencia estndar para muestrear seales de audio y un solo canal (sonido mono-aural). Para evitar saturacin del sistema, el transmisor (el volumen del equipo transmisor) est al 10%, mientras que el amplificador de entrada del receptor tiene ganancia unitaria.

Parte 1: Anlisis del canal


En esta parte haremos un anlisis de la respuesta en frecuencia del canal de comunicacin, formado por: una tarjeta de sonido para transmitir (sus canales de recepcin y de envo) y un cable de audio.

Distorsin
Nuestra primera prueba consiste en verificar que nuestro canal no induzca mucha distorsin a la seal. Para ello construiremos y transmitiremos una seal sinusoidal de 5 kHz. Como parte de nuestro anlisis, graficamos la seal transmitida y la seal recibida para comprobar que efectivamente no hubo mucha distorsin mediante la comparacin de ambas grficas. La duracin de la seal a transmitir ser de un segundo, sin embargo el programa utilizado para recibir muestrear durante tres segundos para evitar truncamientos no deseados.
Tabla 1. Cdigo MatLab para generar una seal de audio sinusoidal a 5 kHz.

(Johnson & Sethares, 2003)

clear all; close all; fs=44100; %Definimos frecuencia de muestreo dt=1/fs; %Tiempo entre cada muestra t=(0:dt:1-dt); %Vector de tiempo para muestrear f=5000; %Frecuencia de la seal sinusoidal signal=sin(2*pi*f*t); %Vector con las muestras de la

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2


sinusoide wavplay(signal,fs, 'sync'); %Reproducir el audio reportPlot(t,0,1*10^-3,'Tiempo (seg)',... signal,-1.1,1.1,'Amplitud'... ,'Seal transmitida'); wavwrite(signal,fs,16,'sin5k.wav'); %Guardar el archivo WAV
Tabla 2. Cdigo de MatLab para recibir por el canal de audfonos la seal sinusoidal.

Una vez realizado el experimento, capturamos los resultados en las grficas que se muestran en la Figura 1 y en la Figura 2. Note que la frecuencia no se ha alterado, aunque la amplitud ha disminuido un poco por las prdidas que ocurren en el canal.

Respuesta en frecuencia
Para analizar la respuesta en frecuencia de nuestro canal utilizaremos tres tcnicas que involucran tres tipos de seales: un impulso tipo delta de Dirac , ruido gaussiano aditivo y una seal compuesta por una superposicin de sinusoides de diferentes frecuencias. Tcnica 1: Anlisis de respuesta al impulso Una forma de caracterizar la funcin de transferencia de un sistema es analizando la respuesta a su impulso. Es bajo este principio que realizaremos este experimento. Transmitiremos un impulso a travs del cable de audio y al recibirlo en el puerto de micrfono haremos un anlisis en frecuencia de la respuesta, obteniendo as la caracterizacin del canal en el dominio de la frecuencia.

clear all; close all; fs=44100; %Definimos frecuencia de muestreo (Hz) dt=1/fs; %Tiempo entre cada muestra d=3; %Determinar duracin del audio (Seg) t=(0:dt:d-dt); %Vector de tiempo para muestrear r=wavrecord(d*fs,fs,'double'); %Hacemos la grabacin rstart=find((r>0.5),1); %Capturamos el momento en que inicia la seal reportPlot(t,t(rstart),t(rstart)+1*10^-3,'Tiempo (seg)',... r,[],[],'Amplitud',... 'Seal Recibida'); %Graficamos la seal recibida spectrum(r,1/fs,2^nextpow2(length(r)),0,2,1,0,0); %Obtenemos su espectro

Seal Transmitida 1
Amplitud

0.5 0 -0.5 -1 0 0.2 0.4 0.6 Tiempo (seg) 0.8 x 10 1


-3

Tabla 3. Cdigo de MatLab para formar y mandar un impulso por el canal de audio.

Figura 1. Seal a transmitir: sinusoide con una frecuencia de 5 kHz.

Seal Recibida 0.5


Amplitud

0 -0.5 1.0948 1.095 1.0952 1.0954 1.0956 Tiempo (seg)

clear all; close all; fs=44100; %Definimos frecuencia de muestreo dt=1/fs; %Tiempo entre cada muestra pulse=[zeros(1,44100),1,zeros(1,44099)]; %Crear impulso d=length(pulse)*1/fs; %Duracin del pulso t=(0:dt:d-dt); %Vector de tiempo wavplay(pulse,fs, 'sync'); %Reproducir el audio reportPlot(t,[],[],'Tiempo (seg)',... pulse,[],[],'Amplitud'... ,'Seal transmitida'); wavwrite(pulse,fs,16,'impulso.wav'); %Guardar el archivo WAV
Tabla 4. Cdigo de MatLab para recibir una seal y graficar su espectro.

Figura 2. Seal recibida: la misma sinusoide pero ligeramente atenuada.

clear all; close all;

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2


fs=44100; %Definimos frecuencia de muestreo (Hz) dt=1/fs; %Tiempo entre cada muestra d=3; %Determinar duracin del audio (Seg) t=(0:dt:d-dt); %Vector de tiempo para muestrear r=wavrecord(d*fs,fs,'double'); %Hacemos la grabacin tmin=find(r==max(r))-100; tmax=find(r==max(r))+100; reportPlot(t,t(tmin),t(tmax),'Tiempo (seg)',... r,[],[],'Amplitud',... 'Seal Recibida'); %Graficamos la seal recibida spectrum(r(tmin:tmax),1/fs,2^nextpow2(length(r)),0,2,1,0,0); %Obtenemos su espectro
x 10 4
-6

Espectro de Magnitud

Amplitud

3 2 1 0 0.5 1 1.5 2 x 10
4

Frecuencia (Hz)

Seal transmitida 1
Amplitud

Figura 5. Espectro de frecuencia de la respuesta al impulso del canal de audio. Curva caracterstica de la respuesta en frecuencia del canal.

0.5

0.5

1 1.5 Tiempo (seg)

Note que este resultado es muy congruente con lo que se espera de una tarjeta de audio, pues se trata de un canal pasa-bandas cuyo rango de operacin va desde frecuencias bajas hasta alrededor de 22 kHz (rango aproximado de la frecuencia audible por el ser humano). Tcnica 2: Respuesta al ruido gaussiano aditivo. Recordemos que el ruido gaussiano tiene un espectro uniforme (de magnitud constante) a lo largo de todo el rango de frecuencias. Dado lo anterior esperamos ver un espectro uniforme pero limitado hasta una frecuencia aproximada a los 22 kHz despus de recibir la seal por el puerto de micrfono (pues esto hara que el resultado fuera congruente con el obtenido por la tcnica 1).
Tabla 5. Cdigo de MatLab para generar el ruido gaussiano por 5 segundos.

Figura 3. Seal transmitida: un impulso muy al estilo Delta de Dirac.

Seal Recibida 0.6


Amplitud

0.4 0.2 0 0.86 0.861 0.862 Tiempo (seg) 0.863

Figura 4. Seal recibida: respuesta al impulso del canal de audio.

clear all; close all; fs=44100; %Definimos frecuencia de muestreo d=5; %Duracin del ruido dt=1/fs; %Tiempo entre cada muestra t=(0:dt:d-dt); %Vector de tiempo noise= sqrt(1)*randn(1,fs*d); %Ruido gaussiano de 5seg spectrum(noise,1/44100,2^nextpow2(length(noise)),... 0,2,1,0,0); %Anlisis en frecuencia del ruido wavplay(noise,fs, 'sync'); %Reproducir el audio reportPlot(t,[],[],'Tiempo (seg)',... noise,[],[],'Amplitud'... ,'Seal transmitida');

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2


wavwrite(noise,fs,16,'ruido.wav'); %Guardar el archivo WAV

Seal Recibida 0.5


Amplitud

Tabla 6. Cdigo de MatLab para recibir el ruido.

clear all; close all; fs=44100; %Definimos frecuencia de muestreo (Hz) dt=1/fs; %Tiempo entre cada muestra d=6; %Determinar duracin del audio (Seg) t=(0:dt:d-dt); %Vector de tiempo para muestrear r=wavrecord(d*fs,fs,'double'); %Hacemos la grabacin reportPlot(t,[],[],'Tiempo (seg)',... r,[],[],'Amplitud',... 'Seal Recibida'); %Graficamos la seal recibida spectrum(r,1/fs,2^nextpow2(length(r)),0,2,1,0,0); %Obtenemos su espectro

0 -0.5 0 1 2 3 4 Tiempo (seg) 5

Figura 8. Seal recibida: ruido ligeramente atenuado.

x 10 15

-4

Espectro de Magnitud

Seal transmitida 1
Amplitud

0.5 0 -0.5

Amplitud

10 5

0.5

1.5

2 x 10
4

2 3 Tiempo (seg)

Frecuencia (Hz)

Figura 6. Seal transmitida: ruido gaussiano aditivo.

Figura 9. Espectro de magnitud de la seal recibida. Note que se ha limitado en banda de acuerdo al ancho de banda del canal.

14 12 10 8 6 4 2

x 10

-4

Espectro de Magnitud

Amplitud

Note en la Figura 9 que efectivamente obtenemos un espectro que tiende a ser plano en el rango de frecuencias esperado (la respuesta se muestra similar a la obtenida con la tcnica anterior). Tcnica 3: Respuesta a una seal compuesta La ltima de nuestras tcnicas para hacer mediciones en el canal ser la de superponer 40 seales sinusoidales con frecuencias en el rango de 500 Hz a 20 kHz (con pasos uniformes de 500 Hz). Para generar esta seal utilizaremos el cdigo contenido en la siguiente tabla.
Tabla 7. Cdigo de MatLab utilizado para generar la superposicin de las 40 sinusoidales.

0.5

1 1.5 Frecuencia (Hz)

2 x 10
4

Figura 7. Espectro de magnitud de la seal transmitida. Note que efectivamente es uniforme.

clear all; close all; fs=44100; %Definimos frecuencia de muestreo

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2


dt=1/fs; %Tiempo entre cada muestra d=3; %Duracin de la seal t=(0:dt:d-dt); %Vector de tiempo signal1=0; %Inicializacin de la seal for f=(500:500:20000) %Vector de frecuencias signal1=signal1+sin(2*pi*f*t); %Crear seal end wavplay(signal1,fs, 'sync'); %Reproducir el audio reportPlot(t,[],[],'Tiempo (seg)',... signal1,[],[],'Amplitud'... ,'Seal transmitida'); signal2=(65536/2)*signal1; %Normalizar para convertir a WAV wavwrite(signal2,fs,16,'40sines.wav'); %Guardar el archivo WAV spectrum(signal2,1/fs,2^nextpow2(length(signal2)),0,2,1,0,0); %Obtenemos su espectro
Tabla 8. Cdigo MatLab para recibir la seal de superposicin de seales sinusoidales y analizarla.

Espectro de Magnitud 8000


Amplitud

6000 4000 2000 0 0.5 1 1.5 Frecuencia (Hz) 2 x 10


4

Figura 11. Contenido espectral de la seal transmitida.

Seal Recibida 0.5


Amplitud

Amplitud

clear all; close all; fs=44100; %Definimos frecuencia de muestreo (Hz) dt=1/fs; %Tiempo entre cada muestra d=4; %Determinar duracin del audio (Seg) t=(0:dt:d-dt); %Vector de tiempo para muestrear r=wavrecord(d*fs,fs,'double'); %Hacemos la grabacin rstart=find((r>0.5),1); %Capturamos el momento en que inicia la seal reportPlot(t,t(rstart)+1,t(rstart)+1+10*10^-3,'Tiempo (seg)',... r,[],[],'Amplitud',... 'Seal Recibida'); %Graficamos la seal recibida spectrum(r,1/fs,2^nextpow2(length(r)),0,2,1,0,0); %Obtenemos su espectro

-0.5 1.758 1.76 1.762 1.764 1.766 Tiempo (seg)


Figura 12. Seal recibida. La seal se muestra casi intacta salvo por la amplitud, como en otros casos anteriores.

x 10 5 4 3 2 1

-3

Espectro de Magnitud

Seal transmitida 0.5


Amplitud

0 -0.5 0 0.002 0.004 0.006 0.008 Tiempo (seg) 0.01

0.5

1.5

2 x 10
4

Frecuencia (Hz)

Figura 13. Contenido espectral de la seal recibida. Note que slo las componentes en frecuencia ms altas se han atenuado.

Figura 10. Seal transmitida: Superposicin de 40 sinusoides de distintas frecuencias.

Note que nuevamente hemos obtenido un espectro dentro de los lmites esperados (ahora limitado hasta 20 kHz, pues fue la componente de frecuencia con frecuencia ms grande que mandamos en este caso). 5

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2

Parte 2
En esta parte realizaremos una transmisin en banda base con una frecuencia mxima de 500 Hz. Para lo anterior, utilizaremos un pulso de coseno alzado con y con una frecuencia mxima y codificaremos la seal de manera bipolar. Al utilizar este pulso como filtro formador para la informacin concentraremos todo el contenido espectral en una banda de 0 Hz a 500 Hz, es decir, en banda base con un ancho de banda de 500 Hz.
Tabla 9. Cdigo MatLab para generar y enviar la seal de datos aleatorios.

%% Guardar un WAV con los datos % Aadimos un segundo de silencio. signal=[zeros(1,1*fs),signal]; % Guardar el archivo WAV wavwrite(signal,fs,16,'parte2.wav');

Una vez ejecutado este programa, obtenemos las siguientes grficas del coseno alzado (Figura 14), el diagrama de ojo de la seal a transmitir (Figura 15) y el espectro de magnitud de esta ltima seal (Figura 16).
Pulso Coseno Alzado (PRC) 20 10 0 0 0.005 0.01 Tiempo (seg)

%% Limpiar variables y cerrar ventanas clear all; close all; %% Generacin del pulso RC % Caracterizacin del pulso beta=0.5; B=500; fs=44100;o Rb=(2*B)/(beta+1); Tp=round((Rb/fs)^-1)/fs; Ts=1/fs; %Construccin del pulso RC [prc t] = rcpulse(0.5,10,Tp,Ts,'rc',1); %Graficamos el resultado reportPlot(t,[],[],'Tiempo (seg)',... prc,[],[],'Amplitud',... 'Pulso Coseno Alzado (PRC)'); %% Generacin de datos aleatorios % Definimos cuntos datos queremos ndata=160; data=round(rand(1,ndata)); % La separacin entre cada dato ser el tamao del pulso RC, es decir Tp/Ts data2=zeros(1,ndata*Tp/Ts); data2(1:Tp/Ts:length(data2))=(data*2)-1; data=data2; %% Generar la seal a enviar y analizarla % Construimos la seal a transmitir signal=conv(data,prc); % Normalizar la seal signal=signal/max(signal); % Diagrama de ojo eyed(signal(floor((length(prc)/2)):... length(signal)-floor((length(prc)/2))),Tp/Ts,3,1,ndata); % Espectro de magnitud spectrum(signal,1/fs,2^nextpow2(length(signal)),0,2,1,0,0);

Figura 14. Pulso de tipo coseno alzado con utilizado como filtro formador.

Amplitud

Diagrama de ojo 1 0.5 0 -0.5 -1 0 50 100 150 ndices de muestras 200

Figura 15. Diagrama de ojo de la seal a transmitir (suprimiendo los transientes).

Amplitud

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2


Espectro de Magnitud 0.08 0.06 0.04 0.02 0 0.5 1 1.5 Frecuencia (Hz) 2 x 10
4

start2=find(abs(signal2)>0.05,1,'first'); final2=find(abs(signal2)>0.05,1,'last'); reportPlot(t,t(start2-100),t(final2+100),'Tiempo (seg)',... signal2(order/2+1:length(signal2)-order/2),... [],[],'Amplitud','Seal Filtrada'); %Graficamos la seal recibida spectrum(signal2(start2:final2),1/fs,... 2^nextpow2(length(signal2(start2:final2))),... 0,2,1,0,0); %Obtenemos su espectro eyed(signal2(start2:end),Tp/Ts,3,1,ndata); %Graficamos diagrama de ojo

Amplitud

Espectro de Magnitud 0.06


Amplitud

Figura 16. Contenido espectral de la seal a transmitir. Note que el espectro est limitado en una banda de 500 Hz aproximadamente.

0.04 0.02

Ahora recibiremos estos datos en la entrada de micrfono. Pero ahora aadiremos un filtro pasa-bajas con frecuencia de corte y un anlisis por diagrama de ojo de la seal recibida.
Tabla 10. Cdigo MatLab para recibir y analizar la seal codificada con el pulso de coseno alzado bipolar.

0.5

1 1.5 Frecuencia (Hz)

2 x 10
4

%% Limpiar variables y cerrar ventanas clear all; close all; %% Captura por el canal de audio ndata=160; %Nmero de datos a recibir fs=44100; %Definimos frecuencia de muestreo (Hz) dt=1/fs; %Tiempo entre cada muestra d=3; %Determinar duracin del audio (Seg) Rb=(2*B)/(beta+1); %Taza de bits %Taza de bits Tp=round((Rb/fs)^-1)/fs; %Mltiplo ms cercano de Ts Ts=1/fs; %Periodo de muestreo t=(0:dt:d-dt); %Vector de tiempo para muestrear signal=wavrecord(d*fs,fs,'double'); %Hacemos la grabacin %% Anlisis de seal recibida start=find(abs(signal)>0.05,1,'first'); final=find(abs(signal)>0.05,1,'last'); reportPlot(t,t(start-100),t(final+100),'Tiempo (seg)',... signal,[],[],'Amplitud',... 'Seal Recibida'); %Graficamos la seal recibida spectrum(signal(start:final),1/fs,... 2^nextpow2(length(signal(start:final))),... 0,2,1,0,0); %Obtenemos su espectro eyed(signal(start:final),Tp/Ts,3,1,ndata-10); %Graficamos diagrama de ojo %% Filtrar y volver a analizar seal recibida order=100; lpfilter=fir1(order,0.5,'low'); signal2=conv(signal,lpfilter);

Figura 17. Contenido espectral de la seal recibida.

Diagrama de ojo 1
Amplitud

0.5 0 -0.5 -1 0 50 100 150 ndices de muestras 200

Figura 18. Diagrama de ojo de la seal recibida. Note que est ligeramente ms cerrado que el de la seal a transmitir por efectos del canal (suprimiendo transientes).

Note de la Figura 18 que el diagrama de ojo est abierto, por lo que podemos decir que nuestro canal es de buena calidad para transmisiones en banda base y con un ancho de banda angosto.

Parte 3
Experimento 1
7

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2 En esta parte utilizaremos modulacin en amplitud y un ancho de banda grande (10 kHz). El tipo de modulacin del que nos valdremos para hacer nuestros experimentos es la llamada AM (Amplitud Modulada) de tipo DSB-SC (Double-Sideband Supressed-Carrier Transmission, Transmisin de Banda Bilateral con Portadora Suprimida) a una frecuencia , la cual consiste en multiplicar la seal a transmitir por un coseno. Para que la seal tenga el contenido espectral que nos interesa utilizaremos nuevamente el pulso coseno alzado con frecuencia mxima y . De este modo, al modular la seal a la frecuencia mencionada su contenido espectral estar contenido entre 1 y 11 kHz, logrando as el ancho de banda mencionado anteriormente.
Tabla 11. Cdigo de MatLab para formar una seal modulada en AM DSB-SC.

ma de ojo spectrum(signal,1/fs,2^nextpow2(length(signal)),0,2,1,0,0); %Obtenemos su espectro %% Modulacin y anlisis de seal modulada dt=1/fs; %Definir diferencial de tiempo d=length(signal)*dt; %Duracin de la seal t=(0:dt:d-dt); %Vector con tiempo de la seal fc=6000; %Frecuencia para modular signal=signal.*cos(2*pi*fc*t); %Modulacin spectrum(signal,1/fs,2^nextpow2(length(signal)),0,2,1,0,0); %Obtenemos su espectro %% Guardar un WAV con los datos signal=[zeros(1,1*fs),signal]; %Aadimos un segundo de silencio. wavwrite(signal,fs,16,'parte3.wav'); %Guardar el archivo WAV

Las grficas que caracterizan la seal que acabamos de generar con el script anterior se muestran a continuacin: El pulso coseno alzado, el espectro de magnitud antes de la modulacin, y el espectro de magnitud despus de la modulacin.
Pulso Coseno Alzado (PRC) 80
Amplitud

%% Limpiar variables y cerrar ventanas clear all; close all; %% Generacin del pulso RC beta=0.5; %Valor de beta B=5000; %Ancho de banda (f_max) fs=44100; %Frecuencia de muestreo Rb=(2*B)/(beta+1); %Taza de bits Tp=round((Rb/fs)^-1)/fs; %Mltiplo ms cercano de Ts Ts=1/fs; %Periodo de muestreo [prc tprc] = rcpulse(0.5,10,Tp,Ts,'rc',1); %Construccin del pulso RC reportPlot(tprc,[],[],'Tiempo (seg)',... prc,[],[],'Amplitud',... 'Pulso Coseno Alzado (PRC)'); %Graficamos el pulso %% Generacin de datos aleatorios ndata=160; %Nmero de datos data=round(rand(1,ndata)); %Generar vector aleatorio de 1's y 0's data2=zeros(1,ndata*Tp/Ts); data2(1:Tp/Ts:length(data2))=(data*2)-1; data=data2; %% Generar la seal a enviar y analizarla signal=conv(data,prc); %Construimos la seal a transmitir signal=signal(length(prc)/2:length(signal)length(prc)/2)/max(signal); %Normalizar la seal eyed(signal,Tp/Ts,3,1,ndata); %Obtenemos su diagra-

60 40 20 0 0 0.5 1 Tiempo (seg) 1.5 x 10


-3

Figura 19. Pulso coseno alzado que corresponde ahora a un ancho banda de 5 kHz.

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2


Espectro de Magnitud 0.06 0.04 0.02 0 0.5 1 1.5 Frecuencia (Hz) 2 x 10
4

Tabla 12. Cdigo para recibir y analizar la seal modulada en AM DSB-SC.

Figura 20. Contenido espectral de la seal a transmitir. Note que efectivamente est limitado en una banda de 5 kHz.

Espectro de Magnitud 0.03 0.02 0.01 0 0.5 1 1.5 Frecuencia (Hz) 2 x 10


4

Figura 21. Seal a transmitir ya modulada a

Diagrama de ojo 0.5 0 -0.5 -1 5 10 15 ndices de muestras 20

Figura 22. Diagrama de ojo de la seal a transmitir (suprimiendo transientes).

%% Limpiar variables y cerrar ventanas clear all; close all; %% Captura por el canal de audio ndata=160; %Nmero de datos a recibir fs=44100; %Definimos frecuencia de muestreo (Hz) dt=1/fs; %Tiempo entre cada muestra d=3; %Determinar duracin del audio (Seg) t=(0:dt:d-dt); %Vector de tiempo para muestrear B=5000; %Ancho de banda (f_max) beta=0.5; %Valor de beta Rb=(2*B)/(beta+1); %Taza de bits Tp=round((Rb/fs)^-1)/fs; %Mltiplo ms cercano de Ts Ts=1/fs; %Periodo de muestreo signal=wavrecord(d*fs,fs,'double'); %Hacemos la grabacin %% Anlisis de seal recibida start=find(abs(signal)>0.05,1,'first'); final=find(abs(signal)>0.05,1,'last'); reportPlot(t,t(start-100),t(final+100),'Tiempo (seg)',... signal,[],[],'Amplitud',... 'Seal Recibida'); %Graficamos la seal recibida spectrum(signal(start:final),1/fs,... 2^nextpow2(length(signal(start:final))),... 0,2,1,0,0); %Obtenemos su espectro %% Demodular, Filtrar y volver a analizar seal recibida signal=signal(start:end); %Recortar silencios dt=1/fs; %Definir diferencial de tiempo d=length(signal)*dt; %Duracin de la seal t=(0:dt:d-dt); %Vector con tiempo de la seal fc=6000; %Frecuencia para modular signal=signal'.*cos(2*pi*fc*t); order=100; lpfilter=2*fir1(order,0.3); signal2=conv(signal,lpfilter); reportPlot(t,[],[],'Tiempo (seg)',... signal2(order/2+1:length(signal2)-order/2),... [],[],'Amplitud','Seal Filtrada'); %Graficamos la seal recibida [ssf afxs pfxs]=spectrum(signal2,1/fs,... 2^nextpow2(length(signal2)),... 0,2,1,0,0); %Obtenemos su espectro eyed(signal2(order/2+1:length(signal2)order/2),Tp/Ts,3,1,ndata-10); %Graficamos diagrama de ojo

Amplitud

Amplitud

Amplitud

Note que, como era de esperar, despus de modular la seal el espectro de magnitud slo se ha centrado en la frecuencia de la seal portadora.

Al de-modular la seal (multiplicando nuevamente esta seal por un coseno de la misma frecuencia que se utiliz para modularla) y filtrarla con un filtro pasa-bajas con obtenemos una seal cuyo espectro de magnitud se muestra en la siguiente grfica. 9

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2


2
-3 x 10 Espectro de Magnitud

Amplitud

1.5 1 0.5 0 0.5 1 1.5 Frecuencia (Hz) 2 x 10


4

mas estn a y con . Por lo cual, al modularla a la frecuencia mencionada tendremos un ancho de banda de 1000 Hz (de 5.5 kHz a 6.5 kHz).
Tabla 13. Cdigo MatLab para generar la seal ahora limitada en una banda de 500 Hz y modulada a 6 kHz.

%% Limpiar variables y cerrar ventanas clear all; close all; %% Generacin del pulso RC beta=0.5; %Valor de beta B=500; %Ancho de banda (f_max) fs=44100; %Frecuencia de muestreo Rb=(2*B)/(beta+1); %Taza de bits Tp=round((Rb/fs)^-1)/fs; %Mltiplo ms cercano de Ts Ts=1/fs; %Periodo de muestreo [prc tprc] = rcpulse(0.5,10,Tp,Ts,'rc',1); %Construccin del pulso RC reportPlot(tprc,[],[],'Tiempo (seg)',... prc,[],[],'Amplitud',... 'Pulso Coseno Alzado (PRC)'); %Graficamos el pulso %% Generacin de datos aleatorios ndata=160; %Nmero de datos data=round(rand(1,ndata)); %Generar vector aleatorio de 1's y 0's data2=zeros(1,ndata*Tp/Ts); data2(1:Tp/Ts:length(data2))=(data*2)-1; data=data2; %% Generar la seal a enviar y analizarla signal=conv(data,prc); %Construimos la seal a transmitir signal=signal(length(prc)/2:length(signal)length(prc)/2)/max(signal); %Normalizar la seal eyed(signal,Tp/Ts,3,1,ndata); %Obtenemos su diagrama de ojo spectrum(signal,1/fs,2^nextpow2(length(signal)),0,2,1,0,0); %Obtenemos su espectro %% Modulacin y anlisis de seal modulada dt=1/fs; %Definir diferencial de tiempo d=length(signal)*dt; %Duracin de la seal t=(0:dt:d-dt); %Vector con tiempo de la seal fc=6000; %Frecuencia para modular signal=signal.*cos(2*pi*fc*t); %Modulacin signal=signal/max(abs(signal)); spectrum(signal,1/fs,2^nextpow2(length(signal)),0,2,1,0,0); %Obtenemos su espectro %% Guardar un WAV con los datos signal=[zeros(1,1*fs),signal]; %Aadimos un segundo de silencio.

Figura 23. Contenido espectral de la seal recibida, ya despus de ser de-modulada y filtrada.

Diagrama de ojo 0.5

Amplitud

0 -0.5 5 10 15 ndices de muestras 20

Figura 24. Diagrama de ojo de la seal recibida, demodulada y filtrada (suprimiendo transientes).

Note entonces que a partir de los resultados de este experimento podemos concluir que nuestro canal es de buena calidad y apto para transmisiones realizadas en bandas anchas (10 kHz) y moduladas en amplitud.

Experimento 2
Finalmente, haremos una transmisin de una seal modulada en amplitud pero ahora cuyo contenido espectral est contenido en una banda muy angosta (1000 Hz). La tcnica de modulacin ser la misma que utilizamos en el primer experimento de esta parte, es decir, modularemos en AM DSB-SC a una frecuencia . Utilizaremos un filtro formador de pulso coseno alzado cuyas componentes de frecuencia mxi10

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2


wavwrite(signal,fs,16,'parte3_2.wav'); %Guardar el archivo WAV

Diagrama de ojo 1 0.5 0 -0.5 -1 50 100 150 ndices de muestras


Figura 28. Diagrama de ojo de la seal a transmitir (suprimiendo transientes).

Pulso Coseno Alsado (PRC) 20 10 0 0 0.005 0.01 Tiempo (seg)

Amplitud

Tabla 14. Cdigo MatLab para recibir la seal modulada con ancho de banda angosto.

Figura 25. Pulso coseno alzado con componentes de frecuencia concentradas en un ancho de banda de 500 Hz y con .

Espectro de Magnitud 0.06

0.04 0.02

0.5

1 1.5 Frecuencia (Hz)

2 x 10
4

Figura 26. Contenido espectral de la seal a transmitir antes de ser modulada.

Espectro de Magnitud 0.03

0.02 0.01 0 0.5 1 1.5 Frecuencia (Hz) 2 x 10


4

Figura 27. Espectro de la seal modulada a kHz, note que se trata del mismo espectro anterior pero recorrido, como se espera de una seal modulada.

%% Limpiar variables y cerrar ventanas clear all; close all; %% Captura por el canal de audio ndata=160; %Nmero de datos a recibir fs=44100; %Definimos frecuencia de muestreo (Hz) dt=1/fs; %Tiempo entre cada muestra d=3; %Determinar duracin del audio (Seg) t=(0:dt:d-dt); %Vector de tiempo para muestrear B=500; %Ancho de banda (f_max) beta=0.5; %Valor de beta Rb=(2*B)/(beta+1); %Taza de bits Tp=round((Rb/fs)^-1)/fs; %Mltiplo ms cercano de Ts Ts=1/fs; %Periodo de muestreo signal=wavrecord(d*fs,fs,'double'); %Hacemos la grabacin %% Anlisis de seal recibida start=find(abs(signal)>0.05,1,'first'); final=find(abs(signal)>0.05,1,'last'); reportPlot(t,t(start-100),t(final+100),'Tiempo (seg)',... signal,[],[],'Amplitud',... 'Seal Recibida'); %Graficamos la seal recibida spectrum(signal(start:final),1/fs,... 2^nextpow2(length(signal(start:final))),... 0,2,1,0,0); %Obtenemos su espectro %% Demodular, Filtrar y volver a analizar seal recibida signal=signal(start:end); %Recortar silencios dt=1/fs; %Definir diferencial de tiempo d=length(signal)*dt; %Duracin de la seal t=(0:dt:d-dt); %Vector con tiempo de la seal fc=6000; %Frecuencia para modular signal=signal'.*cos(2*pi*fc*t); order=100; lpfilter=2*fir1(order,0.3); signal2=conv(signal,lpfilter); reportPlot(t,[],[],'Tiempo (seg)',... signal2(order/2+1:length(signal2)-order/2),...

Amplitud

Amplitud

11

Amplitud

Las grficas que caracterizan la seal a transmitir son

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2


[],[],'Amplitud','Seal Filtrada'); %Graficamos la seal recibida [ssf afxs pfxs]=spectrum(signal2,1/fs,... 2^nextpow2(length(signal2)),... 0,2,1,0,0); %Obtenemos su espectro eyed(signal2(order/2+1:length(signal2)order/2),Tp/Ts,3,1,ndata-10); %Graficamos diagrama de ojo

Al observar el diagrama de ojo de la Figura 31, podemos concluir que nuestro canal es capaz de hacer transmisiones de buena calidad bajo las condiciones de un ancho de banda angosto y la modulacin en amplitud.

Preguntas
Cules son las caractersticas de la seal recibida que pueden ser evaluadas con el diagrama de ojo? En general, los diagramas de ojo suministran la siguiente informacin: El error de sincronizacin ocasionado por el muestreo del lado del receptor. Este se mide por el ancho del ojo, normalmente referido como apertura del ojo. La sensibilidad al error de sincronizacin, dada por la pendiente del ojo abierto y se evala en el cruce por cero o en algn punto cercano. El margen de error del sistema, dado por la altura de la apertura del ojo2. A partir de los diagramas de ojo obtenidos, es posible transmitir en este canal utilizando una seal pasabajas (sin modular)? En caso negativo, cul es la razn? S es posible. Podemos recurrir a los resultados de los experimentos realizados en la parte 2 de esta prctica. Comparando los diagramas de ojo de la seal transmitida y recibida (Figura 15 y Figura 18), podemos notar que la seal llega con una calidad muy aceptable a su destino. A partir de los diagramas de ojo obtenidos, es posible transmitir en este canal en pasabanda, con un ancho de banda de 10 kHz? En caso negativo, cul es la razn?

Espectro de Magnitud 0.03

Amplitud

0.02 0.01

0.5 1 1.5 Frecuencia (Hz)

2 x 10
4

Figura 29. Contenido espectral de la seal recibida.

x 10 6

-3

Espectro de Magnitud

Amplitud

4 2 0 0.5 1 1.5 Frecuencia (Hz) 2 x 10


4

Figura 30. Contenido espectral de la seal recibida tras ser de-modulada y filtrada.

Diagrama de ojo 0.4 0.2 0 -0.2 -0.4 0 50 100 150 ndices de muestras 200

Figura 31. Diagrama de ojo de la seal recibida tras ser de-modulada y filtrada (con los transientes suprimidos).

Amplitud

(Couch, II, 2008)

12

Hernndez Leal, Misael Alejandro; Alejos Jimnez, Jess Ricardo Prctica 2 Si es posible. Recurriendo a los resultados del primer experimento de la parte 3, especialmente en los diagramas de ojo mostrados en la Figura 22 y en la Figura 24, podemos decir que la calidad de la transmisin es buena con este ancho de banda pues el diagrama de ojo de la seal recibida est bastante abierto y muy parecido al de la seal transmitida. A partir de los diagramas de ojo obtenidos, es posible transmitir en este canal en pasabanda, con un ancho de banda de 500Hz? En caso negativo, cul es la razn? Si es posible. De acuerdo a los resultados del segundo experimento de la parte 3 de esta prctica. Comparando los diagramas de ojo de la seal transmitida y la seal recibida (respectivamente la Figura 28 y la Figura 31) podemos notar que la seal llega con muy buena calidad al receptor. En base a las respuestas anteriores, y examinando la respuesta en frecuencia de su canal, cul cree que es la mejor banda para transmitir? Qu tasa de bit mxima se puede lograr en este canal? Justifique sus respuestas. De acuerdo a los resultados de todos los experimentos (pues en todos se ha logrado una transmisin de datos exitosa y de calidad), es posible hacer buenas transmisiones a lo largo de toda la banda de frecuencias desde aproximadamente 10Hz hasta los 22kHz. Esto ya sea en bandas angostas, anchas, moduladas o no moduladas. En base al dato anterior, la taza de bit mxima a la que podemos transmitir (utilizando cosenos alzados) es:

Aunque quiz el mejor rendimiento lo obtengamos transmitiendo en una banda angosta, pues adems que es la transmisin cuyos resultados fueron los ms saludables, es posible dividir el canal en diferentes bandas para hacer varias transmisiones de manera simultnea y de una forma mucho ms eficiente.

Bibliografa
Couch, II, L. W. (2008). Sistemas de Comunicacin Digitales y Analgicos. Florida: Pearson Educacin.

Johnson, R., & Sethares, W. A. (2003). Telecommunications Breakdown. Nueva Jersey: Prentice Hall.

13

También podría gustarte