.::MATLAB - MODULACIONES DIGITALES::.

MATPIC.COM

MATLAB - MODULACIONES DIGITALES

logo matpic

Nuevo Sistema de calificación automática de exámenes de opción múltiple.

Nuevo Sistema de conteo vehicular v1.0

Nuevo Chat vía comunicación rs-232.

Nuevo Seguimiento de color con envío de datos vía rs-232.

Nuevo Medición de distancias con una cámara web y un puntero láser

Nuevo Seguir rostro usando una webcam en MATLAB.

Nuevo Reconocimiento de género por voz usando MATLAB.

Nuevo MATLAB reconoce forma y color

Nuevo Ecualizador de Audio con MATLAB - SIMULINK.

Nuevo Sistema de seguridad SPYCAM con MATLAB

Nuevo Seguimiento de color con MATLAB.

Nuevo Seguimiento de objeto con MATLAB.

Nuevo Reconocimiento de formas con MATLAB.

Nuevo Simulink - modulaciones y de modulaciones digitales.

Nuevo GUI para procesamiento de imágenes.

Nuevo Adquisición de señales ECG.

Nuevo Restauración de imágenes degradadas por ruido

Nuevo CD con videos tutoriales de MATLAB & SIMULINK.

MODULACIONES DIGITALES

RESUMEN._ El presente artículo tiene como fin simular algunos modelos de modulación digital en Matlab 7.1 como son ASK, OOK, FSK, QPSK, 8PSK. Las funiones tendrán como parámetro de ingreso el vector de bits y la frecuencia de la portadora. Asimismo, programar una interfaz gráfica (GUIDE) que genere bits aleatorios (hasta 10) para su posterior modulación.

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

modulaciones
Fig. 1. Varias modulaciones digitales.

El término comunicaciones digitales abarca un área extensa de técnicas de comunicaciones, incluyendo transmisión digital y radio digital. La transmisión digital es la transmisión de pulsos digitales, entre dos o más puntos, de un sistema de comunicaciones. El radio digital es la transmisión de portadoras analógicas moduladas, en forma digital entre, dos o más puntos de un sistema de comunicación. Los sistemas de transmisión digital requieren medios guiados y los sistemas de radio digital requieren medios no guiados [1].

En los sistemas de radio digital las señales de modulación y demodulación son pulsos digitales.

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

ask
Fig.2. Función ASKD.

La función ookd se muestra a continuación:

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

ook
Fig. 3. Función ookd.

 

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 0o si se transmite un 1.

La función bpskd se muestra a continuación:

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

bpsk
Fig. 4. Función bpskd.

 

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

fsk
Fig. 5. Función fskd.

 

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

qpsk
Fig. 6. Función qpskd.

 

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

epsk
Fig. 7. Función epsk.

 

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:

modulaciones digitales
Fig. 8. Entorno de la interfaz gráfica para simular modulaciones digitales.

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.

Esta sencilla interfaz así como las funciones descritas se encuentran publicadas en la página del autor en www.mathworks.com, User Community, File Exchange.

REFERENCIAS

[1]Sistemas de comunicaciones electrónicas, Tomasi, Wayne, pág 454-481
[2]Principios de las comunicaciones, Briceño, José, pág. 371-402

Para bajar el programa pulsa el botón descargar:

descargar

buzon

mail

©2013 MATPIC

Prohibida cualquier copia parcial o total del contenido de esta web