You are on page 1of 20

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: 724839


Báo cáo thí nghiệm thông tin vô tuyến

Hà Nội, 2023
MỤC LỤC

BÀ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
Báo cáo thí nghiệm thông tin vô tuyến

BÀ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 f i ,n C i ,n θi , n [ rad ]

1 1 7.9312 0.4714 0.6283

1 2 23.5525 0.4714 1.2566

1 3 38.4583 0.4714 1.8850

1 4 52.1955 0.4714 2.5133

1 5 64.3467 0.4714 3.1416

1 6 74.5428 0.4714 3.7699

1 7 82.4740 0.4714 4.3982

1 8 87.8993 0.4714 5.0265

1 9 90.6537 0.4714 5.6549

2 1 7.1398 0.4472 0.5712

2 2 21.2435 0.4472 1.1424

2 3 34.8242 0.4472 1.7136

2 4 47.5474 0.4472 2.2848


Báo cáo thí nghiệm thông tin vô tuyến

2 5 59.0998 0.4472 2.8560

2 6 69.1969 0.4472 3.4272

2 7 77.5903 0.4472 3.9984

2 8 84.0730 0.4472 4.5696

2 9 88.4857 0.4472 5.1408

2 10 90.7195 0.4472 5.7120

Bài 1.2
function y = g_function(c, f, th, t)
y = zeros(size(t));
for 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ả:

3
Báo cáo thí nghiệm thông tin vô tuyến

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);
g_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);
Báo cáo thí nghiệm thông tin vô tuyến

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ả:

Hình 1.2 Gaussian distribution

5
Báo cáo thí nghiệm thông tin vô tuyến

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.
Báo cáo thí nghiệm thông tin vô tuyến

BÀ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);

7
Báo cáo thí nghiệm thông tin vô tuyến

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));
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ả:

0
The bit error probability of QPSK over a fading channel
10

-1
10

-2
Pb

10

-3
10

-4
10
0 5 10 15 20 25
SNR in dB

Bài 2.2
clear;
b=1/2;
SNR_db=0:5:30;
Báo cáo thí nghiệm thông tin vô tuyến

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ả:

0
BER of slow flat Rayleigh fading channel
10
Theory
Simulation

-1
10
Pb

-2
10

-3
10

-4
10
0 5 10 15 20 25 30
Yb

SNR (dB) 0 5 10 15 20
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

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

9
Báo cáo thí nghiệm thông tin vô tuyến

BÀ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));
for l=1:L(a)
h = g(t);
y = S.*h;
Báo cáo thí nghiệm thông tin vô tuyến

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ả:

11
Báo cáo thí nghiệm thông tin vô tuyến

0.35
BER(1)
Pb(1)
0.3
Pb(2)

0.25

0.2

BER/Pb
0.15

0.1

0.05

0
-10 -5 0 5 10 15 20 25 30
SNR dB

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ả:

0.35
BER(1)
BER(2)
0.3
BER(3)
BER(4)
Pb(1)
0.25
Pb(2)
Pb(3)
Pb(4)
0.2
BER/P b

0.15

0.1

0.05

0
-10 -5 0 5 10 15 20 25 30
SNR dB

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
Báo cáo thí nghiệm thông tin vô tuyến

Q3.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.

13
Báo cáo thí nghiệm thông tin vô tuyến

BÀ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));
Báo cáo thí nghiệm thông tin vô tuyến

% ------------------------
% bit to symbol coder
% ------------------------
symbols=bi2de(source_data);
% ------------------------
% 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

15
Báo cáo thí nghiệm thông tin vô tuyến

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
data_symbol=[];
for 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);
Báo cáo thí nghiệm thông tin vô tuyến

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');

0
10
SER

-1
10

-2
10
0 5 10 15 20 25
SNR in dB

Hình 3.4 SER of an OFDM system over a multi-path channel

Bài 4.2
G=0;

17
Báo cáo thí nghiệm thông tin vô tuyến

0
10
G=0
G=9
SNR in dB

-1
10

-2
10
0 5 10 15 20 25
SER

Hình 3.5 Comparision of SER of an OFDM system with and without guard interval

SNR (dB) 0 5 10 15 20 25

0.724687
SER(G=0) 0.78734375 0.6109375 0.48171875 0.33875 0.2484375
5

0.710937
SER(G=9) 0.7865625 0.58734375 0.426875 0.21140625 0.06078125
5

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

You might also like