comunicacion usando MATLAB

35
Comunicación FDM entre dos PCs mediante el puerto de audio Wladimir De La Cadena Fernanda Quezada Diana Román ESCUELA POLITÉCNICA NACIONAL COMUNICACIONES INALÁMBRICAS TEMA:

description

Se desea comunicar dos PCs utilizando el puerto de audio; la información que se transmitirá serán dos señales de audio, que viajaran moduladas en amplitud por el canal. € Para la comunicación se deberá aplicar las técnicas de modulación en amplitud con banda lateral única.€Señales a TXModuladorSeñales que viajan por el canal moduladas en amplitudDemoduladorPC 1PC2Señales RX€€€Modular una señal de banda base

Transcript of comunicacion usando MATLAB

Page 1: comunicacion usando MATLAB

Comunicación FDM entre dos PCs mediante el puerto de audio

•Wladimir De La Cadena•Fernanda Quezada

•Diana Román

ESCUELA POLITÉCNICA NACIONAL

COMUNICACIONES INALÁMBRICASTEMA:

Page 2: comunicacion usando MATLAB

Ideas fundamentales

Se desea comunicar dos PCs utilizando el puerto de audio; la información que se transmitirá serán dos señales de audio, que viajaran moduladas en amplitud por el canal.

Para la comunicación se deberá aplicar las técnicas de modulación en amplitud con banda lateral única.

Page 3: comunicacion usando MATLAB

Problema

Demodulador

Señales a TX

Modulador

Señales que viajan por el canal moduladas en amplitud

Señales RX

PC 1PC2

Page 4: comunicacion usando MATLAB

Modulación

Modular una señal de banda base significa trasladarla a la parte superior del espectro y aplicar un filtro en ella según el tipo de modulación que se desee.

Matemáticamente al multiplicar una señal de banda base por una de mayor frecuencia la de BB se traslada a la frecuencia alta.

Para modular una señal, se debe tener en cuenta: la señal a modular (y), la frecuencia de muestro, la frecuencia a la cual se le lleva y el tipo de modulación

Page 5: comunicacion usando MATLAB

Modulación Se multiplican las señales

Page 6: comunicacion usando MATLAB

Demodulación

La demodulación es el proceso de recuperación de la señal moduladora de una señal modulada.

Para demodular matemáticamente se multiplica la señal modulada f(t) por la de banda base, y se eliminan los armónicos de altas frecuencias dejando solamente la información de Banda Base

Page 7: comunicacion usando MATLAB

Multiplexación FDM

La multiplexación por división de frecuencia, también denominada FDM, permite compartir la banda de frecuencia disponible en el canal de alta velocidad, al dividirla en una serie de canales de banda más angostos, de manera que se puedan enviar continuamente señales provenientes de diferentes canales de baja velocidad sobre el canal de alta velocidad.

Page 8: comunicacion usando MATLAB

Solucion al Problema

Para lograrlo, es necesario filtrar las señales a ser moduladas de tal manera que no se interfieran entre si y dejar una banda de guarda. Luego de esto se procede a multiplicarlas por una portadora diferente dependiendo de la banda en la que se quiera que esté para luego sumarlas y enviarlas. Luego en el receptor se filtrará las señales en cada banda y se las multiplicará nuevamente por su portadora a fin de regresarlas a la banda base.

Page 9: comunicacion usando MATLAB

Funciones a ser utilizadas en Matlab

Lo que primero se necesita es obtener nuestros archivos de audio que queremos transmitir para ello usamos: Wavread

Esta función nos permite capturar el archivo de audio con todas sus caracteriticas

Page 10: comunicacion usando MATLAB

Funciones a ser utilizadas en Matlab

Es importante realizar análisis espectral, para comprobar resultados para lo cual usamos Pwelch

Page 11: comunicacion usando MATLAB

La modulación y demodulación se realizan con funciones que hemos diseñado y hemos especificado en las presentaciones respectivas, sin embargo se pueden usar:

Funciones a ser utilizadas en Matlab

Modulate

Demodulate

Page 12: comunicacion usando MATLAB

Funciones a ser utilizadas en Matlab

Dentro del diseño de los moduladores, se usan filtros IIR FIR, propios de matlab.

Lo siguiente, es conocer como Matlab permite enviar y recibir información usando el puerto de audio, para ello acudimos a la ayuda y esto es lo que obtenemos.

Page 13: comunicacion usando MATLAB

Función Analog input

Esta función crea un objeto, que lee lo que este presente en el puerto de audio, sus propiedades de frecuencia de muestro y tiempo mediante el cual recoge el audio, esta especificado por el objeto, creado.

