Báo cáo thí nghiệm thông tin vô tuyến TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ VIỄN THÔNG THÍ NGHIỆM THÔNG TIN VÔ TUYẾN Họ và tên Nguyễn Hồ Giang Nam Lớp CTTN ĐTTT K64 MSSV 20193030 Mã lớp TN 7248[.]
Trang 1THÍ NGHIỆM THÔNG TIN VÔ TUYẾN
Trang 2Hà Nội, 2023
Trang 3BÀI SỐ 1 MÔ PHỎNG KÊNH RAYLEIGH THEO PHƯƠNG PHÁP RICE 2
Bài 1.1 2
Bài 1.2 3
Bài 1.3 3
Bài 1.4 4
BÀI SỐ 2 MÔ PHỎNG HỆ THỐNG SỬ DỤNG ĐIỀU CHẾ QPSK QUA KÊNH RAYLEIGH 7 Bài 2.1 7
Bài 2.2 8
BÀI SỐ 3 PHÂN TẬP TRONG THÔNG TIN VÔ TUYẾN 10
Bài 3.1 11
Bài 3.2 12
BÀI SỐ 4 MÔ PHỎNG HỆ THỐNG OFDM QUA KÊNH VÔ TUYẾN 13
Bài 4.1 13
Bài 4.2 16
Trang 4BÀI SỐ 1 MÔ PHỎNG KÊNH RAYLEIGH THEO PHƯƠNG PHÁP
RICE
Mô phỏng kênh vô tuyến theo phương pháp RICE: Phương pháp Rice được hiểu là phương pháp mô hình các quá trình xác suốt sử dụng các hàm tuần hoàn,tuy nhiên các tham số như chu kì dao động pha và biên độ được xác định trước.Đối với phương pháp Monte Carlo thì các tham số này được xác định ngẫu nhiên
Bài 1.1
i n fi ,n Ci ,n θi , n[ rad]
Bài 1.2
function y = g_function(c, f, th, t)
y = zeros(size(t));
Trang 5for n = 1:length(f)
y = y + c(n) * cos(2 * pi * f(n) * t + th(n));
end
Bài 1.3
clear;
load bai11_res f1 f2 c1 c2 th1 th2
fs = 270800;
Tsim = 0.4;
t = 0:1/fs:Tsim;
g1 = g_function(c1, f1, th1, t);
g2 = g_function(c2, f2, th2, t);
g = g1 + 1i * g2;
a_dB = 20 * log10(abs(g));
plot(t, a_dB);
title('The channel amplitude in dB');
xlabel('t');
ylabel('\alpha(t)');
legend('\alpha(t) in dB');
Kết quả:
Hình 1.1 The channel amplitube
Bài 1.4
clear;
load bai11_res f1 f2 c1 c2 th1 th2
fs = 50000;
Tsim = 20;
t = 1:1/fs:Tsim;
g1 = g_function(c1, f1, th1, t);
g2 = g_function(c2, f2, th2, t);
g = g1 + 1i * g2;
a = abs(g);
Trang 6g_mean = mean(g);
g_var = var(g);
a_mean = mean(a);
a_var = var(a);
n = length(a);
x = 0:0.1:3;
b = hist(a, x);
figure(1);
stem(x, b/n/(x(2)-x(1)));
hold on;
k = 0;
ohm_p = 2;
p_a = (2.*x.*(k+1)/ohm_p).*exp(-k-((k+1).*x.^2/ohm_p)).*besseli(0, (2.*x.*sqrt(k(k+1)/ohm_p)));
plot(x, p_a, 'r');
title('The PDF of \alpha(x)');
xlabel('x');
ylabel('P_{\alpha}(x)');
legend('P_{\alpha}(x)', 'Rayleigh distribution (Theory)');
figure(2);
n1 = length(g1);
x1 = -4:0.1:4;
c = hist(g1, x1);
stem(x1, c/n1/(x1(2)-x1(1)));
hold on;
p=(1/sqrt(2*pi))*exp(-x1.^2/2);
plot(x1, p, 'r');
title('The PDF of g1 process');
xlabel('x');
ylabel('P_{g1}(x)');
legend('P_{g1}(x)', 'Gaussian distribution (Theory)');
hold off;
Kết quả:
Trang 7Hình 1.2 Gaussian distribution
Hình 1.3 Rayleigh distribution
Nhận xét: Hàm phân phối Reyleight so với hàm α (t) có hình dạng tương tự nhau, so với phân phối Gauss thì hàm anlpha không đối xứng
Kết quả mô phỏng và lý thuyết là giống nhau.
Trang 8BÀI SỐ 2 MÔ PHỎNG HỆ THỐNG SỬ DỤNG ĐIỀU CHẾ QPSK
QUA KÊNH RAYLEIGH
Bài 2.1
Hàm receiver.m
function chann_1=receiver(SNR_db,S_m,FS,x,S,g);
Es=var(S);
Eb=Es/2;
N_0=Eb/10^(SNR_db/10);
N0=sqrt(N_0/2)*(randn(size(FS))+j*randn(size(FS)));
NFS=(FS+N0)./g;
for i=1:length(FS)
d=abs(S_m-NFS(i));
md=min(d);
if md==d(1)
R(2*i-1)=0;
R(2*i)=0;
elseif md==d(2)
R(2*i-1)=0;
R(2*i)=1;
elseif md==d(3)
R(2*i-1)=1;
R(2*i)=1;
elseif md==d(4)
R(2*i-1)=1;
R(2*i)=0;
end
end
c=0;
for i=1:length(x)
if R(i)~=x(i)
c=c+1;
end
end
chann_1=c;
Hàm Main của Bai2_1.m
clear;
x = round(rand(1,100000));
for i = 1:2:length(x)
if x(i)==0 & x(i+1)==0
S((i+1)/2)=exp(j*pi/4);
elseif x(i)==0 & x(i+1)==1
S((i+1)/2)=exp(j*3*pi/4);
elseif x(i)==1 & x(i+1)==1
S((i+1)/2)=exp(j*5*pi/4);
elseif x(i)==1 & x(i+1)==0
S((i+1)/2)=exp(j*7*pi/4);
end
end
S=S(1:20000);
x=x(1:40000);
Trang 9b=1/2;
N1=9;
N2=N1+1;
f1=f_m*sin(pi/2/N1*((1:N1)-1/2));
c1=sqrt(2*b/N1)*ones(size(f1));
th1=rand(size(f1))*2*pi;
f2=f_m*sin(pi/2/N2*((1:N2)-1/2));
c2=sqrt(2*b/N2)*ones(size(f2));
th2=rand(size(f2))*2*pi;
f_s=270800;
T_symb=1/f_s;
t=(0:length(S)-1)*T_symb;
g1=g(c1,f1,th1,t);
g2=g(c2,f2,th2,t);
g=g1+j*g2;
FS=g.*S;
theta_m=[pi/4,3*pi/4,5*pi/4,7*pi/4];
S_m=exp(j*theta_m);
for i=1:length(S)/4
gS_m(4*i-3:4*i)=S_m.*g(4*i-3:4*i);
end
SNR_db=0:5:30;
for i=1:length(SNR_db)
c(i)=receiver(SNR_db(i),S_m,FS,x,S,g);
end
BER=c/length(x);
save Bai2_1 BER;
semilogy(SNR_db,BER,'. ');
title('The bit error probability of QPSK over a fading channel');
xlabel('SNR in dB');
ylabel('P_b');
Kết quả:
SNR in dB
10-4
10-3
10-2
10-1
100
The bit error probability of QPSK over a fading channel
Bài 2.2
clear;
Trang 10SNR_db=0:5:30;
Y_b=2*b*10.^(SNR_db/10);
p_b=(1-sqrt(Y_b./(1+Y_b)))/2;
k=semilogy(SNR_db,p_b,'* ');
set(k,'LineWidth',1);
hold on;
load Bai2_1 BER;
semilogy(SNR_db,BER,'ro');
hold off;
title('BER of slow flat Rayleigh fading channel');
xlabel('Y_b');
ylabel('P_b');
legend('Theory','Simulation');
Kết quả:
Y
b
10 -4
10 -3
10 -2
10 -1
100
BER of slow flat Rayleigh fading channel
Theory Simulation
Nhận xét: Khi ta tăng tỷ số SNR lên thì tỷ lệ lỗi bit sẽ giảm dần và SNR lớn thì mô
phỏng cho kết quả lỗi bit thấp hơn trên lí thuyết
So sánh với trường hợp điều chế QPSK qua kênh nhiễu Gauss Kênh Rayleigh có tir lệ
lỗi bit cao hơn nhiều so với kênh Gauss khi xét cùng một mức tỉ số SNR
pb lý thuyết 0.1464 0.0642 0.0233 0.0077 0.0025
BER mô phỏng 0.1626 0.0716 0.0215 0.0056 0.0018
Trang 11BÀI SỐ 3 PHÂN TẬP TRONG THÔNG TIN VÔ TUYẾN
Hàm g.m
function h = g(t);
f_m=91;
b=1/2;
N1=9;
N2=N1+1;
f1=f_m*sin(pi/2/N1*((1:N1)-1/2));
c1=sqrt(2*b/N1)*ones(size(f1));
phi1=rand(size(f1))*2*pi;
f2=f_m*sin(pi/2/N2*((1:N2)-1/2));
c2=sqrt(2*b/N2)*ones(size(f2));
phi2=rand(size(f2))*2*pi;
y1 = zeros(size(t));
for n=1:length(f1);
y1 = y1 + c1(n)*cos(2*pi*f1(n).*t + phi1(n));
end;
y2 = zeros(size(t));
for n=1:length(f2);
y2 = y2 + c2(n)*cos(2*pi*f2(n).*t + phi2(n));
end;
h = y1 + j*y2;
clear y1,y2;
Bai3.m
x = round(rand(1,1000000));
S = qammod(x,2,'Inputtype','bit');
Es = var(S);
Eb = Es/2;
fs = 270800;
T_sym = 1/fs;
t = (0:length(S)-1)*T_sym;
SNR_db = -10:30;
L = [1 2 3 4];
BER = zeros(length(L),length(SNR_db));
Pb = zeros(length(L),length(SNR_db));
for a=1:length(L)
for i=1:length(SNR_db)
N_0 = Eb/10^(SNR_db(i)/10);
N0 = sqrt(N_0/2)*(randn(size(S)) + j*randn(size(S)));
z = zeros(1,length(S));
Trang 12for l=1:L(a)
h = g(t);
y = S.*h;
y = y + N0;
w = conj(h);
z = z + y.*w;
end
r = zeros(1,1000000);
for j=1:length(z)
if z(j) > 0
r(j) = 1;
end
if z(j) <= 0
r(j) = 0;
end
end
count = 0;
for n=1:length(x)
if r(n) == x(n)
count = count + 1;
end
end
BER(a,i) = 1 - count/length(x);
SNR = 10^(SNR_db(i)/10);
mu = sqrt(SNR/(SNR+1));
for l=1:L(a)
Pb(a,i) = Pb(a,i) + ((0.5*(1-mu))^L(a))*nchoosek(L(a)+l-2,l-1)*((0.5*(1+mu))^(l-1));
end
clear j;
clear n;
end
end
Bài 3.1
plot(SNR_db, BER(2,:),'b-')
hold on;
plot(SNR_db, Pb(1,:),'r ');
hold on;
plot(SNR_db, Pb(2,:),'g ');
legend('BER(1)','Pb(1)','Pb(2)');
xlabel('SNR_{dB}');
ylabel('BER/P_b');
hold off;
Kết quả:
Trang 13-10 -5 0 5 10 15 20 25 30
SNRdB 0
0.05 0.1 0.15 0.2 0.25 0.3
0.35
BER(1) Pb(1) Pb(2)
Bài 3.2
plot(SNR_db, BER,'-')
hold on;
plot(SNR_db, Pb(),' ');
legend('BER(1)','BER(2)','BER(3)','BER(4)','Pb(1)','Pb(2)','Pb( 3)','Pb(4)');
hold off;
Kết quả:
SNR dB 0
0.05 0.1 0.15 0.2 0.25 0.3
0.35
BER(1) BER(2) BER(3) BER(4) Pb(1) Pb(2) Pb(3) Pb(4)
Q3.1 Khi số ăng-ten sử dụng tăng lên thì tỷ lệ lỗi bit càng nhỏ, do sử dụng càng nhiều
anten càng tối ưu được công suất truyền và hạn chế được nhiễu không thể kiểm soát của kênh fading Rayleigh
Trang 14Q3.2 Các anten phải độc lập xác suất với nhau để tín hiệu truyền đi từ các anten là độc
lập, không gây nhiễu lên nhau gây méo tín hiệu.
Q3.3 Để đảm bảo được tính độc lập thì các anten bên thu phải được sắp xếp cách đều
nhau và cách nhau một số nguyên lần nửa bước sóng.
Trang 15BÀI SỐ 4 MÔ PHỎNG HỆ THỐNG OFDM QUA KÊNH VÔ TUYẾN
Bài 4.1
OFDM_Modulator.m
function [y]=OFDM_Modulator(data,NFFT,G);
chnr=length(data);
N=NFFT;
x=[data,zeros(1,NFFT-chnr)]; %insert the guard interval
OFDM_Demoodulator.m
function [y]=OFDM_Demodulator(data,chnr,NFFT,G);
%insert the guard interval
x_remove_guard_interval=[data(G+1:NFFT+G)];
x=fft(x_remove_guard_interval);
y=x(1:chnr); %Zero removing
Bai4_1.m
clear all;
NFFT=64; %FFT length
G=9; % Guard interval length
M_ary=16; % Multilevel of M-ary symbol
t_a=50*10^(-9); % Sampling duration of HiperLAN/2
%load rho.am-ascii; % load discrete multi-path channel profile
rho=[1,0.8487,0.7663,0.7880,0.6095,0.6658,0.5174,0.0543,0.0465];
h=sqrt(rho);
N_P=length(rho);
H=fft([h,zeros(1,NFFT-N_P)]);
NofOFDMSymbol=100; % Number of OFDM symbol
length_data=(NofOFDMSymbol)*NFFT; % The total data length
%
-% Source bites
%
-source_data=randi([0,1],length_data,sqrt(M_ary));
%
-% bit to symbol coder
%
-symbols=bi2de(source_data);
Trang 16%
-% QAM modulator in base band
%
-QAM_Symbol=dmodce(symbols,1,1,'qam',M_ary);
%
-% Preparing data pattern
%
-Data_Pattern=[];% Transmitted Signal before IFFT
for i=0:NofOFDMSymbol-1
QAM_tem=[];
for n=1:NFFT
QAM_tem=[QAM_tem,QAM_Symbol(i*NFFT+n)];
end
Data_Pattern=[Data_Pattern;QAM_tem];
clear QAM_tem;
end
ser=[]; % Set the counter of symbol error ratio to be a empty vector snr_min=0;
snr_max=25;
step=1;
for snr=snr_min:step:snr_max
snr=snr-10*log10((NFFT+G)/NFFT);% Miss matching effect
rs_frame=[];% A Matrix of received signal
for i=0:NofOFDMSymbol-1
% OFDM modulator
OFDM_signal_tem=OFDM_Modulator(Data_Pattern(i+1,:),NFFT,G); % The received signal over multi-path channel is created by a % convolutinal operation
rs=conv(OFDM_signal_tem,h);
% Additive noise is add
rs=awgn(rs,snr,'measured','dB');
rs_frame=[rs_frame;rs];
clear OFDM_signal_tem;
end
%
-% Receiver
%
-Receiver_Data=[];% Prepare a matrix for received data symbols
d=[]; % Demodulated symbols
Trang 17for i=1:NofOFDMSymbol
if(N_P>G+1)&&(i>1)
% If it is not first symbol and the length of CIR is longer than % the guard interval length,then the ISI term must be taken into % accout
previous_symbol=rs_frame(i-1,:);
% The previous OFDM symbol
ISI_term=previous_symbol(NFFT+2*G+1:NFFT+G+N_P+1);
% Position from NFFT+2G+1:NFFT+G+N_P-1 is ISI term
ISI=[ISI_term,zeros(1,length(previous_symbol)-length(ISI_term))]; rs_i=rs_frame(i,:)+ISI;
% the ISI term is added to the current OFDM symbol
else
rs_i=rs_frame(i,:);
end
%
-% OFDM Demodulator
%
-Demolated_signal_i=OFDM_Demodulation(rs_i,NFFT,NFFT,G);
%
-% OFDM Equalization
%
-d=Demolated_signal_i./H;
demodulated_symbol_i=ddemodce(d,1,1,'QAM',M_ary);
data_symbol=[data_symbol;demodulated_symbol_i];
end
%data_symbol=data_symbol';
% Calculation of error symbols
[number,ratio]=symerr(symbols,data_symbol);
ser=[ser,ratio];
save Bai3_1 ser;
end
snr=snr_min:step:snr_max;
semilogy(snr,ser,'bo');
ylabel('SER');
xlabel('SNR in dB');
Trang 180 5 10 15 20 25
SNR in dB
10 -2
10 -1
10 0
Hình 3.4 SER of an OFDM system over a multi-path channel
Bài 4.2
G=0;
Trang 190 5 10 15 20 25
SER
10 -2
10 -1
100
G=0 G=9
Hình 3.5 Comparision of SER of an OFDM system with and without guard interval
SER(G=0) 0.78734375 0.7246875 0.6109375 0.48171875 0.33875 0.2484375
SER(G=9) 0.7865625 0.710937
Q4.1 Tiền tố vòng : là cách chèn khoảng bảo vệ để tránh ISI, ngta sử dụng một số lượng
mẫu ở cuối ofdm symbol đưa lên đầu để tạo một khoảng bảo vệ giữa hau kí hiệu liên tiếp
Q4.2 Tín hiệu OFDM là tín hiệu phức khi truyền qua kênh phần thực sẽ nhân một sóng
mang cos, còn phần ảo sẽ nhân một sóng mang hình sin tạo hệ trực giao
Q4.3 SER của G=9 thấp hơn SER của G=0, tuy nhiên khi SNR bé thì tỉ số SER là như
nhau, điều này chứng tỏ điều quan trọng của khoảng bảo vệ và tiền tố vòng crc