1. Trang chủ
  2. » Tất cả

Sim ma 06 trực quan hóa nguyên lí hoạt động hệ thống truyền dẫn cfdm trên cơ sở thực hiện fftfft và chèn khử cp

40 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Phạm Thu Trang –B18DCVT423 HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA VIỄN THÔNG I ĐA TRUY NHẬP VÔ TUYẾN SIM MA_06, MA_07 Giảng viên : Nguyễn Viết Đảm Hà Nội, tháng 11/2021 SIM MA_06 Trực quan hóa nguyên lí hoạt động hệ thống truyền dẫn CFDM sở thực FFT/FFT chèn khử CP Phạm Thu Trang –B18DCVT423 Phạm Thu Trang –B18DCVT423 Phạm Thu Trang –B18DCVT423 Phạm Thu Trang –B18DCVT423 Phạm Thu Trang –B18DCVT423 Phạm Thu Trang –B18DCVT423 Phạm Thu Trang –B18DCVT423 Minh họa tín hiệu phổ tín hiệu OFDM băng tần gốc Mơ tả phổ OFDM băng tần gốc Matlab ➢ Khai báo khởi tạo tham số đầu vào Phạm Thu Trang –B18DCVT423 ➢ Tính tốn PSD → Kết : Phạm Thu Trang –B18DCVT423 Giải thích code STT Câu lệnh Giải thích - Tạo function MA_06_CP_insert với đầu vào N & V Đầu CP_insert function [CP_insert] = MA_06_CP_insert(N,V) 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,N-V); - Khai báo 0_V_N_V mảng toàn gồm V hàng N-V cột 25 Ghi Phạm Thu Trang –B18DCVT423 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) I_N = eye(N); -(*) 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 CP_insert = [O_I;I_N]; Khử CP STT - Gán CP_insert = [O_I;I_N] Câu lệnh function [CP_Remve] = MA_06_CP_Remove(N,V) CP_Remve O_V I_N for i =1:N (*) CP_Remve(i,:) = [O_V(i,:) I_N(i,:)]; (1) end (2) Giải thích - Tạo function MA_06_CP_Remove với đầu vào N & V Đầu CP_Remove - 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 (*) = zeros(N,N+V); = zeros(N,V); = eye(N); 26 Ghi Phạm Thu Trang –B18DCVT423 MA_06_OFDM_Principle Bài mô so sánh thực IFFT/FFT chèn/khử CP thông việc nhân ma trận – làm theo khồi sơ đồ kĩ thuật mathlab để làm đơn giản hóa q trình TH1 : Xử lí bước theo nhân ma trận ➢ Khởi tạo tham số đầu vào : N ; V ➢ Tạo chuỗi đầu vào mô ma trận IFFT/FFFT ; Chèn/khử CP ➢ Thực xử lí IFFT/FFT chèn/khử CP theo bước ➢ Kết X1 X13 27 Phạm Thu Trang –B18DCVT423 ❖ Nhận xét : Kết đầu vào đầu giống nên q trình xử lí xác TH2 : Xử lí bước theo biến đổi ma trận mathlab ➢ ➢ ➢ ➢ ➢ Dùng hàm ifft mathlab để xử lí IFFT Dùng kĩ thuật biến đổi ma trận mathlab xử lí trình chèn CP Dùng kĩ thuật biến đổi ma trận mathlab xử lí q trình khử CP Dùng hàm fft mathlab xử lí q trình FFT Kết đầu : 28 Phạm Thu Trang –B18DCVT423 ❖ Nhận xét : Kết đầu trình hồn tồn giống Qua ta thấy việc sử dụng mathlab để xử lí q trình biến đổi OFDM ( IFFT/FFT chèn/khử CP ) giúp trở nên đơn giản hóa mà kết xác Giải thích code: Câu lệnh STT Giải thích Clc ; Clear ; 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 Close all ; N = 8; %input('Enter N ='); V =2 Xóa tất hình định Khai báo giá trị N V đầu vào X1 = 1:N; (1) [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); 29 -(1) Khởi tạo chuỗi nhị phân X1 đầu vào - Các lệnh tạo ma trận IFFT/FFT chèn/khử CP từ function tạo trước Phạm Thu Trang –B18DCVT423 X2 = X1'; X3 = W_H*X2; % IFFT X4 = X3'; X5 = X4'; X6 = CP_insert*X5; X7 = X6'; X8 = X7'; X9 = CP_Remve*X8; X10 = X9'; X11 = X10'; X12 = W*X11; % FFT X13 = X12' ; Thực xử lí IFFT/FFT chèn khử CP theo dạng ma trận - X3 đầu IFFT - X6 đầu chèn CP - X9 đầu khử CP - X12 đầu FFT - X13 chuyển bị X12 để chuỗi bit dạng 1xN Về lí thuyết X1 = X13 data_IFFT data_IFFT_CP = [data_IFFT(N-V+1:N) data_IFFT]; data_CPR = data_IFFT_CP(V+1:N+V); - Xử lí IFFT sử dụng lệnh ifft mathlab chuỗi X1 Thực chèn CP theo xử lí ma trận matlab Chuỗi đầu khử CP vector ghép từ vector [data_IFFT(N-V+1:N) – data_IFFT giá trị từ N-V+1 đến N ] ghép với data_IFFT - Chuỗi đầu khử CP vector data_IFFT_CP giá trị từ V+1 đến N+V = sqrt(N)*ifft(X1,N); 30 Phạm Thu Trang –B18DCVT423 10 - Xử lí FFT sử dụng lênh fft mathlab data_FFT = (1/sqrt(N))*fft(data_CPR,N) 31 Phạm Thu Trang –B18DCVT423 SIM MA_07: 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ườngkênh AWGN Trong mô này, ta mô hệ thống kênh truyền dẫn BPSK-OFDM kênh AWGN trường hợp: Khơng có mã hóa kênh có mã hóa kênh • Các lệnh hệ thống Câu lệnh Giải thích clc; Xóa command window clear; Xóa biến workspace close all; Đóng tất cửa sổ figure mở • Khai báo tham số đầu vào Câu lệnh SNR = [0:1:9]; FFTsize CPsize numRun NumBits Giải thích Cho giá trị tỉ số tín hiệu nhiễu SNR chạy từ đến để khảo sát Số mẫu liệu điều chế đầu vào Kích cỡ vecto chèn Số lần chạy Số lượng mẫu sử dụng q trình mơ = 512; = 20; = 10^3; = FFTsize*numRun; CPsize= 20; snr_in_dB = 10; noisePower = 10^(-snr_in_dB/10); Khái báo CP size =20; Khai báo giá trịSNRdB =10; Gán noise power =10^(snr_in_dB/10) - (1) Sử dụng hàm rand để tạo chuỗi liệu đầu vào xử lí đưa dạng0 - (2) Đưa chuỗi đơn cựcvề lưỡng cực data = 0.5*(sign(rand(1,FFTsize)-0.5)+1); (1) data = 2*data-1; (2) 32 Phạm Thu Trang –B18DCVT423 data_IFFT - Thực IFFT chuỗidữ liệu đầu vào gán vào data_IFFT = ifft(data); - Thực chèn CP củachuỗi liệu sau IFFT data_IFFT_CP = [data_IFFT(FFTsizeCPsize+1:FFTsize) data_IFFT]; tmp = randn(1,FFTsize+CPsize);(1) RV_Gausian =tmp*noisePower; (2) RxSymbols = data_IFFT_CP +RV_Gausian;(3) data_CPR = RxSymbols(CPsize+1:FFTsize+CPsize); data_FFT - (1) Tạo thành phần tạp âm random theo phân bốgauss - (2) Nhân với công suấttạp âm - (3) Dữ liệu đầu khiqua kênh liệu đầu vào + tạp âm - Thực khử CP - Xử lí FFT = fft(data_CPR); 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) data_des1(i) = 1; (2) else (3) data_des1(i) = -1; (4) end (5) end (6) error_vector1 = data~=data_des1; - (*) Bắt đầu vong forcho i chạy từ 1>length(data_FFT) -(1) Bắt đầu vịng đk : Nếu data_FFT(i)>=0 thìquyết định đầu =1; else đầu - Kết thúc num_error1 - Tính tổng số bit lỗi - So sánh bit đầu vào bit sau định = sum(error_vector1) - Tỉ lệ lỗi bit BER BER = num_error1/FFTsize Không sử dụng mã hóa kênh 33 Phạm Thu Trang –B18DCVT423 Tiến trình mơ truyền dẫn OFDM mơi trường AWGN (khơng mã hóa kênh) Câu lệnh mode_Sim = 1; 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; inputSymbols = 2*data-1; TxSamples = sqrt(length(inputSymbols))* ifft(inputSymbols,length(inputSymbols)); numSymbols = length(inputSymbols); 34 Giải thích Thiết lập tiến trình mơ khơng sử dụng mã hóa kênh Khởi tạo q trình khảo sát theo SNR Khởi tạo liệu đầu vào BPSK dạng -1 1, số lượng ký hiệu ngẫu nhiên tạo với số mẫu liệu điều chế đầu vào, chạy lại trình numRun (lần) IFFT liệu Phạm Thu Trang –B18DCVT423 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; Chèn CP cho liệu Cho liệu qua kênh tạp âm Gauss trắng cộng EstSymbols_1=RxSymbols(CPsize+1:numSymbols_2+CPsize); Khử CP cho liệu 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 EstSymbols = EstSymbols_1; FFT liệu I SER(n,:) end Kiểm tra lỗi, tìm vị trí mà tín hiệu đầu giống với đầu vào, từ suy lỗi = find((data2-EstSymbols) == 0); errCount end Quyết định cứng = errCount + (FFTsize-length(I)); = errCount / (FFTsize*numRun); save MA_07_BPSK_OFDM_NoCC_AWGN.mat; figure(1); G = semilogy(SNR,SER,'-ob'); title([' Mô SER hệ thống BPSK OFDM kênh AWGN; Số bit mô = ',num2str(NumBits),' bits ', ],'FontName','.VnTime','color','b','FontSize',16); LT=legend('OFDM - kênh AWGN khơng mã hóa kênh'); set(LT,'fontname','.Vntime','fontsize',16); set(G,'LineWidth',1.5); 35 Đếm số lượng lỗi, kết thúc q trình chạy Tính tỉ số lỗi, kết thúc khảo sát Mơ tả q trình mơ OFDM khơng sử dụng mã hóa kênh mơi trường AWGN Phạm Thu Trang –B18DCVT423 AX = gca; set(AX,'fontsize',14); X=xlabel('SNR (dB)'); set(X,'fontname','.Vntime','fontsize',14,'color','b'); Y=ylabel('SER'); set(Y,'fontname','.Vntime','fontsize',14,'color','b'); grid on; Sử dụng mã hóa kênh (mã xoắn) Câu lệnh mode_Sim Giải thích Thiết lập tiến trình mơ sử dụng mã hóa kênh Xác định loại mã hóa = 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 36 Dựa loại mã hóa, xác định số bit đầu vào mã hóa ma trận tạo mã Phạm Thu Trang –B18DCVT423 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 ==2 inputSymbols = FWC_COV_Encoder(G,k0,data); inputSymbols=2*inputSymbols-1; else inputSymbols = 2*data-1; end TxSamples = sqrt(length(inputSymbols))* ifft(inputSymbols,length(inputSymbols)); 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)); 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 37 Khởi tạo trình khảo sát theo SNR Khởi tạo liệu đầu vào BPSK dạng 1, số lượng ký hiệu ngẫu nhiên tạo với số mẫu liệu điều chế đầu vào, chạy lại trình numRun (lần) Mã hóa liệu mã xoắn IFFT liệu Chèn CP cho liệu Cho liệu qua kênh tạp âm Gauss trắng cộng Khử CP cho liệu FFT liệu Quyết định cứng Nếu ký hiệu >0, trả lại trả Phạm Thu Trang –B18DCVT423 if mode_Sim==2 EstSymbols = FWC_COV_Dencoder(G,k0,Decis); else EstSymbols = EstSymbols_1; end if mode_Sim==2 I = find((data-EstSymbols) == 0); else I = find((data2-EstSymbols) == 0); end errCount end = errCount + (FFTsize-length(I)); SER(n,:) = errCount / (FFTsize*numRun); end save MA_07_BPSK_OFDM_CC_AWGN.mat; figure(1); G = semilogy(SNR,SER,'-vr'); title([' Mô SER hệ thống BPSK OFDM kênh AWGN; Số bit mô = ',num2str(NumBits),' bits ', ],'FontName','.VnTime','color','b','FontSize',16); LT=legend('OFDM - kênh AWGN có mã hóa kênh); set(LT,'fontname','.Vntime','fontsize',16); 38 Quá trình giải mã kênh Kiểm tra lỗi, tìm vị trí mà tín hiệu đầu giống với đầu vào, từ suy lỗi Đếm số lượng lỗi, kết thúc q trình chạy Tính tỉ số lỗi, kết thúc khảo sát Mơ tả q trình mơ OFDM sử dụng mã hóa kênh mơi trường AWGN Phạm Thu Trang –B18DCVT423 - 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 : 39 .. .SIM MA_ 06 Trực quan hóa ngun lí hoạt động hệ thống truyền dẫn CFDM sở thực FFT/FFT chèn khử CP Phạm Thu Trang –B18DCVT423 Phạm Thu Trang –B18DCVT423... giá trị N V đầu vào X1 = 1:N; (1) [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);... Xử lí bước theo biến đổi ma trận mathlab ➢ ➢ ➢ ➢ ➢ Dùng hàm ifft mathlab để xử lí IFFT Dùng kĩ thuật biến đổi ma trận mathlab xử lí q trình chèn CP Dùng kĩ thuật biến đổi ma trận mathlab xử lí

Ngày đăng: 26/02/2023, 17:23

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w