Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 45 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
45
Dung lượng
4,02 MB
Nội dung
BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG Sim_MA_06_07 MƠN ĐA TRUY NHẬP VƠ TUYẾN Giảng viên: Nguyễn Viết Đảm Hưng Yên, tháng 12 năm 2021 - - - - Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 - - - - - Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 - 30 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 - 31 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 - Phương pháp luận mô 32 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 - Minh họa tính phân lớp hàm – Quan hệ file hàm hàm % bắt đầu file hàm Biến đầu = phương trình tính tốn dùng đối số đầu vào => hàm Biến đầu = Phương trình tính tốn dùng đối số đầu vào => hàm %kết thúc file hàm Ví dụ: Mơ hình mơ hệ thống truyền dẫn OFDM băng tần sở môi trường kênh AWGN 33 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 - 34 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 - Với Sim_MA06_OFDM_Principle Câu lệnh clc; clear; N = 4; V = 2; %input('Enter N ='); %input('Enter V ='); Giải thích Nhập giá trị đầu vào cho chương trình X1 = 1:N; [W_H] = MA_06_IFFT_matrix(N); [W] = MA_06_FFT_matrix(N); % note W=inv(W_H) W*W_H = I [CP_insert] = MA_06_CP_insert(N,V); [CP_Remve] = MA_06_CP_Remove(N,V); Khởi tạo biến Là chuổi bit đầu vào ma trận Khởi tạo ma trận chèn CP khử CP Mode = 1; Lấy giá trị ngẫu nhiên cho X1 if Mode == else % X1 X1 = 0.5*(sign(rand(1,N)-0.5)+1); = 2*X1-1; end 35 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 X2 = X1'; Gán giá trị từ X2 đến X12 để X3 = W_H*X2; % IFFT gán với giá trị mong muốn X4 X5 X6 X7 X8 X9 X10 X11 X12 = = = = = = = = = X3'; X4'; CP_insert*X5; X6'; X7'; CP_Remve*X8; X9'; X10'; W*X11; % FFT % ===== Check for IFFT/FFT; CP_insert_remove % X13_T = abs(X13) Test_IFFT_FFT_matrix = abs(W_H*W); Test_CP_inser_remove = CP_Remve*CP_insert; % Test_CP_inser_remove2 = CP_insert*CP_Remve Matlab hóa q trình chèn/khử CP % ===== Check for System Modeling X1; X13; %================================================== Tính giá trị OFDM theo chu % IFFT & FFT Princeples trình từ IFFT đến FFT % step 1: IFFT process data_IFFT = sqrt(N)*ifft(X1,N); % step 2: add CP % data_IFFT=data_IFFT'; data_IFFT_CP = [data_IFFT(N-V+1:N) data_IFFT]; % step 3: remove CP % data_IFFT_CP= data_IFFT_CP'; data_CPR = data_IFFT_CP(V+1:N+V); % step 4: IFFT process data_FFT = (1/sqrt(N))*fft(data_CPR,N) 36 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 - Mô hình hóa mơ hệ thống truyền dẫn OFDM MATLAB Dựa chương trình Sim_MA_06_IFFT_FFT : mơ hình hóa mơ điều chế/giải điều chế tín hiệu OFDM sở IFFT/FFT chèn khử CP Trên kênh AWGN MA_06_IFFT_FFT_AWGN Sau so sánh lỗi đếm lỗi, tính SER dựa chương trình MA_06_SER_OFDM_AWGN Matlab hóa mơ hình hệ thống truyền dẫn OFDM MATLAB Câu lệnh FFTsize = 8; CPsize = 2; for n = 1:length(SNR), errCount = 0; errCount1 = 0; % to determine error (comparesion) error_vector1 = data~=data_des1; % errCount & number of errors Ý nghĩa Thiết lập tham số mô 37 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 num_error1 sum(error_vector1); BER1 num_error1/FFTsize = = numSymbols = FFTsize; % note tmp = round(rand(2,numSymbols)); tmp = tmp*2 - 1; data = (tmp(1,:) + j*tmp(2,:))/sqrt(2); inputSymbols = data; Điều chế Q-PSK TxSamples = sqrt(FFTsize)*ifft(inputSymbols); Điều chế OFDM IFFT Tx_ofdm = [TxSamples(numSymbolsCPsize+1:numSymbols) TxSamples]; Chèn CP tmp = randn(2,numSymbols+CPsize); complexNoise = (tmp(1,:) + i*tmp(2,:))/sqrt(2); noisePower = 10^(SNR(n)/10); RxSymbols = Tx_ofdm + sqrt(noisePower)*complexNoise; Tạo kênh AWGN liệu qua kênh AWGN EstSymbols = RxSymbols(CPsize+1:numSymbols+CPsize); Khử CP Y = fft(EstSymbols,FFTsize); % dau cua FFT Giải điều chế OFDM FFT EstSymbols = Y; EstSymbols = sign(real(EstSymbols)) + i*sign(imag(EstSymbols)); EstSymbols1 = EstSymbols; EstSymbols = EstSymbols/sqrt(2); Tách sóng định cứng errCount1 = sum(inputSymbols~=EstSymbols) % Kiem tra loi I = find((inputSymbols-EstSymbols) == 0); So sánh kiểm tra lỗi đếm lỗi Dem loi Đếm lỗi errCount (numSymbols-length(I)) = errCount + 38 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 SER(n,:) = errCount / (numSymbols*numRun); SER1(n,:) = errCount1 / (numSymbols*numRun); Hiển thị kết mô Mơ hình truyền dẫn BPSK_OFDM sử dụng mã kênh băng tần gốc mô trường kênh AWGN Kịch mơ phỏng: Sim_MA_07_BPSK_OFDM_AWGN_ChannelCode - Khơng dùng mã hóa kênh Xét cho nhiều giá trị SNR Thực nhiều vòng lặp * Hai vòng lặp: Vòng lặp kịch kênh => tập giá trị SNR Vòng lặp lấy mẫu kênh (tính xác kết mơ phỏng) => Numrun 39 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 - Sim_MA_07_BPSK_OFDM_AWGN_ChannelCode.m Câu lệnh Giải thích clc; clear all; close all; -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 SNR FFTsize CPsize numRun NumBits FFTsize*numRun; = [0:1:9]; = 512; = 20; = 10^3; = -Lấy 10 điểm xét SNR đơn vị dB từ đến Mỗi điểm cách mode_Sim Codding_Type = = 1; -Chế độ mơ =2 -Mã hóa loại 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 -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; for n = 1:length(SNR), errCount = 0; Cho biến j chạy giá trị từ tới 10 (length(SNR)) G = [0 1 0 1;0 0 0 0 1;1 0 0 0 1]; for k = 1:numRun 40 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 numSymbols = FFTsize; + Hàm sign: dùng để lấy dấu (lấy -1 1) data = 0.5*(sign(rand(1,numSymbols)0.5)+1); data2 = 2*data-1; + Hàm rand(1,numSymbols): Lấy 1000 giá trị ngẫu nhiên khoảng từ đến if mode_Sim ==2 inputSymbols = FWC_COV_Encoder(G,k0,data); inputSymbols = 2*inputSymbols-1; Nếu chế độ mô = inputSymbols tính hàm function: else Nếu chế độ mơ loại khác inputSymbols = 2*data-1; FWC_COV_Encoder(G,k0,dat a); inputSymbols = 2*data-1; 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; 41 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 EstSymbols_1 = RxSymbols(CPsize+1:numSymbols _2 +CPsize); Y = fft(EstSymbols_1, length(EstSymbols_1)); 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 Cho biến I chạy giá trị từ tới 10 if mode_Sim==2 EstSymbols = FWC_COV_Dencoder(G,k0,Decis); Nếu chế độ mơ = else Nếu chế độ mơ loại khác EstSymbols EstSymbols_1; = if mode_Sim==2 I = find((data-EstSymbols) == 0); else I = find((data2-EstSymbols) == 0); end (length(EstSymbols_1)) -nếu EstSymbols_1(i)>0 Decis(i)= 1; - ngược lại Decis(i)= 0; EstSymbols = FWC_COV_Dencoder(G,k0,De cis); 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); 42 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 errCount = errCount + (FFTsize-length(I)); end SER(n,:) = errCount / (FFTsize*numRun); figure subplot plot hold on xlabel ylabel grid on; set 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 Kết : Kết mô BER hệ thống AWGN với số bit 51200bit Nhận xét : Kết mô hệ thống BPSK OFDM kênh AWGN SNR lớn tỉ lệ lỗi giảm => với thực tế 43 Sim_MA_06_07 – Trần Thị Tuyết Mai – 31 - Mô BER hệ thống BPSK/OFDM kênh AWGN có khơng mã hóa kênh: Nhận xét : BER hệ thống BPSK/OFDM kênh AWGN khơng mã hóa lớn BER hệ thống BPSK/OFDM kênh AWGN mã hóa Ở giá trị SNR tỉ lệ lỗi có mã hóa kênh nhỏ khơng mã hóa Tốc độ giảm lỗi SNR tăng cao mã hóa kênh lớn khơng mã hóa Hệ thống tối ưu mã hóa kênh 44 ... giá trị OFDM theo chu % IFFT & FFT Princeples trình từ IFFT đến FFT % step 1: IFFT process data _IFFT = sqrt(N) *ifft( X1,N); % step 2: add CP % data _IFFT= data _IFFT'' ; data _IFFT_ CP = [data _IFFT( N-V+1:N)... Mơ hình hóa mơ hệ thống truyền dẫn OFDM MATLAB Dựa chương trình Sim_ MA_06 _IFFT_ FFT : mơ hình hóa mơ điều chế/giải điều chế tín hiệu OFDM sở IFFT/ FFT chèn khử CP Trên kênh AWGN MA_06 _IFFT_ FFT_ AWGN... [data _IFFT( N-V+1:N) data _IFFT] ; % step 3: remove CP % data _IFFT_ CP= data _IFFT_ CP'' ; data_CPR = data _IFFT_ CP( V+1:N+V); % step 4: IFFT process data _FFT = (1/sqrt(N)) *fft( data_CPR,N) 36 Sim_ MA_06_07 – Trần