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 ofdm trên cơ sở thực hiện fftfft và chènkhử cp

28 1 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

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 3,89 MB

Nội dung

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG “ĐA TRUY NHẬP VÔ TUYẾN” Bài 7: 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 OFDM sở thực FFT/FFT chèn/khử CP Tín hiệu phổ tần tín hiệu OFDM Điều chế/ giải điều chế tín hiệu OFDM sở khơng gian tín hiệu Minh hoạ tín hiệu phổ tín hiệu OFDM băng tần gốc SIM_MA_06_PSD_OFDM a Các lệnh hệ thống Câu lệnh clc; clear; Giải thích Xóa command window Xóa biến workspace Đóng tất cửa sổ figure mở close all; b Khai báo tham số đầu vào deta_f = 20; BW_channel = 200; Khai báo độ rộng tần số kênh sóng mang Khai báo băng thơng kênh num_subcarrier = round(BW_channel/deta_f); Tổng số sóng mang giá trị làm trịn băng thơng kênh/ độ rộng tần số kênh sóng mang T_ofdm R_ofdm Khai báo chu kỳ tốc độ OFDM = 1/deta_f; = 1/T_ofdm; Tb=T_ofdm/num_subcarrier; Rb = 1/Tb; Khai báo chu kỳ tốc độ bit liệu A A1 AA Khai báo biên độ tín hiệu, biên độ PSD tín hiệu đầu vào khối điều chế OFDM, biên độ PSD tín hiệu đầu khối điều chế OFDM = 10; = A^2*Tb; = A^2*T_ofdm; f_i = deta_f:deta_f:BW_channel+deta_f; f = -Rb:BW_channel+4*deta_f; Tần số sóng mang fc Tần số sóng mang f2 = 3*max(f); = -f:1:(fc+BW_channel+4*deta_f); Biến chạy tần số băng gốc Biến chạy tần số băng thơng c Phổ tín hiệu đầu vào khối OFDM PSD_ofdm_in = A1*(sinc((f*Tb)).^2); Mật độ phổ cơng suất tín hiệu OFDM đầu vào băng tần gốc PSD_RF_SC = A1*(sinc(((f2-fc)*Tb)).^2); Mật độ phổ cơng suất tín hiệu đơn sóng mang băng thơng d Phổ tín hiệu đầu OFDM PSD_OFDM = zeros(num_subcarrier,max(size(f))); Khởi tạo mật độ phổ cơng suất tín hiệu OFDM băng tần gốc PSD_OFDM_RF = zeros(num_subcarrier,max(size(f2))); Khởi tạo mật độ phổ công suất tín hiệu OFDM băng thơng for k = 1:num_subcarrier PSD_OFDM(k,:) = AA*(sinc((ff_i(k))*T_ofdm)).^2; PSD_OFDM_RF(k,:) = AA*(sinc((f2f_i(k)-fc)*T_ofdm)).^2; end Mật độ phổ cơng suất tín hiệu OFDM băng tần gốc, mật độ phổ cơng suất tín hiệu OFDM băng thơng e Mơ tả phổ tín hiệu truyền dẫn đơn sóng mang OFDM băng tần gốc băng thơng Câu lệnh figure(1) Giải thích Khởi tạo cửa sổ subplot(2,2,1); plot(f, PSD_ofdm_in,'r','LineWidth',3); xlabel('Tần số[Hz]', 'FontName', '.VnTime', 'color', 'b', 'FontSize', 12); ylabel('PSD Input of OFDM', 'FontName', '.VnTime', 'color', Vẽ mật độ phổ công suất PSD tín hiệu đầu vào khối 'b','FontSize',14); title(['Mật độ phổ công suất PSD OFDM với tốc độ Rb tín hiệu đầu vào khối OFDM với tốc độ Rb =', num2str(Rb), 'b/s'], 'FontName', '.VnTime', 'color', 'b', 'FontSize', 9); grid on; subplot(2,2,2); plot(f2,PSD_RF_SC,'m','LineWidth',3); xlabel('Tần số [Hz]', 'FontName', '.VnTime', 'color', 'b', 'FontSize', 12); ylabel('PSD SCRF', 'FontName', '.VnTime', 'color', 'b', 'FontSize',14); title([Mật độ phổ cơng suất PSD tín hiệu SCRF với tốc độ Rb =', num2str(Rb),'b/s', '; fRF=',num2str(fc),'HZ'], 'FontName','.VnTime','color','b','FontSize',9); grid on; Vẽ mật độ phổ công suất PSD tín hiệu SCRF với tốc độ Rb, tần số sóng mang fc subplot(2,2,4); for k = 1:num_subcarrier plot(f2,PSD_OFDM_RF(k,:),'b','LineWidth',2); hold on end xlabel('Tần số [Hz]', 'FontName', '.VnTime', 'color', 'b', 'FontSize',12); ylabel('PSD OFDMRF', 'FontName', '.VnTime', 'color', 'b', 'FontSize',14); title(['PSD tín hiệu OFDM RF: BW Channel =', num2str(BW_channel), ' Hz; Num Subcarrier =', num2str(num_subcarrier), '; Subcarrier Space =', num2str(deta_f),' Hz ', '; fRF=',num2str(fc),' Hz '], 'FontName','.VnTime','color','b','FontSize',9); grid on; f Vẽ mật độ phổ công suất PSD tín hiệu OFDM băng thơng với thơng số băng thơng kênh BW_channel, số lượng sóng mang num_subcarrier, độ rộng tần số kênh sóng mang deta_f tần số sóng mang fc Mơ tả phổ tín hiệu điều chế OFDM Lấy tổng tín hiệu OFDM PSD_OFDM_sum_RF = sum(PSD_OFDM_RF,'double'); băng thông figure(2) subplot(2,1,1); for k = 1:num_subcarrier plot(f2,PSD_OFDM_RF(k,:),'b', 'LineWidth', 2); hold on end h11 = plot(f2,PSD_RF_SC,'r', 'LineWidth',3); hold on h12=plot(f2,PSD_OFDM_sum_RF,'+r','LineWidth',4); xlabel('Tần số [Hz]', 'FontName', '.VnTime', 'color', 'b', 'FontSize', 12); ylabel('PSD OFDMRF & SCRF', 'FontName', '.VnTime', 'color', 'b','FontSize',14); title(['So sánh PSD tín hiệu PSD OFDMRF & SCRF: BW Channel =',num2str(BW_channel), ' Hz; Num Subcarrier=', num2str(num_subcarrier), '; Subcarrier Space =', num2str(deta_f),' Hz,'; F RF=',num2str(fc),' Hz '], 'FontName','.VnTime','color','b','FontSize',12); grid on; K = legend('PSD OFDMRF','PSD SCRF', 'PSD OFDM SUM-RF'); set(K, 'fontname','.Vntime','fontsize',13); Khởi tạo cửa sổ thứ Vẽ phổ tín hiệu OFDM băng thơng, tổng tín hiệu OFDM băng thơng tín hiệu SC với tần số sóng mang fc subplot(2,1,2) plot(f2,PSD_OFDM_sum_RF,'b','LineWidth',2); hold on plot(f2,PSD_RF_SC,'r','LineWidth',3); xlabel('Tần số [Hz]', 'FontName', '.VnTime', 'color', 'b', 'FontSize',12); ylabel('PSD OFDMRF & SCRF', 'FontName', '.VnTime', 'color', 'b','FontSize',14); title(['PSD tín hiệu PSD OFDMRF & SCRF: BW Channel=',num2str(BW_channel), ' Hz; Num Subcarrier=', num2str(num_subcarrier), '; Subcarrier Space =', num2str(deta_f),'Hz,'; FRF=',num2str(fc),' Hz], 'FontName','.VnTime','color','r','FontSize',12); grid on; L = legend('PSD OFDM SUM-RF', 'PSD SCRF'); set(L, 'fontname','.Vntime','fontsize',13); Kết Vẽ phổ tổng tín hiệu OFDM băng thơng tín hiệu SC với tần số sóng mang fc x11 = 1:4 (1) x12 = W_H*x11' (2) x13 = W*x12 (3) test2 = x11~=round(x13') (4) N= 4; (1) W_H_2 = zeros(N); (2) 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 (1) W_H_2~=W_H (2) W_2 = zeros(N); 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) W_2 = 1/sqrt(N)*W_2 (1) W_2~=W (2) Kết - (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’ (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ử (*) 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) W_H_2 = 1/sqrt(N)*W_H_2 -(2) W_H_2 so sánh W_H Tạo ma trận W_2 ma trận toà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 (*) -(1) W_2 = 1/sqrt(N)*W_2 So sánh W_2 W MA_06_Basis_OFDM_System_Modeling1 Lệnh Chức clc; Xóa command window Xóa biến workspace clear; Đóng tất cửa sổ figure mở close all; FFTsize = 4; Kích thước FET CPsize = 2; Kích thước CP data_IFFT Chuyển từ miền tần số sang thời gian = ifft(data,FFTsize) data_IFFT_CP [data_IFFT(FFTsizeCPsize+1:FFTsize) data_IFFT]; = Chèn CP data_CPR = Loại bỏ chèn CP data_IFFT_CP(CPsize+1:FFTsize+CPsize); data_FFT data_des1 = fft(data_CPR,FFTsize) = zeros(1, length(data)); Chuyển từ miền thời gian sang tần số Mạch định for i = 1:length(data_FFT) if data_FFT(i) >= data_des1(i) = 1; else data_des1(i) = -1; end end -Cho i chạy từ cuối cuối chuỗi liệu FET -Nếu liệu thứ i >= định -Nếu khơng định -1 data_des2 Mạch định error_vector1 = sign(real(data_FFT)); = data~=data_des1 Xác định lỗi ( so sánh ) num_error1 = sum(error_vector1); BER1 = num_error1/FFTsize Số lượng lỗi num_error2 = sum(error_vector2); BER2 = num_error2/FFTsize Tỷ lệ lỗi bit Kết  Chèn CP Lệnh Chức clc; clear; Xóa command window Xóa biến workspace close all; Đóng tất cửa sổ figure mở function [CP_insert] MA_06_CP_insert(N,V) = -Tạo hàm với đầu ma trận khử CP -Đầu vào hệ thống (N) số mẫu chèn (V) = zeros(V,N); Khởi tạo ma trận chèn có V*N O_V_N_V = zeros(V,N-V); Khởi tạo ma trận có V*(N-V) I_V Khởi tạo ma trận đơn vị có V*V O_I = eye(V); for i=1:V O_I(i,:) = [O_V_N_V(i,:) I_V(i,:)] ; end -Khai báo giá trị cho ma trạn chèn -Ma trận chèn tổng hợp ma trận O_I O_V_N_V I_N Khởi tạo ma trận đơn vị có N*N = eye(N); CP_insert = [O_I;I_N]; Ma trận chèn CP Thử với N=4, V=2  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 N & V Đầu CP_Remove CP_Remve - 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 (*) O_V I_N = zeros(N,N+V); = zeros(N,V); = eye(N); for i =1:N (*) CP_Remve(i,:) = [O_V(i,:) I_N(i,:)]; (1) end (2) Thử với : N=4 , V=2 SIM MA_07 Mơ hình hóa mơ hiệu BER cho hệ thống truyền dẫn BPSKOFDM dùng mã kênh mơi trường kênh AWGN I Mơ hình hóa mơ hệ thống truyền dẫn OFDM Matlab Mô MA_06_IFFT_FFT_AWGN Thực mô MATLAB  Thiết lập tham số mô  Điều chế BPSK  Xử lý IFFT/FFT chèn khử CP * Phía phát - Xử lý IFFT - Chèn CP - Mơ kênh AWGN * Phía thu - Khử CP - Xử lý FFT  Kết mô phỏng: Nhận xét: Thực mô 512 bit có 141 bit bị lỗi sau định phía thu  Đoạn mã chương trình: - MA_06_IFFT_FFT_AWGN - % clc; clear all; close all; % FFTsize = 1000; CPsize = 25; snr_in_dB = 10; noisePower = 10^(-snr_in_dB/10); % -% Generate for FFTsize bits: BPSK data = 0.5*(sign(rand(1,FFTsize)-0.5)+1); data = 2*data-1; % -% IFFT & FFT Princeples % step 1: IFFT process data_IFFT = ifft(data); % step 2: add CP data_IFFT_CP = [data_IFFT(FFTsize-CPsize+1:FFTsize) data_IFFT]; % step 3: AWGN channel tmp = randn(1,FFTsize+CPsize); RV_Gausian = tmp*noisePower; RxSymbols = data_IFFT_CP + RV_Gausian; % step 4: remove CP data_CPR = RxSymbols(CPsize+1:FFTsize+CPsize); % step 5: IFFT process data_FFT = fft(data_CPR); %%%%% decision and determine error % solution 1: % Hard decision data_des1 = zeros(1, length(data)); for i = 1:length(data_FFT) if data_FFT(i) >= data_des1(i) = 1; else data_des1(i) = -1; end end % to determine error (comparesion) error_vector1 = data~=data_des1; % errCount & number of errors num_error1 = sum(error_vector1); BER1 = num_error1/FFTsize % solution 2: % Hard decision data_des2 = sign(real(data_FFT)); % to determine error (comparesion) error_vector2 = data~=data_des2; % errCount & number of errors num_error2 = sum(error_vector2); BER2 = num_error2/FFTsize % optimal solution optimal BER_op = sum(sign(real(data_FFT))~=data)/FFTsize  Giải thích code STT Câu lệnh Clc ; Giải thích Xóa cửa sổ lệnh Ghi 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 CPsize snr_in_dB noisePower (4) = 512; (1) = 20; (2) = 10; (3) = 10^(-snr_in_dB/10); -(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,FFTsize)0.5)+1); (1) data = 2*data-1; (2) data_IFFT data_IFFT_CP [data_IFFT(FFTsizeCPsize+1:FFTsize) data_IFFT]; tmp (1) = ifft(data); = randn(1,FFTsize+CPsize); RV_Gausian = tmp*noisePower; (2) RxSymbols RV_Gausian;(3) = data_IFFT_CP + - (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 - Thực IFFT chuỗi liệu đầu vào gán vào data_IFFT = - Thực chèn CP chuỗi liệu sau IFFT - (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:FFTsize+CPsize); - Thực khử CP 10 data_FFT - Xử lí FFT 11 data_des1 = fft(data_CPR); = zeros(1, length(data)); - Khởi tạo mảng giá trị đầu sau định (*) 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 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; 14 num_error1 = sum(error_vector1) - So sánh bit đầu vào bit sau định - Tính tổng số bit lỗi 15 BER = num_error1/FFTsize - Tỉ lệ lỗi bit BER II Mơ hình hóa mơ hệ thống truyền dẫn BPSK-OFDM dùng mã hóa kênh kênh AWGN Thực mô MATLAB  Các tham số đầu vào Sim_MA_BPSK_OFDM_AWGN_Channelcode %========================================================================== %===================== Presentation_Sim_MA_07 ============================= %========================================================================== clc; clear all; close all; %========================================================================== load MA_07_BPSK_OFDM_NoCC_AWGN.mat; SER_noChannelCoding = SER; SNR_1 = SNR; clear SER; % -load MA_07_BPSK_OFDM_CC_AWGN.mat; SER_ChannelCoding = SER; SNR_2 = SNR; clear SER; % -figure(1) G = semilogy(SNR_1,SER_noChannelCoding,'-ob'); set(G,'LineWidth',1.5); hold on; % -G = semilogy(SNR_2,SER_ChannelCoding,'-.vr'); set(G,'LineWidth',2.5); % -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'); title(['M« pháng SER hệ thống BPSK/OFDM kênh AWGN có không mà hóa kênh; Số bit mô = ', num2str(NumBits),' bits '],'FontName','.VnTime','color','b','FontSize',14); L=legend('OFDM - kênh AWGN không mà hóa kªnh','OFDM - kªnh AWGN cã m· hãa kªnh'); set(L,'fontname','.Vntime','fontsize',13); grid on; %========================================================================== Kết .. .Sim 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 Tín hiệu phổ tần tín hiệu OFDM Điều chế/ giải điều chế tín hiệu OFDM sở khơng gian... CP_ Remve(i,:) = [O_V(i,:) I_N(i,:)]; (1) end (2) Thử với : N=4 , V=2 SIM MA_ 07 Mơ hình hóa mơ hiệu BER cho hệ thống truyền dẫn BPSKOFDM dùng mã kênh mơi trường kênh AWGN I Mơ hình hóa mô hệ thống. .. hóa mô hệ thống truyền dẫn OFDM Matlab Mô MA_ 06_ IFFT_FFT_AWGN Thực mô MATLAB  Thiết lập tham số mô  Điều chế BPSK  Xử lý IFFT/FFT chèn khử CP * Phía phát - Xử lý IFFT - Chèn CP - Mơ kênh AWGN

Ngày đăng: 26/02/2023, 19:14

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

TÀI LIỆU LIÊN QUAN

w