Sunteți pe pagina 1din 19

MODULACIONES DIGITALES

RESUMEN._ El presente artculo tiene como fin simular algunos modelos de modulacin digital en Matlab 7.1 como son ASK, OOK, FSK, QPSK, 8PSK. Las funiones tendrn como parmetro de ingreso el vector de bits y la frecuencia de la portadora. Asimismo, programar una interfaz grfica (GUIDE) que genere bits aleatorios (hasta 10) para su posterior modulacin.

INTRODUCCIN
La industria de las comunicaciones electrnicas ha venido reemplazando poco a poco las tcnicas convencionales analgicas de modulacin, como son AM (modulacin de amplitud), FM (modulacin de frecuencia) y PM (modulacin de fase) por sistemas digitales de comunicaciones. Esto, debido a las ventajas que presenta la modulacin digital: mayor inmunidad al ruido, sencillez de procesamiento, alta seguridad de los datos y multicanalizacin. Algunas de las modulaciones digitales son: ASK (amplitude shift keying), OOK (On-Off keying), FSK (frequency shift keying), BPSK (binary phase shift keying), QPSK (quadrature phase shift keying), 8PSK (8 phase shift keying).

Fig. 1. Varias modulaciones digitales. El trmino comunicaciones digitales abarca un rea extensa de tcnicas de comunicaciones, incluyendo transmisin digital y radio digital. La transmisin digital es la transmisin de pulsos digitales, entre dos o ms puntos, de un sistema de comunicaciones. El radio digital es la transmisin de portadoras analgicas moduladas, en forma digital entre, dos o ms

puntos de un sistema de comunicacin. Los sistemas de transmisin digital requieren medios guiados y los sistemas de radio digital requieren medios no guiados [1]. En los sistemas de radio digital las seales de modulacin y demodulacin son pulsos digitales.

Funcin askd(g,f) y ookd(g,f)


En la modulacin digital de amplitud (ASK), la amplitud de la portadora sinusoidal se conmuta entre dos valores en respuesta al cdigo PCM. Por ejemplo, el valor 0 se puede transmitir como una amplitud de A volts, mientras que el estado 1 se transmite como una seal sinusoidal de amplitud de B volts. La seal ASK resultante consiste en impulsos modulados, llamados marcas, que representan el estado 1, y espacios que representan el estado 0. Este tipo de modulacin se conoce tambin con el nombre de modulacin OOK (On-Off Keying), donde A=0 volts [2]. Las funciones askd y ookd permiten ingresar un vector binario g y la frecuencia f de la portadora. Estas funciones se muestran a continuacin:
function askd(g,f) %Modulation %Example: %askd([1 0 1 1 0],2) if nargin > 2 error('Too many input arguments') elseif nargin==1 f=1; end ASK

if f<1; error('Frequency must be bigger than 1'); end

t=0:2*pi/99:2*pi; cp=[];sp=[]; mod=[];mod1=[];bit=[];

for n=1:length(g); if g(n)==0; die=ones(1,100); se=zeros(1,100); else g(n)==1; die=2*ones(1,100); se=ones(1,100); end c=sin(f*t); cp=[cp die]; mod=[mod c]; bit=[bit se]; end ask=cp.*mod; subplot(2,1,1);plot(bit,'LineWidth',1.5);grid on; title('Binary Signal'); axis([0 100*length(g) -2.5 2.5]);

subplot(2,1,2);plot(ask,'LineWidth',1.5);grid on; title('ASK modulation'); axis([0 100*length(g) -2.5 2.5]);

La siguiente figura muestra como trabaja esta funcin:

Fig.2. Funcin ASKD. La funcin ookd se muestra a continuacin:


function ookd(g,f) %Modulation % Example: % ookd([1 1 0 1 0],2) if nargin > 2 error('Too many input arguments'); elseif nargin==1 f=1; end OOK

if f<1; error('Frequency must be bigger than 1');

end

t=0:2*pi/99:2*pi; cp=[];sp=[]; mod=[];mod1=[];bit=[];

for n=1:length(g); if g(n)==0; die=zeros(1,100); se=zeros(1,100); else g(n)==1; die=ones(1,100); se=ones(1,100); end c=sin(f*t); cp=[cp die]; mod=[mod c]; bit=[bit se]; end %Modulante %Seal %Modulante %Seal

ook=cp.*mod; subplot(2,1,1);plot(bit,'LineWidth',1.5);grid on; title('Binary Signal'); axis([0 100*length(g) -2.5 2.5]);

subplot(2,1,2);plot(ook,'LineWidth',1.5);grid on; title('OOK modulation'); axis([0 100*length(g) -2.5 2.5]);

La siguiente figura muestra como trabaja esta funcin:

Fig. 3. Funcin ookd.

