You are on page 1of 18

UNIVERSIDAD NACIONAL DE SAN AGUSTIN

ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA

TELECOMUNICACIONES II (LABORATORIO)

PRACTICA # 4: MODULACION DIGITAL CON SIMULINK

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

La industria de las comunicaciones electrónicas ha venido reemplazando poco a poco


las técnicas convencionales analógicas de modulación, como son AM (modulación de
amplitud), FM (modulación de frecuencia) y PM (modulación de fase) por sistemas
digitales de comunicaciones. Esto, debido a las ventajas que presenta la modulación
digital: mayor inmunidad al ruido, sencillez de procesamiento, alta seguridad de los
datos y multicanalizació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

La modulación por desplazamiento de amplitud, en inglés Amplitude-shift keying (ASK),


es una forma de modulación en la cual se representan los datos digitales como
variaciones de amplitud de la onda portadora. La amplitud de una señal portadora
análoga varía conforme a la variación de la trama de bits (modulando la señal),
manteniendo la frecuencia y la fase constante. El nivel de amplitud puede ser usado para
representar los valores binarios 0s y 1s. Podemos pensar en la señal portadora como un
interruptor que permite alternar entre dos amplitudes distintas. En la señal modulada,
el valor lógico 0 es representado por la señal portadora con una amplitud (baja),
mientras que el 1 es representado por la misma señal portadora pero con una amplitud
distinta (alta).
BPSK: MODULADOR Y DEMODULADOR

Consta de la modulación de desplazamiento de fase de 2 símbolos. También se la conoce


como 2-PSK o PRK (Phase Reversal Keying). Es la más sencilla de todas, puesto que solo
emplea 2 símbolos, con 1 bit de información cada uno. Es también la que presenta mayor
inmunidad al ruido, puesto que la diferencia entre símbolos es máxima (180°). Dichos
símbolos suelen tener un valor de salto de fase de 0° para el 1 y 180° para el 0. En
cambio, su velocidad de transmisión es la más baja de las modulaciones de fase.
FSK: MODULADOR Y DEMODULADOR

El FSK (Frequency-shift keying) es un tipo de modulación de frecuencia cuya señal


modulante es un flujo de pulsos binarios que varía entre valores predeterminados. En
los sistemas de modulación por salto de frecuencia, FSK, la señal moduladora hace variar
la frecuencia de la portadora, de modo que la señal modulada resultante codifica la
información asociándola a valores de frecuencia diferentes.
OOK: MODULADOR Y DEMODULADOR

La modulación OOK, en inglés ON-OFF keying (OOK), es una forma de modulación en la


cual se representan los datos digitales como variaciones de amplitud de la onda
portadora. La amplitud de una señal portadora análoga varía conforme a la corriente de
bit (modulando la señal), manteniendo la frecuencia y la fase constante. El nivel de
amplitud puede ser usado para representar los valores binarios 0s y 1s. Podemos pensar
en la señal portadora como un interruptor ON/OFF. En la señal modulada, el valor lógico
0 es representado por la ausencia de portadora, así que da ON/OFF la operación de
pulsación y de ahí el nombre dado.
QPSK: MODULADOR Y DEMODULADOR

Desplazamiento de fase de 4 símbolos, desplazados entre sí 90°. Normalmente se usan


como valores de salto de fase 45°, 135°, 225°, y 315°. Cada símbolo aporta 2 bits.

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

En la modulación digital de amplitud (ASK), la amplitud de la portadora sinusoidal se


conmuta entre dos valores en respuesta al código PCM. Por ejemplo, el valor 0 se puede
transmitir como una amplitud de A volts, mientras que el estado 1 se transmite como
una señal sinusoidal de amplitud de B volts. La señal ASK resultante consiste en impulsos
modulados, llamados marcas, que representan el estado 1, y espacios que representan
el estado 0. Este tipo de modulación se conoce también con el nombre de “modulación
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 continuación:

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

La siguiente figura muestra cómo trabaja esta función:


Función bpskd(g,f):

En la modulación BPSK la fase de la portadora conmuta de acuerdo al estado de la señal


binaria. En este tipo de modulación el desfase es de 180° si se transmite un 0 y de 0° si
se transmite un 1.

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

En la modulación 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 función que simula la modulación fsk se muestra a continuación:

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 cómo trabaja esta función:


Función qpskd(g,f):

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

La siguiente figura muestra cómo trabaja esta función:

Función epsk(g,f):

De igual forma que la modulación QPSK, la modulación 8PSK lleva la información en la


fase de la onda. En este caso se tiene un símbolo (fase) por cada tres bits. La siguiente
función presenta esta modulación:

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]; %Amplitude cosino
sp=[sp -die1]; %Amplitude sino
mod=[mod c]; %cosino carrier (Q)
mod1=[mod1 s]; %sino carrier (I)
bit=[bit se];
end
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 cómo trabaja esta función:

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

- Haga una breve introducción teórica de cada tipo de modulación utilizada en la


práctica.
- Ejecutar, analizar y comprobar el funcionamiento de cada uno de los modelos de
simulink y cada función de Matlab, mostrando sus resultados.
- Describa detalladamente cada modelo y cada función propuestos.
- Contraste los resultados de los modelos y las funciones con los resultados
esperados según la teoría de modulación digital.
- Indique cuáles son los principales parámetros de cada modelo y cada función y
detalle cómo afecta al resultado de la simulación la variación de estos
parámetros.

You might also like