2. Ngày hoàn thành đồ ỏn: / /20
3.6.2. QAMqua kờnh fading Rayleigh
Hỡnh 3.13 Sơ đồ mụ phỏng truyền dẫn MQAM qua kờnh fading sử dụng tỏch tớn hiệu đồng bộ (coherent detection)
Trường hợp điều chế biờn độ cầu phương (QAM: Quadrature Amplitude Modulation). Để tận dụng cụng cụ Matlab chỳng ta sẽ tận dụng hàm điều chế cú sẵn qammod.m trong Matlab. Thuật toỏn mụ phỏng QAM qua kờnh fading Rayleigh được trỡnh bày dưới đõy [7].
Tạo dữ liệu và điều chế: Tương tự như trường hợp điều chế, dữ liệu phỏt cú thể được tạo ra từ một nguồn tạo ra cỏc số nguyờn ngẫu nhiờn nằm trong giải từ 0 đến M - 1, trong đú M là bậc điều chế. Nguồn số nguyờn này được tạo ra bằng hàm cú sẵn randint. m. Cụ thể
bk = randint (l, N, [0, M -1]) (3.48)
Để điều chế, chỳng ta cú thể sử dụng trực tiếp hàm điều chế QAM cú sẵn trong Communications Toolbox của Matlab. Vớ dụ
sk = qammod (bk, M) (3.49) Cỏc bớt lỗi và Tớnh BER Điều chế Thu dữ liệu AWGN Tạo Fading * k g k g k sˆ * k g k k k k g s n y = + k yˆ sˆk Tỏch tớn hiệu đồng bộ Mỏy phỏt dữ liệu
Tạo kờnh fading: kờnh fading gk như sau
gk=1/sqrt (2)* (randn (1,N)+j*randn (1,N)) (3.50) Tạo tạp õm AWGN nk: tạp õm nk được tạo ra như sau
nk = sigma * (randn (l, N) + j * randn (l, N)) (3.51) Tỏch tớn hiệu đồng bộ (coherent detection): Tớn hiệu thu yk như sau:
yk=sk.*gk+nk (3.52) Để quay pha tớn hiệu, bị dịch đi do fading, về vị trớ ban đầu, tức là, yˆk =gˆk*yk. Để thuận tiện cho mụ phỏng chỳng ta cú thể coi gˆk được ước lượng một cỏch chớnh xỏc, tức là, gˆk =gk, và sử dụng ngay gkcho tỏch tớn hiệu coherent. Mặc dự bằng cỏch này ảnh hưởng quay pha do fading đó được khắc phục, nhưng gúc pha tớn hiệu thu vẫn khụng trựng với gúc pha của tớn hiệu phỏt do cũn chịu ảnh hưởng của tạp õm tỏch đồng bộ bằng lệnh Matlab sau:
ykHat=conj (gk).*yk./abs (gk).^2 (3.53) Sử dụng phương phỏp tỏch tớn hiệu hợp lẽ tối đa (MLD), bộ tỏch tớn hiệu thực hiện quyết định
bkHat=qamdemod (ykHat,M) (3.54) Tớnh toỏn tỉ số lỗi dấu SER và tỉ số lỗi bit BER: Tỷ số SER cú thể tớnh được tớnh bởi
SER (k)=noSymErr/N (3.55) với
noSymErr=sum ((bkHat-bk)~=0) (3.56) Để tớnh được tỉ số BER chỳng ta cú thể sử dụng hàm biterr của Matlab như sau:
[noBitErr,BER (k)]=biterr (bkHat,bk,m) (3.57) với
m = log2M (3.58)
a. 4-QAM qua kờnh Fading Rayleigh
Theo lý thuyết hệ thống 4-QAM khi truyền qua kờnh Fading Rayleigh, cú xỏc suất lỗi bớt được tớnh theo cụng thức [7]:
+ − = − 1 1 2 1 0 0 4 N E N E Q P b b Fading QAM (3.59)
Rayleigh với cỏc thụng số với N = 50000 mẫu tại cỏc điểm bớt lỗi là 0,2...30 và so sỏnh với kết quả lý thuyết.
Khi chọn cỏc thụng số như 4-QAM và Fading và nhấn vào Mễ PHỎNG của giao diện chương trỡnh ‘chuongtrinh’ Kết quả là:
Hỡnh 3.14 Mụ phỏng BER của điều chế 4-QAM qua kờnh Fading
Nhận xột:
- Kết quả mụ phỏng hoàn toàn phự hợp với tớnh toỏn lý thuyết.
- Khi tăng Eb/No thỡ BER giảm (tức là tỷ lệ lỗi bớt giảm). Trong thụng tin vụ tuyến số để BER từ 10-3 trở xuống thỡ trong điều chế BPSK qua kờnh Fading muốn đạt được BER như vậy phải tăng cụng suất phỏt từ 24dB trở lờn.
b. 16-QAM qua kờnh Fading Rayleigh
Theo lý thuyết hệ thống 16-QAM khi truyền qua kờnh Fading Rayleigh, cú xỏc suất lỗi bớt được tớnh theo cụng thức [7]:
+ − = − 0 16 2 5 1 1 1 8 3 N E P b Fading QAM (3.60) Bõy giờ ta tiến hành mụ phỏng hệ thống 16-QAM khi truyền qua kờnh Fading
Rayleigh với cỏc thụng số với N = 50000 mẫu tại cỏc điểm bớt lỗi là 0,2...30 và so sỏnh với kết quả lý thuyết.
Khi chọn cỏc thụng số như 16-QAM và Fading và nhấn vào Mễ PHỎNG của giao diện chương trỡnh ‘chuongtrinh’ Kết quả là:
Hỡnh 3.15 Mụ phỏng BER của điều chế 16-QAM qua kờnh Fading
Nhận xột:
- Kết quả mụ phỏng hoàn toàn phự hợp với tớnh toỏn lý thuyết
- Khi tăng Eb/No thỡ BER giảm (tức là tỷ lệ lỗi bớt giảm). Trong thụng tin vụ tuyến số để BER từ 10-3 trở xuống thỡ trong điều chế 16-QAM qua kờnh Fading muốn đạt được BER như vậy phải tăng cụng suất phỏt từ 26dB trở lờn
3.6.3. Mụ phỏng so sỏnh giữa AWGN với Fading Rayleigh của cỏc kỹ thuật điều chế
Giao diện chương trỡnh khi click vào SO SÁNH BER và được đặt tờn chương trỡnh là ‘sosanhber’.
Hỡnh 3.16 Giao diện chương trỡnh ‘sosanhber’
a. Truyền qua kờnh AWGN và Fading
Hỡnh 3.18 Mụ phỏng BER của điều chế QPSK
Hỡnh 3.20 Mụ phỏng BER của điều chế 16-QAM
Nhận xột: Tại vị trớ 10dB (cựng cụng suất phỏt) thỡ điều chế qua kờnh Fading
và qua kờnh AWGN thỡ tỷ lệ lỗi bớt khỏc nhau, BER của điều chế truyền qua kờnh AWGN bộ hơn nhiều so với BER truyền qua kờnh Fading. Muốn đạt đươc tỷ lệ lỗi bớt bằng với điều chế truyền qua kờnh AWGN thỡ khi truyền qua kờnh Fading phải tăng cụng suất phỏt
b. Truyền qua kờnh AWGN
Nhận xột:
- Kĩ thuật điều chế BPSK, QPSK, 4-QAM cú tỷ lệ lỗi bớt như nhau.
- Tại vị trớ 8dB thỡ tỷ lệ lỗi bớt của 16-QAM lớn hơn kỹ thuật điều chế BPSK, QPSK, 4-QAM. Muốn đạt được tỷ lệ lỗi bớt như kĩ thuật điều chế BPSK, QPSK, 4- QAM thỡ 16-QAM phải tăng cụng suất phỏt lờn 12dB.
c. Truyền qua kờnh Fading
Hỡnh 3.22 Mụ phỏng BER điều chế của cỏc kỹ thuật điều chế qua kờnh Fading
Nhận xột: Khi truyền qua Fading cỏc kỹ thuật điều chế BPSK, QPSK, 4-QAM
thỡ tỷ lệ lỗi bớt gần như nhau. Riờng điều chế 16-QAM qua kờnh Fading, cựng một cụng suất phỏt thỡ tỷ lệ lỗi bớt lớn hơn.
3.7. Kết luận chương
Kết quả mụ phỏng đỏnh giỏ chất lượng hệ thống trong trường hợp kờnh chịu tỏc động của tạp õm nhiệt (AWGN) và fading Rayleigh hoàn toàn phự hợp với lý thuyết tớnh toỏn. Phần mềm Matlab là một trong những cụng cụ mụ phỏng giỳp cho sinh viờn và giảng viờn mụ hỡnh húa hệ thống vụ tuyến trong khi trường học vẫn chưa trang bị đầy đủ được cỏc hệ thống thực phức tạp dựng cho thớ nghiệm.
KẾT LUẬN
Đề tài “Đỏnh giỏ chất lượng hệ thống thụng tin vụ tuyến sử dụng phần mềm Matlab” đó thực sự đem lại cho em nhiều hiểu biết về hệ thống thụng tin vụ tuyến; cỏc kỹ thuật xử lý tớn hiệu, đặc biệt là kỹ thuật điều chế; cỏc tỏc động của kờnh truyền vụ tuyến đối với hệ thống thụng tin như: Hiện tượng Doppler, fading, AWGN, ISI, mộo.
Từ những kiến thức thu nhận được, em đó mụ phỏng thành cụng cỏc tỏc động của kờnh truyền vụ tuyến như AWGN, fading lờn cỏc hệ thống thụng tin số khỏc nhau: M-PSK, M-QAM để so sỏnh và đỏnh giỏ chất lượng của cỏc hệ thống đú.
Kết quả mụ phỏng hoàn toàn phự hợp với lý thuyết, khẳng định Matlab là cụng cụ mạnh hỗ trợ việc tớnh toỏn, nú cú thể thay thế hệ thống thực, để mụ phỏng rồi mới triển khai trờn hệ thống thực.
Tuy nhiờn, do thời gian cũng như khả năng tỡm hiểu cú hạn nờn bản đồ ỏn này cũng khụng trỏnh khỏi thiếu sút, vỡ vậy em mong rằng sẽ nhận dược sự đúng gúp của cỏc thầy cụ và cỏc bạn để đề tài này được hoàn thiện hơn.
Một lần nữa, em xin bày tỏ lũng biết ơn tới cỏc thầy cụ giỏo trong khoa Điện Tử Viễn Thụng đó tạo điều kiện cho em hoàn thành nội dung đồ ỏn. Đặc biệt, em xin chõn thành cảm ơn thầy giỏo ThS. Phạm Mạnh Toàn đó hướng dẫn em thực hiện đồ ỏn này.
Sinh viờn Lờ Nhõn Toàn
TÀI LIỆU THAM KHẢO
[1] H.Harada and R. Prasad, Simulation and softwave Radio for Mobile Com munications, Artech House, 2002
[2] Nguyễn Quốc Bỡnh, Cỏc hệ thống thụng tin hiện nay trỡnh bày thụng qua sử dụng Matlab, Nhà xuất bản Quõn đội nhõn dõn, Hà Nội 2003.
[3] Nguyễn Quốc Bỡnh, Kỹ thuật truyền dẫn số, Nhà xuất bản Quõn đội nhõn dõn, Hà Nội 2000.
[4] Nguyễn Quốc Bỡnh, Mụ phỏng cỏc hệ thống thụng tin số, Nhà xuất bản Quõn đội nhõn dõn, Hà Nội 2002.
[5] Nguyễn Văn Đức, Cỏc btập Matlab về thụng tin vụ tuyến, Nhà xuất bản Khoa học và Kỹ thuật, 2006.
[6] Nguyễn Văn Đức, Lý thuyết về kờnh vụ tuyến, Nhà xuất bản Khoa học và Kỹ thuật, 2006.
[7] Trần Xuõn Nam, Mụ phỏng cỏc hệ thống thụng tin vụ tuyến sử dụng Matlab, Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội 2007.
[8] http://www.dsplog.com/, truy nhập cuối cựng ngày 10/12/2012 [9] http://www.mathworks.com/, truy nhập cuối cựng ngày 10/12/2012
PHẦN PHỤ LỤC BPSKquaAWGN.m clear; EbNodB=0:1:10; EbNo=10.^ (EbNodB./10); N=5*10^5;
% Tao tin hieu BPSK {+1,-1} bk=rand (1,N)>0.5;
sk=1-2*bk;
% Tinh toan nang luong bit tin hieu Eb Eb=norm (sk)^2/N;
% Mat do pho AWGN No=Eb./EbNo;
% Vong lap tinh toan BER theo Eb/No for k=1:length (EbNo)
% Tao AWGN
nk=sqrt (No (k)./2).* (randn (1,N)+j*randn (1,N)); % Tin hieu thu
yk=sk+nk; % Tach tin hieu shat=sign (real (yk)); error=sk-shat;
noError=length (find (error~=0)); BER (k)=noError/N;
end
% BER ly thuyet cua truyen dan BPSK qua kenh AWGN Lythuyet_BER=1/2*erfc (sqrt (EbNo));
% Ve do thi close all figure
hold on
semilogy (EbNodB,BER,'rp','LineWidth',2); axis ( [0 10 10^-6 1])
legend ('Ly thuyet-BPSK','Dieu che-BPSK') xlabel ('Eb/No, dB')
ylabel ('Bit Error Rate')
title ('BER dieu che BPSK qua kenh AWGN') grid ========================================================== QPSKquaAWGN.m clear all; N=5*10^5; EbNodB=0:1:10; EbNo=10.^ (EbNodB/10); for k=1:length (EbNodB)
si=2* (round (rand (1,N))-0.5);
sq=2* (round (rand (1,N))-0.5); sk=si+j*sq;
nk= (1/sqrt (2*EbNo (k)))* (randn (1,N)+j*randn (1,N)); yk=sk+nk;
si_=sign (real (yk)); sq_=sign (imag (yk)); ber1= (N-sum (si==si_))/N; ber2= (N-sum (sq==sq_))/N; ber (k)=mean ( [ber1 ber2]); end
%BER ly thuyet cua truen dan QPSK qua kenh AWGN Lythuyet_BER = 1/2*erfc (sqrt (EbNo*2)*sin (pi/4)) % Ve do thi
close all figure
semilogy (EbNodB,ber,'bp-','LineWidth',2); hold on
semilogy (EbNodB,Lythuyet_BER,'rp','LineWidth',2); axis ( [0 10 10^-6 1])
grid on
legend ('Dieu che-QPSK', 'Ly thuyet-QPSK'); xlabel ('Es/No, dB')
title ('BER dieu che QPSK qua kenh AWGN')
==========================================================
bonQAMquaAWGN.m
clear all M=4;
m=log2 (M); % Number of bits/symbol N=5*10^5; % So symbol gui di
EbNodB=0:1:10;
EbNo=10.^ (EbNodB./10);
% Generate random integers ranging from 0:M-1
b=randint (1,N, [0 M-1]); % Random intergers from 0:M-1 sk=qammod (b,M);
Es=norm (sk).^2/length (sk); % Noise variance of AWGN sigma=sqrt (Es./ (2*m.*EbNo)); % Iteration for estimating BER for k=1:length (EbNo)
% Generate AWGN with variance sigma^2 n=sigma (k)* (randn (1,N)+j*randn (1,N)); % Rx signal
yk=sk+n;
bkHat=qamdemod (yk,M); % Error calculation
SER (k)=noSymErr/N; % Symbol Error rate [noBitErr,BER (k)]=biterr (bkHat,b,m); end
% BER Ly thuyet cua truyen dan 4QAM qua kenh AWGN Lythuyet_BER=1/2*erfc (sqrt (EbNo)); % Ve do thi close all figure semilogy (EbNodB,BER,'bp-','LineWidth',2) hold on semilogy (EbNodB,Lythuyet_BER,'rp','LineWidth',2); axis ( [0 10 10^-6 1]) xlabel ('Eb/No') ylabel ('BER')
legend ('Dieu che-4QAM','Ly thuyet-4QAM') title ('BER dieu che 4QAM qua kenh AWGN') grid
==========================================================
muoisauQAMquaAWGN.m
clear all M=16;
m=log2 (M); % Number of bits/symbol N=5*10^5; % So symbol gui di
EbNodB=0:2:20;
EbNo=10.^ (EbNodB./10);
% Generate random integers ranging from 0:M-1
b=randint (1,N, [0 M-1]); % Random intergers from 0:M-1 sk=qammod (b,M);
Es=norm (sk).^2/length (sk); % Noise variance of AWGN sigma=sqrt (Es./ (2*m.*EbNo));
% Iteration for estimating BER for k=1:length (EbNo)
% Generate AWGN with variance sigma^2 n=sigma (k)* (randn (1,N)+j*randn (1,N)); % Rx signal
yk=sk+n;
bkHat=qamdemod (yk,M); % Error calculation
noSymErr=sum ((bkHat-b)~=0); % Number of symbol errors SER (k)=noSymErr/N; % Symbol Error rate
[noBitErr,BER (k)]=biterr (bkHat,b,m);% end
% BER Ly thuyet cua truyen dan 16QAM qua kenh AWGN
Lythuyet_BER=3/8*erfc (sqrt (2/5*EbNo))-9/64* (erfc (2/5*EbNo)).^2; % Ve do thi close all figure semilogy (EbNodB,BER,'bp-','LineWidth',2) hold on semilogy (EbNodB,Lythuyet_BER,'rp','LineWidth',2); axis ( [0 20 10^-6 1]) xlabel ('Eb/No') ylabel ('BER')
legend ('Dieu che-16QAM','Ly thuyet-16QAM') title ('BER dieu che 16QAM qua kenh AWGN') grid
==========================================================
BPSKquaFading.m
clear
N = 5*10^5 % number of bits or symbols EbNodB = 0:2:30; % multiple Eb/N0 values
EbN0 = 10.^ (EbNodB/10); % Transmitter
bk = rand (1,N)>0.5; % generating 0,1 with equal probability s = 2*bk-1; % BPSK modulation 0 -> -1; 1 -> 0
for k = 1:length (EbNodB)
n = 1/sqrt (2)* [randn (1,N) + j*randn (1,N)]; % white gaussian noise, 0dB variance h = 1/sqrt (2)* [randn (1,N) + j*randn (1,N)]; % Rayleigh channel
% Channel and noise Noise addition y = h.*s + 10^ (-EbNodB (k)/20)*n; % equalization
yHat = y./h;
% receiver - hard decision decoding ipHat = real (yHat)>0;
% counting the errors
nErr (k) = size (find ( [bk- ipHat]),2); Dieuche_BER = nErr/N;
end
% BER Ly thuyet cua truyen dan BPSK qua kenh fading Lythuyet_BER = 0.5.* (1-sqrt (EbN0./ (EbN0+1))); % Ve do thi close all figure semilogy (EbNodB,Lythuyet_BER,'bp-','LineWidth',2); hold on; semilogy (EbNodB,Dieuche_BER,'rp','LineWidth',2); axis ( [0 30 10^-6 1])
legend ('Ly thuyet-BPSK','Dieu che-BPSK') xlabel ('Eb/No, dB')
ylabel ('Bit Error Rate')
title ('BER dieu che BPSK qua kenh Fading Rayleigh') grid
==========================================================
QPSKquaFading.m
clear all M=4;
% Dinh nghia tham so
m=log2 (M); % Number of bits/symbol N=5*10^5; % So symbol gui di
Es=1; % Symbol energy EbNodB=0:2:30;
EbNo=10.^ (EbNodB./10); % Tao tin hieu QPSK
bk=randint (1,N, [0 M-1]); % Random intergers from 0:M-1 sk=sqrt (Es)*exp (j* (2*pi/M*bk+pi/M));
% Tao Rayleigh fading
gk=1/sqrt (2)* (randn (1,N)+j*randn (1,N)); % Mat do pho AWGN
sigma=sqrt (Es./ (2*m.*EbNo)); % Vong lap tinh toan BER theo Eb/No for k=1:length (EbNo)
% Tao AWGN voi variance sigma^2
nk=sigma (k)* (randn (1,N)+j*randn (1,N)); % Tin hieu thu
yk=sk.*gk+nk; % Coherent detection ykHat=conj (gk).*yk; % Decision
thetak=angle (ykHat);
thetak=mod (thetak+2*pi,2*pi); % Convert from [0,+/-pi] --> [0,2*pi) bkHat=floor (M/ (2*pi)*thetak);
% Error calculation
SER (k)=noSymErr/N; % Symbol Error rate [noBitErr,BER (k)]=biterr (bkHat,bk,m); end
% BER ly thuyet cua truyen dan QPSK qua kenh Rayleigh fading Lythuyet_BER=1/2* (1-1./sqrt (1+1./EbNo)); % Plot BER semilogy (EbNodB,BER,'bp-','LineWidth',2) hold on semilogy (EbNodB,Lythuyet_BER,'rp','LineWidth',2); axis ( [0 30 10^-6 1]) xlabel ('Eb/No') ylabel ('BER')
legend ('Dieu che-QPSK','Ly thuyet-QPSK')
title ('BER dieu che QPSK qua kenh Fadinh Rayleigh') grid
==========================================================
bonQAMquaFading.m
clear all M=4;
m=log2 (M); % Number of bits/symbol N=5*10^5; % So symbol gui di
EbNodB=0:2:30;
EbNo=10.^ (EbNodB./10);
% Generate random integers ranging from 0:M-1
bk=randint (1,N, [0 M-1]); % Random intergers from 0:M-1 sk=qammod (bk,M);
Es=norm (sk).^2/length (sk);
% Generate faded signal according to channel type gk=1/sqrt (2)* (randn (1,N)+j*randn (1,N));
% Noise variance of AWGN sigma=sqrt (Es./ (2*m.*EbNo));
% Iteration for estimating BER for k=1:length (EbNo)
% Generate AWGN with variance sigma^2 nk=sigma (k)* (randn (1,N)+j*randn (1,N)); % Rx signal
yk=sk.*gk+nk;
ykHat=conj (gk).*yk./abs (gk).^2; % Coherent detection % Decision
bkHat=qamdemod (ykHat,M); % Error calculation
noSymErr=sum ((bkHat-bk)~=0); % Number of symbol errors SER (k)=noSymErr/N; % Symbol Error rate
[noBitErr,BER (k)]=biterr (bkHat,bk,m); end
% BER Ly thuyet cua truyen dan 4QAM qua kenh Fadinh Rayleigh Lythuyet_BER=1/2* (1-1./sqrt (1+1./EbNo)); % Ve do thi close all figure semilogy (EbNodB,BER,'bp-','LineWidth',2) hold on semilogy (EbNodB,Lythuyet_BER,'rp','LineWidth',2); axis ( [0 30 10^-6 1]) xlabel ('Eb/No') ylabel ('BER')
legend ('Dieu che-4QAM','Ly thuyet-4QAM')
title ('BER dieu che 4QAM qua kenh Fadinh Rayleigh') grid
==========================================================
muoisauQAMquaFading.m
M=16;
m=log2 (M); % Number of bits/symbol N=5*10^5; % So symbol gui di
EbNodB=0:2:30;
EbNo=10.^ (EbNodB./10);
% Generate random integers ranging from 0:M-1
b=randint (1,N, [0 M-1]); % Random intergers from 0:M-1 sk=qammod (b,M);
Es=norm (sk).^2/length (sk);
% Generate faded signal according to channel type g=1/sqrt (2)* (randn (1,N)+j*randn (1,N));
s=sk.*g; % Faded signal % Noise variance of AWGN sigma=sqrt (Es./ (2*m.*EbNo)); % Iteration for estimating BER for k=1:length (EbNo)
% Generate AWGN with variance sigma^2 n=sigma (k)* (randn (1,N)+j*randn (1,N)); % Rx signal
yk=s+n;
ykHat=conj (g).*yk./abs (g).^2; % Coherent detection % Decision
bkHat=qamdemod (ykHat,M); % Error calculation
noSymErr=sum ((bkHat-b)~=0); % Number of symbol errors SER (k)=noSymErr/N; % Symbol Error rate
[noBitErr,BER (k)]=biterr (bkHat,b,m);% BER w/o Gray encoding end
% BER Ly thuyet cua truyen dan 16QAM qua kenh Fadinh Rayleigh Lythuyet_BER=3/8* (1-1./sqrt (1+5./ (2*EbNo)));
close all figure semilogy (EbNodB,BER,'bp-','LineWidth',2) hold on semilogy (EbNodB,Lythuyet_BER,'rp','LineWidth',2); axis ( [0 30 10^-6 1]) xlabel ('Eb/No') ylabel ('BER')
legend ('Dieu che-16QAM','Ly thuyet-16QAM')
title ('BER dieu che 16QAM qua kenh Fadinh Rayleigh') grid ========================================================== BPSK.m clear; EbNodB=0:2:30; EbNo=10.^ (EbNodB./10); N=5*10^5;
% Tao tin hieu BPSK {+1,-1} bk=rand (1,N)>0.5;
%awgn sk=1-2*bk; %fading s = 2*bk-1;
% Tinh toan nang luong bit tin hieu Eb Eb=norm (sk)^2/N;
% Mat do pho AWGN No=Eb./EbNo;
% Vong lap tinh toan BER theo Eb/No for k=1:length (EbNo)
nk=sqrt (No (k)./2).* (randn (1,N)+j*randn (1,N)); % Tao AWGN
% Tin hieu thu yk=sk+nk; % Tach tin hieu shat=sign (real (yk)); error=sk-shat;
noError=length (find (error~=0)); BER (k)=noError/N;
%tao fading
g = 1/sqrt (2)* [randn (1,N) + j*randn (1,N)]; % Rayleigh channel % Channel and noise Noise addition
y = s.*g + nk; % equalization yHat = y./g;
% receiver - hard decision decoding ipHat = real (yHat)>0;
% counting the errors
nErr (k) = size (find ( [bk- ipHat]),2); ber = nErr/N;
end
% BER ly thuyet cua truyen dan BPSK qua kenh AWGN Lythuyet_BER=1/2*erfc (sqrt (EbNo));
%BER ly thuyet cua truyen dan BPSK qua kenh Fading Lt_BER = 0.5.* (1-sqrt (EbNo./ (EbNo+1)));
% Ve do thi close all figure close all semilogy(EbNodB,ber,'bp-',EbNodB,BER,'rp-',EbNodB,Lt_BER,'mp',EbNodB,Lythu yet_BER,'kp'); axis ( [0 30 10^-6 1])
xlabel ('Es/No, dB') ylabel ('BER')
title ('BER dieu che BPSK') grid ========================================================== QPSK.m clear all; close all; N=5*10^5; EbNodB=0:2:20; EbNo=10.^ (EbNodB/10); %tao tin hieu cho fading M=4; m=log2 (M); % Number of bits/symbol Es=1; % Symbol energy b=randint (1,N, [0 M-1]); % Random intergers from 0:M-1 skk=sqrt (Es)*exp (j* (2*pi/M*b+pi/M)); % Tao Rayleigh g=1/sqrt (2)* (randn (1,N)+j*randn (1,N)); for n=1:length (EbNodB) % tinh ber qua awgn %tao tin hieu cho fading si=2* (round (rand (1,N))-0.5);
sq=2* (round (rand (1,N))-0.5);
sk=si+j*sq;
nk= (1/sqrt (2*EbNo (n)))* (randn (1,N)+j*randn (1,N)); yk=sk+nk;
si_=sign (real (yk));
sq_=sign (imag (yk));
ber1= (N-sum (si==si_))/N;
ber (n)=mean ( [ber1 ber2]); %tinh ber qua fading
g=1/sqrt (2)* (randn (1,N)+j*randn (1,N)); ykk=skk.*g+nk; % Coherent detection ykHat=conj (g).*ykk; % Decision thetak=angle (ykHat);
thetak=mod (thetak+2*pi,2*pi); % Convert from [0,+/-pi] --> [0,2*pi) bkHat=floor (M/ (2*pi)*thetak);
% Error calculation
noSymErr=sum ((bkHat-b)~=0); % Number of symbol errors SER (n)=noSymErr/N; % Symbol Error rate
[noBitErr,BER (n)]=biterr (bkHat,b,m); end
% BER ly thuyet cua truyen dan QPSK qua kenh AWGN Lythuyet_BER = 1/2*erfc (sqrt (EbNo*2)*sin (pi/4)) % BER ly thuyet cua truyen dan QPSK qua kenh Fading Lt_BER=1/2* (1-1./sqrt (1+1./EbNo)); % ve do thi close all figure close all semilogy(EbNodB,BER,'bp-',EbNodB,ber,'rp-',EbNodB,Lt_BER,'mp',EbNodB,Lythu yet_BER,'kp'); axis ( [0 20 10^-6 1])
legend ('Sim qua fading', 'Sim qua awgn','Theory qua fading','Theory qua awgn'); xlabel ('Es/No, dB')
ylabel ('BER')
title ('BER dieu che QPSK') grid
==========================================================
bonQAM.m
clear all M=16;
% Define parameters
m=log2 (M); % Number of bits/symbol N=5*10^5; % So symbol gui di
EbNodB=0:2:30;
EbNo=10.^ (EbNodB./10);
% Generate random integers ranging from 0:M-1
bk=randint (1,N, [0 M-1]); % Random intergers from 0:M-1 sk=qammod (bk,M);
Es=norm (sk).^2/length (sk); % Noise variance of AWGN sigma=sqrt (Es./ (2*m.*EbNo)); % Iteration for estimating BER for k=1:length (EbNo)
% Generate AWGN with variance sigma^2 nk=sigma (k)* (randn (1,N)+j*randn (1,N)); %tao awgn
% Rx signal yk=sk+nk;
bkHat=qamdemod (yk,M); % Error calculation
noSymErr=sum ((bkHat-bk)~=0); % Number of symbol errors SER (k)=noSymErr/N; % Symbol Error rate