Funcin bpskd(g,f)
En la modulacin BPSK la fase de la portadora conmuta de acuerdo al estado de la seal binaria. En este tipo de modulacin el desfase es de 180 si se transmite un 0 y de 0o si se transmite un 1. La funcin bpskd se muestra a continuacin:
function bpskd(g,f) %Modulation BPSK

%Example: %bpskd([1 0 1 1 0],2) if nargin > 2 error('Too many input arguments'); elseif nargin==1 f=1; end

if f<1; error('Frequency must be bigger than 1'); end

t=0:2*pi/99:2*pi; cp=[];sp=[]; mod=[];mod1=[];bit=[];

for n=1:length(g); if g(n)==0; die=-ones(1,100); se=zeros(1,100); else g(n)==1; die=ones(1,100); se=ones(1,100); end c=sin(f*t); %Modulante %Seal %Modulante %Seal

cp=[cp die]; mod=[mod c]; bit=[bit se]; end

bpsk=cp.*mod; subplot(2,1,1);plot(bit,'LineWidth',1.5);grid on; title('Binary Signal'); axis([0 100*length(g) -2.5 2.5]);

subplot(2,1,2);plot(bpsk,'LineWidth',1.5);grid on; title('ASK modulation'); axis([0 100*length(g) -2.5 2.5]);

La siguiente figura muestra como trabaja esta funcin:

Fig. 4. Funcin bpskd.

Funcin fskd(g,f0,f1)
En la modulacin FSK la frecuencia de la portadora cambia de acuerdo al valor de la modulante. Esto es, para un 0 se tendr una frecuencia f0 y para un 1 se tendr una frecuencia f1. La funcin que simula la modulacin fsk se muestra a continuacin:
function fskd(g,f0,f1) %FSK modulation %Example:(f0 and f1 must be integers) %fskd([1 0 1 1 0],1,2) if nargin > 3 error('Too many input arguments') elseif nargin==1 f0=1;f1=2; elseif nargin==2 f1=2; end

val0=ceil(f0)-f0; val1=ceil(f1)-f1; if val0 ~=0 || val1 ~=0; error('Frequency must be an integer'); end

if f0<1 || f1<1; error('Frequency must be bigger than 1'); end

t=0:2*pi/99:2*pi; cp=[];sp=[]; mod=[];mod1=[];bit=[];

for n=1:length(g); if g(n)==0; die=ones(1,100); c=sin(f0*t); se=zeros(1,100); else g(n)==1; die=ones(1,100); c=sin(f1*t); se=ones(1,100); end cp=[cp die]; mod=[mod c]; bit=[bit se]; end

ask=cp.*mod; subplot(2,1,1);plot(bit,'LineWidth',1.5);grid on; title('Binary Signal'); axis([0 100*length(g) -2.5 2.5]);

subplot(2,1,2);plot(ask,'LineWidth',1.5);grid on; title('FSK modulation'); axis([0 100*length(g) -2.5 2.5]);

La siguiente figura muestra como trabaja esta funcin:

Fig. 5. Funcin fskd.

Funcin qpskd(g,f)
Para la modulacin QPSK, se tiene un smbolo (fase) por cada dos bits. La siguiente funcin simula esta modulacin.

function qpskd(g,f) %Modulation QPSK

%Example: g is a binay vector; f is the carrier frequency. %qpskd([1 0 1 1 0 0],2) if nargin > 2 error('Too many input arguments'); elseif nargin==1 f=1; end

if f<1; error('Frequency must be bigger than 1'); end %*-*-*-*-*-* l=length(g); r=l/2; re=ceil(r); val=re-r;

if val~=0; error('Please insert a vector divisible for 2'); end %*-*-*-*-*-* t=0:2*pi/99:2*pi; cp=[];sp=[];

mod=[];mod1=[];bit=[]; for n=1:2:length(g); if g(n)==0 && g(n+1)==1; die=sqrt(2)/2*ones(1,100); die1=-sqrt(2)/2*ones(1,100); se=[zeros(1,50) ones(1,50)]; elseif g(n)==0 && g(n+1)==0; die=-sqrt(2)/2*ones(1,100); die1=-sqrt(2)/2*ones(1,100); se=[zeros(1,50) zeros(1,50)]; elseif g(n)==1 && g(n+1)==0; die=-sqrt(2)/2*ones(1,100); die1=sqrt(2)/2*ones(1,100); se=[ones(1,50) zeros(1,50)]; elseif g(n)==1 && g(n+1)==1; die=sqrt(2)/2*ones(1,100); die1=sqrt(2)/2*ones(1,100); se=[ones(1,50) ones(1,50)]; end c=cos(f*t); s=sin(f*t); cp=[cp die]; sp=[sp die1]; mod=[mod c]; mod1=[mod1 s]; %Amplitude cosino %Amplitude sino %cosino carrier (Q) %sino carrier (I)