Mas teoría sobre la adquisición de audio en Matlab, se encuentra en los archivos extras

Page 14: comunicacion usando MATLAB

Uso de analoginput%PRIMERO CREAMOS EL OBJETO QUE CAPTURA EL AUDIOAI = analoginput('winsound',0);chan = addchannel(AI,1);AI%DEFININOS LA DURACION QUE QUEREMOS QUE EL AUDIO SE LEAduration = 10;%DEFINIMOS UNA Fs PARA LEER EL AUDIO CON BUENA CALIDADSampleRate = 44100;%ESTABLECEMOS LAS CONFIGURACIONES DE LA Fs Y DE LA DURACIONset(AI,'SampleRate',SampleRate);set(AI,'SamplesPerTrigger',duration*SampleRate);set(AI,'TriggerType','Manual');%EJECUTAMOS LA ADQUISICION DURANTE EL TIEMPO ESTABLECIDOstart(AI);AItrigger(AI);AI%POR ULTIMO ALMACENAMOS EN DATA LO QUE AI ADQUIRIO DE LA TARJETA DE SONIDOdata = getdata(AI);

Page 15: comunicacion usando MATLAB

Resultados del uso de analoginput

Aquí se observan las propiedades del objeto que captura el audio

Se observa que data ya contiene los datos leídos 44100 muestras por seg, en 10 seg. serán 441000 en total

Page 16: comunicacion usando MATLAB

Función Analogoutput

Esta función crea un objeto, que envía por el puerto de audio, sus propiedades de frecuencia de muestro y tiempo mediante el cual envía el audio, esta especificado por el objeto creado.Es una función de descripción similar a analoginput, por lo cual su uso es idéntico, simplemente en vez de recibir datos, se envía.

Page 17: comunicacion usando MATLAB

Desarrollo del programa para enviar los dos audios al canal.

Primero leemos los audios que queremos enviar.

close all clear all clc%archivo original 1:[audio1_2CH,Fs1,format] = wavread('Barra de info de Windows XP'); audio1_1CH=audio1_2CH(:,1);%extraemos 1 solo canal[audio2_2CH,Fs2,format] = wavread('Vista_BlockedPopup');audio2_1CH=audio2_2CH(:,1);%extraemos 1 solo canal

Lectura de archivos

Extraccion de uno de los canales

Page 18: comunicacion usando MATLAB

Procedemos a verificar en tiempo que los audios han sido leídos

plot(audio1_2CH) % se verifica dos señales diferentestitle('audio 1 (2CH) (estereo)')figureplot(audio1_1CH)title('audio 1 (1CH) (mono)')figureplot(audio2_2CH) % se verifica dos señales diferentestitle('audio 2 (2CH) (estereo)') figureplot(audio2_1CH)title('audio 2 (1CH) (mono)')

Gráfico tanto de ambos canales, como solo de la señal mono

Procedemos a verificar auditivamente también

sound(audio1_2CH,Fs)sound(audio2_2CH,Fs)

Page 19: comunicacion usando MATLAB

Verificación en tiempo de los audio leídos

Se observan los audios en tiempo tanto estéreo y mono

Page 20: comunicacion usando MATLAB

longitud1=length(audio1_1CH);longitud2=length(audio2_1CH); x=[longitud1,longitud2]longitud_minima= min(x)%Extracción de la longitud mínima de cada archivo de audio: audio1_1CH = audio1_1CH (1:longitud_minima);audio2_1CH = audio2_1CH (1:longitud_minima);%Cuando se requiera hacer FDM suma temporal de las 4 señales % VERIFICAMOS SI TODAS LAS Fs SON IGUALES O NO: Fs1 %44100Fs2 %44100

Fs = Fs1; % sería común para todas.

Procedemos a establecer las longitudes correctas, para realizar un correcto FDM

Longitudes y Fs controladas

Page 21: comunicacion usando MATLAB

Diseñamos un filtro para que las dos señales tengan AB limitado y se puedan Multiplexar sin alliasing, se cortara a partir de 3000Hz donde no afecta a la percepción de audio

Fmax=Fs/2;orden = 40; wn = 3000/ Fmax; % al variar, dio 3000 que nos deja oir sin alteracionesb = FIR1(orden,wn,'low');figurefreqz(b,1,128) %comprobando que ha sido bien construido el filtro

comprobando que ha sido bien construido el filtro

Page 22: comunicacion usando MATLAB

Procedemos a aplicar el filtro a ambos audios

