Está en la página 1de 13

David Alexander Gonzaga Davis

PRÁCTICA 3. SIMULACIÓN MODULACIONES DIGITALES

MODULACIÓN M-ASK (M=4 Amplitude Shift Keying)


%_____________MASK Modulation and Demodulation Code________
clear all;

close all;

Nb=5;
Rb=1; %bps
T=1/Rb;

% Generate Nb bits randomly


%b =rand(1,Nb)>0.5;
b =[0 0 0 1 1 0 1 1 0 0];
%Rb is the bit rate in bits/second
bit_to_symbol=[];
for i=1:2:size(b,2)
a = [b(i) b(i+1)]
x = binaryVectorToDecimal(a)
switch(x)
case [0]
bit_to_symbol=[bit_to_symbol 0];
case [1]
bit_to_symbol=[bit_to_symbol 1];
case [2]
bit_to_symbol=[bit_to_symbol 2];
case [3]
bit_to_symbol=[bit_to_symbol 3];
end

end
NRZ_out=[];
RZ_out=[];
Manchester_out=[];
Vp=1;
for index=1:size(bit_to_symbol,2)
NRZ_out=[NRZ_out ones(1,200)*bit_to_symbol(index)];
end
figure;
stem(b, 'filled');
xlabel('Sequence Number')
ylabel ('Transmitted Bits [0/1]')
ylim ([0 2])
figure;
plot(NRZ_out, 'b', 'Linewidth', 2);
xlabel ('Time')
ylabel ('NRZ output')
ylim ([0 4])
grid on

t=0.005:0.005:5;
f=5;
Modulated=NRZ_out.*(sqrt(2/T)*sin(2*pi*f*t));
figure;
plot(Modulated);
xlabel ('Time')
ylabel ('Modulated Carrier')
ylim ([-6 6])

y=[];
received=[];
demodulated=Modulated.*(sqrt(2/T)*sin(2*pi*f*t));
for i=1:200:size(demodulated,2)
y=[y trapz(t(i:i+199),demodulated(i:i+199))];
end

for (i=1:1:size(y,2))
euclidean_dist=sqrt((y(i)-[0 1 2 3]).^2);
[val index]=min(euclidean_dist)
temp = [0 1 2 3];
index = temp (index);
switch(index)
case 0
received=[received 0 0];
case 1
received=[received 0 1];
case 2
received=[received 1 0];
case 3
received=[received 1 1];
end

end

%received=y>0;
%figure;
%stem(received,'filled', 'm')
%xlabel('Sequence Number')
%ylabel ('Received Bits [0/1]')
%ylim ([0 2])
David Alexander Gonzaga Davis

1. Simula la modulación para un array de bits b= [0 0 0 1 1 0 1 1 0 0]. ¿ Cuantos bits se


codifican por símbolo en esta modulación 4-ASK?

2. ¿Cuántos símbolos diferentes identificas en la modulación? ¿Estan todos los


símbolos en fase entre sí? ¿En qué parámetro de la portadora van codificados los bits
de información digital? (¿Amplitud, frecuencia fase?). Conociendo el número de bits
por símbolo de la modulación 4.ASK, identifica todas las posibles combinaciones de
bits posibles.

Adjunta una captura de pantalla e identifica sobre cada símbolo de la portadora cada una
de las combinaciones de bits digitales que codifica.
David Alexander Gonzaga Davis

3. Haz un resumen de cómo codifica la modulación 4 ASK la información digital.

MODULACION BFSK (Binary Frequency shift keying)

-El siguiente programa emula una modulación BFSK , en donde sólo se codifica 1bit por
símbolo. Al script hay ay que proporcionarle un array de bits binario (llamado n en el código) y
el programa realiza la modulación FSK bit a bit con dos portadoras de diferente frecuencia f1 y
f2. F2=5Hz representa un bit cero o nivel bajo y F1 representa un 1 o nivel alto.
% MATLAB Program for FSK Transmitter and Receiver
% Code by Ajeet Kumar BKP Academy
% Modify May 12, 2020
% Md. Humayun Kabir
clc
close all
clear all

f1=10; %1st carrier signal frequency


f2=5; %2nd carrier signal frequency

% Message signal input and ploting


