1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài tập lớn mô phỏng hệ thống truyền thông đọc và xử lý nguồn tin là một file nhạc assigmentd20 wav

18 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài tập lớn mô phỏng hệ thống truyền thông đọc và xử lý nguồn tin là một file nhạc assigmentd20 wav
Tác giả Tạ Xuân Hùng
Người hướng dẫn Ngô Thu Trang
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Hệ thống truyền thông
Thể loại Bài tập lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 18
Dung lượng 1,47 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

usp=sharing Thực hiện đọc và chuyển đổi file nhạc yêu cầu thành chuỗi bit nhị phân làm nguồn tin đầu vào cho nhiệm vụ 2 và thực hiện ngược lại chuyển đổi chuỗi bit nhị phân thu được thàn

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA VIỄN THÔNG I

BỘ MÔN TÍN HIỆU VÀ HỆ THỐNG

BÀI TẬP LỚN: MÔ PHỎNG HỆ THỐNG TRUYỀN THÔNG

Họ và tên: Tạ Xuân Hùng

Mã sinh viên: B20DCVT179 Nhóm lớp học: 05

Giảng viên: Ngô Thu Trang  

 Hà Nội – 2023

Trang 2

 I.Nhiệm vụ 1:

1.Đề bài  1.1 Mô tả nhiệm vụ:

Đọc và xử lý nguồn tin là một file nhạc AssigmentD20.wav File này có thể lấy

về theo địa chỉ dưới đây:

https://drive.google.com/file/d/1fown391kGSUhlZA6L8eIjS1Oh_JCjyW/view? usp=sharing 

Thực hiện đọc và chuyển đổi file nhạc yêu cầu thành chuỗi bit nhị phân làm nguồn tin đầu vào cho nhiệm vụ 2 và thực hiện ngược lại chuyển đổi chuỗi bit nhị phân thu được thành file nhạc

1.2 Yêu cầu:

a Mô tả phương pháp thực hiện chuyển đổi file nhạc yêu cầu thành chuỗi nhị  phân và ngược lại

 b Viết chương trình MATLAB thực hiện chuyển đổi file nhạc AssigmentD20.wav 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

c Xác định các thông số về file nhạc cần chuyển đổi

1.3 Gợi ý:

Một số hàm công cụ tiện ích trong thư viện Audio Processing Toolbox có thể cần sử dụng để thực hiện nhiệm vụ (để biết chi tiết hơn về từng câu lệnh, sử dụng help): audioread – đọc dữ liệu từ file nhạc

audiowrite – ghi file nhạc audioinfo – thông tin về file nhạc unit16 – chuyển kiểu dữ liệu về unit16

2.Bài làm

  a Mô tả phương pháp thực hiện chuyển đổi file nhạc yêu cầu thành chuỗi nhị  phân và ngược lại

 Phương pháp thực hiện chuyển đổi file nhạc yêu cầu thành chuỗi nhị phân có thể được thực hiện như sau:

Trang 3

3.Chuyển đổi số nguyên này thành các chuỗi nhị phân Để làm được điều này, ta cần biết kích thước của số nguyên (8 bit, 16 bit, 32 bit, 64 bit, ) để có thể chia các bit ra và chuyển đổi sang nhị phân

4.Ghi chuỗi nhị phân vào file mới

 Phương pháp thực hiện chuyển đổi chuỗi nhị phân thành file nhạc có thể được thực hiện như sau:

1.Đọc chuỗi nhị phân vào chương trình Chuỗi nhị phân này được đọc từ file hoặc được nhập vào từ bàn phím

2.Chuyển đổi chuỗi nhị phân thành số nguyên Để làm được điều này, ta cần biết kích thước của số nguyên (8 bit, 16 bit, 32 bit, 64 bit, ) để có thể ghép các bit lại thành các số nguyên

