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.
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]);
end
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
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
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
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
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
Funcin qpskd(g,f)
Para la modulacin QPSK, se tiene un smbolo (fase) por cada dos bits. La siguiente funcin simula esta modulacin.
%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]);
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;
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)];
&& g(n+2)==0
&& g(n+2)==1
die=cos(7*pi/8)*ones(1,150); die1=sin(7*pi/8)*ones(1,150);
&& g(n+2)==1
&& g(n+2)==0
&& g(n+2)==0
&& g(n+2)==1
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)
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