4.2.1 Sơđồ mô phỏng của tín hiệu điều chế BPSK truyền trên các kênh song song.
Hình 4.1: Sơ đồ mô phỏng
4.2.2 Kết quả mô phỏng tín hiệu điều chế BPSK truyền trên 2 kênh con song song
Hình 4.2: Tốc độ lỗi bit với chế độ không mã, mã giao hoán và mã lặp lại với n=2.
Nhận xét: Kết quả mô phỏng cho thấy mã giao hoán và mã lặp lại đều đạt
độ phân tập như nhau. Nhưng với mã giao hoán thì đạt được hệ số mã tốt hơn (sử dụng tối ưu bậc tự do). Do đó mã giao hoán là tối ưu cho trao đổi giữa phân tập và hợp kênh trong kênh MIMO hơn.
4.2.3 Kết quả mô phỏng tín hiệu điều chế BPSK truyền trên 3 kênh con song song
Hình 4.3: Tốc độ lỗi bit với chếđộ mã giao hoán và mã lặp lại với n=3. Nhận xét: với số đường truyền độc lập tăng lên n=3. Tốc độ lỗi giảm đáng kể. Tuy nhiên với đường truyền sử dụng với mã giao hoán vẫn cho lỗi giảm mạnh hơn.
4.2.4 Kết quả mô phỏng tín hiệu điều chế BPSK truyền trên 4 kênh con song song
Nhận xét: Khi tăng số đường truyền độc lập, tức là độ lợi phân tập tăng lên dù sử dụng bất kỳ loại mã nào thì tỷ lệ lỗi cũng giảm đi nhanh chóng, mã giao hoán sử dụng được ưu thế về vềđộ lợi bậc tự do nên tỷ lệ lỗi giảm nhanh hơn so với mã lặp lại và điều này hoàn toàn phù hợp với tính toán lý thuyết.
4.2.5 Kết quả mô phỏng tín hiệu điều chế BPSK truyền tương ứng trên 2,3, 4 kênh con song song
Hình 4.5: Tốc độ lỗi bit của mã giao hoán với n=2,3,4
Nhận xét: đánh giá lỗi giảm khi tăng số đường truyền độc lập khi sử dụng mã giao hoán trên tất cả các đường truyền. Khi tăng số đường truyền độc lập thì hệ số phân tập của kênh tăng lên, làm cho lỗi giảm nhanh chóng. Kết quả mô phỏng hoàn toàn phù hợp với tính toán lý thuyết.
4.3 Nhận xét kết quả mô phỏng
Kết luận: Qua các kết quả mô phỏng ở trên cho thấy mã giao hoán cho kết quả tốt hơn so với các loại mã khác, đạt được trao đổi tối ưu phân tập và hợp kênh, tức là đạt được độ tin cậy cao ở bất kỳ tốc độ nào so với các mã khác.
KẾT LUẬN
Luận văn đã đạt được những kết quả như sau:
Trình bày một cách hệ thống các khái niệm cơ bản về kênh truyền vô tuyến, các thách thức gặp phải khi truyền tín hiệu qua kênh vô tuyến .
Trình bày sự trao đổi giữa phân tập và hợp kênh trong một số sơ đồ cơ
bản, từđó đưa ra được kết luận thế nào gọi là trao đổi tối ưu giữa phân tập và hợp kênh.
Trình bày mã giao hoán là tối ưu cho sự trao đổi giữa phân tập và hợp kênh trong kênh song song. Và từ đó chuyển đổi các kênh khác MISO, MIMO về kênh song song với các phép biến đổi tương ứng.
Mô phỏng kết quả: truyền BPSK qua kênh song song với 2 loại mã lặp lại và giao hoán. Kết quả giống như lý thuyết đã trình bày, mã giao hoán đạt
được trao đổi tối ưu giữa phân tập và hợp kênh.
Ứng dụng xem xét đường hướng xuống của một hệ thống di động tế
bào, khi mà ở trạm cơ sở là nhiều anten truyền. Giả sử chúng ta muốn quảng bá cùng 1 thông tin đến tất cả người dùng trong một tế bào của đường xuống. Chúng ta sẽ sử dụng sơ đồ truyền để không phụ thuộc vào số anten nhận (số
người dùng), mỗi người dùng có thể có 1 anten nhận khác nhau, phụ thuộc vào mô hình, và kiểu của thiết bị di động. Mã vạn năng MIMO cung cấp 1 giải pháp quan trọng cho vấn đề này. Giả sử chúng ta quảng bá thông tin chung ở một tốc độ R sử dụng mã giao hoán thỏa mãn (3.48) cho một kênh MIMO x . Vì vậy mã này là xấp xỉ vạn năng cho mọi kênh MIMO
x , độ lợi phân tập (độ tin cậy) ở mỗi người dùng đạt được cao nhất ở tốc
độ R.
Sau khi thực hiện luận văn, tôi đã nắm được những kiến thức cơ bản về
lý thuyết của phương pháp thiết kế mã giao hoán trong hệ MIMO. Tuy nhiên luận văn chỉ dừng lại ở nghiên cứu về mặt lý thuyết, và mô phỏng mà chưa nghiên cứu cấu trúc phần cứng để thực hiện được kĩ thuật mã giao hoán theo lí thuyết. Chưa tính đến thời gian thực hiện giải mã và thuật toán giải mã ở
TÀI LIỆU THAM KHẢO.
Tài liệu tiếng việt
[1] Trần Xuân Nam, Mô phỏng các hệ thống thống tin vô tuyến sử dụng Matlab, Bộ
môn thông tin, Khoa Vô tuyến điện tử, Đại học Lê Quý Đôn Hà Nội.
[2] Trịnh Anh Vũ, Thông tin di động , Nhà xuất bản Đại học Quốc Gia Hà Nội.
Tài liệu tiếng Anh.
[3] David Tse,Pramod Viswanath, Fundamentals of Wireless Communications, Cambridge,2005.
[4] Ernst Bonek, The MIMO radio channel, Technische Universität Wien, Vienna, Austria
[5] IEEE Trans.Inform , Space-Time Codes for High Data Rates Wireless Communications: Performance Criterion and Code Construction. Theory, vol.44, pp.744-765,1998.
[6] Joanchim Hagenauer, The Turbo Principle in Wireless Communications, 2004 [7] Jussi Salmi, MIMO III: Diversity – Multiplexing Tradeoff and Universal Space –
Time codes, Smarad centre of Excellence, Helsinki University of Technology, April 11,2006
[8] Kitty Kar Yan Wong, The Soft – Output M–Algorithm And Its Applicatons, August 2006
[9] Lizhong Zheng, Diversity-Multiplexing Tradeoff: A Comprehensive View of Multiple Antenna Systems, University of California at Berkeley,2002
[10] Mikko Vehkaper, Diversity - Multiplexing Tradeoff In MIMO Channels, department of Electronics and Telecommunications, Norwegian University of Science and Technology, October 25, 2007
PHỤ LỤC. MÃ NGUỒN CHƯƠNG TRÌNH MÔ PHỎNG
1. Mô phỏng không mã, mã giao hoán và mã lặp lại khi đi qua 2 kênh con song
song
clear all; clc;
N = 10^5; % s? bít mô ph?ng v?i 1 gá tr? En/N0 bitstrm1 = []; %Khai báo vecto
bitstrm2 = [];
for i = 1:N
bitstrm1 = [bitstrm1 (-1+2*round(rand(1,1)))]; %T?o d? li?u ng?u nhiên 1,-1 bitstrm2 = [bitstrm2 (-1+2*round(rand(1,1)))]; %creating random data for
QUADRATURE component
end
Data1 =[bitstrm1;bitstrm1]; % T?o vecto mã l?p l?i
Data2 =[bitstrm1;2*bitstrm1]; % T?o vecto mã l?p l?i có thành ph?n 2 cách xa nhau h?n
Data3 =[bitstrm1;bitstrm2];
%(T??ng tr?ng cho giao hoán cách xa nhau h?n) Eb_No_dB = [0:2:20]; % Gi?i giá tr? Eb/N0
for i = 1:length(Eb_No_dB)
sig = sqrt(1/10^(Eb_No_dB(i)/10)); % noise variance
n = sig*(randn(2,N) + 1i*randn(2,N)); % Additive white gaussian noise prototype
h = randn(2,N) + 1i*randn(2,N); % 2 Rayleigh channel ??c l?p cho 2 thành ph?n mã l?p l?i ,
y1 = h.*Data1 + n; % bit-streams corrupted by Rayleigh channel & AWGN ??i v?i mã l?p l?i
y2 = h.*Data2 + n; % bit-streams corrupted by Rayleigh channel & AWGN ??i v?i mã l?p l?i (có giao hoán)
y3 = h.*Data3 + n; % bit-streams corrupted by Rayleigh channel & AWGN ??i v?i tin hieu khong mã
y_rcv1 = y1./h; % equalization of received data by channel information at the receiver
y_rcv2 = y2./h; % y_rcv3 = y3./h;
R1=sum(y_rcv1); % l?y t?ng 2 thành ph?n l?p l?i
R2=sum(y_rcv2); % l?y t?ng 2 thành ph?n l?p l?i (có giao hoán) R3=sum(y_rcv3); % l?y t?ng 2 thành ph?n khong ma
Data_rcv1 = Refresh(real(R1)); % Regenerating the received bits by threshold comparison
Data_rcv2 = Refresh(real(R2)); % khôi ph?c l?i Data_rcv3 = Refresh(real(R3)); % khôi ph?c l?i
Err1(i) = sum(sum(round(bitstrm1) ~= round(Data_rcv1))); % computing the bit error in each simulation
Err2(i) = sum(sum(round(bitstrm1) ~= round(Data_rcv2))); Err3(i) = sum(sum(round(bitstrm1) ~= round(Data_rcv3)));
end
simBer1 = Err1/(N); % average BER on total no. of bits simulated simBer2 = Err2/(N); simBer3 = Err3/(N); %semilogy(Eb_No_dB,simBer1,'m--*'); semilogy(Eb_No_dB,simBer3,'g--*'); hold on semilogy(Eb_No_dB,simBer1,'m--*'); %semilogy(Eb_No_dB,simBer2,'b-'); hold on semilogy(Eb_No_dB,simBer2,'b-'); %semilogy(Eb_No_dB,simBer3,'g--*'); axis([0 20 10^-5 0.5])
legend('QPSK khong ma n=2','QPSK ma lap lai n=2','QPSK ma giao hoan n=2'); xlabel('Eb/No, dB');
ylabel('Bit Error Rate');
title('BER cho dieu che QPSK modulation trong kenh Rayleigh');
2. Mô phỏng mã lặp lại và mã giao hoán khi đi qua 3 kênh con song song
N = 10^5; % s? bít mô ph?ng v?i 1 gá tr? En/N0 bitstrm1 = []; %Khai báo vecto
bitstrm2 = [];
for i = 1:N
bitstrm1 = [bitstrm1 (-1+2*round(rand(1,1)))]; %T?o d? li?u ng?u nhiên 1,-1 bitstrm2 = [bitstrm2 (-1+2*round(rand(1,1)))]; %creating random data for
QUADRATURE component
end
Data1 =[bitstrm1;bitstrm1;bitstrm1]; % T?o vecto mã l?p l?i
Data2 =[bitstrm1;2*bitstrm1;2*bitstrm1]; % T?o vecto mã l?p l?i có thành ph?n 2 cách xa nhau h?n
%(T??ng tr?ng cho giao hoán cách xa nhau h?n)
Eb_No_dB = [0:2:20]; % Gi?i giá tr? Eb/N0
for i = 1:length(Eb_No_dB)
sig = sqrt(1/10^(Eb_No_dB(i)/10)); % noise variance
n = sig*(randn(3,N) + 1i*randn(3,N)); % Additive white gaussian noise prototype h = randn(3,N) + 1i*randn(3,N); % 2 Rayleigh channel ??c l?p cho 2 thành ph?n
mã l?p l?i ,
y1 = h.*Data1 + n; % bit-streams corrupted by Rayleigh channel & AWGN ??i v?i mã l?p l?i
y2 = h.*Data2 + n; % bit-streams corrupted by Rayleigh channel & AWGN ??i v?i mã l?p l?i (có giao hoán)
y_rcv1 = y1./h; % equalization of received data by channel information at the receiver
y_rcv2 = y2./h; %
R1=sum(y_rcv1); % l?y t?ng 2 thành ph?n l?p l?i
R2=sum(y_rcv2); % l?y t?ng 2 thành ph?n l?p l?i (có giao hoán)
Data_rcv1 = Refresh(real(R1)); % Regenerating the received bits by threshold comparison
Data_rcv2 = Refresh(real(R2)); % khôi ph?c l?i
Err1(i) = sum(sum(round(bitstrm1) ~= round(Data_rcv1))); % computing the bit error in each simulation
Err2(i) = sum(sum(round(bitstrm1) ~= round(Data_rcv2)));
end
simBer1 = Err1/(N); % average BER on total no. of bits simulated simBer2 = Err2/(N); semilogy(Eb_No_dB,simBer1,'m--*'); hold on semilogy(Eb_No_dB,simBer2,'b-'); hold on axis([0 20 10^-5 0.5])
legend('QPSK ma lap lai n=3','QPSK ma giao hoan n=3'); xlabel('Eb/No, dB');
ylabel('Bit Error Rate');
title('BER cho dieu che trong kenh Rayleigh voi N=3');
3. Mô phỏng mã lặp lại và mã giao hoán khi đi qua 4 kênh con song song
clear all; clc;
N = 10^5; % s? bít mô ph?ng v?i 1 gá tr? En/N0 bitstrm1 = []; %Khai báo vecto
bitstrm2 = [];
for i = 1:N
bitstrm1 = [bitstrm1 (-1+2*round(rand(1,1)))]; %T?o d? li?u ng?u nhiên 1,-1 bitstrm2 = [bitstrm2 (-1+2*round(rand(1,1)))]; %creating random data for
QUADRATURE component
end
Data1 =[bitstrm1;bitstrm1;bitstrm1;bitstrm1]; % T?o vecto mã l?p l?i
Data2 =[bitstrm1;2*bitstrm1;2*bitstrm1;2*bitstrm1]; % T?o vecto mã l?p l?i có thành ph?n 2 cách xa nhau h?n
%Data3 =[bitstrm1;bitstrm2];
%(T??ng tr?ng cho giao hoán cách xa nhau h?n) Eb_No_dB = [0:2:20]; % Gi?i giá tr? Eb/N0
for i = 1:length(Eb_No_dB)
sig = sqrt(1/10^(Eb_No_dB(i)/10)); % noise variance
n = sig*(randn(4,N) + 1i*randn(4,N)); % Additive white gaussian noise prototype h = randn(4,N) + 1i*randn(4,N); % 2 Rayleigh channel ??c l?p cho 2 thành ph?n mã
y1 = h.*Data1 + n; % bit-streams corrupted by Rayleigh channel & AWGN ??i v?i mã l?p l?i
y2 = h.*Data2 + n; % bit-streams corrupted by Rayleigh channel & AWGN ??i v?i mã l?p l?i (có giao hoán)
y_rcv1 = y1./h; % equalization of received data by channel information at the receiver
y_rcv2 = y2./h; %
R1=sum(y_rcv1); % l?y t?ng 2 thành ph?n l?p l?i
R2=sum(y_rcv2); % l?y t?ng 2 thành ph?n l?p l?i (có giao hoán)
Data_rcv1 = Refresh(real(R1)); % Regenerating the received bits by threshold comparison
Data_rcv2 = Refresh(real(R2)); % khôi ph?c l?i
Err1(i) = sum(sum(round(bitstrm1) ~= round(Data_rcv1))); % computing the bit error in each simulation
Err2(i) = sum(sum(round(bitstrm1) ~= round(Data_rcv2)));
end
simBer1 = Err1/(N); % average BER on total no. of bits simulated simBer2 = Err2/(N); %semilogy(Eb_No_dB,simBer2,'b-'); semilogy(Eb_No_dB,simBer1,'m--*'); hold on semilogy(Eb_No_dB,simBer2,'b-'); %semilogy(Eb_No_dB,simBer1,'m--*'); hold on axis([0 20 10^-5 0.5])
legend('QPSK ma lap lai n=4','QPSK ma giao hoan n=4');
%legend('QPSK over AWGN channel- Theoretical','QPSK over Rayleigh channel- Theoretical', 'QPSK over Rayleigh channel- Simulation');
xlabel('Eb/No, dB'); ylabel('Bit Error Rate');
title('BER cho dieu che trong kenh Rayleigh voi N=4');
4. Mô phỏng so sánh mã giao hoán khi đi qua lần lượt 2,3, 4 kênh con song song
N = 10^5; % s? bít mô ph?ng v?i 1 gá tr? En/N0 bitstrm1 = []; %Khai báo vecto
bitstrm2 = [];
for i = 1:N
bitstrm1 = [bitstrm1 (-1+2*round(rand(1,1)))]; %T?o d? li?u ng?u nhiên 1,-1 bitstrm2 = [bitstrm2 (-1+2*round(rand(1,1)))]; %creating random data for
QUADRATURE component
end
Data1 =[bitstrm1;2*bitstrm1];
Data2 =[bitstrm1;2*bitstrm1;2*bitstrm1];
Data3 =[bitstrm1;2*bitstrm1;2*bitstrm1;2*bitstrm1]; % T?o vecto mã l?p l?i có thành ph?n 2 cách xa nhau h?n
%(T??ng tr?ng cho giao hoán cách xa nhau h?n)
Eb_No_dB = [0:2:20]; % Gi?i giá tr? Eb/N0
for i = 1:length(Eb_No_dB)
sig = sqrt(1/10^(Eb_No_dB(i)/10)); % noise variance
n1 = sig*(randn(2,N) + 1i*randn(2,N)); % Additive white gaussian noise prototype n2 = sig*(randn(3,N) + 1i*randn(3,N)); % Additive white gaussian noise prototype n3 = sig*(randn(4,N) + 1i*randn(4,N)); % Additive white gaussian noise prototype h1 = randn(2,N) + 1i*randn(2,N);
h2 = randn(3,N) + 1i*randn(3,N);
h3 = randn(4,N) + 1i*randn(4,N); % 2 Rayleigh channel ??c l?p cho 2 thành ph?n mã l?p l?i ,
y1 = h1.*Data1 + n1; % bit-streams corrupted by Rayleigh channel & AWGN ??i v?i mã l?p l?i
y2 = h2.*Data2 + n2; % bit-streams corrupted by Rayleigh channel & AWGN ??i v?i mã l?p l?i (có giao hoán)
y3 = h3.*Data3 + n3; % bit-streams corrupted by Rayleigh channel & AWGN ??i v?i tin hieu khong mã
y_rcv1 = y1./h1; % equalization of received data by channel information at the receiver
y_rcv2 = y2./h2; % y_rcv3 = y3./h3;
R1=sum(y_rcv1); % l?y t?ng 2 thành ph?n l?p l?i
R2=sum(y_rcv2); % l?y t?ng 2 thành ph?n l?p l?i (có giao hoán) R3=sum(y_rcv3); % l?y t?ng 2 thành ph?n khong ma
Data_rcv1 = Refresh(real(R1)); % Regenerating the received bits by threshold comparison
Data_rcv2 = Refresh(real(R2)); % khôi ph?c l?i Data_rcv3 = Refresh(real(R3)); % khôi ph?c l?i
Err1(i) = sum(sum(round(bitstrm1) ~= round(Data_rcv1))); % computing the bit error in each simulation
Err2(i) = sum(sum(round(bitstrm1) ~= round(Data_rcv2))); Err3(i) = sum(sum(round(bitstrm1) ~= round(Data_rcv3)));
end
simBer1 = Err1/(N); % average BER on total no. of bits simulated simBer2 = Err2/(N); simBer3 = Err3/(N); semilogy(Eb_No_dB,simBer1,'m--*'); hold on semilogy(Eb_No_dB,simBer2,'b-'); hold on semilogy(Eb_No_dB,simBer3,'g--*'); axis([0 20 10^-5 0.5])
legend('QPSK ma giao hoan n=2','QPSK ma giao hoan n=3','QPSK ma giao hoan n=4');
xlabel('Eb/No, dB'); ylabel('Bit Error Rate');
title('BER cho dieu che QPSK modulation trong kenh Rayleigh');
function Rcv = Refresh(Received) %This function is used to clean the corrupted
pulses & regenerate fresh pulses
sz=length(Received); %determines the length of bit stream of received symbols y=[];
for i=1:sz,
if Received(i)>=0
y(i) = 1; %if value of an element is >=0, then +ve pulse is generated else
y(i)= -1; %if value of an element is <0, then -ve pulse is generated end
end
Rcv=y;