bit=[bit se]; end bpsk=cp.*mod+sp.*mod1; subplot(2,1,1);plot(bit,'LineWidth',1.5);grid on; title('Binary Signal') axis([0 50*length(g) -1.5 1.5]);

subplot(2,1,2);plot(bpsk,'LineWidth',1.5);grid on; title('QPSK modulation') axis([0 50*length(g) -1.5 1.5]);

La siguiente figura muestra como trabaja esta funcin:

Fig. 6. Funcin qpskd.

Funcin epsk(g,f)

De igual forma que la modulacin QPSK, la modulacin 8PSK lleva la informacin en la fase de la onda. En este caso se tiene un smbolo (fase) por cada tres bits. La siguiente funcin presenta esta modulacin:
function epsk(g,f) %Modulation 8PSK

%Example: g is a binay vector; f is the carrier frequency. %epsk([1 0 1 1 1 0],2) if nargin > 2 error('Too many input arguments'); elseif nargin==1 f=1; end

if f<1; error('Frequency must be bigger than 1'); end %*-*-*-*-*-* l=length(g); r=l/3; re=ceil(r); val=re-r;

if val~=0; error('Please insert a vector divisible for 3'); end %*-*-*-*-*-*

t=0:2*pi/149:2*pi; cp=[];sp=[]; mod=[];mod1=[];bit=[];

for n=1:3:length(g); if g(n)==0 && g(n+1)==1 && g(n+2)==1 die=cos(pi/8)*ones(1,150); die1=sin(pi/8)*ones(1,150); se=[zeros(1,50) ones(1,50) ones(1,50)];

elseif g(n)==0 && g(n+1)==1 && g(n+2)==0 die=cos(3*pi/8)*ones(1,150); die1=sin(3*pi/8)*ones(1,150); se=[zeros(1,50) ones(1,50) zeros(1,50)];

elseif g(n)==0 && g(n+1)==0

&& g(n+2)==0

die=cos(5*pi/8)*ones(1,150); die1=sin(5*pi/8)*ones(1,150); se=[zeros(1,50) zeros(1,50) zeros(1,50)];

elseif g(n)==0 && g(n+1)==0

&& g(n+2)==1

die=cos(7*pi/8)*ones(1,150); die1=sin(7*pi/8)*ones(1,150);

se=[zeros(1,50) zeros(1,50) ones(1,50)];

elseif g(n)==1 && g(n+1)==0

&& g(n+2)==1

die=cos(-7*pi/8)*ones(1,150); die1=sin(-7*pi/8)*ones(1,150); se=[ones(1,50) zeros(1,50) ones(1,50)];

elseif g(n)==1 && g(n+1)==0

&& g(n+2)==0

die=cos(-5*pi/8)*ones(1,150); die1=sin(-5*pi/8)*ones(1,150); se=[ones(1,50) zeros(1,50) zeros(1,50)];

elseif g(n)==1 && g(n+1)==1

&& g(n+2)==0

die=cos(-3*pi/8)*ones(1,150); die1=sin(-3*pi/8)*ones(1,150); se=[ones(1,50) ones(1,50) zeros(1,50)];

elseif g(n)==1 && g(n+1)==1

&& g(n+2)==1

die=cos(-pi/8)*ones(1,150); die1=sin(-pi/8)*ones(1,150); se=[ones(1,50) ones(1,50) ones(1,50)];

end c=cos(f*t); s=sin(f*t);

cp=[cp die]; sp=[sp -die1]; mod=[mod c]; mod1=[mod1 s]; bit=[bit se]; end

%Amplitude cosino %Amplitude sino %cosino carrier (Q) %sino carrier (I)

opsk=cp.*mod+sp.*mod1; subplot(2,1,1);plot(bit,'LineWidth',1.5);grid on; title('Binary Signal') axis([0 50*length(g) -1.5 1.5]);

subplot(2,1,2);plot(opsk,'LineWidth',1.5);grid on; title('8PSK modulation') axis([0 50*length(g) -1.5 1.5]);

La siguiente figura muestra como trabaja esta funcin:

Fig. 7. Funcin epsk.

INTERFAZ GRFICA
La herramienta GUIDE de Matlab permite crear una simptica interfaz grfica para cambiar de modulacin con un par de clics. El entorno de esta interfaz se muestra en la siguiente figura:

Fig. 8. Entorno de la interfaz grfica para simular modulaciones digitales. Esta interfaz permite generar un vector de bits aleatorios cada vez que se presiona el botn Random, y modular la secuencia de bits. Permite, asimismo, que el usuario ingrese los valores binarios para su posterior modulacin. Esta sencilla interfaz as como las funciones descritas se encuentran publicadas en la pgina del autor en www.mathworks.com, User Community, File Exchange.

REFERENCIAS
[1]Sistemas de comunicaciones electrnicas, Tomasi, Wayne, pg 454-481 [2]Principios de las comunicaciones, Briceo, Jos, pg. 371-402

S-ar putea să vă placă și