audio1_BB=filter(b,1,audio1_1CH); audio2_BB=filter(b,1,audio2_1CH);

Se aplica el filtro es decir se extraen las bandas base

Procedemos a verificar la aplicación del filtro mediante análisis espectral

nFFT=1024;LongVentana= nFFT/4;Solapamiento =LongVentana/2;% Espectro de la primera señal:[P_welch_audio1_BB,F_welch_audio1_BB] = ...pwelch(audio1_BB,LongVentana,Solapamiento,nFFT,Fs1);figureplot(F_welch_audio1_BB,P_welch_audio1_BB,'b')title('espectro del audio 1 - banda base o filtrado')% Espectro de la segunda señal:[P_welch_audio2_BB,F_welch_audio2_BB] = ... pwelch(audio2_BB,LongVentana,Solapamiento,nFFT,Fs1);figureplot(F_welch_audio2_BB,P_welch_audio2_BB,'b')title('espectro del audio 2 - banda base o filtrado')

Page 23: comunicacion usando MATLAB

Verificación mediante análisis espectral

Observamos que las señales de banda base no sobre pasan los 3000 Hz y podemos proceder a modularla y aplicar FDM

Page 24: comunicacion usando MATLAB

Procedemos a modular aplicando la función que hemos desarrollado y que se explica en la presentación de FDM.

Dado que nuestro canal es limitado (audio), decidimos modular las señales en 4000 Hz y 8000Hz dejando su banda de guarda de 1 KHz

Page 25: comunicacion usando MATLAB

Modulaciónaudio1_mod=mimodulacion2010(audio1_BB,Fs,4000)audio2_mod=mimodulacion2010(audio2_BB,Fs,8000)

Se modula aplicando la función que nosotros desarrollamos previamente

Verificamos el desplazamiento de los espectros mediante análisis espectral

[P_welch_audio1_mod,F_welch_audio1_mod] = ... pwelch(audio1_mod,LongVentana,Solapamiento,nFFT,Fs1);figureplot(F_welch_audio1_mod,P_welch_audio1_mod,'b')title('espectro del audio 1 - modulado') % Espectro de la segunda señal:[P_welch_audio2_mod,F_welch_audio2_mod] = ... pwelch(audio2_mod,LongVentana,Solapamiento,nFFT,Fs2);figureplot(F_welch_audio2_mod,P_welch_audio2_mod,'b')title('espectro del audio 2 - modulado')

Page 26: comunicacion usando MATLAB

Verificación mediante análisis espectral

Se observa que los espectros de las señales se han desplazado a las frecuencias que queríamos es decir se realizo la modulación

Page 27: comunicacion usando MATLAB

Procedemos a realizar la Multiplexación FDMaudio_fdm=audio1_mod+audio2_mod;

Procedemos a normalizar para tener un mismo nivel en todas las señalesP_welch_audio1_mod_norm = P_welch_audio1_mod / max(P_welch_audio1_mod);P_welch_audio2_mod_norm = P_welch_audio2_mod / max(P_welch_audio2_mod);

Verificamos con análisis espectral[P_welch_audio_FDM,F_welch_audio_FDM] = pwelch(audio_fdm,LongVentana,Solapamiento,nFFT,Fs);figure plot(F_welch_audio_FDM,P_welch_audio1_mod_norm,'b')hold onplot(F_welch_audio_FDM,P_welch_audio2_mod_norm,'b')hold onFigureplot(audio_fdm) %Queremos observar en tiempo

Observamos claramente que se ha realizado FDM

0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

Page 28: comunicacion usando MATLAB

El paso siguiente es enviar los datos hacia el otro PC, para esto debemos en el PC1 usar sound de esa manera la señal FDM, saldrá por el puerto de audio, mientras tanto en la PC2 debemos usar analoginput

sound(audio_fdm,Fs) Esta línea de código en la PC1 saca los datos por el puerto de audio

mientras tanto en la PC2 debemos usar analoginput

%PRIMERO CREAMOS EL OBJETO QUE CAPTURA EL AUDIOAI = analoginput('winsound',0);chan = addchannel(AI,1);AI%DEFININOS LA DURACION QUE QUEREMOS QUE EL AUDIO SE LEAduration = 10;%DEFINIMOS UNA Fs PARA LEER EL AUDIO CON BUENA CALIDADSampleRate = 44100;%ESTABLECEMOS LAS CONFIGURACIONES DE LA Fs Y DE LA DURACIONset(AI,'SampleRate',SampleRate);set(AI,'SamplesPerTrigger',duration*SampleRate);set(AI,'TriggerType','Manual');%EJECUTAMOS LA ADQUISICION DURANTE EL TIEMPO ESTABLECIDOstart(AI);AItrigger(AI);AI%POR ULTIMO ALMACENAMOS EN DATA LO QUE AI ADQUIRIO DE LA TARJETA DE SONIDOdata = getdata(AI);senal_recibida=data;

