Bài 1: Mô tả và khảo sát PSD của các kỹ thuật điều chế trên Matlab Bài làm: Câu 1: Phân tích biểu thức tín hiệu băng tần cơ sở và tín hiệu thông giải trong miền thời gian dạng sóng tín h
Trang 1Thuật toán tìm kiếm theo chiều rộng (BFS) Nhóm 03
1
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA VIỄN THÔNG
BÀI TIỂU LUẬN
KỸ THUẬT THÔNG TIN VÔ TUYẾN
Họ và tên sinh viên : NGÔ ĐĂNG DƯƠNG
Trang 2Bài 1: Mô tả và khảo sát PSD của các kỹ thuật điều chế trên Matlab
Bài làm:
Câu 1: Phân tích biểu thức tín hiệu băng tần cơ sở và tín hiệu thông giải trong miền thời gian (dạng sóng tín hiệu và hàm tự tương quan) của các sơ đồ điều chế/giải điều chế BPSK, QPSK, MSK, MPSK; M-QAM…
❖ BPSK
• Biểu thức tín hiệu băng tần:
si(t) = cos(2π f t c +(i- 1) π +Ɵ )
si(t) - là giá trị của tín hiệu sóng mang tại thời điểm t
Eb - là năng lượng trung bình của mỗi bit dữ liệu
Tb - là khoảng thời gian giữa các bit liên tiếp
fc - là tần số của băng tần cơ sở
i - là chỉ số của bit dữ liệu
θ - là pha ban đầu của sóng mang
• Biểu thức tín hiệu băng thông dải: y(t) = cos(2π 𝑓𝑐𝑡+(i- 1) π +Ɵ ) +x(t) x(t) – là nhiễu tạp xuất hiện trong quá trình truyền tải, được mô hình hóa bằng quá trình ngẫu nhiên bằng phân bố Gauss
fc - là tần số của sóng mang
E T
Trang 3
❖ QPSK
• Biểu thức tín hiệu băng tần:
Trong QPSK, ta có 4 pha (0°, 90°, 180°, 270°) và 2 mức biểu diễn (0 và 1) Vì vậy, để truyền tín hiệu thông tin, ta cần gửi 2 bit thông tin cho mỗi ký hiệu Khi đó, biểu diễn của tín hiệu QPSK sẽ được cho bởi:
Nếu bit là 00: ta sử dụng pha 𝜋
Trang 4Với: 𝑠
𝑖(𝑡) = √2𝐸
𝑇 cos [2𝜋𝑓𝑐𝑡 + (2𝑖 − 1)𝜋
4+ Ɵ] với 0≤ t ≤T
E - năng lượng mỗi bit
T - thời gian truyền của mỗi bit
fc - là tần số của băng tần cơ sở
i - số hiệu ký hiệu QPSK (i = 1, 2, 3, ) θ - pha của tín hiệu, thường được chọn ngẫu nhiên trong khoảng từ 0 đến 2π
Biểu thức tín hiệu băng thông dải: y(t)=𝑠𝑖(𝑡) + 𝑥(𝑡)
2
𝑇𝑏 cos(2𝜋𝑓𝑐𝑡)]
Trang 5Eb: là năng lượng trung bình của mỗi bit dữ liệu
Tb: là khoảng thời gian giữa các bit liên tiếp
fc: là tần số của băng tần cơ sở
d(t): Tín hiệu dữ liệu được mã hóa trong dạng d(t) với giá trị +1 hoặc -1 - Biểu thức tín hiệu băng thông dải: y(t)=s(t)++x(t)
x(t): tín hiệu nhiễu pha tạp ngẫu nhiên, mô tả bằng phân bố Gauss
Eb - là năng lượng trung bình của mỗi bit dữ liệu
Tb - là khoảng thời gian giữa các bit liên tiếp
fc - là tần số của băng tần cơ sở
M - số điểm bản tin
θ - là pha ban đầu của sóng mang
• Biểu thức tín hiệu thông dải: y(t)=𝑠𝑖(𝑡)+ 𝑥(𝑡)
Trang 6• Biểu thức tín hiệu băng tần:
fc - là tần số của băng tần cơ sở
Cặp số nguyên (ai, bi) định vị các điểm bản tin trong không gian tín hiệu
𝑇 = 𝑙𝑜𝑔2𝑀 x 𝑇𝑏
E0 - là năng lượng của tín hiệu có biên độ thấp nhất
• Biểu thức tín hiệu băng thông dải: y(t)= x(t)+ 𝑠𝑖(𝑡)
x(t) – tín hiệu nhiễu pha tạp ngẫu nhiên, mô tả bằng phân bố Gauss
Câu 2: Phân tích biểu thức PSD của tín hiệu điều chế BPSK, QPSK, MSK, …
Trang 7Câu 3: Thực hiện khảo sát PSD của tín hiệu điều chế BPSK, QPSK, MSK, MPSK; M-QAM….trên Matlab:
+ Phân tích các tham số đầu vào chương trình Matlab + Xác định đoạn chương trình Matlab thực hiện hàm PSD
+ Nhập các giá trị đầu vào phân tích và giải thích kết quả
+ Sử dụng hàm stem() và hàm display() để biểu diễn các kết quả:
Cụ thể như hiển thị kết quả tại: f = fc+1/Tb; f = ±1,5 /Tb; f = ±2 /Tb… giải thích các kết quả
Tham số đầu vào
Xác định đoạn chương trình Matlab thực hiện hàm PSD
Trang 9Num_2 = (cos(2*pi*(f+fc)*Tb));
Dum_2 = (16*(Tb^2)*(f+fc).^2)-1;
Tính mật độ công suất của tín hiệu băng thông dải của MSK
PSD_MSK_2 =
(SF/2)*(((Num./Dum).^2) +
((Num_2./Dum_2).^2));
Trang 10• Biểu diễn kết quả PSD của băng tần cơ sở và băng thông dải: figure(1) subplot(2,1,1)
stem(f, PSD_BaseBand, 'r', 'LineWidth',2); hold on;
plot(f, PSD_BaseBand, 'r', 'LineWidth',2); grid on;
xlabel('Tan so[Hz]');
ylabel('PSD_B_a_s_e_B_a_n_d');
title(['Mat do pho cong suat PSD cua bang tan co so voi toc do R_b
=',num2str(Rb),'b/s']); subplot(2,1,2)
stem(f, PSD_PassBand, 'g', 'LineWidth',2); hold on;
plot(f, PSD_PassBand, 'g', 'LineWidth',2); grid on;
Trang 12Tín hiệu băng gốc và băng thông dải BPSK:
title([ 'Mat do pho cong suat PSD cua tin hieu BPSK bang thong dai
voi toc do R_b =' ,num2str(Rb), 'b/s' ]);
Trang 13
Tín hiệu băng gốc và băng thông dải QPSK:
Trang 15Tín hiệu băng gốc và băng thông dải 8-PSK
Trang 17plot(f, PSD_MSK,'r','LineWidth',2); grid
Trang 18
Bài 2: Mô phỏng BER hệ thống BPSK trong môi trường kênh AWGN
Câu 1: Phân tích mô hình mô phỏng
Trang 21
Mô hình truyền thông BPSK sử dụng hai pha của tín hiệu mang để truyền thông tin, tương ứng với hai trạng thái 0 và 1 Trong môi trường kênh AWGN, tín hiệu truyền đi sẽ bị nhiễu bởi nhiễu Gaussian trắng, dẫn đến các bit nhận được có thể sai lệch so với bit ban đầu truyền
đi
Để phân tích BER của hệ thống BPSK trong môi trường AWGN, ta sử dụng mô hình mô phỏng gồm các bước sau:
Sinh ra các bit ngẫu nhiên để truyền đi
Sử dụng phương pháp mã hóa BPSK để biến đổi các bit thành tín hiệu BPSK tương ứng
Tính toán độ nhiễu của kênh AWGN và áp dụng nhiễu vào tín hiệu BPSK truyền đi
Sử dụng bộ thu để nhận tín hiệu BPSK với độ nhạy và hiệu suất nhận tín hiệu xác định
Sử dụng phương pháp giải mã BPSK để giải mã tín hiệu nhận được thành các bit tương ứng
So sánh các bit nhận được với các bit ban đầu truyền đi để xác định số lượng bit bị lỗi
Tính toán BER bằng cách chia số lượng bit bị lỗi cho tổng số bit truyền đi
Câu 2: Phân tích các tham số đầu vào của chương trình mô phỏng và ảnh hưởng của chúng lên kết quả mô phỏng
SNRindB = 0:1:12;
SNR = 10.^(SNRindB/10);
Công suất nhiễu trên tạp âm theo dB và theo đơn vị tuyến tính (SNR càng tang BER càng nhỏ)
thì BER càng tang) sgma = Eb./sqrt(2*SNR); Với (sgma.^2) là độ lệch chuẩn của tín hiệu
Trang 22- Xác định các đoạn chương trình Matlab thực hiện các khối chức năng cho mô hình
mô phỏng: Ví dụ như xác định đoạn chương trình thực hiện tạo chuỗi nhị phân và quá trình tạo chuỗi nhị phân; Xác định đoạn chương trình thực hiện quyết định; Đoạn chương trình thực hiện so sánh đếm lỗi; Đoạn chương trình thực hiện tạo biến ngẫu nhiên phân bố Gausian…
- Ghi và phân tích các tín hiệu vào ra của mô hình mô phỏng theo chương trình Matlab: ví dụ như xác định đầu vào ra kênh AWGN
ü Biễu diễn kết quả mô phỏng tại SNR = 0 dB; 2 dB… bằng đồ thị và hàm display: Giải thích, phân tích kết quả mô phỏng ü Biễu diễn kết tính toán BER bởi hàm Q()tại SNR = 0 dB; 2 dB… bằng đồ thị và hàm display: Giải thích, phân tích kết quả tính toán
Code:
Khởi tạo biến và tham số:
SNRindB = 0:1:12 ; % mảng SNR (tỷ lệ tín hiệu / nhiễu)
ở dB
SNR = 10.^(SNRindB/10); % SNR ở đơn vị tỷ lệ tín
hiệu / nhiễu Eb = 1; % năng lượng tín hiệu bậc hai
sgma = Eb./sqrt(2*SNR); % độ lệch chuẩn của tín hiệu
nhiễu NumBits = 10^5; % số bit truyền
Tính xác suất lỗi lý thuyết cho hai loại mã truyền thông BPSK:
theo_Orthogonal_err_prb = 0.5 *erfc(sqrt(SNR/2)); % xác suất lỗi trực giao
theo_Antipodal_err_prb = 0.5 *erfc(sqrt(SNR)); % xác suất lỗi đối cực Khởi tạo thanh tiến trình, tạo các chuỗi bit ngẫu nhiên mã hóa BPSK, thêm kênh nhiễu, giải mã và đếm số bit lỗi:
Trang 23h = waitbar(0,'Please wait '); % hiển thị thanh tiến trình tic %
bắt đầu đo thời gian thực thi
for j=1:length(SNR)
tStart = tic; % bắt đầu đo thời gian tính BER cho mức SNR hiện tại
waitbar(j/length(SNRindB)); % cập nhật thanh tiến trình
dsource_1 = 0.5*(sign(rand(1,NumBits)-0.5)+1); % tạo nguồn dữ liệu ngẫu nhiên
numoferr = 0; % khởi tạo số lỗi bit for
i=1:NumBits % duyệt qua từng bit temp
= rand; % tạo một số ngẫu nhiên if
(temp<0.5),
dsource(i) =1; % gán giá trị bit '1'
X = sgma(j)*randn(1); % tạo nhiễu trắng Gaussian
Y = -sqrt(Eb) + X; % tín hiệu nhận được else
dsource(i) = 0; % gán giá trị bit '0'
X = sgma(j)*randn(1); % tạo nhiễu trắng Gaussian
Y = sqrt(Eb) + X; % tín hiệu nhận được
Trang 24set(h1,'Name','Sim_FWC_02_02_BER_BPSK_AWGN'); subplot(121)
G = semilogy(SNRindB,smld_err_prb,'vr',SNRindB,theo_Antipodal_err_prb,'-ob');
set(G,'LineWidth',[1.5]);
xlabel('SNR [dB]','FontName','Times New Roman','color','b','FontSize',12); ylabel('Xac suat loi Pe','FontName','Times New Roman','color','b','FontSize',18); title(['Mo phong BER he thong BPSK trong kenh AWGN; N_s_i_m_b_i_t = ',num2str(NumBits),' bits ',
],'FontName','Times New Roman','color','r','FontSize',14);
LT = legend(' Mo phong ',' Tinh toan');
set(LT,'FontName','Times New Roman','FontSize',16); AX=gca;
set(AX,'FontSize',14);
axis([min(SNRindB) max(SNRindB), 1e-12 0.2]); grid on
text(2,7e-5,'Mo hinh hoa va Mo phong',
'FontName','Times New Roman','Color','b','FontSize',14);
text(0.5,min(theo_Antipodal_err_prb),'Tinh chinh xac cua ket qua Mo phong, xac nhan va phe chuan mo hinh',
'FontName','Times New Roman','Color','r','FontSize',9.9)
'FontName','Times New Roman','color','b','FontSize',15);
LT = legend(' truc giao',' doi cuc'); set(LT,'FontName','Times New
Roman','FontSize',16,'fontweight','normal','fontAngle','normal');
AX = gca;
set(AX,'FontSize',14);
axis([min(SNRindB) max(SNRindB), 1e-12 0.2]); grid on;
text(2,7e-5, 'Tinh toan so sanh hieu nang' , 'FontName' , 'Times New
Roman' , 'Color' , 'b' , 'FontSize' ,14);
Trang 25
Biễu diễn kết quả mô phỏng tại SNR = 0 dB; 2 dB… bằng đồ thị và hàm display: Giải thích, phân tích kết quả mô phỏng:
theo_Orthogonal_err_prb = 0.5 *erfc(sqrt(SNR/2)); % xác suất lỗi trực giao
theo_Antipodal_err_prb = 0.5 *erfc(sqrt(SNR)); % xác suất lỗi đối cực
Bằng
theo_Orthogonal_err_prb = qfunc(sqrt(SNR)); % xác suất lỗi trực giao
theo_Antipodal_err_prb = qfunc(sqrt(2*SNR)); % xác suất lỗi đối cực
Trang 26
SNR càng tăng thì BER càng giảm, hàm qfunc hay erfc đều có kết quả tương tự nhau
Bài 3: Mô phỏng BER hệ thống BPSK sử dụng mã xoắn trong môi trường kênh AWGN
Câu 1: Trình bày tóm tắt quá trình mã hóa xoán trên cơ sở biểu đồ lưới
Trang 28Câu 2: Trình bày tóm tắt quá trình mã xoắn trên cơ sở giải thuật giải mã ML và Viterbi quyết định cứng (phân tích công thức giải mã ML và giải thuật giải mã Viterbi)
Bài 4: Mô phỏng kênh và hệ thống MIMO
Câu 1: Phân tích mô hình kênh và mô hình hệ thống SVD MIMO trong môi trường truyền sóng pha đinh Rayleigh: Mô hình hóa kênh MIMO trên cơ sở SVD; Mô phỏng kênh SVD MIMO trong môi trường truyền sóng pha đinh Rayleigh
Mô hình kênh (channel model) là một mô hình toán học được sử dụng để mô tả cách tín hiệu truyền qua một kênh truyền nào đó Kênh truyền có thể là không dây hoặc dây, và có thể bao gồm nhiều yếu tố như đường truyền, nhiễu, suy giảm và đa đường Mô hình kênh được sử dụng để đưa ra một mô tả chính xác về tín hiệu đầu ra được truyền qua kênh Các
mô hình kênh thường sử dụng các thông số như tần số, thời gian, độ rộng băng thông và mức độ nhiễu để đưa ra một mô tả chi tiết về tín hiệu đầu ra
• Mô hình thu tín hiệu trong môi trường kênh vô tuyến thay đổi theo thời gian:
Trang 29y(t) = s(t) * h(τ,t) + x(t)
• Mô hình thu tín hiệu trong kênh vô tuyến không thay đổi theo thời gian:
y(t) = si(t) * hc(t) + x(t)
Mô hình thu tín hiệu trong kênh nhiễu AWGN:
Trang 30Mô hình hệ thống MIMO tổng quát:
Mô hình hệ thống SVD MIMO tối ưu
D là ma tr ậ n chéo hóa v ớ i các ph ầ n t ử λ i1/ = sqrt (λ 2 i )
𝐘 = 𝐇 𝐱 + 𝛈
Trang 31Khi khoảng cách giữa các anten > λ/2 và môi trường nhiều tán xạ => coi H có các hàng và các cột
độc lập với nhau => Phân chia giá trị đơn (SVD: Singular Value Descomposition):
H = UDV H
✓ (.) H là chuyển vị Hermitian (ma trận chuyển vị liên hợp phức)
✓ U, V là các ma trận nhất phân (unitary) kích thước Nr x Nr và Nt x Nt
• UU H = I Nr , VV H = I Nt
• Các cột của ma trận U là vector riêng của HH H
• Các cột của na trận V là vector riêng của H H H
✓ D là ma trận kích thước Nr x Nr gồm NA = min{Nr, Nr} giá trị đơn không âm
λ01/2,…, λi1/2,…, λNA – 11/2 trên đường chéo chính của D, λi1/2 (i=0,2,…,NA-1) là các
giá trị riêng của ma trận HH H
✓ Xác định các giá trị riêng cảu HH H
Mô hình hóa kênh MIMO trên cơ sở SVD:
• Xác định ma trận kênh H có kích thước Nt x Nr với Nt là số ăng-ten truyền và
Nr là số ăngten thu
• Thực hiện phân rã giá trị suy biến (SVD) trên ma trận kênh H Kết quả là ma trận phân rã H =
UDVH, trong đó U và V là các ma trận trực giao, và D là ma trận đường chéo
có các giá trị suy giảm của kênh
• Chia tín hiệu đầu vào thành Nt phần, mỗi phần tương ứng với một ăng-ten truyền
• Thực hiện truyền tín hiệu qua kênh với mỗi phần tương ứng với một ăng-ten truyền và một ăng-ten thu
• Tại bộ thu, thực hiện phân rã giá trị suy biến trên tín hiệu thu được Kết quả
là ma trận phân rã Y = USVH, trong đó U và V là các ma trận trực giao, và S
là ma trận đường chéo có các giá trị suy giảm của tín hiệu thu
• Kết hợp các tín hiệu thu được trong ma trận Y để khôi phục lại tín hiệu ban đầu
Trang 32Mô phỏng kênh SVD MIMO trong môi trường truyền sóng pha đinh Rayleigh
• Xác định các tham số cho môi trường truyền sóng pha đinh Rayleigh, bao
gồm các tham số như tần số của sóng truyền, khoảng cách giữa các anten, vị trí của các anten, hệ số tán xạ Rayleigh, và nhiễu
• Tạo một kênh truyền SVD MIMO với các anten truyền và nhận Để tạo kênh
này, ta có thể sử dụng hàm "svd" trong Matlab để phân tích ma trận kênh
• Tạo các tín hiệu điều chế tương ứng cho các anten truyền Đối với hệ thống
SVD MIMO, các tín hiệu điều chế này sẽ được chia thành các phần dựa trên phân tích SVD
• Truyền các tín hiệu điều chế qua kênh truyền SVD MIMO
• Tạo các bộ lọc tương ứng cho các anten nhận dựa trên phân tích SVD
• Nhận các tín hiệu từ kênh truyền và áp dụng bộ lọc tương ứng cho các anten
nhận để tái tạo tín hiệu ban đầu
• So sánh tín hiệu tái tạo với tín hiệu ban đầu để đánh giá hiệu suất của hệ
thống
Việc mô phỏng kênh SVD MIMO trong môi trường truyền sóng pha đinh
Rayleigh cung cấp cho chúng ta cái nhìn chi tiết về hiệu suất của hệ thống trong
điều kiện mô phỏng, từ đó giúp chúng ta tối ưu hóa thiết kế và cải thiện hiệu suất
của hệ thống thực tế
Câu 2:Thực hiện mô phỏng trên Matlab theo trình tự xử lý các bước cho mô
hình kênh và hệ thống SVD MIMO tối ưu (Đọc mã chương trình mô phỏng:
NVD_D12VT_SVD_MIMO Channel)
Khai báo các tham số cho hệ thống MIMO
N_Tx = 8; % Số lượng anten phát N_Rx = 4; % Số lượng anten thu fD = 10; % Tần số Doppler
N_symbol = 100; % Số lượng ký hiệu T_sim = 0.1; % Thời gian mô phỏng
Tạo ma trận kênh H_Gausian có phân phối Gaussian và lấy mẫu đầu tiên là H_Gau
H_Gausian = zeros(N_Rx,N_Tx,N_symbol); for k = 1:N_symbol
H_Gausian(:,:,k) = (randn(N_Rx,N_Tx) + 1i*randn(N_Rx,N_Tx))/sqrt(2); end H_Gau = zeros(N_Rx,N_Tx);
H_Gau = H_Gausian(:,:,1);
Trang 33
Tạo ma trận kênh H_Rayleigh có phổ tần số Rayleigh qua thời gian và lấy mẫu đầu tiên là H_Ray
H_Rayleigh = zeros(N_Rx,N_Tx,N_symbol); for
m = 1:N_Rx for n = 1:N_Tx H_Rayleigh(m,n,:) = (FWC_Rayleigh_Channel(T_sim,N_symbol,fD)
+ 1i*FWC_Rayleigh_Channel(T_sim,N_symbol,fD))/sqrt(2); end
end H_Ray = H_Rayleigh(:,:,1);
Tính toán phân tích giá trị suy giảm (SVD) của ma trận kênh Rayleigh được lưu trữ trong biến H_Ray Hiển thị kích thước và giá trị của các ma trận truyền (V), ma trận thu (U) và giá trị riêng (D)
disp(' Ma tran kenh H');
H_Ray disp(' Kich thuoc H'); disp(size(H_Ray))
disp(' Phan tich SVD cua H: [U, D, V] = svd(H)');
[U_Gau, D_Gau, V_Gau] = svd(H_Gau);
[U_Ray, D_Ray, V_Ray] = svd(H_Ray);
disp(' Ma tran tien ma hoa V ');
disp(' Kich thuoc size(V)');
disp(size(V_Ray));
disp(' Ma tran hau ma hoa U ');
U_Ray disp(' Kich thuoc size(U)');
disp(size(U_Ray));
disp(' Ma tran duong cheo D ');
D_Ray disp(' Kich thuoc size(D)'); disp(size(D_Ray));