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ú
Trang 1HỌ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: Lê Văn Mạnh
MSSV : B12DCVT122
Lớp : D12VT3
Trang 2
Mục lục
1 Nhiệm vụ 1: Mô phỏng qua trình PCM cho tín hiệu tương tự 3
1.1 Mô tả nhiệm vụ 3
1.2 Mô tả hệ thống mô phỏng và các tham số 3
1.3 Kết quả: 5
1.4 Mã chương trình 8
2 Nhiệm vụ 2: Mô phỏng hệ thống truyền dẫn qua kênh AWGN 10
2.1 Mô tả nhiệm vụ 10
2.2 Mô tả hệ thống và các tham số mô phỏng 10
2.3 Kết quả 12
2.4 Mã chương trình 15
Trang 31 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 quá 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
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à quá 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
hoà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
Trang 4Né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:
‒ Lượng tử hóa là quá 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 vuông 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 toá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
Trang 5Giả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)|= { (1+ln ( A )) A .|s1 (t )|nếu 0 ≤|s 1(t )|≤
1
1+ln ( A)
exp(|s 1(t )|.(1+ln ( A ))−1)
1
1+ln ( A ) ≤|s 1(t )|≤1
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ũ
1.3 Kết quả:
0
1
2
-5
0
5
Hình1.2 Tín hiệu của bản tin gốc và thu
Trang 6Hình1.3 Tín hiệu qua các khâu phía mã hóa
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
Trang 7-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
10-10
10-5
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
10-10
10-5
100
Hình1.5 PSD của tín hiệu phát ở dạng xung vuông nhị phân và tín hiệu thu sau xử lý
Trang 81.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); % quá 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
Trang 9in(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 ;
Trang 10Bộ điều chế 16QAM
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 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
Bộ giải điều chế 16QAM AWGN
Trang 11
0
0
E
T E
a co s 2 f 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 s
s
Trong đó:
T
0
0 T
0
0
E
2 E
2
,
φ1(t)=-t)=-√T2sin (2 pi fc t )
và φ2(t)=-t)=
√T2cos (2 pi fc 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,
Trang 122.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
Trang 13Hình 2.2: Biểu đồ dạng tín hiệu phát và thu
Trang 14Hình 2.4: Mật độ phổ công suất tín hiệu phát và thu
Trang 152.4 Mã chương trình
bit=Code; % dau vao la chuoi bit thuc hien o nhiemvu 1
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)*(1-cos(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)*(1-cos(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)