Aqua guardamos los datos recibidos

Page 29: comunicacion usando MATLAB

Verificamos la señal recibidaplot(data)

nFFT=1024;LongVentana= nFFT/4;Solapamiento =LongVentana/2;Fs1=44100; [P_BB,F] = ... pwelch(y,LongVentana,Solapamiento,nFFT,Fs1);figureplot(F,P,'b')title('espectro de la senal recibida')

Mediante análisis espectral

0 0.5 1 1.5 2 2.5

x 104

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Espectro de la señal recibida es igual al enviado

señal en tiempo recibida es igual al enviado solo desafasado, pero no afecta para demodular

Page 30: comunicacion usando MATLAB

Queremos demultiplexar, aplicamos un filtro pasabanda a las dos señales para obtener dos independientes

%Filtro pasa banda1:(Demultiplexacion) wn1 = [4000 7000]/Fmax;[b1_pasabanda, a1_pasabanda] = butter(8,wn1);audio1_demux = filter(b1_pasabanda, a1_pasabanda,audio_fdm); % Filtros pasa banda2:wn2 = [8000 1100]/Fmax;[b2_pasabanda, a2_pasabanda] = butter(8,wn2);audio2_demux = filter(b2_pasabanda, a2_pasabanda,audio_fdm);

Aislamos, las frecuencias de cada senal y demultiplexamos

Verificamos las señales con análisis espectral

Aquí ya tenemos las dos señales separadas, lo que nos queda por hacer es demodularlas

Page 31: comunicacion usando MATLAB

Demodulación de las señales- regreso a la banda base

audio1_demod = midemod2010(audio1_mod,4000,Fs, );audio2_demod = midemod2010(audio2_mod,8000,Fs,);

Aplicamos nuestra función con la multiplicación y los filtros que diseñamos y especificamos en la presentación de FDM

Verificamos que las señales estén en banda base% Potencia Audio1:[P_welch_audio1_demod ,F_welch_audio1_demod ] = ... pwelch(audio1_demod ,LongVentana,Solapamiento,nFFT,Fs);figureplot(F_welch_audio1_demod ,P_welch_audio1_demod)title('Espectro primer canal demodulado')%Potencia Audio 2:[P_welch_audio2_demod ,F_welch_audio2_demod ] = ... pwelch(audio2_demod ,LongVentana,Solapamiento,nFFT,Fs);figureplot(F_welch_audio2_demod ,P_welch_audio2_demod)title('Espectro segundo canal demodulado')

Verificamos auditivamente que las señales estén en banda base%sound(audio1_BB,Fs) % si reproduce sin alteraciones perceptibles%sound(audio2_BB,Fs) % si reproduce sin alteraciones perceptibles

Page 32: comunicacion usando MATLAB

Verificación de las señales demoduladas

Se observa que han regresado a banda base y así hemos recuperado las señales originales

En la verificación auditiva, escuchamos prácticamente en recepción lo que enviamos

0 0.5 1 1.5 2 2.5

x 104

0

0.2

0.4

0.6

0.8

1

1.2x 10

-5 Espectro primer canal demodulado

0 0.5 1 1.5 2 2.5

x 104

0

0.5

1

1.5

2

2.5x 10

-8Espectro segundo canal demodulado

Page 33: comunicacion usando MATLAB

Análisis y conclusiones de los resultados

Se logra recuperar las señales que se enviaron con prácticamente, las mismas características.

Se debe tomar en cuenta que la tarjeta de audio soporta 20KHz por lo cual es importante saber a donde modulamos

El diseño de los filtros y de las funciones para modular y demodular e importante para evitar problemas en el análisis de frecuencia

Page 34: comunicacion usando MATLAB

Análisis y conclusiones de los resultados

Es importante saber y conocer la función que nos permite adquirir el audio por el puerto de audio.

Los conceptos de FDM han sido demostrados en esta simulación y se concluye que son validos y se puede generalizar para mas señales y para otros tipos de canales

Page 35: comunicacion usando MATLAB

Bibliografía

http://www.mathworks.com/help/toolbox/daq/ref/analoginput.html

http://isa.uniovi.es/~ialvarez/Curso/cptr/SonidoMatlab.pdf

Material proporcionado por el Dr. Robin Álvarez.