Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
1,83 MB
Nội dung
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG ~~~~~~*~~~~~~ BÁO CÁO BÀI TẬP Bài MA 06,07 Giảng viên : Nguyễn Viết Đảm HÀ NỘI – 2021 1|Page MA_06 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 I.lý thuyết 2|Page 3|Page 4|Page 5|Page 6|Page II.Giải thích code matlab Mô tả phổ OFDM băng tần gốc Matlab Code matlab Giải thích deta_f = 20; - Khai báo deta_f = 20 (Subcarrier_ space) BW_channel = 200; - Khai báo BW_channel = 200 ( Băng thông kênh ) - Khai báo num_subcarrier num_subcarrier = round(BW_channel/deta_f); (số lượng thành phần sóng mang) 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 - Khai báo Tb = Tb = T_ofdm/num_subcarrier; T_ofdm/num_subcarrier Rb = 1/Tb; - Khai báo Rb = 1/Tb A1 = A^2*Tb; - Khai báo A1 = A^2 * Tb ; AA = A^2*T_ofdm; - Khai báo AA =A^2*T_ofdm; f_i = - Khai báo f_i mảng có giá trị bắt deta_f:deta_f:BW_channel+deta_f; đầu từ deta_f > BW_channel+deta_f Khoảng cách deta_f 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_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 for k = 1:num_subcarrier (*) -(*) Bắt đầu vòng lặp for cho k từ -> PSD_OFDM(k,:) = num_subcarrier PSD_OFDM(k,:) ( Giá AA*(sinc((f-f_i(k))*T_ofdm)).^2; trị - (1)PSD_OFDM hàng thứ k (1) cột ) = PSD_OFDM_RF(k,:) = AA*(sinc((f- f_i(k))*T_ofdm)).^2 -(2) AA*(sinc((f2-f_i(k)PSD_OFDM_RF(k,:) ( fc)*T_ofdm)).^2; (2) Giá trị -(1)PSD_OFDM_RF end (3) hàng thứ k cột ) = AA*(sinc((f2-f_i(k)7|Page PSD_OFDM_sum_RF = sum(PSD_OFDM_RF,'double'); fc)*T_ofdm)).^2 -(3) Kết thúc vòng lặp for (*) Khai báo PSD_OFDM_sum_RF = tổng PDS_OFDM_RF kiểu liệu double -Kết thực 8|Page Mơ hình hóa hệ thống truyền dẫn OFDM sở thực IFFT/FFT 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 9|Page W = [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)]; test = abs(W_H*W) x11 = 1:4 (1) x12 = W_H*x11' (2) x13 = W*x12 (3) test2 = x11~=round(x13') (4) 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) W_H_2 = 1/sqrt(N)*W_H_2 W_H_2~=W_H (2) - Khởi tạo ma trận W có giá trị bên - Tính giá trị modul tích W_H * W - (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’ - (*) 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 (*) (1) - (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 (**) 10 | P a g e -(3) Kết thúc (*) 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 W_2 = zeros(N); Tạo ma trận W_2 ma trận tồn có N phần tử (*) 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 (*) 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 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) -Kết thực 11 | P a g e 12 | P a g e Chèn khử CP Code matlab O_I = zeros(V,N); O_V_N_V = zeros(V,N-V); Giải thích - Khai báo O_I mảng toàn gồm V hàng x N cột - Khai báo 0_V_N_V mảng toàn gồm V hàng N-V cột 13 | P a g e I_V = eye(V); for i=1:V (*) O_I(i,:) = [O_V_N_V(i,:) I_V(i,:)] ; (1) end (2) I_N = eye(N); CP_insert = [O_I;I_N]; 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,:)]; (1) end (2) O_V = zeros(N,V); I_N = eye(N); for i =1:N (*) CP_Remve(i,:) = [O_V(i,:) I_N(i,:)]; (1) end (2) - Khai báo I_V ma trận đơn vị kích thước VxV -(*) 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 (*) - Khai báo I_N ma trận đơn vị NxN - Gán CP_insert = [O_I;I_N] - Khai báo CP_Remve mảng toàn gốm N hàng x N+V cột - Khai báo O_V = mảng toàn gồm N hàng x V cột - Khai báo I_N ma trận đơn vị kích thước NxN -(*) 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 (*) - Khai báo O_V = mảng toàn gồm N hàng x V cột - Khai báo I_N ma trận đơn vị kích thước NxN -(*) 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 (*) -Kết thực Khử CP 14 | P a g e Chèn CP MA07 Mô hiệu BER Hệ thống truyền thông vô tuyến cho hệ thống truyền dẫn BPSK-OFDM môi trường kênh AWGN I.Lý thuyết Tin hiệu phát qua kênh truyền dẫn đa đường tuyến tính trước đến máy thu Vì tín hiệu băng gốc đầu vào máy thu (đầu kênh) có dạng sau: y(t)= s(t)h(,t)+x(t) h(t) độ lợi kênh x(t) tạp âm Gauss trắng cộng ký hiệu cho tích chập Bộ biến đổi từ tương tự vào số (ADC) biến đổi y(t) vào số, loại bỏ CP loại CP Qua trình loại CP thực tích chập vịng 15 | P a g e II.Giải thích codematlab Mơ hệ thống truyền dẫn OFDM Matlab Code matlab Giải thích FFTsize = 1000; - Khai báo FFTsize = 1000 CPsize = 25; - Khái báo CP size = 25; snr_in_dB = 10; - Khai báo giá trị SNRdB =10; noisePower = 10^(-snr_in_dB/10); - Gán noise power = 10^(snr_in_dB/10) data = 0.5*(sign(rand(1,FFTsize)- - Sử dụng hàm rand để tạo chuỗi 0.5)+1); liệu đầu vào xử lí đưa dạng data = 2*data-1; - Đư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 = [data_IFFT(FFTsize- - Thực chèn CP chuỗi liệu CPsize+1:FFTsize) data_IFFT]; sau IFFT tmp = randn(1,FFTsize+CPsize); - Tạo thành phần tạp âm random theo RV_Gausian = tmp*noisePower; phân bố gauss 16 | P a g e - Nhân với công suất tạp âm - Dữ liệu đầu qua kênh liệu đầu vào + tạp âm data_CPR = - Thực khử CP RxSymbols(CPsize+1:FFTsize+CPsize); data_des1 = zeros(1, length(data)); - Khởi tạo mảng giá trị đầu sau định for i = 1:length(data_FFT) - Bắt đầu vong for cho i chạy từ 1if data_FFT(i) >= >length(data_FFT) data_des1(i) = 1; - Bắt đầu vòng đk : Nếu else data_FFT(i)>=0 định đầu data_des1(i) = -1; =1; end else đầu end - 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 BER = num_error1/FFTsize - Tỉ lệ lỗi bit BER RxSymbols = RV_Gausian; data_IFFT_CP + Kết thực Thực mơ 1000 bit có 337 bit bị lỗi sau định phía thu Hệ thống truyền dẫn BPSK-OFDM dùng mã hóa kênh kênh AWGN Code matlab SNR = [0:1:9]; FFTsize = 512; CPsize = 20; numRun = 10^3; Giải thích - Khai báo tham số đầu vào trình mô -Tham số numRun thể số lần lấy mẫu kênh AWGN 17 | P a g e NumBits = FFTsize*numRun; mode_Sim = 2; 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) - Xác định mode mô loại mã hóa mơ - Sử dụng mã hóa xoắn để mã hóa kênh Mỗi loại Codding _Type dạng ma trận mã hóa xoẵn khác - Bắt đầu vịng for thực mơ theo giá trị SNR errCount = 0; - Khởi tạo số lượng lỗi ban for k = 1:numRun đầu =0 numSymbols = FFTsize; -Bắt đầu vòng for k = 1: data = 0.5*(sign(rand(1,numSymbols)-0.5)+1); numRun data2 = 2*data-1; if mode_Sim ==2 Xác định mode_Sim để mã inputSymbols = FWC_COV_Encoder(G,k0,data); hóa xoắn chuỗi liệu inputSymbols = 2*inputSymbols-1; - Sau chuyển sang dạng else lưỡng cực inputSymbols = 2*data-1; end TxSamples = sqrt(length(inputSymbols)) * - Thực xử lí IFFT ifft(inputSymbols,length(inputSymbols)) numSymbols = length(inputSymbols); Tx_ofdm = - Thực chèn CP [TxSamples(numSymbolsCPsize+1:numSymbols) TxSamples]; numSymbols_2 = length(inputSymbols); - Mô kênh AWGN với tmp = randn(1,numSymbols_2+CPsize); nhiễu ngẫu nhiên phân bố noisePower = 10^(-SNR(n)/10); Gauss RxSymbols = Tx_ofdm + sqrt(noisePower)*tmp; 18 | P a g e 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 if mode_Sim==2 EstSymbols = FWC_COV_Dencoder(G,k0,Decis); else EstSymbols = EstSymbols_1; end errCount = errCount + (FFTsize-length(I)); end SER(n,:) = errCount / (FFTsize*numRun); - Khử CP -Xử lí FFT - Chuỗi bit sau xử lí FFT định đầu - Nếu > đầu - Ngược lại đầu - Xác định mode giải mã hóa kênh - Tính lỗi đưa tỉ lệ lỗi SER giá trị SNR Kết thực 19 | P a g e 20 | P a g e .. .MA_ 06 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 I .lý thuyết 2|Page 3|Page 4|Page 5|Page 6|Page II.Giải thích code matlab Mơ tả phổ OFDM băng... từ tương tự vào số (ADC) biến đổi y(t) vào số, loại bỏ CP loại CP Qua trình loại CP thực tích chập vịng 15 | P a g e II.Giải thích codematlab Mơ hệ thống truyền dẫn OFDM Matlab Code matlab Giải... -(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 (*) -Kết thực Khử CP 14 | P a g e Chèn CP MA0 7 Mô hiệu BER Hệ thống truyền thông vô tuyến cho hệ thống truyền