Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
3,41 MB
Nội dung
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG Khoa Viễn thơng BÀI TIỂU LUẬN MƠN HỌC ĐA TRUY NHẬP VÔ TUYẾN (TEL1410) Đề bài: Sim_MA06 & Sim_MA07 Giảng viên hướng dẫn: NGUYỄN VIẾT ĐẢM Hà Nội, ngày 11 tháng 11 năm 2021 Mô Câu lệnh Clc ; Clear ; Close all ; 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; 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 Xóa tất hình định - Khai báo deta_f = 20 (Subcarrier_ space) - Khai báo BW_channel = 200 ( Băng thông kênh ) - Khai báo num_subcarrier (số lượng thành phần sóng mang) = BW / delta_f - Khai báo T_ofdm = 1/deta_f - Khai báo R_ofdm = 1/T_ofdm - Khai báo Tb = T_ofdm/num_subcarrier Rb = 1/Tb; A1 = A^2*Tb; AA = A^2*T_ofdm; - Khai báo Rb = 1/Tb - Khai báo A1 = A^2 * Tb ; - Khai báo AA = A^2*T_ofdm; - Khai báo f_i mảng có giá trị bắt f_i = đầu từ deta_f - > BW_channel+deta_f deta_f:deta_f:BW_channel+deta_f; Khoảng cách deta_f - Khai báo f mảng gồm giá trị từ -Rb f = -Rb:BW_channel+4*deta_f; đến BW_channel+4*deta_f fc = 3*max(f); - Khai báo fc = * max(f) f2 = - Khai báo f2 mảng gồm giá trị từ -f f:1:(fc+BW_channel+4*deta_f); đến fc+BW_channel+4*deta_f PSD_ofdm_in = - Khai báo PSD_ofdm_in = A1*(sinc((f*Tb)).^2); A1*(sinc((f*Tb)).^2); PSD_RF_SC = A1*(sinc(((f2- Khai báo PSD_RF_SC = fc)*Tb)).^2); A1*(sinc(((f2-fc)*Tb)).^2); PSD_OFDM = - Khai báo PSD_OFDM mảng zeros zeros(num_subcarrier,max(size(f))) gồm num_subcarrier hàng x max(size(f)) ; cột -(*) Bắt đầu vòng lặp for cho k từ -> for k = 1:num_subcarrier (*) num_subcarrier PSD_OFDM(k,:) ( Giá trị - (1)PSD_OFDM hàng thứ PSD_OFDM(k,:) = AA*(sinc((f-f_i(k))*T_ofdm)).^2; k cột ) = AA*(sinc((f f_i(k))*T_ofdm)).^2 (1) -(2) PSD_OFDM_RF(k,:) ( Giá trị PSD_OFDM_RF(k,:) = (1)PSD_OFDM_RF hàng thứ k AA*(sinc((f2-f_i(k)cột ) = AA*(sinc((f2-f_i(k)fc)*T_ofdm)).^2; (2) end (3) fc)*T_ofdm)).^2 -(3) Kết thúc vòng lặp for (*) - Khai báo PSD_OFDM_sum_RF = PSD_OFDM_sum_RF = tổng sum(PSD_OFDM_RF,'double'); PDS_OFDM_RF kiểu liệu double Các lệnh cấu tạo figure 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 𝑆𝐶𝑟𝑓 𝑐ó độ 𝑟ộ𝑛𝑔 𝑝ℎổ 𝑙à 2/Tb 𝑇ầ𝑛 𝑠ố 𝑡𝑟𝑢𝑛𝑔 𝑡â𝑚 𝑡ạ𝑖 𝑓 = 𝑓𝑅𝑓 - 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 OFDMrf f= frf 12 13 14 Mô phỏng: - Giải thích code 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 W_H = [1 1 1; exp(j*2*pi/4) exp(j*4*pi/4) exp(j*6*pi/4); exp(j*4*pi/4) exp(j*8*pi/4) exp(j*12*pi/4); exp(j*6*pi/4) exp(j*12*pi/4) exp(j*2*3*3*pi/4)]; - Khởi tọa ma trận W_H có giá trị bên W_H=1/2*W_H - W_H = ½ * W_H W = [1 1 1; - Khởi tạo ma trận W có giá trị bên 15 exp(-j*2*pi/4) exp(j*4*pi/4) exp(-j*6*pi/4); exp(-j*4*pi/4) exp(*8*pi/4) exp(-j*12*pi/4); exp(-j*6*pi/4) exp(*12*pi/4) exp(-j*2*3*3*pi/4)]; W=1/2*W W=1/2*W test = abs(W_H*W) - Tính giá trị modul tích W_H * W x11 = 1:4 (1) x12 = W_H*x11' (2) x13 = W*x12 (3) test2 = x11~=round(x13') (4) - (1) Khởi tạo chuỗi x11 = 1,2,3,4 - (2) x12 = W_H * x11’(x11 chuyển vị ) -(3) x13 = W*x12 -(4) So sánh x11 x13’ N= 4; (1) W_H_2 = zeros(N); (2) - (1) Khai báo N =4 - (2) Tạo ma trận W_H_2 ma trận tồn có N phần tử for i =1:N (*) for m= 1:N (**) W_H_2(i,m) = exp(j*2*pi/N*(i-1)*(m-1)); (1) end (2) end (3) - (*) Bắt đầu vòng for cho I chạy từ 1:N - (**) Bắt đầu vòng for (*) cho m chạy từ :N -(1) W_H_2(i,m) phần tử vị trí hàng i cột m = exp(j*2*pi/N*(i-1)*(m-1)) -(2) kết thúc (**) -(3) Kết thúc (*) W_H_2 = 1/sqrt(N)*W_H_2 (1) W_H_2~=W_H (2) - (1) W_H_2 = 1/sqrt(N)*W_H_2 -(2) W_H_2 so sánh W_H W_2 = zeros(N); Tạo ma trận W_2 ma trận tồn có N phần tử for m =1:N (*) for i= 1:N (**) W_2(m,i) = exp(j*2*pi/N*(m-1)*(i-1)); (1) end (2) end (3) (*) Bắt đầu vòng for cho I chạy từ m:N - (**) Bắt đầu vòng for (*) cho i chạy từ :N -(1) W_H_2(m,i) phần tử vị trí hàng m cột i = exp(j*2*pi/N*(m-1)*(i-1)); -(2) kết thúc (**) -(3) Kết thúc (*) 16 W_2 = 1/sqrt(N)*W_2 (1) W_2~=W (2) -(1) W_2 = 1/sqrt(N)*W_2 - So sánh W_2 W 17 18 19 Bùi Minh Tuấn_B18DCVT374 Mô - Giải thích code *Chèn CP Câu lệnh Giải thích function [CP_insert] = MA_06_CP_insert(N,V) - Tạo function MA_06_CP_insert với đầu vào N & V Đầu CP_insert O_I = zeros(V,N); - Khai báo O_I mảng toàn gồm V hàng x N cột O_V_N_V = zeros(V,NV); - Khai báo 0_V_N_V mảng toàn gồm V hàng N-V cột I_V = eye(V); - Khai báo I_V ma trận đơn vị kích thước VxV for i=1:V (*) O_I(i,:) = [O_V_N_V(i,:) I_V(i,:)] ; (1) end (2) -(*) Bắt đầu vòng for cho I chạy từ 1:V -(1) O_I hàng thứ i tất cột = [O_V_N_V(i,:) I_V(i,:)] -(2) Kết thúc vòng for (*) STT 20 Bùi Minh Tuấn_B18DCVT374 I_N = eye(N); - Khai báo I_N ma trận đơn vị NxN CP_insert = [O_I;I_N]; - Gán CP_insert = [O_I;I_N] *Khử CP STT 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 N & V Đầu CP_Remove CP_Remve = zeros(N,N+V); - Khai báo CP_Remve mảng toàn gốm N hàng x N+V cột O_V = zeros(N,V); - Khai báo O_V = mảng toàn gồm N hàng x V cột I_N = eye(N); - Khai báo I_N ma trận đơn vị kích thước NxN for i =1:N (*) CP_Remve(i,:) = [O_V(i,:) I_N(i,:)]; (1) end (2) -(*) Bắt đầu vòng for cho I chạy từ 1:N -(1) CP_Remve(i,:) (hàng thứ i tất cột ) = [O_V(i,:) I_N(i,:)]; -(2) Kết thúc vòng for (*) 21 Bùi Minh Tuấn_B18DCVT374 22 Bùi Minh Tuấn_B18DCVT374 Mơ Phỏng - Giải thích code STT 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 FFTsize = 512; (1) CPsize = 20; (2) snr_in_dB = 10; (3) noisePower = 10^(snr_in_dB/10); (4) -(1) Khai báo FFTsize = 512 - (2) Khái báo CP size = 20; - (3) Khai báo giá trị SNRdB =10; -(4) Gán noise power = 10^(-snr_in_dB/10) data = 0.5*(sign(rand(1,FFTsiz e)- 0.5)+1); (1) data = 2*data-1; (2) - (1) Sử dụng hàm rand để tạo chuỗi liệu đầu vào xử lí đưa dạng - (2) Đưa chuỗi đơn cực lưỡng cực data_IFFT = ifft(data); - Thực IFFT chuỗi liệu đầu vào gán vào data_IFFT data_IFFT_CP = - Thực chèn CP chuỗi liệu sau IFFT 23 Bùi Minh Tuấn_B18DCVT374 [data_IFFT(FFTsize CPsize+1:FFTsize) data_IFFT]; tmp = randn(1,FFTsize+CPsize ); (1) RV_Gausian = tmp*noisePower; (2) RxSymbols = data_IFFT_CP + RV_Gausian;(3) - (1) Tạo thành phần tạp âm random theo phân bố gauss - (2) Nhân với công suất tạp âm - (3) Dữ liệu đầu qua kênh liệu đầu vào + tạp âm data_CPR = RxSymbols(CPsize+1:F FTsize+CPsize); - Thực khử CP 10 data_FFT = fft(data_CPR); - Xử lí FFT 11 data_des1 = zeros(1, length(data)); - Khởi tạo mảng giá trị đầu sau định 12 for i = 1:length(data_FFT) (*) if data_FFT(i) >= (1) data_des1(i) = 1; (2) else (3) data_des1(i) = -1; (4) end (5) end (6) 13 error_vector1 = data~=data_des1; - So sánh bit đầu vào bit sau định 14 num_error1 = sum(error_vector1) - Tính tổng số bit lỗi 15 BER = num_error1/FFTsize - Tỉ lệ lỗi bit BER - (*) Bắt đầu vong for cho i chạy từ 1- >length(data_FFT) -(1) Bắt đầu vịng đk : Nếu data_FFT(i)>=0 định đầu =1; else đầu - Kết thúc - Kết Quả: 24 Bùi Minh Tuấn_B18DCVT374 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ế *So sánh có mã hóa kênh khơng mã hóa kênh : Nhận xét : - Ở 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 25 Bùi Minh Tuấn_B18DCVT374 Thẻ sinh viên 26 ... NxN CP_ insert = [O_I;I_N]; - Gán CP_ insert = [O_I;I_N] *Khử CP STT 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 N & V Đầu CP_ Remove CP_ Remve... 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ế *So sánh có mã hóa kênh khơng mã hóa kênh : Nhận xét : - Ở giá trị SNR tỉ lệ lỗi có mã hóa kênh nhỏ khơng mã hóa -... tạo chuỗi liệu đầu vào xử lí đưa dạng - (2) Đưa chuỗi đơn cực lưỡng cực data_IFFT = ifft(data); - Thực IFFT chuỗi liệu đầu vào gán vào data_IFFT data_IFFT _CP = - Thực chèn CP chuỗi liệu sau IFFT