















Preview text:
lOMoAR cPSD| 58886076 lOMoAR cPSD| 58886076
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG BÀI TẬP LỚN
Mô phỏng hệ thống truyền thông Thành viên nhóm 1: 1. Vũ Văn An – B20DCVT013
2. Vũ Việt Ánh – B20DCVT043
3. Phạm Đăng Thái – B20DCVT355
4. La Quang Trường – B20DCVT403
5. Phạm Quỳnh Văn – B20DCVT411 lOMoAR cPSD| 58886076 Hà Nội, tháng 4/2023 Bài 1: a.
Mô tả hệ thống PCM chuyển đổi tín hiệu yêu cầu bằng sơ đồ khối và xác
định các tham số của hệ thống.
Sơ đồ khối của hệ thống PCM bao gồm các bước sau:
1. Lấy mẫu: Tín hiệu s(t) được lấy mẫu với tần số lấy mẫu fs = 8 kHz.
2. Lượng tử hóa (Quantization): Tín hiệu đã lấy mẫu được lượng tử hóa theo luật A-law với A = 87,6.
3. Mã hóa (Encoding): Tín hiệu đã định lượng được mã hóa thành dạng nhị phân.
4. Giải mã (Decoding): Chuỗi bit nhị phân được giải mã thành tín hiệu định lượng.
5. Khôi phục (Reconstruction): Tín hiệu tương tự dạng âm thoại được khôi
phục từ tín hiệu đã giải mã.
Sơ đồ khối hệ thống PCM chuyển đổi A/D:
Tín hiệu tương tự --> [Lấy mẫu] --> [Lượng tử hóa] --> [Mã hóa] -->
Tín hiệu số (nhị phân) Các tham số: •
Tần số lấy mẫu: fs = 8kHz. •
Số bit để biểu diễn mỗi mẫu: sử dụng luật A tiêu chuẩn châu Âu
với A = 87,6, tức là sử dụng 8 bit để biểu diễn mỗi mẫu. Thang
đo lượng tử hóa: được chia thành 2^8 cấp. b.
Bằng việc sử dụng MATLAB, viết chương trình và thực hiện mô phỏng quá
trình PCM theo tiêu chuẩn châu Âu cho tín hiệu thoại sử dụng kỹ thuật nén – dãn
theo luật A với A = 87,6 và tần số lấy mẫu fs = 8kHz.
Để viết chương trình này, ta cần sử dụng các hàm trong MATLAB như sau:
% Thiet lap cac tham so fs = 8000; % Tan so lay mau A = 87.6; % lOMoAR cPSD| 58886076
Tham so luat nén - dãn phi = [0
pi/2 pi/4 pi/8 pi/16]; % Pha cua cac
thanh pho nbits = 8; % So bit de bieu dien moi mau % Tao tin hieu dau vao
t = 0:1/fs:2-1/fs; % Thoi gian tuong ung voi tin hieu
s = zeros(size(t)); % Khoi tao tin hieu for i = 1:length(phi)
s = s + 3*cos(2*pi*8222600*t+phi(i)); end
% Ap dung luat nen - dan A s_quan =
A*log(1+(s/A)); % Luat nen s_recon =
A*(exp(s_quan/A)-1); % Luat dan
% Chuyen doi tin hieu tu li tuong sang so
s_int = round((s_recon+3)*2^(nbits-1)/6); % Chuyen doi thanh so nguyen
s_bin = de2bi(s_int); % Chuyen doi thanh chuoi bit % Thuc hien PCM
s_pcm = zeros(1, length(s_bin)*nbits); % Khoi tao chuoi bit sau khi PCM for i = 1:length(s_bin)
s_pcm((i-1)*nbits+1:i*nbits) = s_bin(i,:); % Ghep cac bit lai voi nhau end
% Hien thi tin hieu ban dau va tin hieu sau khi khôi phục
figure subplot(2,1,1) plot(t, s) title('Tin hieu ban dau')
xlabel('Thoi gian (s)') ylabel('Bien do') subplot(2,1,2) plot(t, s_recon)
title('Tin hieu sau khi khoi phuc’)
xlabel('Thoi gian (s)') ylabel('Bien do') lOMoAR cPSD| 58886076
c. Biểu diễn dạng sóng tín hiệu trên khoảng 3 chu kỳ và phổ của nó tại các điểm
sau trên hệ thống: tín hiệu gốc bản tin và tín hiệu được khôi phục tại đầu thu hệ thống PCM. % Ve dang song tin hieu goc figure subplot(2,1,1) plot(t(1:3*fs), s(1:3*fs))
title('Dang song tin hieu goc') xlabel('Thoi gian (s)') ylabel('Bien do')
% Ve dang song tin hieu da khoi phuc subplot(2,1,2)
s_pcm_recon = zeros(size(s_recon)); % Khoi tao tin hieu da khoi phuc tu chuoi bit for i = 1:length(s_pcm)/nbits
s_int = bi2de(s_pcm((i-1)*nbits+1:i*nbits)); % Chuyen doi tu chuoi bit sang so nguyen
s_pcm_recon(i) = 6*s_int/2^(nbits-1)-3; % Chuyen doi tu so nguyen sang tin hieu end
plot(t(1:3*fs), s_pcm_recon(1:3*fs))
title('Dang song tin hieu da khoi phuc')
xlabel('Thoi gian (s)') ylabel('Bien do')
% Ve pho tin hieu goc va tin hieu da khoi phuc figure subplot(2,1,1)
[P,f] = periodogram(s, [], [], fs); plot(f, 10*log10(P)) title('Pho tin hieu goc') xlabel('Tan so (Hz)') ylabel('Cuu') subplot(2,1,2)
[P,f] = periodogram(s_pcm_recon, [], [], fs);
plot(f, 10*log10(P)) title('Pho tin hieu da lOMoAR cPSD| 58886076
khoi phuc') xlabel('Tan so (Hz)') ylabel('Cuu')
Ta thấy rằng tín hiệu đã khôi phục có dạng giống với tín hiệu gốc, tuy nhiên có một
số sai số nhỏ do quá trình lượng tử hóa trong quá trình PCM. Phổ của tín hiệu đã
khôi phục cũng gần giống với phổ của tín hiệu gốc, với các thành phần tần số
chính được bảo toàn. Tuy nhiên, do quá trình lượng tử hóa, phổ của tín hiệu đã
khôi phục có một số nhiễu và bị giảm độ rộng so với phổ của tín hiệu gốc. Bài 2:
a, Mô tả phương pháp thực hiện chuyển đổi ảnh số được lưu trong tệp thành chuỗi
bit nhị phân và ngược lại
- Các bước thực hiện chuyển đổi ảnh số được lưu trong tệp thành chuỗi bit nhị phân
+ Đọc ảnh số từ tệp, sử dụng hàm ‘imread’ để độc ảnh số
+ Chuyển đổi ảnh số thành một ma trận số nguyên thành chuỗi bit nhị phân
bằng cách sử dụng hàm ‘ im2int’
+ Chuyển đổi từng phần tử trong ma trận số nguyên thành chuỗi bit nhị phân
bằng cách sử dụng hàm ‘ dec2bin’
+ Ghép các chuỗi bit nhị phân thành một chuỗi duy nhất để lưu vào tệp. Ta
có thể sử dụng hàm ‘ reshape’ để chuyển đổi ma trận các chuỗi bit nhị phân
thành một chuỗi duy nhất và sử dụng hàm ‘ fwrite’ để ghi chuỗi này vào tệp
- Các bước thực hiện chuyển đổi một chuỗi bit nhị phân thành ảnh số
+ Đọc chuỗi bit nhị phân từ tệp ảnh bằng cách sử dụng hàm ‘ fread’
+ Chuyển đổi chuỗi bit nhị phân thành một ma trận các chuỗi bit nhị phân
bằng cách sử dụng hàm ‘ reshape’
+ Chuyển đổi chuỗi bit nhị phân trong ma trận thành một số nguyên bằng
cách sử sụng hàm ‘ bin2dec’
+ Chuyển đổi ma trận các số nguyên thành ảnh số bằng cách sử dụng hàm ‘ int2im’
+ Lưu ảnh số vào tệp bằng cách sử dụng hàm ‘ imwrite’ lOMoAR cPSD| 58886076
+ Hiển thị ảnh số bằng cách sử dụng hàm ‘imshow’ b, Viết chương trình
MATLAB thực hiện chuyển đổi ảnh lư trong tệp chess.jpg thành chuỗi tín hiệu
nhị phân và ngược lại. Có thể xây dựng dưới dạng hàm chuyển đổi để sử dụng
trong các chương trình khác
Chương trình MATLAB thực hiện chuyển đổi ảnh lưu trong tệp chess.jpg
thành chuỗi tín hiệu nhị phân : % Đọc ảnh vào biến img
img = imread('lena_gray.bmp');
% Chuyển đổi ảnh sang ma trận số nguyên img_int = uint8(img);
% Chuyển đổi từng phần tử trong ma trận thành chuỗi bit nhị phân 8-bit
img_bin = dec2bin(img_int, 8);
% Reshape ma trận chuỗi bit nhị phân thành một chuỗi cột
img_bin_col = reshape(img_bin.', [], 1);
% Lưu chuỗi bit nhị phân vào file txt
fileID = fopen('binary.txt', 'w');
fprintf(fileID, '%s\n', img_bin_col); fclose(fileID);
Chương trình MATLAB thực hiện chuyển đổi chuỗi bit nhị phân thành ảnh
% Đọc chuỗi bit nhị phân từ file
fileID = fopen('binary.txt', 'r');
img_bin_col = fscanf(fileID, '%s'); fclose(fileID);
% Chuyển đổi chuỗi bit nhị phân thành ma trận
img_bin_mat = reshape(img_bin_col, [], 8);
% Chuyển đổi ma trận chuỗi bit nhị phân thành ma trận số nguyên 8-bit
img_int = bin2dec(img_bin_mat); img_int = uint8(img_int); lOMoAR cPSD| 58886076 % Hiện thị ảnh imshow(img_int); + Kết quả:
c, Xác định các thông số về kích thước ảnh , định dạng ảnh và có độ dài chuỗi bit được chuyển đổi
- Kích thước ảnh : 512 x 512 pixe : ảnh có đô phân giải 512 x 512 có 512 cột
và 512 hàng pixel. Mỗi pixel biểu diễn bằng 8 bit, có giá trị từ 0 đến 255
tương ứng với mức xám của pixel từ đen đến trắng
- Định dạng ảnh : BMP ( bitmap)
- Độ dài chuỗi bit được chuyển đổi : 512 x 512 x 8 = 2,097,152 bit Bài 3: a. 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ụ 2 SC=15, R=0, M=4
Điều chế sử dụng 4-PSK Tín hiệu phát có dạng: lOMoAR cPSD| 58886076
Trong đó: dk là ký hiệu sau điều chế, p là xung phát, Tsym là chu kỳ xung
phát, Φ0 là pha tín hiệu phát. Xung p có dạng:
Trong đó Es là năng lượng 1 ký hiệu
+ Mô tả hệ thống và các tham số mô phỏng 1. Sơ đồ hệ thống Dòng bit vào Bộ điều chế 4PSK AWGN Bộ giải điều chế 4 PSK 2. Các tham số Dòng bit vào:
Dòng bit vào từ nhiệm vụ 2 Điều chế 4-PSK:
Do sử dụng phương pháp điều chế 4-PSK nên tín hiệu băng gốc được
đưa vào bộ biến đổi nối tiếp thành song song, đầu ra được 2 luồng tín hiệu
có tốc độ bit giảm đi 1 nửa, đồng thời tín hiệu đơn cực RZ được biến đổi
thành tín hiệu lưỡng cực NRZ. Hai sóng mang được đưa tới hai bộ trộn làm lệch pha nhau 90°
Công thức cho sóng mang được điều chế QPSK: lOMoAR cPSD| 58886076 Trong đó:
i= 1,2,3,4 tương ứng với phát đi tín hiệu 2 bit: 00,01,10,11
E là năng lượng phát đi trên một ký
hiệu T=2Tb là thời gian của một ký hiệu
fc là tần số sóng mang θ(t) là góc pha
được điều chế θ là góc pha ban đầu
b. Chương trình Matlab mô phỏng hệ thống truyền dẫn số sử dụng kỹ thuật điều
chế đã lựa chọn trên kênh AWGN với nguồn tín hiệu là chuỗi bít ở nhiệm vụ 2 với tốc độ 3 Mbs/s
%%%%%%%%%%% NHOM 1 %%%%%%%%%%%
% ham lay chuoi bit tu nhiem vu 2
[ image_size, bits, n_bits ] = image2binary( 'lena_gray.bmp' );
% sau ham tren thi cho ra chuoi dau ra M = 4; N = 3; Rb = N*1e6;
SNR_dB = [5 8 12]; % khao sat lan luot tai [5 8 12] SNR = 10.^(SNR_dB/10);
nb = log2(M); %So bit bieu dien 1 ky hieu(bits/sym)
n_syms = floor(n_bits/nb); %Do dai chuoi ky hieu
Tend = n_bits/Rb; % thoi gian mo phong toan bo chuoi tin hieu Tb = 1/Rb; % chu ki bit Ts = M*Tb; % chu ki tin hieu bits = double(bits);
%--------------- Dieu che ------------%
f_mod = comm.PSKModulator(M,pi/M,'BitInput',true);
d = step(f_mod, bits'); % tra ve chuoi d phuc la chuoi cac muc cua ky hieu
% Bo dieu che PSK voi dau vao la bit
%--------------- Tao xung tin hieu phat ------------% n_sample =
100; % So mau cho moi ky hieu Es = 1; lOMoAR cPSD| 58886076
% Gia su nang luong moi ky hieu la 1 pha = 0; % Pha ban dau
t_m = 0:Ts/n_sample:(Ts-Ts/100); % Vector thoi gian cho 1 ky hieu p_m
= sqrt(2*Es/Ts)*(1-cos(2*pi*t_m/Ts)); % Tao xung p(t)
% Dong nhat do dai cua p(t) va d(k) voi do dai la (so mau) va (so ky hieu)
p = kron(ones(1,n_syms), p_m);
d_s = kron(d.', ones(1,n_sample));
s = d_s.*p*exp(i*pha); % xung tin hieu s(t) tao ra
% tao vector th?i gian voi do dai tuong ung s(t)
t = kron(ones(1,length(d.')), t_m)+kron([0:Ts:((n_syms-1)*Ts)], ones(1,n_sample));
%--------------- Qua trinh mo phong qua kenh AWGN ------------%
BER = []; % Khoi tao vector BER luu BER tuong ung moi SNR
for i = 1:length(SNR) % SNR loop
nMC = 1; % So vong loop cho Monte Carlo
err = 0; % err: tinh tong so loi bit for j = 1:nMC % MC loop
% xung tin hieu bo nhieu qua kenh AWGN
sr = awgn(s, SNR(i), 'measured', 'linear');
%------------ Qua trinh xu ki ti hieu phia thu
% xac dinh muc tin hieu cho xung tin hieu cua moi tin hieu
dra = max(reshape(sr,n_sample,n_syms)); drb = max(p_m); dr = (dra/drb); lOMoAR cPSD| 58886076
%-------------------- Giai dieu che -----------%
f_demod = comm.PSKDemodulator(M,'PhaseOffset',pi/M,'BitOutput',true);
bits_output = step(f_demod, dr.'); % giai dieu che
%f_demod = comm.RectangularQAMDemodulator('ModulationOrder', M, 'BitOutput', true);
%bits_output = step(f_demod, dr.'); %tinh so luong bit loi
err = err + length(bits(bits'~=bits_output)); end % End MC loop % tinh ti le bit loi BER(i) = err/(nMC*n_bits);
%------------- Hien thi cac ket qua tai SNR = 8 -----------% if SNR_dB(i)==8 % ve bieu do chom sao scatterplot(d);
title('Bieu do chom sao dau ra tu bo dieu che (SNR=8dB)'); grid ; scatterplot(dr);
title('Bieu do chom sao tai bo thu(SNR=8dB)'); grid ; %ve xung tin hieu figure, plot(t, real(sr)); hold on;
plot(t,real(s),'LineWidth',1.5); lOMoAR cPSD| 58886076 hold off;
title('Xung tin hieu truoc va sau khi qua kenh AWGN (SNR=8dB)');
legend('Tin hieu sau khi qua kenh AWGN sr(t)', 'Tin hieu ban dau s(t)');
xlabel('thoi gian (t)'); ylabel('Amplitude'); axis([0 0.00015 -inf inf])
% ve mau mot tin hieu voi 100 mau cua moi ky hieu
eyediagram(s(1:1000),n_sample); %title ('So do tin
hieu dong pha'); eyediagram(sr(1:1000),n_sample);
%title ('So do tin hieu cau phuong'); end
% Qua trinh khoi phuc anh tuong ung voi moi SNR
img_bi = reshape(bits_output, (n_bits/8),8); img_back
= uint8(reshape(bi2de(img_bi),image_size)); figure, imshow(img_back);
title(['Anh khoi phuc tai SNR = ', num2str(SNR_dB(i))]); end % End SNR loop
%in ket qua loi bit BER cho tung truong hop SNR for i = 1:length(SNR_dB)
fprintf('Tai SNR =%d , co BER = %f\n', SNR_dB(i),BER(i)); end + Tại SNR = 5 lOMoAR cPSD| 58886076 + Tại SNR = 8 + Tại SNR = 12 lOMoAR cPSD| 58886076
c. Biểu diễn các yêu cầu
+ Biểu đồ chòm sao tại bộ điều chế:
+ Biểu đồ chòm sao tại bộ thu lOMoAR cPSD| 58886076
+ Mẫu mắt và phổ tại đầu ra bộ điều chế:
+ Mẫu mắt và phổ sau khi truyền qua kênh AWGN tại SNR = 8 lOMoAR cPSD| 58886076
d. So sánh dạng sóng tín hiệu tương tự/chuỗi bít nhị phân file ảnh được khôi
phục sau khi truyền qua hệ thống mô phỏng tại các mức SNR yêu cầu.
+ Khi SNR tăng, chất lượng tín hiệu được cải thiện và tín hiệu được tái tạo chính
xác hơn. Do đó, độ lỗi bit (bit error rate - BER) giảm. Trong trường hợp này, chúng
ta sẽ so sánh BER của hai định dạng tín hiệu này sau khi truyền qua hệ thống mô
phỏng với các mức SNR khác nhau.
+ Khi SNR = 5, chất lượng tín hiệu bị giảm đáng kể và độ lỗi bit của cả hai định
dạng tín hiệu đều cao. Tuy nhiên, đối với chuỗi bít nhị phân, độ lỗi bit cao hơn so
với tín hiệu tương tự.
+ Khi SNR = 8, chất lượng tín hiệu được cải thiện đáng kể và độ lỗi bit của cả hai
định dạng tín hiệu đều giảm. Tuy nhiên, độ lỗi bit của chuỗi bít nhị phân vẫn cao
hơn so với tín hiệu tương tự.
+ Khi SNR = 12, chất lượng tín hiệu được cải thiện đáng kể và độ lỗi bit của cả hai
định dạng tín hiệu đều rất thấp. Tuy nhiên, độ lỗi bit của chuỗi bít nhị phân vẫn cao
hơn so với tín hiệu tương tự.
+ Tóm lại, trong trường hợp này, tín hiệu tương tự có độ lỗi bit thấp hơn so với
chuỗi bít nhị phân ở mọi mức SNR từ 5 đến 12. Do đó, tín hiệu tương tự có thể
được xem là định dạng tốt hơn để biểu diễn các file ảnh. Tuy nhiên, việc chọn định
dạng tín hiệu phù hợp phụ thuộc vào các yếu tố khác như khả năng nén và xử lý tín hiệu.