n=[1 0 1 0 1 0 1 1 1]; % Message signal in binary form
N=length(n); % Length of message signal
fs = 1000*N; % Sampling frequency
t=0:1/fs:N; % Time division with step b
N1=length(t); % Length of total divisions
i=1;
%Run for Loop
for j=1:N1
if t(j)<=i
x(j)=n(i);
else
i=i+1;
end
end
figure(1);
subplot(3,2,1);
plot(t,x,'Linewidth',2); %Message signal plot
title('Message signal');
xlabel('Time');
ylabel('Amplitude');
grid on
%Carrier signals generation (x1,x2)
a=2; %Amplitude scale for carrier signal
% Uncomment the following for user input
x1=a*sin(2*pi*f1*t); %1st carrier signal
subplot(3,2,2);
plot(t,x1); %1st carrier signal plot
title('1st carrier signal');
xlabel('Time');
ylabel('Amplitude');
grid on
x2=a*sin(2*pi*f2*t); %2nd carrier signal
subplot(3,2,3);
plot(t,x2); %2nd carrier signal plot
title('2nd carrier signal');
xlabel('Time');
ylabel('Amplitude');
grid on
%Modulation section
for j=1:N1
if x(j)==1
y1(j)=x1(j);
else
y1(j)=x2(j);
end
end
subplot(3,2,4);
%Plot of FSK output signal
plot(t,y1);
title('Modulated FSK output');
xlabel('Time');
ylabel('Amplitude');
grid on
David Alexander Gonzaga Davis

1. Copia y pega el programa en la línea de comandos y modifica el array n para que se


realice una simulación para el array n=[1 0 1 1 0 0 1 0 1].

Captura el resultado e identifica sobre cada una de las portadoras el valor del bit que
codifica, si 0 o 1.

Si el grupo de 9 símbolos se transmite en 9μs, calcula la velocidad de transmisión de la


modulación en baudios y en bits por segundo.
1 1
𝐵𝑎𝑢𝑑𝑖𝑜𝑠 = 𝑇
= 9µ
= 0. 1𝑀 𝐵𝑎𝑢𝑑𝑖𝑜
𝑛 9
2 2
𝑏𝑝𝑠 = 𝑇
= 9µ
= 56. 8𝑀𝑏𝑝𝑠
David Alexander Gonzaga Davis

2. Modifica el valor de las frecuencias de forma que f1=5 hz y f2=10Hz. Realiza de nuevo
la simulación del apartado anterior. ¿Qué observas qué ha ocurrido ahora en la señal
portadora?.

Captura el resultado e identifica sobre cada una de las portadoras el tipo de bit que
codifica, si 0 o 1.

Haz un resumen de cómo codifica la modulación FSK la información digital e indica cuantos
bits por símbolo se codifican.

La modulación FSK utiliza dos frecuencias diferentes, y el desfase de estas se dará donde haya
un 0 o un 1, lo que deja una señal modulada como la de la imagen.
David Alexander Gonzaga Davis

MODULACIÓN QPSK.

El siguiente script emula una codificación QPSK. (Quadrature phase shift keying).

El array de bits binario de entrada está almacenado en la variable llamada bits.

Realiza la simulación para el array de bits siguiente:


bits=[0,0,0,1,1,0,1,1,0,0,0,1];

clear all;
close all;
%bits=[0,0,1,0,0,1,1,1,0,1,1,1];
bits=[0,0,0,1,1,0,1,1,0,0,0,1];

%Desfase OPSK
P1=pi/4; % 45 Grados
P2=0.75*pi; % 135 Grados
P3=1.25*pi; % 225 Grados
P4=1.75*pi; % 315 Grados
%Definicion de Frecuencias y periodos
f=1;
fs=100;
t=0:1/fs:1; % Periodo para la senal digital y portadora
t1=0:1/fs:2; % Periodo para la senal QPSK
%Definicion de variable a usar
tiempo=[];
tiempo1=[];
Digital=[];
Portadora=[];
QPSK=[];
% Secuencia de datos
for i=1:1:length(bits)
if bits(i)==0
z=zeros(1,length(t));
Digital = [Digital z];
end

if bits(i)==1
o=ones(1,length(t));
Digital = [Digital o];
end

