HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA VIỄN THÔNG - - 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 sở thực FFT/FFT chèn/khử CP I Tín hiệu phổ tần tín hiệu OFDM, II Tính chất trực giao sóng mang III Mơ Matlab *code %========================================================================== %======================= Sim_MA_06_PSD_OFDM =============================== %========================================================================== clc; clear; close all; %========================================================================== 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 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); ylabel('PSD_S_C_R_F','FontName','.VnTime','color','b','FontSize',14); title(['Mật độ phổ công suất PSD tín hiệu SC_R_F với tốc độ 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); 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); %========================================================================== *kết 10 Sim_MA07 Mơ hình hóa mơ hiệu BER cho hệ thống truyền dẫn BPSK-OFDM dùng mã kênh 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ô 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« SER hệ thống BPSK/OFDM kênh AWGN có không mà hóa kênh; Số bit mô = ', 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; % for No channel code (OFDM without channel coding); % for channel coding (OFDM with channel coding) Codding_Type = 1; % Code Generation Matrix if mode_Sim ==2 if Codding_Type == k0 = 1; G = [1 1;1 1]; elseif Codding_Type == k0 = 1; G = [1 1 0 1;1 1 0]; else k0 = 2; G = [0 1 0 1;0 0 0 0 1;1 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 kênh AWGN voi mà hóa kênh; Số bit mô = ', 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 kênh AWGN; Số bit mô = ',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 15 Vũ Quang Chung – B18DCVT052 16 .. .Sim MA 06 Trực quan hóa nguyên lý hoạt động hệ thống truyền dẫn OFDM sở thực FFT/ FFT chèn/ khử CP I Tín hiệu phổ tần tín hiệu OFDM, II Tính chất trực giao sóng mang III Mơ Matlab *code... hình hóa mơ hiệu BER cho hệ thống truyền dẫn BPSK -OFDM dùng mã kênh 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ơ Matlab *code 1.Presentation _Sim_ MA_ 07 %==========================================================================... hệ thống BPSK /OFDM kênh AWGN có không mà hóa kênh; Số bit mô = '', num2str(NumBits),'' bits ''],''FontName'',''.VnTime'',''color'',''b'',''FontSize'',14); L=legend( ''OFDM - kênh AWGN không mà hóa kênh'',''OFDM