3.Chuyển đổi số nguyên thành sóng âm thanh Sóng âm thanh có thể được biểu diễn dưới dạng các số nguyên có giá trị trong khoảng từ -32768 đến 32767 4.Ghi sóng âm thanh vào file mới Để làm được điều này, ta sử dụng một thư viện ghi file âm thanh như librosa, pydub, soundfile,

 b Viết chương trình MATLAB thực hiện chuyển đổi file nhạc AssigmentD20.wav 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

 Viết chương trình MATLAB thực hiện chuyển đổi file nhạc AssigmentD20.wav thành chuỗi tín hiệu nhị phân

 % Đọc thông tin file nhạc

 info = audioinfo( 'C:\Users\Admin\Downloads\AssigmentD20.wav' );

 Fs = info.SampleRate;

 % Đọcc tín hiệu âm thanh

 [x, Fs] = audioread( 'C:\Users\Admin\Downloads\AssigmentD20.wav' );

 % Chuyển đổii tín hiệu âm thanh sang số nguyên 16 bit

 x = int16(x*(2^15));

 % Chuyển đổi từng giá trị số sang chuỗi tín hiệu nhị phân

 nbits = 16; % Số bit của giá trị số nguyên 16 bit

 n = length(x);

 bits = zeros(n, nbits);

 for  i = 1:n

   bits(i, :) = fliplr(bitget(x(i), 1:nbits));

 end

 bits = bits(:)'; % Chuyển sang dạng vector

 % Ghi chuỗi tín hiệu nhị phân vào file mới

 fid = fopen( 'C:\Users\Admin\Downloads\AssigmentD20.bin' , 'w' );

 fwrite(fid, bits, 'uint8' );

 fclose(fid);

Trang 4

 chuyển đổi chuỗi tín hiệu nhị phân trong file "AssignmentD20.bin" thành tín hiệu âm thanh:

 % đọc chuỗi tín hiệu nhị phân từ file

 fileID = fopen( 'C:\Users\Admin\Downloads\AssigmentD20.bin' , 'r' );

 binSignal = fread(fileID, 'ubit1' );

 fclose(fileID);

 % Chuyển đổi chuỗi nhị phân thành chuỗi tín hiệu âm thanh

 fs = 44100; % tần số lấy mẫu

 y = binSignal' * 2 - 1; % chuẩn hóa chuỗi nhị phân về dạng [-1,1]

 audiowrite( 'C:\Users\Admin\Downloads\AssigmentD20new.wav' , y, fs);

Trang 5

c Xác định các thông số về file nhạc cần chuyển đổi.

 Câu lệnh độc thông tin file audio info = audioinfo('C:\Users\Admin\Downloads\AssigmentD20.wav');

Thông số:

CompressionMethod : không nén  NumChannels (số kênh): 2 kênh  SampleRate (tốc độ lấy mẫu): 8000 (Hz) TotalSamples (tổng số mẫu): 268237  Duration (thời lượng file): 33.5296 (s)  BitsPerSample (số bit trên một mẫu): 16 Thực hiện nhiệm vụ

[x, Fs] = audioread('C:\Users\Admin\Downloads\AssigmentD20.wav');

 Kết quả thu được

Trang 6

a.Các biến trả về 

b.Dãy nhị phân thu được

c.File audio thu được sau khi chuyển đổi

 II, Nhiệm vụ 2

1.Đề bài 1.1 Mô tả nhiệm vụ:

Mô phỏng hệ thống truyền dẫn số tại tốc độ dữ liệu N Mb/s, với N là số cuối cùng của mã số sinh viên (nếu số đó là 0 thì sẽ lựa chọn số liền kề bên cạnh)  Nguồn tin của hệ thống được lấy từ file nhạc thực hiện trong nhiệm vụ 1, trong trường hợp không thực hiện lấy nguồn tin từ nhiệm vụ 1 được hãy thay thế bằng một chuỗi tín hiệu nhị phân ngẫu nhiên tương đương Mỗi sinh viên sẽ lựa chọn một trong các kĩ thuật điều chế sau cho hệ thống mô phỏng của mình:

- Điều chế M-QAM nếu số cuối cùng trong mã sinh viên là lẻ, với M = 16 nếu

số liền kề là lẻ và M = 4 nếu số liền kề là chẵn

- Điều chế M-DPSK nếu số cuối cùng trong mã sinh viên là chẵn, với M = 4 nếu số liền kề là lẻ và M = 2 nếu số liền kề là chẵn

Sử dụng mô hình mô phỏng tương đương băng gốc, tín hiệu phát có thể được  biểu diễn như sau:

Trang 7

trong đó dk là các kí hiệu (symbol) phức được xác định từ chuỗi bản tin đầu vào

và kỹ thuật điều chế; Tsym là chu kỳ của symbol; f0 là pha của tín hiệu phát và  p(t) xác định dạng xung được phát, với:

với Es là năng lượng mỗi symbol

1.2 Yêu cầu:

a Mô tả hệ thống mô phỏng bằng sơ đồ khối và xác định các tham số của hệ thống,

có thể bao gồm cả các bộ lọc sử dụng để có được bộ thu tối ưu

 b Bằng việc sử dụng MATLAB, viết chương trình 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à tín hiệu thu được ở nhiệm vụ 1 Ước tính xác suất lỗi tại các mức tỉ số tín hiệu trên nhiễu SNR lần lượt bằng 2, 5 và 10 dB theo phương pháp Monte Carlo

c Biểu diễn biểu đồ chòm sao, dạng sóng tín hiệu, mẫu mắt và phổ của tín hiệu tại

các điểm sau trên hệ thống: đầu ra bộ điều chế, sau khi truyền qua kênh AWGN tại SNR = 5dB, sau khi được xử lý và khôi phục tại bộ thu

d So sánh file nhạc đượ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

2.Bài làm   2.1: Phương pháp thực hiện mô phỏng

a Sơ đồ khối và các tham số hệ thống

Trang 8

Sơ đồ bộ điều chế và giải điểu chế 16-QAM Các tham số hệ thống:

- Kỹ thuật điều chế: 16-QAM

- Tốc độ bit: 9 Mb/s

- Chu kỳ tín hiệu

- Chu kỳ bit

Sơ đồ khối của giải điều chế 16-QAM theo môn Kỹ thuật thông tin vô tuyến:

Trang 9

  2.2.1 Hàm con vẽ đồ thị

function [] = DrawMission2(binary_data)

fs = 15e6;

st_fft=fft(binary_data);

st_fft=fftshift(st_fft);

st_fft_fre=fs/2*linspace(-1,1,length(st_fft));

figure plot(st_fft_fre,abs(st_fft));

grid;

title('Bieu do pho tin hieu');

xlabel('Frequency');

ylabel('Amplitude');

end

2.2.2 Hàm con điều chế 16 -QAM (mã sv 179)

function [Sig] = Modulation16QAM(binary_data)

M = 16; % Bac dieu che

N = 9*10^6; % Toc do du lieu

NumBit = length(binary_data); % So bit truyen

bp = 1/N; % Chu ki bit

Tsym = bp*log2(M); % Chu ki ki hieu

sr = 1/Tsym; % Toc do ki hieu

fc = sr*log2(M); % Tan so song mang

Es = 10; % Nang luong

t = Tsym/100:Tsym/100:Tsym; % Thoi gian

ss = length(t);

binary_data = reshape(binary_data,[],log2(M)); % chuyen

ve ma tran x 2

binary_data = bi2de(binary_data); % Chuyen cac bit nhi phan ve

QAM_Mod = qammod(binary_data,M); % Thiet ke theo symbol

I_Am = real(QAM_Mod); % Gia tri bien do cua I (phan thuc)

Q_Am = imag(QAM_Mod); % Gia tri bien do cua Q (phan ao)

Sig = []; % Mang luu song truyen di

I_Sig = []; % Mang luu song truyen I

Q_Sig = []; % Mang luu song truyen Q

for k = 1:1:length(I_Am)

I = I_Am(k)*cos(2*pi*fc*t); % Phan tu song I

Q = Q_Am(k)*sin(2*pi*fc*t); % Phan tu song Q

S = I + Q; % Song truyen di

Sig = [Sig S];

I_Sig = [I_Sig I];

Q_Sig = [Q_Sig Q];

end

% Ve bieu do chom sao sau khi dieu che

Trang 10

title('Bieu do chom sao sau khi dieu che');

tt = Tsym/100:Tsym/100:Tsym*length(I_Am); figure;

subplot(3,1,1);

plot(tt,I_Sig);

title('Dang song I theo ki hieu');

xlabel('Thoi gian(sec)');

ylabel('Bien do(volt)');

subplot(3,1,2);

plot(tt,Q_Sig);

title('Dang song Q theo tin hieu');

xlabel('Thoi gian(sec)');

ylabel('Bien do(volt)');

subplot(3,1,3);

plot(tt,Sig);

title('Dang song truyen di sau dieu che'); xlabel('Thoi gian(sec)');

ylabel('Bien do(volt)');

end

2.2.3 Hàm con giải điều chế 16 -QAM

