HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA VIỄN THÔNG 1
----------
BÀI THỰC HÀNH
BỘ MÔN: ĐA TRUY NHẬP VÔ TUYẾN
Giảng viên: Nguyễn Viết Đảm
Sim MA 06
Trực quan hóa nguyên lý hoạt động hệ thống truyền
dẫn OFDM trên cơ sở thực hiện FFT/FFT và
chèn/khử CP
I. Tín hiệu và phổ tần tín hiệu OFDM,
2
3
4
II. Tính chất trực giao của sóng mang con
5
III. Mô phỏng Matlab
*code
%==========================================================================
%======================= Sim_MA_06_PSD_OFDM ===============================
%==========================================================================
clc;
clear;
close all;
%==========================================================================
6
deta_f
=
20;
BW_channel/num_subcarrier=Subcarrier space;
%
% Corhence Bandwidth of
channel;15KHz
BW_channel
=
200;
20MHz
% num_subcarrier =
ceil(BW_channel/deta_f);
subchannel round
num_subcarrier =
round(BW_channel/deta_f);
subchannel
T_ofdm
=
1/deta_f;
R_ofdm
=
1/T_ofdm;
Tb
=
T_ofdm/num_subcarrier;
Rb
=
1/Tb;
A
=
10;
A1
=
A^2*Tb;
AA
=
A^2*T_ofdm;
f_i
=
deta_f:deta_f:BW_channel+deta_f;
f
=
-Rb:BW_channel+4*deta_f;
% f_BB
=
-Rb:4*Rb;
fc
=
3*max(f);
f2
=
-f:1:(fc+BW_channel+4*deta_f);
% bandwidth of channel =
% Number of subcarrier or
% Number of subcarrier or
% OFDM time
% ceil function
% PSD of input of OFFDM Modulation Block
PSD_ofdm_in = A1*(sinc((f*Tb)).^2);
PSD_RF_SC
= A1*(sinc(((f2-fc)*Tb)).^2);
% PSD of output of OFFDM Modulation Block
PSD_OFDM
= zeros(num_subcarrier,max(size(f)));
PSD_OFDM_RF
= zeros(num_subcarrier,max(size(f2)));
for k = 1:num_subcarrier
PSD_OFDM(k,:)
= AA*(sinc((f-f_i(k))*T_ofdm)).^2;
% PSD_OFDM(k,:)
= rand(1)*AA*(sinc((f-f_i(k))*T_ofdm)).^2;
PSD_OFDM_RF(k,:)
= AA*(sinc((f2-f_i(k)-fc)*T_ofdm)).^2;
% PSD_OFDM_RF(k,:)
= rand(1)*AA*(sinc((f2-f_i(k)-fc)*T_ofdm)).^2;
end
figure(1)
%-----------------------subplot(2,2,1);
plot(f,PSD_ofdm_in,'r','LineWidth',3);
xlabel('TÇn sè [H_z]','FontName','.VnTime','color','b','FontSize',12);
ylabel('PSD_I_n_p_u_t_ _o_f_
_O_F_D_M','FontName','.VnTime','color','b','FontSize',14);
title(['MËt ®é phæ c«ng suÊt PSD cña tÝn hiÖu ®Çu vµo khèi OFDM víi tèc ®é lµ R_b
=',num2str(Rb),'b/s'],...
'FontName','.VnTime','color','b','FontSize',9);
grid on;
%-----------------------subplot(2,2,2);
plot(f2,PSD_RF_SC,'m','LineWidth',3);
xlabel('TÇn sè [H_z]','FontName','.VnTime','color','b','FontSize',12);
7
ylabel('PSD_S_C_R_F','FontName','.VnTime','color','b','FontSize',14);
title(['MËt ®é phæ c«ng suÊt PSD cña tÝn hiÖu SC_R_F víi tèc ®é lµ R_b
=',num2str(Rb),'b/s',...
';F_R_F=',num2str(fc),'H_Z'],...
'FontName','.VnTime','color','b','FontSize',9);
grid on;
%-----------------------subplot(2,2,3);
for k = 1:num_subcarrier
plot(f,PSD_OFDM(k,:),'b','LineWidth',2);
hold on
end
xlabel('TÇn sè [H_z]','FontName','.VnTime','color','b','FontSize',12);
ylabel('PSD_O_F_D_M','FontName','.VnTime','color','b','FontSize',14);
title(['PSD cña tÝn hiÖu OFDM: BW_C_h_a_n_n_e_l_ =',num2str(BW_channel),...
' H_Z ; Num_S_u_b_c_a_r_r_i_e_r =',num2str(num_subcarrier),...
'; Subcarrier_S_p_a_c_e =',num2str(deta_f),'H_Z'],...
'FontName','.VnTime','color','b','FontSize',9);
grid on;
%-----------------------subplot(2,2,4);
for k = 1:num_subcarrier
plot(f2,PSD_OFDM_RF(k,:),'b','LineWidth',2);
hold on
end
xlabel('TÇn sè [H_z]','FontName','.VnTime','color','b','FontSize',12);
ylabel('PSD_O_F_D_M_R_F','FontName','.VnTime','color','b','FontSize',14);
title(['PSD cña tÝn hiÖu OFDM_R_F: BW_C_h_a_n_n_e_l_ =',num2str(BW_channel),...
' H_Z ; Num_S_u_b_c_a_r_r_i_e_r =',num2str(num_subcarrier),...
'; Subcarrier_S_p_a_c_e
=',num2str(deta_f),'H_Z',';f_R_F=',num2str(fc),'H_Z'],...
'FontName','.VnTime','color','b','FontSize',9);
grid on;
PSD_OFDM_sum_RF = sum(PSD_OFDM_RF,'double');
%==============================================
figure(2)
%-----------------------subplot(2,1,1);
for k = 1:num_subcarrier
plot(f2,PSD_OFDM_RF(k,:),'b','LineWidth',2);
hold on
end
h11 = plot(f2,PSD_RF_SC,'r','LineWidth',3);
hold on
h12 = plot(f2,PSD_OFDM_sum_RF,'+r','LineWidth',4);
xlabel('TÇn sè [H_z]','FontName','.VnTime','color','b','FontSize',12);
8
ylabel('PSD_O_F_D_M_ _R_F &
SC_R_F','FontName','.VnTime','color','b','FontSize',14);
title(['So sanh PSD cña tÝn hiÖu OFDM_R_F & SC_R_F: BW_C_h_a_n_n_e_l_
=',num2str(BW_channel),...
' H_Z ; Num_S_u_b_c_a_r_r_i_e_r =',num2str(num_subcarrier),...
'; Subcarrier_S_p_a_c_e
=',num2str(deta_f),'H_Z',';F_R_F=',num2str(fc),'H_Z'],...
'FontName','.VnTime','color','b','FontSize',12);
grid on;
K
= legend('PSD cña OFDM_R_F','PSD cña SC_R_F','PSD cña OFDM_S_U_M_-_R_F');
set(K, 'fontname','.Vntime','fontsize',13);
%-----------------------subplot(2,1,2)
plot(f2,PSD_OFDM_sum_RF,'b','LineWidth',2);
hold on
plot(f2,PSD_RF_SC,'r','LineWidth',3);
xlabel('TÇn sè [H_z]','FontName','.VnTime','color','b','FontSize',12);
ylabel('PSD_O_F_D_M_ _R_F &
SC_R_F','FontName','.VnTime','color','b','FontSize',14);
title(['PSD cña tÝn hiÖu OFDM_R_F & SC_R_F: BW_C_h_a_n_n_e_l_
=',num2str(BW_channel),...
' H_Z ; Num_S_u_b_c_a_r_r_i_e_r =',num2str(num_subcarrier),...
'; Subcarrier_S_p_a_c_e
=',num2str(deta_f),'H_Z',';F_R_F=',num2str(fc),'H_Z'],...
'FontName','.VnTime','color','r','FontSize',12);
grid on;
L
= legend('PSD cña OFDM_S_U_M_-_R_F','PSD cña SC_R_F');
set(L, 'fontname','.Vntime','fontsize',13);
%==========================================================================
9
*kết quả
10
Sim_MA07
Mô hình hóa và mô phỏng hiệu năng BER cho hệ
thống truyền dẫn BPSK-OFDM dùng mã kênh trong
môi trường kênh AWGN
I. MÔ HÌNH TRUYỀN TÍN HIỆU QUA KÊNH VÔ TUYẾN
11
II. Mô phỏng Matlab
*code
1.Presentation_Sim_MA_07
%==========================================================================
%===================== Presentation_Sim_MA_07 =============================
%==========================================================================
clc;
clear all;
close all;
%==========================================================================
load MA_07_BPSK_OFDM_NoCC_AWGN.mat;
SER_noChannelCoding = SER;
SNR_1
= SNR;
clear SER;
%---------load MA_07_BPSK_OFDM_CC_AWGN.mat;
SER_ChannelCoding = SER;
SNR_2
= SNR;
clear SER;
%-------------------------------------------------------------------------figure(1)
G = semilogy(SNR_1,SER_noChannelCoding,'-ob');
set(G,'LineWidth',1.5);
hold on;
%--------
12
G = semilogy(SNR_2,SER_ChannelCoding,'-.vr');
set(G,'LineWidth',2.5);
%-------AX
= gca;
set(AX,'fontsize',14);
X = xlabel('SNR (dB)');
set(X,'fontname','.Vntime','fontsize',14,'color','b');
Y = ylabel('SER');
set(Y,'fontname','.Vntime','fontsize',14,'color','b');
title(['M« pháng SER hÖ thèng BPSK/OFDM trong kªnh AWGN cã vµ kh«ng m· hãa kªnh;
Sè bit m« pháng = ',...
num2str(NumBits),' bits '],'FontName','.VnTime','color','b','FontSize',14);
L=legend('OFDM - kªnh AWGN kh«ng m· hãa kªnh','OFDM - kªnh AWGN cã m· hãa kªnh');
set(L,'fontname','.Vntime','fontsize',13);
grid on;
%==========================================================================
2.Sim_MA_07_BPSK_OFDM_AWGN_ChannelCode
%==========================================================================
%================= Sim_MA_07_BPSK_OFDM_AWGN_ChannelCode ===================
%==========================================================================
clc;
clear all;
close all;
SNR
= [0:1:9];
FFTsize
= 512;
CPsize
= 20;
numRun
= 10^3;
% Note
NumBits
= FFTsize*numRun;
%==========================================================================
mode_Sim
= 2;
% 1 for No channel code (OFDM without channel coding);
% 2 for channel coding (OFDM with channel coding)
Codding_Type
= 1;
% Code Generation Matrix
if mode_Sim ==2
if Codding_Type == 1
k0
= 1;
G
= [1 1 1;1 0 1];
elseif Codding_Type == 2
k0
= 1;
G
= [1 1 1 1 0 0 1;1 0 1 1 0 1 0];
else
k0
= 2;
G
= [0 0 1 0 1 0 0 1;0 0 0 0 0 0 0 1;1 0 0 0 0 0 0 1];
end
end
%==========================================================================
for n = 1:length(SNR),
errCount = 0;
for k = 1:numRun
% Generated BPSK data
numSymbols
= FFTsize;
13
Vũ Quang Chung – B18DCVT052
data
= 0.5*(sign(rand(1,numSymbols)-0.5)+1);
data2
= 2*data-1;
%-----------------------------------------------------------------if mode_Sim ==2 % Convolution code Encoder
inputSymbols
= FWC_COV_Encoder(G,k0,data);
inputSymbols
= 2*inputSymbols-1;
else
inputSymbols
= 2*data-1;
end
%-----------------------------------------------------------------% IFFT (OFDM Modulation)
TxSamples
=
sqrt(length(inputSymbols))*ifft(inputSymbols,length(inputSymbols));
numSymbols
= length(inputSymbols);
% Insert CP
Tx_ofdm
= [TxSamples(numSymbols-CPsize+1:numSymbols) TxSamples];
% AWGN channel
numSymbols_2
= length(inputSymbols);
tmp
= randn(1,numSymbols_2+CPsize);
noisePower
= 10^(-SNR(n)/10);
RxSymbols
= Tx_ofdm + sqrt(noisePower)*tmp;
% Remove CP
EstSymbols_1
= RxSymbols(CPsize+1:numSymbols_2+CPsize);
% IFT (OFDM Demodulation)
Y
= fft(EstSymbols_1,length(EstSymbols_1));
% Detection and decide
EstSymbols_1
= Y;
EstSymbols_1
= sign(real(EstSymbols_1));
for i = 1:length(EstSymbols_1)
if EstSymbols_1(i)>0
Decis(i)= 1;
else
Decis(i)= 0;
end
end
%-----------------------------------------------------------------if mode_Sim==2
%---- Convolution code Decoder
EstSymbols
= FWC_COV_Dencoder(G,k0,Decis);
else
EstSymbols = EstSymbols_1;
end
%-----------------------------------------------------------------% Check for Error
if mode_Sim==2
I
= find((data-EstSymbols) == 0);
else
I
= find((data2-EstSymbols) == 0);
end
% Countered Errors
errCount
= errCount + (FFTsize-length(I));
end
SER(n,:)
= errCount / (FFTsize*numRun);
end
14
Vũ Quang Chung – B18DCVT052
%==========================================================================
if mode_Sim ==2
save MA_07_BPSK_OFDM_CC_AWGN.mat;
figure(1);
G = semilogy(SNR,SER,'-vr');
title(['M« pháng SER hÖ thèng BPSK OFDM trong kªnh AWGN voi m· hãa kªnh; Sè bit
m« pháng = ',...
num2str(NumBits),' bits '],'FontName','.VnTime','color','b','FontSize',16);
LT=legend('OFDM - kªnh AWGN cã m· hãa kªnh');
set(LT,'fontname','.Vntime','fontsize',16);
else
save MA_07_BPSK_OFDM_NoCC_AWGN.mat;
figure(1);
G = semilogy(SNR,SER,'-ob');
title(['M« pháng SER hÖ thèng BPSK OFDM trong kªnh AWGN; Sè bit m« pháng =
',num2str(NumBits),' bits ',...
],'FontName','.VnTime','color','b','FontSize',16);
LT=legend('OFDM - kªnh AWGN kh«ng m· hãa kªnh');
set(LT,'fontname','.Vntime','fontsize',16);
end
set(G,'LineWidth',1.5);
AX = gca;
set(AX,'fontsize',14);
X=xlabel('SNR (dB)');
set(X,'fontname','.Vntime','fontsize',14,'color','b');
Y=ylabel('SER');
set(Y,'fontname','.Vntime','fontsize',14,'color','b');
grid on;
%----------------------------------------------------------------------
*Kết quả
15
Vũ Quang Chung – B18DCVT052
16
- Xem thêm -