% Portadora
Portadora=[Portadora (sin(2*pi*f*t))];
tiempo=[tiempo t];
t= t+1;

end
%Senal QPSK
for ii=1:2: length(bits)

% Caso 1 = 00 Desfase de 45
if bits(ii)==0 && bits(ii+1)==0
bits00= sin(2*pi*f*t1 + P1);
QPSK=[QPSK (bits00)];
end

% Caso 2 = 10 Desfase de 135


if bits(ii)==1 && bits(ii+1)==0
bits10= sin(2*pi*f*t1 +P2);
QPSK=[QPSK (bits10)];
end

% Caso 3 = 10 Desfase de 225


if bits(ii)==1 && bits(ii+1)==1
bits11= sin(2*pi*f*t1 +P3);
QPSK=[QPSK (bits11)];
end

% Caso 4 = 10 Desfase de 315


if bits(ii)==0 && bits(ii+1)==1
bits01= sin(2*pi*f*t1 +P4);
QPSK=[QPSK (bits01)];
end

tiempo1= [tiempo1 t1];


t1=t1+2;

end

% Representacion de las senales

% Senal Digital
subplot(3,1,1);
plot(tiempo, Digital,'lineWidth',2.5);
title('Senal Digital');
axis([0 12 -0.5 1.5]);
grid on;

% Senal Digital
subplot(3,1,2);
plot(tiempo,Portadora,'lineWidth',2.5);
title('Senal Portadora');
axis([0 12 -1.5 1.5]);
grid on;

% Senal Digital
subplot(3,1,3);
plot(tiempo1,QPSK,'lineWidth',2.5);
title('Senal QPSK');
axis([0 12 -1.5 1.5]);
grid on;
David Alexander Gonzaga Davis

1. ¿ Cuantos bits se codifican por símbolo en una modulación QPSK?

2. ¿Cuántos símbolos diferentes identificas en la modulación? ¿Estan todos los


símbolos en fase entre sí? ¿En qué parámetro de la portadora van codificados los bits
de información digital? (¿Amplitud, frecuencia, fase?). Conociendo el número de
bits por símbolo de la modulación QPSK, identifica todas las posibles combinaciones
de bits posibles.

3. Si el grupo total de 12 bits se transmite en 12μs, calcula la velocidad de transmisión


de la modulación en baudios y en bits por segundo.
1 1
𝐵𝑎𝑢𝑑𝑖𝑜𝑠 = 𝑇
= 12µ
= 0. 83𝑀 𝐵𝑎𝑢𝑑𝑖𝑜
𝑛 12
2 2
𝑏𝑝𝑠 = 𝑇
= 12µ
= 341. 3𝑀𝑏𝑝𝑠

Adjunta una captura de pantalla e identifica sobre cada símbolo de la portadora cada
una de las combinaciones de bits digitales que codifica.

4. Haz un resumen de cómo codifica la modulación QPSK la información digital.

Las modulaciones de fase varian un determinado ángulo de desfase. En concreto la QPSK varía
45, 135, 225 y 315 grados de desfase.
David Alexander Gonzaga Davis

MODULACIÓN M-QAM

La modulación M-QAM es una modulación multinivel que codifica la información en múltiples


niveles de amplitudes (valor de M) en combinación con diferentes valores de desfase de la
señal portadora. El valor M corresponde al número de símbolos posibles de la señal portadora.

El siguiente programa codifica una modulación M-QAM para un determinado valor de M.


(número de símbolos),
%%Modulated signal & Constellation Diagram of M-QAM Modulation
%%This code is generated for a project which is related to Digital modulation
%%Classification.
%%Shehan Stainwall
%%For more codes visit.
clear;clc;

%Message Signal
N = 16; %Number of bits
M = 4; %Modulation Order 128,256,512,1024
data = randi([0 M-1],1,N); %Message Infromation
s = qammod(data,M); %Modulated data (data,M,rotate angle)

%AWGN for Constellation points


SNR = 50; %SNR in dB
r = awgn(s,SNR,'measured');

bit_rate = 10.^3;
f = bit_rate; %minimum carrier frequency
Tb = 1/bit_rate ; %bit duration
t = 0:(Tb/1000):Tb ;

%Transmitted Signal waveform


