1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| clear all; close all; clc;
%% Defining Datas to transmit.
N = 1000; %Number of bits
data = randi([0 1],1,N);
Tb = 0.1e-3; %[s]
%% Oversampling
OSF = 10;
bits = repmat(data, OSF, 1);
bits = bits(:);
timevect_databit = 0: Tb/OSF: N*Tb-Tb/OSF;
%% modulation
A = 1; %signal Amplitude
fs = 1/Tb;
mc = 6 ; % should be configured such as fc >> fb
fc = mc*fs; % Carrier frequency fc >> fb
phaseBit1 = 0;
phaseBit0 = pi;
Amp = 1;
signalBPSK = zeros(1, length(bits));
for i = 1:length(bits)
if bits(i) == 1
phase = phaseBit1;
else
phase = phaseBit0;
end
sig = A*carrier(Amp, fc, phase, timevect_databit(i));
signalBPSK(i) = sig;
end
scatterplot( signalBPSK )
%BPSK demodulation
%Multiply with the carrier
phase = 0;
signal_received = real(carrier(Amp, fc, phase, timevect_databit).*signalBPSK); %Supposing TX and RX LO are synchronised
%integration and sampling
signal = [];
for i=1:OSF:length(signal_received)
signal=[signal trapz(signal_received(i:i+OSF-1))];
end
%Hard decision
RXdata = ( signal > 0 );
scatterplot( signal )
[NUMBER,RATIO] = biterr(data,RXdata)
%% plots
f1 = figure(1);
subplot(311);
plot(timevect_databit, bits, 'linewidth',2);grid on;
axis([ 0 Tb*N -0.5 1.5]);
ylabel(' Amplitude ');
xlabel(' Time(sec) ');
title(' Input signal ');
subplot(312);
plot(timevect_databit,signalBPSK, 'linew', 2); grid on;
ymin = min(signalBPSK)-1;
ymax = max(signalBPSK)+1;
ylim( [ymin ymax]);
xlabel('Time(sec)');
ylabel('Amplitude');
title('Signal with BPSK modulation ');
subplot(313)
plot(timevect_databit(1:OSF:end),RXdata,'LineWidth',2);grid on;
ylim([min(RXdata)-0.5 max(RXdata)+0.5]);
ylabel('Amplitude');
xlabel(' Time(sec)');
title('RX signal');
NFFT = 4096;
f_fft = fc;
freqVect = -f_fft/2:f_fft/NFFT:f_fft/2-1/NFFT;
f2 = figure(2);
plot(freqVect, fftshift(fft(signalBPSK,NFFT)));
function c = carrier(Amp, fc, phase,time)
%This function creat a carrier to modulate and demodulate
c = Amp*cos(2*pi*fc*time + phase);
end |
Partager