function [binary_data] = baitaploncaub(Sig)

% Ham con giai dieu che IQ su dung M-QAM

% Dau vao la song toi

% Dau ra la day bit nhi phan

M = 16; % Bac dieu che

N = 9*10^6; % Toc do du lieu

bp = 1/N; % Chu ki bit

Tsym = bp*log2(M); % chu ki ki hieu

sr = 1/Tsym; % symbol rate

fc = sr*log2(M); % Tan so song mang

t = Tsym/100:Tsym/100:Tsym; % Thoi gian

ss = length(t);

Demod_I_Mes = [];

Demod_Q_Mes = [];

Demod_I_Sig = [];

Demod_Q_Sig = [];

Trang 11

m1 = y1.*Sig((n-(ss-1)):n); % Nhan voi thanh phan trucgiao

m2 = y2.*Sig((n-(ss-1)):n);

z1 = trapz(t,m1); % Tinh tich phan trong 1 chu ki

z2 = trapz(t,m2);

zz1 = round(2*z1/Tsym); % Lam tron so

zz2 = round(2*z2/Tsym);

Demod_I_Mes = [Demod_I_Mes zz1]; % Luu gia tri

Demod_Q_Mes = [Demod_Q_Mes zz2];

Demod_I_Sig = [Demod_I_Sig m1];

Demod_Q_Sig = [Demod_Q_Sig m2];

end

phan ao

clear i

clear j

for  k=1:1:length(Demod_I_Mes) QAM_Demod(k) = Demod_I_Mes(k) + 1i*Demod_Q_Mes(k);

end

scatterplot(QAM_Demod,1,0,'or');

title('Bieu do chom sao sau khi dieu che');

QAM_Demod = qamdemod(QAM_Demod,M);

figure;

% Ve Song I sau khi nhan truc giao

subplot(2,1,1);

plot(Demod_I_Sig,'linewidth',2);

title(' Song I sau khi tach');

xlabel('n(discrete time)');

ylabel(' magnitude');

%Ve song Q sau khi nhan truc giao

subplot(2,1,2);

plot(Demod_Q_Sig,'linewidth',2);

title(' Song Q sau khi tach ');

xlabel('n(discrete time)');

ylabel(' magnitude');

bi_in = de2bi(QAM_Demod);

binary_data = reshape(bi_in,[],1);

end

2.2.4 Hàm con gây nhiễu

function [Sig_Noise] = AWGNChanel(Sig,SNRdB)

% Day la ham AWGN

% Tin hieu dau vào

Trang 12

% Sig– Tin hieu dau vào

% SNRdB - Muc SNR dB

% Sig_Noise – Tin hieu nhieu dau ra

SNR = 10^(SNRdB/10);

VarN = var(Sig)/SNR;

if (isreal(Sig)) Sig_Noise = Sig + sqrt(VarN)*randn(size(Sig));

else

Sig_Noise = Sig + sqrt(VarN/2)*(randn(size(Sig))+j*randn(size(Sig)));

end end

  2.2.5 Hàm con vẽ biểu đồ chòm sao nhiễu

function [] = StarError(Data)

% Hàm con ve bieu do chom sao sau khi qua kenh AWGN

M = 4;

Data = reshape(Data,[],log2(M)); % chuyen ve ma tran x 2

Data = bi2de(Data); % Chuyen cac bit nhi phan ve

QAM_Mod = qammod(Data,M); % Thiet ke theo symbol

Data_Noise = AWGNChanel(QAM_Mod,2); % Gay nhieu

h = scatterplot(Data_Noise,1,0,'x');% Ve cac diem nhieu

hold on; scatterplot(QAM_Mod,1,0,'or',h); % Ve chong cac diem dung len

title('Bieu do chom sao cua tin hieu sau khi qua kenh AWGN');

end

  2.2.6 Thực hiện nhiệm vụ

Trang 13

2.3 Kết quả thu được

Biểu đồ chòm sao sau khi điều chế

Trang 15

Dạng sóng sau điều chế 4-QAM

Mật độ phổ tín hiệu phát sau điều chế

Trang 16

Mật độ phổ tín hiệu phát sau điều chế

Trang 17

Mật độ phổ tín hiệu sau nhiễu

sóng I và Q sau khi điều chế

Ngày đăng: 22/05/2023, 09:22

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w