TxSig = [];
for l=1:length(data)
Tx = real(s(l))*cos(2*pi*f*t) - imag(s(l))*sin(2*pi*f*t);
TxSig = [TxSig Tx];
end

%Received Signal waveform


RxSig = awgn(TxSig,SNR,'measured'); %AWGN for Tx Waveforms

% %****************************Visualizing Data******************************
%Wave forms of the Signal
figure(1)
subplot(3,1,1);
stairs(data); grid minor; ylim([-0.5,M-0.5]); xlim([0,N]);
title('Mensaje a transmitir- Datos binarios representados en decimal ');
subplot(3,1,2);
plot(TxSig); grid minor; title(sprintf('%d QAM Modulated Signal',M));
xlim([0,N*10^3+N]);
subplot(3,1,3);
plot(RxSig);
grid minor;
title(sprintf('%d QAM Modulated Signal with AWGN',M));
xlim([0,N*10^3+N]);

% Constellation Diagram of the Rx


scatterplot(r); grid minor;
title(sprintf('Constellation Diagram of %d QAM',M))
David Alexander Gonzaga Davis

1. Simula el script y observando la constelación deduce qué tipo de modulación


M-QAM se trata. (4 QAM,8QAM,16QAM,64QAM…?).

4QAM

2. ¿Cuántos bits se codifican por símbolo y cuantos símbolos utiliza?

2 bits

3. ¿Existe variación de fase entre símbolos?. ¿Existe variación de amplitud entre


símbolos?

4. Mide la mínima amplitud que identificas entre símbolos diferentes y apuntala a


continuación.

5. Adjunta una captura de pantalla e identifica sobre cada símbolo de la portadora


cada una de las combinaciones de bits digitales que codifica.

6. Haz un resumen de cómo codifica la modulación M-QAM la información digital.


David Alexander Gonzaga Davis

-A continuación modifica el valor de M a 16 y el valor de N a 32. Vuelve a simular el script.

1. Deduce qué tipo de modulación M-QAM se trata. (4


QAM,8QAM,16QAM,64QAM…?).
16QAM

2. ¿Cuántos bits se codifican por símbolo y cuantos símbolos utiliza?


4 bits

3. Si el grupo total de 16 bits se transmite en 1μs, calcula la velocidad de


transmisión de la modulación en baudios y en bits por segundo.

4. ¿Existe variación de fase entre símbolos?. ¿Existe variación de amplitud entre


símbolos?

5. Mide la mínima diferencia entre amplitudes que identificas entre símbolos


diferentes y apuntala a continuación. Compárala para el caso de la modulación
8-QAM y una modulación 4QAM. ¿En qué tipo de modulación es mas probable
que el receptor cometa un error?

6. Adjunta una captura de pantalla e identifica sobre cada símbolo de la portadora


cada una de las combinaciones de bits digitales que codifica.
David Alexander Gonzaga Davis

Efecto del ruido sobre la modulación MQAM.

Configura en el script una simulación M=16, N=128. A continuación observaremos el efecto del
ruido sobre la modulación. Controlaremos el nivel de ruido ajustando el parámetro SNR
(Relación señal ruido). Fija el valor de SNR=30db, Potencia señal es 1000 veces superior a la
potencia de ruido. Simúlala y adquiere una captura de la constelación.

Repite la simulación fijando una SNR=20db (Potencia señal es 100 veces superior a la del ruido)
y adquiere una captura de la constelación.
David Alexander Gonzaga Davis

Repite la simulación fijando una SNR=10db (Potencia señal es 10 veces superior a la del ruido)
y adquiere una captura de la constelación.

1. ¿Qué observas que ocurre en las constelaciones?

2. ¿Crees que podríamos transmitir correctamente con tal modulación 16 QAM y una
SNR de 10db?

Cambia ahora el valor de M=16 a M=4, manteniendo el nivel de ruido a SNR=10db y vuelve a
simular.

1. ¿Qué observas qué ha ocurrido en la constelación?

2. ¿Crees que la modulación 4-QAM podría trabajar con semejante nivel de ruido?.
David Alexander Gonzaga Davis

3. Por tanto, completa la siguiente afirmación.

Cuanto mayor es M, menor es la robustez de la modulación frente al ruido.

También podría gustarte