QAMqua kờnh fading Rayleigh

Một phần của tài liệu Nghiên cứu, thiết kế, chế tạo bộ biến đổi năng lượng mặt trời thành năng lượng điện phục vụ chiếu sáng gia đình (Trang 81)

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

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

trong Communications Toolbox của Matlab. Vớ dụ

sk = qammod (bk, M) (3.49) 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à,

k k k g y

yˆ = ˆ * . Để 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)

Bõy giờ ta tiến hành mụ phỏng hệ thống 4-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ư 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) (adsbygoogle = window.adsbygoogle || []).push({});

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ế

trỡnh là ‘sosanhber’.

Hỡnh 3.16 Giao diện chương trỡnh ‘sosanhber’

Hỡnh 3.17 Mụ phỏng BER của điều chế BPSK

Hỡnh 3.19 Mụ phỏng BER của điều chế 4-QAM

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

Hỡnh 3.21 Mụ phỏng BER điều chế của cỏc kỹ thuật điều chế 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. (adsbygoogle = window.adsbygoogle || []).push({});

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; (adsbygoogle = window.adsbygoogle || []).push({});

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; (adsbygoogle = window.adsbygoogle || []).push({});

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') (adsbygoogle = window.adsbygoogle || []).push({});

ylabel ('Bit Error Rate')

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

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 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; (adsbygoogle = window.adsbygoogle || []).push({});

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

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

==========================================================

clear all 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 (adsbygoogle = window.adsbygoogle || []).push({});

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

% 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-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)

% 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,Lyt huyet_BER,'kp'); axis ( [0 30 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 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 (adsbygoogle = window.adsbygoogle || []).push({});

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;

ber2= (N-sum (sq==sq_))/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,Lyt huyet_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')

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

Một phần của tài liệu Nghiên cứu, thiết kế, chế tạo bộ biến đổi năng lượng mặt trời thành năng lượng điện phục vụ chiếu sáng gia đình (Trang 81)