Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 43 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
43
Dung lượng
3,4 MB
Nội dung
Nguyễn Đình Bảo – B18DCVT031 HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG BÀI TẬP LỚN MƠN ĐA TRUY NHẬP VÔ TUYẾN Giảng viên : Nguyễn Viết Đảm Hà Nội, tháng 9, năm 2021 Sim_MA06 Trực quan hóa nguyên lý hoạt động hệ thống truyền dẫn OFDM sở thực IFFT/FFT chèn/ khử CP Đoạn Chương trình khai báo, khởi tạo tham số đầu vào: Đoạn chương trình tính tốn PSD đầu vào khối điều chế OFDM: Đoạn chương trình tính tốn PSD đầu khối điều chế OFDM: KẾT QUẢ: NHẬN XÉT: - Phổ tần tín hiệu OFDM đầu vào có độ rộng phổ 2/Tb (Hz) Tần số trung tâm f = - Phổ tần tín hiệu 𝑆𝐶𝑅𝐹 𝑐ó độ 𝑟ộ𝑛𝑔 𝑝ℎổ 𝑙à 𝑇𝑏 𝑇ầ𝑛 𝑠ố 𝑡𝑟𝑢𝑛𝑔 𝑡â𝑚 𝑡ạ𝑖 𝑓 = 𝑓𝑅𝐹 Phổ tần tín hiệu OFDM có nhiều thành phần sóng mang Các thành phần sóng mang có độ rộng phổ 2/T_ofdm Khoảng cách tần số trung tâm deta_f = 1/T_ofdm, tần số trung tâm f=detal_f Độ rộng băng tần BW Phổ tín hiệu 𝑂𝐹𝐷𝑀𝑅𝐹 nhiều thành phần sóng mang tương tự tín hiệu OFDM nhiều thành phần sóng mang Điểm khác tần số trung tâm 𝑂𝐹𝐷𝑀𝑅𝐹 f= 𝑓𝑅𝐹 Câu lệnh Giải thích Clc; Xóa cửa sổ lệnh Clear; Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống Close all; Xóa tất hình định deta_f = 20; BW_channel Khai báo deta_f = 20 (Subcarrier_ space) = 200; Khai báo BW_channel = 200 (Băng thông kênh) round(BW_channel/deta_f); Khai báo num_subcarrier (số lượng thành phần sóng mang) = BW / delta_f T_ofdm = 1/deta_f; Khai báo T_ofdm = 1/deta_f R_ofdm = 1/T_ofdm; Khai báo R_ofdm = 1/T_ofdm num_subcarrier = Tb = T_ofdm/num_subcarrier; Khai báo Tb = T_ofdm/num_subcarrier Rb = 1/Tb; Khai báo Rb = 1/Tb A = 10; Khai báo A=10; A1 = A^2*Tb; Khai báo A1 = A^2 * Tb; AA = A^2*T_ofdm; Khai báo AA = A^2*T_ofdm; Khai báo f_i mảng có giá trị deta_f:deta_f:BW_channel+deta_f; deta_f - > BW_channel+deta_f Khoảng cách deta_f f_i = f = -Rb:BW_channel+4*deta_f; Khai báo f mảng gồm giá trị từ -Rb đến BW_channel+4*deta_f fc = 3*max(f); Khai báo fc = * max(f) f2= f:1:(fc+BW_channel+4*deta_f); Khai báo f2 mảng gồm cá giá trị từ -f đến fc+BW_channel+4*deta_f PSD_ofdm_in = A1*(sinc((f*Tb)).^2); Khai báo PSD_ofdm_in A1*(sinc((f*Tb)).^2); PSD_RF_SC fc)*Tb)).^2); = Khai báo PSD_RF_SC = A1*(sinc(((f2- fc)*Tb)).^2); PSD_OFDM = A1*(sinc(((f2- Khai báo PSD_OFDM mảng zeros gồm num_subcarrier hàng x max(size(f)) cột zeros(num_subcarrier,max(size(f))); PSD_OFDM_RF = = Khai báo PSD_OFDM_RF mảng zeros zeros(num_subcarrier,max(size(f2))); gồm num_subcarrier hàng x max(size(f2)) cột for k = 1:num_subcarrier PSD_OFDM(k,:) = Bắt đầu vòng lặp for cho k từ -> AA*(sinc((fnum_subcarrier PSD_OFDM(k,:) ( Giá trị f_i(k))*T_ofdm)).^2; % PSD_OFDM(k,:) - (1)PSD_OFDM hàng thứ k cột = rand(1)*AA*(sinc((f- f_i(k))*T_ofdm)).^2; %(1) ) = AA*(sinc((ff_i(k))*T_ofdm)).^2 -(2): PSD_OFDM_RF(k,:) ( Giá trị - PSD_OFDM_RF(k,:) = AA*(sinc((f2- f_i(k)(1)PSD_OFDM_RF hàng thứ k fc)*T_ofdm)).^2; cột ) = AA*(sinc((f2-f_i(k)% PSD_OFDM_RF(k,:) = fc)*T_ofdm)).^2 rand(1)*AA*(sinc((f2-f_i(k)-(3): Kết thúc vòng lặp for fc)*T_ofdm)).^2; %(2) end %(3) PSD_OFDM_sum_RF = sum(PSD_OFDM_RF,'double'); Khai báo PSD_OFDM_sum_RF = tổng PDS_OFDM_RF kiểu liệu double Nguyễn Đình Bảo – B18DCVT031 41 Nguyễn Đình Bảo – B18DCVT031 29 Nguyễn Đình Bảo – B18DCVT031 41 Nguyễn Đình Bảo – B18DCVT031 31 Nguyễn Đình Bảo – B18DCVT031 MA_06_IFFT_FFT_AWGN - Tham số đầu vào: FFTsize CPsize snr_in_dB noisePower = 1000; = 25; = 10; = 10^(-snr_in_dB/10); Câu lệnh Giải thích FFTsize = 1000; -Khai báo FFTsize = 1000; CPsize = 25; Khái báo CP size = 25; snr_in_dB = 10; noisePower Khai báo giá trị SNR_dB =10; = 10^(-snr_in_dB/10); -Gán noise power = 10^(snr_in_dB/10) data = 0.5*(sign(rand(1,FFTsize)- -(1) Sử dụng hàm rand để tạo chuỗi 0.5)+1); (1) data = 2*data-1;(2) liệu đầu vào xử lí đưa dạng - (2) Đưa chuỗi đơn cực lưỡng cực Thực IFFT chuỗi liệu đầu vào gán data_IFFT = ifft(data); vào data_IFFT data_IFFT_CP = [data_IFFT(FFTsizeCPsize+1:FFTsize) Thực chèn CP chuỗi liệu sau IFFT data_IFFT]; tmp = randn(1,FFTsize+CPsize); -(1) Tạo thành phần tạp âm random (1) RV_Gausian = tmp*noisePower; (2) theo phân bố gauss RxSymbols = data_IFFT_CP + (2) Nhân với công suất tạp âm RV_Gausian; (3) (3) Dữ liệu đầu qua kênh 32 Nguyễn Đình Bảo – B18DCVT031 liệu đầu vào + tạp âm data_CPR = - Thực khử CP RxSymbols(CPsize+1:FFTsize+CPsize); data_FFT = fft(data_CPR); Xử lí FFT data_des1 = zeros(1, length(data)); -Khởi tạo mảng giá trị đầu sau định for i = 1:length(data_FFT) (*) if data_FFT(i) >= (1) (*) Bắt đầu vong for cho i chạy từ 1- data_des1(i) = 1;(2) -(1) Bắt đầu vịng đk : Nếu data_FFT(i)>=0 định đầu =1; else đầu >length(data_FFT) else(3) data_des1(i) =-1;(4) end(5) end(6) - Kết thúc error_vector1 = data~=data_des1; - So sánh bit đầu vào bit sau định num_error1 = sum(error_vector1) Tính tổng số bit lỗi BER1 = num_error1/FFTsize Tỉ lệ lỗi bit BER1 data_des2 = sign(real(data_FFT)); Lấy dấu phần thực data_FFT error_vector2 = data~=data_des2; So sánh bit đầu vào bit sau định num_error2 = sum(error_vector2); Tính tổng số bit lỗi BER2 = num_error2/FFTsize Tỉ lệ lỗi bit BER2 Công thức tính BER_op BER_op = sum(sign(real(data_FFT))~=data)/FFTsiz e 33 Nguyễn Đình Bảo – B18DCVT031 - Kết mô phỏng: Lần Lần Lần Lần Tăng SNR lên thành 15dB - Nhận xét: + Kết ngẫu nhiên bị ảnh hưởng nhiễu kênh AWGN 34 Lần Nguyễn Đình Bảo – B18DCVT031 + Kết BER giảm SNR tăng (Khi cơng suất tín hiệu lớn cơng suất nhiễu số bít bị lỗi q trình truyền giảm =>Tín hiệu thu giống với tín hiệu trước qua kênh AWGN ) 35 Nguyễn Đình Bảo – B18DCVT031 MƠ HÌNH HỆ THỐNG TRUYỀN DẪN BPSK-OFDM SỬ DỤNG MÃ KÊNH TRONG BĂNG TẦN GỐC TRONG MƠI TRƯỜNG KÊNH AWGN 36 Nguyễn Đình Bảo – B18DCVT031 SIM_MA_07_BPSK_OFDM_AWGN_ChannelCode - Tham số đầu vào: Câu lệnh Giải thích SNR = [0:1:9]; Khai báo tham số đầu FFTsize = 512; vào q trình mơ CPsize = 20; numRun = 10^3; (3) % Note NumBits -(3) Tham số numRun thể = FFTsize*numRun; số lần lấy mẫu kênh AWGN mode_Sim = 2; % for No channel code (OFDM Xác định mode mô without channel coding); loại mã hóa mơ % for channel coding (OFDM with channel Sử dụng mã hóa xoắn để coding) mã hóa kênh Codding_Type = 1; % Code Generation Matrix Mỗi loại codding_type ma trận mã hóa xoắn if mode_Sim ==2 khác 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 37 Nguyễn Đình Bảo – B18DCVT031 end for n = 1:length(SNR), errCount = 0; (1) for k = 1:numRun % Generated BPSK data numSymbols = FFTsize; 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 TxSamples = sqrt(length(inputSymbols))*ifft(inputSymbols,len gth(inputSymbols)); numSymbols = length(inputSymbols); % Insert CP 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); 38 -Tạo vòng for thực mô n chạy từ đến chiều dài SNR -(1) Khởi tạo số lượng lỗi ban đầu - Vòng for cho k chạy từ đến numRun lệnh tiếp thực điều chế liệu BPSK -Xác định mode_Sim để mã hóa xoắn chuỗi liệu - Sau chuyển sang dạng lưỡng cực Thực chèn CP -Mô kênh AWGN với nhiêuc ngẫu nhiên phân bố GAUSS -Khử CP Nguyễn Đình Bảo – B18DCVT031 Y = fft(EstSymbols_1,length(EstSymbols_1)); -Xử lí FFT 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 errCount = errCount + (FFTsize-length(I)); end BER(n,:) = errCount / (FFTsize*numRun); Chuỗi bit sau xử lí FFT định đầu - Nếu > đầu Ngược lại đầu 39 - Xác định mode giải mã hóa kênh Tính lỗi đưa tỉ lệ lỗi BER giá trị SNR Nguyễn Đình Bảo – B18DCVT031 KẾT QUẢ CHẠY MƠ PHỎNG: NHẬN XÉT: SNR lớn tỉ lệ lỗi BER giảm 40 Nguyễn Đình Bảo – B18DCVT031 NHẬN XÉT: - Với giá trị SNR tỉ lệ lỗi BER có mã hóa kênh nhỏ khơng mã hóa kênh - Khi SNR tăng tỉ lệ lỗi BER giảm kênh AWGN khơng mã hóa kênh 41 Nguyễn Đình Bảo – B18DCVT031 42 .. .Sim_ MA06 Trực quan hóa nguyên lý hoạt động hệ thống truyền dẫn OFDM sở thực IFFT/FFT chèn/ khử CP Đoạn Chương trình khai báo, khởi tạo tham số đầu vào: Đoạn chương trình... đầu vào xử lí đưa dạng - (2) Đưa chuỗi đơn cực lưỡng cực Thực IFFT chuỗi liệu đầu vào gán data_IFFT = ifft(data); vào data_IFFT data_IFFT _CP = [data_IFFT(FFTsizeCPsize+1:FFTsize) Thực chèn CP. .. NxN CP_ insert = [O_I;I_N]; Gán CP_ insert = [O_I;I_N] Giải thích câu lệnh matlab Khử CP: Câu lệnh Giải thích function [CP_ Remve] = MA_06 _CP_ Remove(N,V) Tạo function MA_06 _CP_ Remove với đầu vào