Tải bản đầy đủ (.pdf) (15 trang)

BÁO cáo bài tập lớn môn mô phỏng hệ thống truyền thông

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (681.73 KB, 15 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG


BÁO CÁO BÀI TẬP LỚN
Môn: Mô phỏng hệ thống truyền thông

SV thực hiện:
MSSV
:
Lớp
:

Lê Văn Mạnh
B12DCVT122
D12VT3

Hà Nội, 2016
1


Mục lục

1 Nhiệm vụ 1: Mơ phỏng qua trình PCM cho tín hiệu

tương tự
1.1 Mơ tả nhiệm vụ
‒ Mơ phỏng q trình PCM cho tín hiệu tương tự s(t):

với MSV: B12DCVT122
s(t)=1*cos(2*pi*100*t)+2*cos(2*pi*200*t+pi/2)+3*cos(2*pi*200*t+pi/4)



Thực hiện chuyển đổi tín hiệu tương tự thành tín hiệu nhị phân và ngược lại với
tiêu chuẩn nén và giải nén luật A
2


1.2 Mô tả hệ thống mô phỏng và các tham số

Hình 1.1: Hệ thống mã hóa và giải mã PCM sử dụng trong mô phỏng
Mô tả hệ thống và các bước tiến hành mơ phỏng:
Lấy mẫu:

Lấy mẫu là q trình biến đổi tín hiệu tương tự thành một dãy xung rời rạc tuần
hồn, biên độ xung bằng biên độ tín hiệu tại thời điểm lấy mẫu. Dãy xung này
còn được gọi là tín hiệu điều chế biên độ xung PAM. Tín hiệu tương tự được
lấy mẫu bằng cách nhân tín hiệu với chuỗi xung răng lược có chu kỳ bằng chu
kỳ lấy mẫu
‒ Mô phỏng: Tạo vecto thời gian bắt đầu từ thời điểm 0 đến thời điểm kết thúc tín
hiệu tương tự (T), vecto gồm các phần tử cách đều nhau một khoảng bằng chu
kỳ xung răng lược: t=0:Ts:T. Thay giá trị vecto thời gian vào tín hiệu tương tự,
ta được một vecto chứa biên độ các xung PAM
‒ Tham số sử dụng. Tín hiệu tương tự được lấy mẫu với tần số fs=8e3 Hz nên chu
kỳ lấy mẫu Ts=1/fs=1.25e-4 s


Nén luật A:


Bộ nén là một bộ khuếch đại phi tuyến, mục đích của bộ nén này là tạo ra các
mức lượng tử hóa khơng đều nhằm cải thiện tỷ số tín hiệu trên tạp âm S/N. Có

hai phương pháp nén thông dụng là nén luật μ và nén luật A. Phương pháp nén
luật A như sau: gọi tín hiệu s1(t) là tín hiệu vào bộ nén, tín hiệu s2(t) là tín hiệu
ra ta có mối quan hệ

|s2(t)|=
Mơ phỏng: Nén luật A có thể thực hiên bằng hàm
compand(s,A,max(s),’A/compressor’) với s là vecto tín hiệu sau lấy mẫu, A là
hằng số nén, max(s) là giá trị lớn nhất của s
‒ Tham số sử dụng: Hằng số nén A=87.6


Lượng tử hóa:
3


Lượng tử hóa là q trình xấp xỉ hóa tín hiệu mẫu tương tự dựa vào số mức
lượng tử M. Biên độ của tín hiệu từ GTLN đến GTNN được chia làm các
khoảng đều nhau gọi là các bước lượng tử. Nếu biên độ mẫu tín hiêu tương tự
nằm trong bước lượng tử nào thì sẽ được xấp xỉ hóa theo mức lượng tử đó. Nếu
số mẫu lượng tử càng lớn, khả năng thu được chính xác tín hiệu gốc càng cao.
‒ Mơ phỏng: Lượng tử hóa thực hiện là đều, sử dụng hàm quantiz(s,P) trong đó s
là tín hiệu mẫu tương tự, P là vecto các mức lượng tử. P có dạng
P=min(s):delta:max(s) trong đó delta là bước lượng tử.
‒ Tham số sử dụng: từ tín hiệu s(t) ta thấy GTLN của tín hiệu là 14 và GTNN của
tín hiệu là -14, số mức lượng tử sử dụng là 256 nên vecto P=-14:28/255:14 với
bước lượng tử delta=28/255


Mã hóa:
Là ánh xạ một mức lượng tử thành một từ mã nhị phân. Mã hóa thường kết hợp

với bộ A/D, tín hiệu qua bộ mã hóa là các xung vng có biên độ 0 hoặc 1.
‒ Mô phỏng: Sử dụng hàm de2bi để chuyển các mức lượng tử sang từ mã nhị
phân.


Giải mã


Ánh xạ từ mã nhị phân 8 bit thành các mức lượng tử có trọng số từ 0=>255.
Dựa vào vecto các mức lượng tử Pa để có thể ánh xạ trọng số sang mức biên độ
bằng thuật tốn S(t)=Pa(C(t)+1) trong đó C(t) là trọng số mức lượng tử, S(t) là
tín hiệu thu được.

Giải nén luật A


Giả sử tín hiệu vào bộ giải nén là s1(t), tín hiệu ra bộ giải nén là s2(t) ta có

|s2(t)|=

Tái tạo dạng tín hiệu
Tín hiệu sau bộ giải nén luật A là tín hiệu tương tự ở phía phát. Tuy nhiên đây
khơng phải là tín hiệu gốc ban đầu do sai số ở khâu lượng tử hóa. Để thu được
tín hiệu một cách chính xác, nó được đưa qua một bộ nội suy làm tăng số mẫu
tín hiệu
‒ Trong mơ phỏng sử dụng hàm interp(x,s) để tăng tần số lấy mẫu trong đó x là
tín hiệu cần nội suy, s là tỷ số tần số lấy mẫu mới so với tần số lấy mẫu cũ


4



1.3 Kết quả:
Tin hieu goc ban tin
3

2

1

0
0

10

20

30

40

50

60

70

80

90


100

6000

7000

8000

9000

10000

Tin hieu thu
10

5

0

-5

0

1000

2000

3000


4000

5000

Hình1.2 Tín hiệu của bản tin gốc và thu

Hình1.3 Tín hiệu qua các khâu phía mã hóa
5


Hình 1.4: Tín hiệu lấy mẫu gốc và tín hiệu giải mã sau xử lý thu được

6


10

10

10

10

10

10

10

tin hieu goc


0

-5

-10

-0.5

-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0.5

0.2


0.3

0.4

0.5

tin hieu sau xu ly

5

0

-5

-10

-0.5

-0.4

-0.3

-0.2

-0.1

0

0.1


Hình1.5 PSD của tín hiệu phát ở dạng xung vng nhị phân và tín hiệu thu sau xử lý

7


1.4 Mã chương trình
% %% nhiem vu 1
fs=8e3;
% tần số lấy mẫu
step=1/fs;
% chu kỳ lấy mẫu
A=87.6;
% hằng số nén luật A
t=0:step:1;
% vecto thời gian- quá trình lấy mẫu
Pa=-14:28/255:14; % vecto các mức lượng tử hóa, biên độ lớn nhất và nhỏ
nhất có thể của s(t) là 14 và -14
s(t)=1*cos(2*pi*100*t)+2*cos(2*pi*200*t+pi/2)+3*cos(2*pi*200*t+pi/4);%
q
trình lấy mẫu
sc = compand(s,A,max(s),'A/compressor');
% nén luật A
C=quantiz(sc,Pa);
% lượng tử hóa
% quá trình mã hóa và biến đổi từ ma trận sang veto nhị phân
Code=(de2bi(C))';
Code=(Code(:))';%
S=zeros(1,length(C));
% quá trình giải mã

for k=1:length(C)
S(k)=Pa(C(k)+1);
end
SC = compand(S,A,max(S),'A/expander');% giải nén luật A
SC=interp(SC,100);% quá trình nội suy, tấn số lấy mẫu mới=100.fs
% ve hinh
figure(1)
subplot(2,1,1)
for k=1:100
plot(k:0.01:k+0.99,Code(k)*[0 ones(1,98) 0],'color','r')
hold on
end
title('Tin hieu goc ban tin')
axis([0,100,0,3])
subplot(2,1,2)
plot(SC(1:100*100))
title('Tin hieu thu')
hold on;
figure(2)
subplot(3,1,1)
num_3s=3*(1/100)/step;%
stem(t(1:num_3s),s(1:num_3s))
title('Dang tin hieu lay mau o 3 chu ky dau tien, fs=8e3 Hz')
subplot(3,1,2)
stem(t(1:num_3s),sc(1:num_3s))
title('Dang tin hieu qua bo nen ')
subplot(3,1,3)
%
for k=1:num_3s
plot(t(k):step/99:t(k+1),sc(k)*[0 ones(1,98) 0],'color','b')

hold on
end
title('Dang tin hieu qua bo luong tu hoa 256 muc')
figure(3)
subplot(2,1,1)
plot(t(1:num_3s),s(1:num_3s))
title('Tin hieu goc lay mau fs=8e3 Hz')
subplot(2,1,2)
%
plot(step/100:step/100:3*1/100,SC(1:num_3s*100))
title('Tin hieu thu sau bo noi suy co tan so lay mau= 100.fs')
figure(4)
subplot(2,1,1)
one=ones(1,5);in=[];d=1;
for k=1:5:100*1*2

8


in(k:k+4)=one*Code(d);d=d+1;
end
[Pf,f]=SP(0:length(in)-1,in);
semilogy(f,Pf)
title('tin hieu goc')
6
subplot(2,1,2)
[Pf1,f1]=SP(0:100*100-1,SC(1:100*100));
semilogy(f1,Pf1)
title('tin hieu sau xu ly')
hold off;


9


2 Nhiệm vụ 2: Mô phỏng hệ thống truyền dẫn qua kênh

AWGN
2.1 Mô tả nhiệm vụ
‒ Hệ thống truyền dẫn có điều chế, luồng bit vào là luồng bit từ nhiệm vụ 1
‒ Điều chế sử dụng là điều chế 16-QAM
‒ Tín hiệu phát có dạng

Trong đó: dk là ký hiệu sau điều chế, p là dạng xung phát, Tsym là chu kỳ xung phát,
Փo là pha tín hiệu phát. Xung p có dạng

Trong đó Es là năng lượng 1 ký hiệu
2.2 Mô tả hệ thống và các tham số mơ phỏng
a. Sơ đồ khối hệ thống
dịng bít vào

Bộ điều chế
16QAM

AWGN

Bộ giải
điều chế
16QAM

b. Các tham số


Dịng bit vào:


Dịng bít vào từ nhiệm vụ 1

Điều chế 16-QAM:


Do điều chế là 16-QAM nên dòng bit vào điều chế được tách làm 4 nhánh, mỗi
nhánh có tốc độ bằng một nửa tốc độ bit ban đầu. Trong mơ phỏng, tín hiệu
được tách bằng hàm buffer



Điều chế QAM là điều chế biên độ vuông góc, tín hiệu điều chế có dạng

10


E0
bi sin ( 2πf c t )
T

si (t) =
+

E0
a i co s ( 2πf c t )
T


Trong đó Eo là năng lượng mỗi bit, 0≤t≤T
ai và bi là cặp số nguyên độc lập được xác định dựa trên vị trí của điểm bản tin, tọa
độ vecto Si trong không gian tín hiệu xác định như sau

s i = [ s i1 s i2 ]
T

si1 = ∫ si (t)φ1 (t) =
0

T

si2 = ∫ s i (t)φ2 (t) =

Trong đó:


0

E0
bi
2
E0
ai
2

, φ1(t)=- và φ2(t)=

Điều chế 16-QAM trong mô phỏng: Điều chế QAM trong Matlab được thực

hiện bằng hàm modem.qammod(M) với M=16 là số trạng thái và hàm
modulate.

Kênh AWGN
AWGN là tạp âm Gauss trắng thường gây ra do tạp âm nhiệt hoặc tạp âm nền
máy thu trong các mạch điện. Tạp âm Gauss trắng là biến ngẫu nhiên phân bố
chuẩn, có kỳ vọng bằng 0. Tạp âm Gauss trắng tác động lên tín hiệu bằng phép
+ lên biên độ của tín hiệu
‒ Trong Matlab, mơ phỏng kênh AWGN sử dụng hàm awgn(tín hiệu phát,SNR,P)
trong đó SNR là tỷ số cơng suất tín hiệu trên tạp âm có đơn vị là dB, P là cơng
suất tín hiệu đơn vị là dBW. Nếu khơng có P coi công suất phát = 0dBW
‒ Trong bài mô phỏng, ta có cơng suất của tín hiệu trong khoảng thời gian Tsys là
P=<(p(t))^2>=3*Es/Tsys, nếu chọn Es=2/3*Tsys thì cơng suất tín hiệu là
P=10*lg(3*Es/Tsys)=0dBW


Giải điều chế 16-QAM
Sau khi tích phân, ta có ký hiệu điều chế ở bộ thu. Thực hiện giải điều chế và
đưa vào khối quyết định cứng thu được dịng bit phát
‒ Do trong mơ phỏng ký hiệu điều chế là phức nên có thể thực hiện tích phân
trước hoặc sau điều chế đều được
‒ Trong Matlab, bộ giải điều chế QAM sử dụng hàm modem.qamdemod(M) với
M là số trạng thái,


11


2.3 Kết quả
Kết quả mơ phỏng trên kênh AWGN có SNR= 8dB


Hình 2.1: Biểu đồ chịm sao tín hiệu sau điều chế và tại bộ thu

12


Hình 2.2: Biểu đồ dạng tín hiệu phát và thu

Hình 2.3: Biểu đồ mắt tín hiệu phát và thu
13


Hình 2.4: Mật độ phổ cơng suất tín hiệu phát và thu

2.4 Mã chương trình
bit=Code; % dau vao la chuoi bit thuc hien o nhiemvu 1

14


N=0.5*(1024)^2; % toc do ki hieu
Tsys=1/N; %chu ki 1 bit
t=0:Tsys/100:Tsys; %vec to thoi gian
Es=2/3*Tsys; % chon nang luong cho 1 bit sao cho cong suat tin hieu bang
0dbW
pt=(Es/Tsys)^0.5*(1-cos(2*pi*t/Tsys));%dang xung phat
a=modem.qammod(16); % dieu che 16QAM
a.InputType='bit'; % dau vao
bit_in=buffer(bit,4); % chia dong bit thanh 4 nhanh
dsys=modulate(a,bit_in); % thuc hien dieu che chuoi bit

Re_8dB=awgn(dsys,8); % cho qua kenh AWGN
b=modem.qamdemod(16); % giai dieu che 16QAM
b.OutputType='bit'; %
sig_demod=demodulate(b,Re_8dB); %thuc hien giai dieu che QAM
sig_demod=(sig_demod(:))'; %chuyen sang dang vecto
BER_8dB=sum(abs(sig_demod-bit))/length(bit); %so sanh chuoi bit thu duoc va
chuoi bit ban dau de tinh BER
figure(5)
subplot(2,1,1)
plot(dsys,'*')
title('Bieu do chom sao tin hieu sau dieu che')
subplot(2,1,2)
plot(awgn(dsys,8),'*')
title('Bieu do chom sao tin hieu sau qua kenh AWGN Eb/No=8dB')
figure(6)
subplot(2,1,1)
stem([real(dsys(1)*(1-cos(2*pi*t/Tsys))) imag(dsys(1)*(1cos(2*pi*t/Tsys)))])
title('Dang xung phat')
subplot(2,1,2)
stem([real(awgn(dsys(1)*pt,8/length(pt)))
imag(awgn(dsys(1)*pt,8/length(pt)))])
hold on
plot([real(dsys(1)*(1-cos(2*pi*t/Tsys))) imag(dsys(1)*(1cos(2*pi*t/Tsys)))],'color','r')
title('Dang tin hieu tai bo thu')
eye=[];
for k=1:2000
eye=[eye dsys(k)*(1-cos(2*pi*t/Tsys))];
end
eye_a=awgn(eye,8);
eyediagram([real(eye) imag(eye)],length(pt)*2)

title('Bieu do mat tin hieu phat')
eyediagram([real(eye_a) imag(eye_a)],length(pt)*2)
title('Bieu do mat tin hieu tai bo thu')
figure(9)
c=[dsys(1)*pt dsys(2)*pt dsys(3)*pt]; %
thu=awgn(c,8); %
[Pf1,f1]=SP(0:length(c)-1,c);
[Pf2,f2]=SP(0:length(c)-1,thu);
subplot(2,1,1)
semilogy(f1,Pf1);grid;
title('PSD tin hieu phat')
subplot(2,1,2)
semilogy(f2,Pf2);grid;
title('PSD tin hieu thu')

15



×