Nhận xét kết quả mô phỏng

Một phần của tài liệu mã giao hoán cho trao đổi tối ưu trong hệ mimo (Trang 74)

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 liu tiếng vit

[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 liu 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 Tradeo: 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;

Một phần của tài liệu mã giao hoán cho trao đổi tối ưu trong hệ mimo (Trang 74)

Tải bản đầy đủ (PDF)

(84 trang)