1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG BÁO CÁO HỌC TẬP ĐA TRUY NHẬP VÔ TUYẾN Sim MA06 và Sim MA07 Giảng Viên Nguyễn Viết Đảm Hà Nội 2 Sim MA06 Trực quan hóa nguyên lý hoạt động hệ thống truyền dẫn[.]
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG BÁO CÁO HỌC TẬP ĐA TRUY NHẬP VÔ TUYẾN Sim_MA06 Sim_MA07 Giảng Viên: Nguyễn Viết Đảm Hà1Nội Sim_MA06: 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 Phần matlab: MA_06_Basis_OFDM_System_Modeling_2.m Câulệnh stt Giải thích clc; clear all; close all; FFTsize = 8; CPsize = 2; data= 0.5*(sign(rand (1,FFTsize)-0.5)+1); data= 2*data-1 data_IFFT= ifft(data) data_IFFT_CP = [data_IFFT(FFTsize-CPsize+1:FFTsize) data_IFFT]; data_CPR= data_IFFT_CP(CPsize+1:FFTsize +CPsize); data_FFT= fft(data_CPR) data_des1 = zeros(1, length(data)); for i = 1:length(data_FFT) if data_FFT(i) >= data_des1(i) = 1; else data_des1(i) = -1; end end error_vector1 data~=data_des1; num_error1 sum(error_vector1); BER1 num_error1/FFTsize BER_op = sum(sign(real(data_FFT)) ~=data)/FFTsize 11 -Xóa cửa sổ lệnh -Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống - Đóng hết đè mục Khai báo gia srij tham số Tạo cho bit kích thước FFT: BPSK bước 1: Quy trình IFFT bước 2: thêm CP bước 3: loại bỏ CP bước 4: Quy trình IFFT Quyết định xác định lỗi để xác định lỗi (so sánh) Tổng số lỗi giải pháp tối ưu tối ưu MA_06_CP_insert.m stt Câu lệnh function [CP_insert] = MA_06_CP_insert(N,V) O_I = zeros(V,N); O_V_N_V = zeros(V,N-V); I_V = eye(V); for i=1:V O_I(i,:) = [O_V_N_V(i,:) I_V(i,:)] ; end I_N = eye(N); CP_insert = [O_I;I_N]; Giải thích Khởi tạo function MA_06_CP_insertvới tham số đầu vào V,N; -tao ma trận - tao ma trận đơn vị Tạo vòng lặp Tạo ma trận đơn vị MA_06_CP_Remove.m Stt Câu lệnh Giải thích Khởi tạo function MA_06_CP_ Remove với tham số đầu vào V,N; -tao ma trận - tao ma trận đơn vị function [CP_Remve] = MA_06_CP_Remove(N, V) CP_Remve = zeros(N,N+V); O_V = zeros(N,V); I_N = eye(N); for i =1:N CP_Remve(i,:) = [O_V(i,:) I_N(i,:)]; end Tạo vòng lặp 10 MA_06_FFT_matrix.m Stt Câu lệnh function [W] = MA_06_FFT_matrix(N) W = zeros(N); for m =1:N for i= 1:N W(m,i) = exp(j*2*pi/N*(m-1)*(i-1)); end end Giải thích Khởi tạo function MA_06_CP_ matrixvới tham số đầu vào N; -tạo ma trận Tạo vòng lăpj MA_06_IFFT_matrix.m stt Câu lệnh function [W_H] = MA_06_IFFT_matrix(N) W_H = zeros(N); for i =1:N for m= 1:N W_H(i,m) = exp(j*2*pi/N*(i-1)*(m-1)); end end W_H = 1/sqrt(N)*W_H; Giải thích Khởi tạo function MA_ MA_06_IFFT_matrixvới tham số đầu vào N; Tạo ma trận Taọ vòng lặp 11 MA_06_OFDM_Principle.m stt Câu lệnh N = 4; V = 2; X1 = 1:N; [W_H] = MA_06_IFFT_matrix(N); [W] = MA_06_FFT_matrix(N); [CP_insert] = MA_06_CP_insert(N,V); [CP_Remve] = MA_06_CP_Remove(N,V); Mode = 1; if Giải thích -Xóa cửa sổ lệnh -Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống Với N=4, V=2 Tao ma trận khác clc; clear; chế độ 1: -nếu Chế độ = 1; -nếu khác X1 Mode == = 0.5*(sign(rand(1,N)- 0.5)+1); else X1 = 0.5*(sign(rand(1,N)-0.5)+1); end Test_IFFT_FFT_matrix abs(W_H*W); Test_CP_inser_remove = = CP_Remve*CP_insert; data_IFFT Kiểm tra IFFT / FFT; Quy trình IFFT = sqrt(N)*ifft(X1,N); data_IFFT_CP = [data_IFFT(NV+1:N) data_IFFT]; data_CPR = data_IFFT_CP(V+1:N+V); data_FFT = (1/sqrt(N))*fft(data_CPR,N) Test_IFFT_FFT_matrix abs(W_H*W); Test_CP_inser_remove thêm CP loại bỏ CP Quy trình IFFT = = CP_Remve*CP_insert; 12 Kiểm tra IFFT / FFT; Sim_MA_06_PSD_OFDM.m Stt Câu lệnh deta_f = 20; BW_channel = 200; num_subcarrier = round(BW_channel/deta_f); 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; fc = 3*max(f); f2 = f:1:(fc+BW_channel+4*deta_f); PSD_ofdm_in = A1*(sinc((f*Tb)).^2); PSD_RF_SC = A1*(sinc(((f2-fc)*Tb)).^2); 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_RF(k,:) = AA*(sinc((f2-f_i(k)fc)*T_ofdm)).^2; end figure subplot plot hold on xlabel ylabel grid on; set 13 Giải thích - Khơng gian sóng mang - Băng thơng kênh - Số lượng sóng mang vịng kênh - thời gian -các thông số dầu vào - PSD đầu vào Khối điều chế OFFDM - PSD đầu Khối điều chế OFFDM - PSD đầu Khối điều chế OFFDM - bảng hiển thị kết - Đặt title, font, color cho trục x y -Vẽ thêm đồ thị khác vào cửa sổ figure Đặt thích cho trường hợp hiển thị figure 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 14 15 16 17 Phần mô Sim_MA_07_BPSK_OFDM_AWGN_ChannelCode.m St t Câu lệnh clc; clear all; close all; SNR = [0:1:9]; FFTsize = 512; CPsize = 20; numRun = 10^3; NumBits = FFTsize*numRun; mode_Sim = Codding_Type = 1; 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 numSymbols = FFTsize; data = 0.5*(sign(rand(1,numSymbols)- 0.5)+1); data2 = 2*data-1; if mode_Sim ==2inputSymbols = FWC_COV_Encoder(G,k0,data); inputSymbols = 2*inputSymbols-1; else inputSymbols 18 = 2*data-1; Giải thích -Xóa cửa sổ lệnh -Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống - Đóng hết đè mục -Lấy 10 điểm xét SNR đơn vị dB từ đến Mỗi điểm cách -Chế độ mơ =2 -Mã hóa loại -Nếu chế độ mô = mã hóa loại ta có: k0 = 1; G = [1 1; 1]; -Nếu chế độ mơ = mã hóa loại ta có: k0 = 1; G = [1 1 0 1; 1 1 0]; Nếu chế độ mô = mã hóa loại khác ta có: k0 = 2; G = [0 1 0 1;0 0 0 0 1;1 0 0 0 1]; Cho biến j chạy giá trị từ tới 10 (length(SNR)) + Hàm sign: dùng để lấy dấu (lấy -1 1) + Hàm rand(1,numSymbols): Lấy 1000 giá trị ngẫu nhiên khoảng từ đến Nếu chế độ mơ = inputSymbolsđược tính hàm function: FWC_COV_Encoder(G,k0,dat a); Nếu chế độ mơ loại khác inputSymbols = 2*data-1; 10 11 12 13 14 TxSamples = sqrt(length(inputSymbols))*if ft (inputSymbols,length(inputSym bols)); numSymbols = length(inputSymbols); Tx_ofdm = [TxSamples(numSymbolsCPsize+1:numSymbols) TxSamples]; numSymbols_2 = length(inputSymbols); tmp = randn(1,numSymbols_2+CPsize); noisePower = 10^(-SNR(n)/10); RxSymbols = Tx_ofdm + sqrt(noisePower)*tmp; EstSymbols_1 = RxSymbols(CPsize+1:numSymbols _2 +CPsize); Y = fft(EstSymbols_1, length(EstSymbols_1)); 17 18 19 20 Chèn CP Kênh% AWGN Loại bỏ CP IFT (Giải điều chế OFDM) Phát định 15 16 -FFT (Điều chế OFDM) 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 EstSymbols = FWC_COV_Dencoder(G,k0,Decis); else EstSymbols = EstSymbols_1; if mode_Sim==2 I = find((data-EstSymbols) == 0); else I = find((data2-EstSymbols) == 0); end errCount = errCount + (FFTsizelength(I)); 19 end Cho biến I chạy giá trị từ tới 10 (length(EstSymbols_1)) -nếu EstSymbols_1(i)>0 Decis(i)= 1; - ngược lại Decis(i)= 0; Nếu chế độ mô = EstSymbols = FWC_COV_Dencoder(G,k0,De cis); Nếu chế độ mơ loại khác EstSymbols = EstSymbols_1; Nếu chế độ mơ = I = find((data-EstSymbols) == 0); Nếu chế độ mơ loại khác I = find((data2-EstSymbols) == 0); Lỗi đối chiếu 21 SER(n,:) = errCount / (FFTsize*numRun); figure subplot plot hold on xlabel ylabel grid on; set 20 bảng hiển thị kết Đặt title, font, color cho trục x y -Vẽ thêm đồ thị khác vào cửa sổ figure Đặt thích cho trường hợp hiển thị figure ...Sim_MA06: 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 Phần matlab: MA_06_Basis _OFDM_ System_Modeling_2.m Câulệnh stt Giải thích clc; clear all; close all; FFTsize... 8; CPsize = 2; data= 0.5*(sign(rand (1,FFTsize)-0.5)+1); data= 2*data-1 data_IFFT= ifft(data) data_IFFT _CP = [data_IFFT(FFTsize-CPsize+1:FFTsize) data_IFFT]; data_CPR= data_IFFT _CP( CPsize+1:FFTsize... Test_IFFT _FFT_ matrix abs(W_H*W); Test _CP_ inser_remove = = CP_ Remve *CP_ insert; data_IFFT Kiểm tra IFFT / FFT; Quy trình IFFT = sqrt(N)*ifft(X1,N); data_IFFT _CP = [data_IFFT(NV+1:N) data_IFFT];