comunicacion usando matlab

Post on 24-Jun-2015

1.404 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

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:

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.

Problema

Demodulador

Señales a TX

Modulador

Señales que viajan por el canal moduladas en amplitud

Señales RX

PC 1PC2

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

Modulación Se multiplican las señales

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

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.

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.

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

Funciones a ser utilizadas en Matlab

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

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

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.

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

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);

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

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.

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

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)

Verificación en tiempo de los audio leídos

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

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

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

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')

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

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

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')

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

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

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

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

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

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

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

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

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

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.

top related