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 3 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

Nội dung

  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ọ 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    I.Nhiệm vụ 1: 1.Đề bài  1.1 Mô tả nhiệm vụ: Đọc xử lý nguồn tin file nhạc AssigmentD20.wav File lấy theo địa đây: https://drive.google.com/file/d/1fown391kGSUhlZA6L8eIjS1Oh_JCjyW/view? usp=sharing  Thực đọc 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ụ thực ngược lại chuyển đổi chuỗi bit nhị phân thu thành file nhạc 1.2 Yêu cầu: a Mô tả phương pháp thực chuyển đổi file nhạc yêu cầu thành chuỗi nhị  phân ngược lại  b Viết chương trình MATLAB thực chuyển đổi file nhạc AssigmentD20.wav thành chuỗi tín hiệu nhị phân ngược lại Có thể xây dựng dạng hàm chuyển đổi để sử dụng chương trình khác c Xác định thông số file nhạc cần chuyển đổi 1.3 Gợi ý: Một số hàm cơng cụ tiện ích thư viện Audio Processing Toolbox cần sử dụng để thực nhiệm vụ (để biết chi tiết câu lệnh, sử dụng help): audioread – đọc liệu từ file nhạc audiowrite – ghi file nhạc audioinfo – thông tin file nhạc unit16 – chuyển kiểu liệu unit16 2.Bài làm   a Mô tả phương pháp thực chuyển đổi file nhạc yêu cầu thành chuỗi nhị  phân ngược lại Phương pháp thực chuyển đổi file nhạc yêu cầu thành chuỗi nhị phân thực sau: 1.Đọc file nhạc vào nhớ chương trình Để làm điều này, ta sử dụng thư viện đọc file âm librosa, pydub, soundfile, 2.Chuyển đổi tín hiệu âm sang dạng sóng Sóng âm biểu diễn dạng số nguyên có giá trị khoảng từ -32768 đến 32767    3.Chuyển đổi số nguyên thành chuỗi nhị phân Để làm điều này, ta cần biết kích thước số nguyên (8 bit, 16 bit, 32 bit, 64 bit, ) để chia bit chuyển đổi sang nhị phân 4.Ghi chuỗi nhị phân vào file Phương pháp thực chuyển đổi chuỗi nhị phân thành file nhạc thực sau: 1.Đọc chuỗi nhị phân vào chương trình Chuỗi nhị phân đọc từ file 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 điều này, ta cần biết kích thước số nguyên (8 bit, 16 bit, 32 bit, 64 bit, ) để ghép bit lại thành số nguyên 3.Chuyển đổi số nguyên thành sóng âm Sóng âm biểu diễn dạng số nguyên có giá trị khoảng từ -32768 đến 32767 4.Ghi sóng âm vào file Để làm điều này, ta sử dụng thư viện ghi file âm librosa, pydub, soundfile,   b Viết chương trình MATLAB thực chuyển đổi file nhạc AssigmentD20.wav thành chuỗi tín hiệu nhị phân ngược lại Có thể xây dựng dạng hàm chuyển đổi để sử dụng chương trình khác Viết chương trình MATLAB thực 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 [x, Fs] = audioread('C:\Users\Admin\Downloads\AssigmentD20.wav'); % Chuyển đổii tín hiệu âm sang số nguyên 16 bit x = int16(x*(2^15)); % Chuyển đổi giá trị số sang chuỗi tín hiệu nhị phân nbits = 16; % Số bit 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 fid = fopen('C:\Users\Admin\Downloads\AssigmentD20.bin', 'w'); fwrite(fid, bits, 'uint8'); fclose(fid);            chuyển đổi chuỗi tín hiệu nhị phân 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 fs = 44100; % tần số lấy mẫu y = binSignal' * - 1; % chuẩn hóa chuỗi nhị phân dạng [-1,1] audiowrite('C:\Users\Admin\Downloads\AssigmentD20new.wav', y, fs);   c Xác định thông số 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): 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 mẫu): 16 Thực nhiệm vụ [x, Fs] = audioread('C:\Users\Admin\Downloads\AssigmentD20.wav'); Kết thu    a.Các biến trả về  b.Dãy nhị phân thu c.File audio thu sau chuyển đổi  II, Nhiệm vụ 1.Đề 1.1 Mô tả nhiệm vụ: Mô hệ thống truyền dẫn số tốc độ liệu N Mb/s, với N số cuối mã số sinh viên (nếu số lựa chọn số liền kề bên cạnh)  Nguồn tin hệ thống lấy từ file nhạc thực nhiệm vụ 1, trường hợp không thực lấy nguồn tin từ nhiệm vụ thay chuỗi tín hiệu nhị phân ngẫu nhiên tương đương Mỗi sinh viên lựa chọn kĩ thuật điều chế sau cho hệ thống mơ mình: - Điều chế M-QAM số cuối mã sinh viên lẻ, với M = 16 số liền kề lẻ M = số liền kề chẵn - Điều chế M-DPSK số cuối mã sinh viên chẵn, với M = số liền kề lẻ M = số liền kề chẵn Sử dụng mơ hình mơ tương đương băng gốc, tín hiệu phát  biểu diễn sau:   dk kí hiệu (symbol) phức xác định từ chuỗi tin đầu vào kỹ thuật điều chế; Tsym chu kỳ symbol; f0 pha tín hiệu phát  p(t) xác định dạng xung phát, với: với Es lượng symbol 1.2 Yêu cầu: a Mô tả hệ thống mô sơ đồ khối xác định tham số hệ thống, bao gồm lọc sử dụng để có thu tối ưu  b Bằng việc sử dụng MATLAB, viết chương trình mơ hệ thống truyền dẫn số sử dụng kỹ thuật điều chế lựa chọn kênh AWGN với nguồn tín hiệu tín hiệu thu nhiệm vụ Ước tính xác suất lỗi mức tỉ số tín hiệu nhiễu SNR 2, 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 phổ tín hiệu điểm sau hệ thống: đầu điều chế, sau truyền qua kênh AWGN SNR = 5dB, sau xử lý khôi phục thu d So sánh file nhạc khôi phục sau truyền qua hệ thống mô mức SNR yêu cầu 2.Bài làm   2.1: Phương pháp thực mô a Sơ đồ khối tham số hệ thống   Sơ đồ điều chế 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: Mb/s - Chu kỳ tín hiệu - Chu kỳ bit Sơ đồ khối giải điều chế 16-QAM theo môn Kỹ thuật thơng tin vơ tuyến: 2.2Mã chương trình     2.2.1 Hàm 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 tin hieu'); xlabel('Frequency'); ylabel('Amplitude'); end 2.2.2 Hàm điều chế 16-QAM(mã sv 179) function [Sig] = Modulation16QAM(binary_data) M = 16; % Bac dieu che N = 9*10^6; % Toc 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 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 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 cua I (phan thuc) Q_Am = imag(QAM_Mod); % Gia tri bien 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 chom sau dieu che   scatterplot(QAM_Mod,1,0, 'or'); title('Bieu chom sau 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 giải điều chế 16-QAM function [binary_data] = baitaploncaub(Sig) % Ham giai dieu che IQ su dung M-QAM % Dau vao la song toi % Dau la day bit nhi phan M = 16; % Bac dieu che N = 9*10^6; % Toc 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 = []; for n = ss:ss:length(Sig)   t = Tsym/100:Tsym/100:Tsym; y1 = cos(2*pi*fc*t); % Thanh phan cung pha (I) y2 = sin(2*pi*fc*t); % Than phan vuong pha (Q) 10   m1 = y1.*Sig((n-(ss-1)):n); % Nhan voi phan trucgiao m2 = y2.*Sig((n-(ss-1)):n); z1 = trapz(t,m1); % Tinh tich phan 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 chom sau dieu che'); QAM_Demod = qamdemod(QAM_Demod,M); figure; % Ve Song I sau nhan truc giao subplot(2,1,1); plot(Demod_I_Sig,'linewidth',2); title(' Song I sau tach'); xlabel('n(discrete time)'); ylabel(' magnitude'); %Ve song Q sau nhan truc giao subplot(2,1,2); plot(Demod_Q_Sig,'linewidth',2); title(' Song Q sau tach '); xlabel('n(discrete time)'); ylabel(' magnitude'); bi_in = de2bi(QAM_Demod); binary_data = reshape(bi_in,[],1); end 2.2.4 Hàm gây nhiễu function [Sig_Noise] = AWGNChanel(Sig,SNRdB) % Day la ham AWGN % Tin hieu dau vào 11   % Sig– Tin hieu dau vào % SNRdB - Muc SNR dB % Sig_Noise – Tin hieu nhieu dau 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 vẽ biểu đồ chòm nhiễu function [] = StarError(Data) % Hàm ve bieu chom sau qua kenh AWGN M = 4; Data = reshape(Data,[],log2(M)); % chuyen ve ma tran x 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 chom cua tin hieu sau qua kenh AWGN'); end   2.2.6 Thực nhiệm vụ 12   2.3 Kết thu Biểu đồ chòm sau điều chế 13   Biểu đồ chòm sau điều chế 4-QAM 14   Dạng sóng sau điều chế 4-QAM Mật độ phổ tín hiệu phát sau điều chế 15   Mật độ phổ tín hiệu phát sau điều chế 16   Mật độ phổ tín hiệu sau nhiễu sóng I Q sau điều chế 17   18

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

w