Đăng ký Đăng nhập
Trang chủ 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ở ...

Tài liệu 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

.PDF
16
1
76

Mô tả:

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 -

Tài liệu liên quan

Tài liệu vừa đăng