Professional Documents
Culture Documents
TELECOMUNICACIONES II (LABORATORIO)
OBJETIVO: La presente práctica tiene como fin simular algunos modelos de modulación
digital en Simulink como son ASK, OOK, BPSK, FSK, QPSK.
INTRODUCCIÓN
Algunas de las técnicas de modulación digital 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).
ASK: MODULADOR Y DEMODULADOR
PROGRAMAS EN MATLAB
A continuación se muestra los programas en Matlab que permiten realizar estos tipos
de modulación desde un programa, mediante funciones.
Función askd(g,f) y ookd(g,f):
function askd(g,f)
%Modulation ASK
%Example:
%askd([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=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 cómo trabaja esta función:
La función ookd:
function ookd(g,f)
%Modulation OOK
% Example:
% ookd([1 1 0 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=zeros(1,100); %Modulante
se=zeros(1,100); %Señal
else g(n)==1;
die=ones(1,100); %Modulante
se=ones(1,100); %Señal
end
c=sin(f*t);
cp=[cp die];
mod=[mod c];
bit=[bit se];
end
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]);
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); %Modulante
se=zeros(1,100); %Señal
else g(n)==1;
die=ones(1,100); %Modulante
se=ones(1,100); %Señal
end
c=sin(f*t);
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 cómo trabaja esta función:
Función fskd(g,f0,f1):
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]);
Para la modulación QPSK, se tiene un símbolo (fase) por cada dos bits. La siguiente
función simula esta modulación.
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]; %Amplitude cosino
sp=[sp die1]; %Amplitude sino
mod=[mod c]; %cosino carrier (Q)
mod1=[mod1 s]; %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]);
Función epsk(g,f):
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)];
subplot(2,1,2);plot(opsk,'LineWidth',1.5);grid on;
title('8PSK modulation')
axis([0 50*length(g) -1.5 1.5]);
INTERFAZ GRÁFICA
La herramienta GUIDE de Matlab permite crear una simpática interfaz gráfica para
cambiar de modulación con un par de clics. El entorno de esta interfaz se muestra en la
siguiente figura:
Esta interfaz permite generar un vector de bits aleatorios cada vez que se presiona el
botón Random, y modular la secuencia de bits. Permite, asimismo, que el usuario
ingrese los valores binarios para su posterior modulación.
ACTIVIDADES