Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
514,89 KB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG BÁO CÁO BÀI TẬP LỚN MÔN XỬ LÝ SỐ TÍN HIỆU Đề tài: Mã hóa, truyền giải mã tín hiệu âm thời gian thực Matlab Sinh viên thực hiện: Lê Văn Thuận 20092625 Hoàng Nam Phong 20092004 Lớp ĐTVT3 – K54 Mã lớp : 46340 Giảng viên hướng dẫn : ThS Trần Mạnh Hoàng GV Nghĩa Hà Nội, 11-2012 Mục lục PHẦN A :Mở đầu .3 PHẦN B: Nội dung .4 I Phần mềm Matlab môi trường Windows 1) Matlab 2) MATLAB System .4 3) Tổng quan môi trường làm việc Matlab II Nội dung tập lớn 1) Khối lượng tử hóa tín hiệu .7 2) Nén tín hiệu 3) Khối Integer to Bit Converter .10 4)Khối mã chập 10 5) Khối điều chế QPSK 12 6) Kênh truyền cộng nhiễu AWGN (ADDITIVE WHITE GAUSSIAN NOISE) 13 7) Khối giải điều chế QPSK .14 8) Khối giải mã mã chập 15 9) Khối giải mã Bit to Integer Converter 15 10) Khối giải mã lượng tử hóa DPCM .16 11) Khối giãn tín hiệu .16 12) Khảo sát tỷ lệ lỗi bit đường truyền 17 PHẦN C:KẾT LUẬN 20 PHẦN A :Mở đầuN A :Mở đầu đầuu Xử lý tín hiệu số (Digital Signal Processing -DSP) hay tổng quát hơn, xử lý tín hiệu rời rạc theo thời gian (Discrete-Time Signal Processing -DSP) môn học sở khôngthể thiếu cho ngành Điện tử - Viễn thông Tín hiệu liên tục theo thời gian (tín hiệu tương tự) xử lý cách hiệu theo qui trình: biến đổi tín hiệu tương tự thành tín hiệu số (biến đổi A/D), xử lý tín hiệu số (lọc, biến đổi, tách lấy thông tin, nén, lưu trữ, truyền, ) sau đó, cần, phục hồi lại thành tín hiệu tương tự (biến đổi D/A) để phục vụ cho mục đích cụ thể Các hệ thống xử lý tín hiệu số, hệ thống rời rạc, phần cứng hay phần mềm hay kết hợp hai Xứ lý tín hiệu số có nội dung rộng dựa sở toán học tương đối phức tạp Nó có nhiều ứng dụng đa dạng, nhiều lĩnh vực khác Nhưng ứng dụng lĩnh vực lại mang tính chun sâu Có thể nói, xử lý tín hiệu số ngày trở thành ngành khoa học môn học Sự phát triển của công nghệ vi điện tử máy tính với phát triển thuật tốn tính tốn nhanh làm phát triển mạnh mẽ ứng dụng XỬ LÝ SỐ TÍN HIỆU (Digital Signal Proccessing) Hiện nay, xử lý tín hiệu số trở thành ứng dụng cho kỹ thuật mạch tích hợp đại với chip lập trình tốc độ cao Trong lĩnh vực xử lý tín hiệu âm thanh,tiếng nói ứng dụng xử lý số tín hiệu rộng, có: nhận dạng tiếng nói, người nói; tổng hợp tiếng nói, biến văn thành tiếng nói; kỹ thuật âm số ;…Do nhóm em chọn đề tài 4: Mã hóa, truyền giải mã tín hiệu âm thời gian thực Matlab để thực tập lớn Nhóm em xin gửi lời cảm ơn đến thầy Trần Mạnh Hoàng Anh Nghĩa trực tiếp hướng dẫn, giúp đỡ chúng em hoàn thành báo cáo PHẦN A :Mở đầuN B: Nội dungi dung I Phầun mềm Matlab môi trường Windowsm Matlab môi trường Windowsng Windows 1) Matlab MATLAB cơng cụ tính tốn tốn học MATLAB sửdụng để tính tốn, cho phép vẽ biểu đồ, đồ thị theo nhiều cách khác Giống chương trình phần mềm, tạo, thực thi lưu dãy lệnh để máy tính chạy tự động Matlab cịn ngơn ngư lập trình cấp cao cho mục đích tính tốn kỹ thuật Chương trình tích hợp tính tốn, đồ họa lập trình mơi trường để sử dụng mà tất vấn đề lời giải biểu diễn dạng ghi toán học Matlab hệ thống tương tác mà tất phần tử liệu mảng không yêu cầu mặt kích thước Đây thuận lợi cho phép người sử dụng giải toán kỹ thuật, đặc biết với tín hiệu âm có tần số lấy mẫu lớn nên số mẫu cần xử lý lớn Tóm lại, mơi trường dùng để lập trình hay tính tốn, MATLAB thiết kế để làm việc với tập liệu đặc biệt chẳng hạn ma trận, vector, hình ảnh hay tệp âm 2) MATLAB System Matlab gồm thành phần là: Development Environment: Tập hợp tất công cụ tiện ích cho phép người dùng sử dụng hàm file Matlab Phần lớn công cụ giao tiếp người dùng bao gồm: Matlab Desktop Command Window, Command History, Edit and Debugger, Workspace, trình duyệt hỗ trợ sử dụng help The MATLAB Mathematical Function Library: Đây thư viện tập hợp giải thuật tính tốn tập hợp hàm như: sum,sin,cosin, số phức hàm phức tạp như: nghịch đảo ma trận, trị riêng vecto riêng ma trận, biến đổi Fourier rời rạc Lập trình mơi trường Matlab: Lập trình với Matlab Matlab ngơn ngữ lập trình cấp cao thực thi theo đoạn lệnh, hàm, cấu trúc liệu, cho phép xây dựng chương trình từ đơn giản đến phức tạp Graphics: Matlab mở rộng khả cho việc thể vector ma trận dạng đồ thị ký hiệu in ấn chúng Matlab cung cấp hàm nâng cao cho việc thể liệu 2,3 chiều, xử lý ảnh, âm thanh, chuyển động, đồ thị Ngồi Matlab cịn cung cấp cho người sử dụng hàm giao tiếp người dùng ứng dụng The Matlab Application program Interface(API): Đây thư viện cho phép người dùng tạo chương trình ngơn ngữ C Fortran tương tác với Matlab 3) Tổng quan môi trường làm việc Matlabng quan môi trường Windowsng làm việc Matlabc Matlaba Matlab Giao diện phần mềm Khởi động Matlab cách nháy đúp vào biểu tượng Matlab hình Muốn khỏi chương trình nhập lệnh exit Command Window chọn Exit từ Menu File Desktop Khi khởi động Matlab giao diện mở hình trên, giao diện chứa công cụ(giao tiếp với người dùng) để quản lý tập tin, biến ứng dụng phụ trợ khác Command Window Help Browser Current Directory Browser Command history WorkSpace Browser Editor/Debugger Prfiler II Nội dungi dung tập lớnp lớnn Đề tài: Mã hóa, truyền giải mã tín hiệu âm thời gian thực Matlab Sơ đồ khối trình thực hiện: Tổng quan: Do tín hiệu âm thu máy tính lấy mẫu với chu kỳ lấy mẫu cho trước nên ta bỏ qua khối lấy mẫu Tín hiệu sau lượng tử hóa số Index Quant_out Mã hóa Index mã hóa Integer to Bit Converter, sau cho bít nhị phân qua mã hóa mã chập (Convolutional Encoder) với tốc độ R = ½ nghĩa số bít gấp lần số bit đầu vào Tiếp tục điều chế QPSK tín hiệu trước đưa lên kênh truyền cộng nhiễu AWGN Channel Thực giả mã QPSK, mã chập, mã nhị phân lượng tử hóa ta tín hiệu tín hiệu có tín hiệu bên thu Sử dụng lệnh sau để đọc vào file âm wav: [filename,pathname]=uigetfile('*.wav'); [signal Srate nBits] = wavread([pathname,filename]); signal ma trận lưu liệu âm thanh; wav-file mono signal vector cột, cịn stereo ma trận có cột Srate tốc độ lấy mẫu file nBits số bit dùng để lưu mẫu liệu filename đưa vào file Test.wav kèm Khảo sát tín hiệu đưa vào: Mp = max(signal); bits = 8;%Dùng bit để mã hóa mẫu levels = 2^bits;%So mau bit mã hóa step_size = (2*Mp)/levels;%Bước nhảy cho khoảng codebook = [-Mp+step_size:step_size:Mp]; % Số đại diện cho khoảng phần %partition partition = [-Mp+2*step_size:step_size:Mp] %Chia tín hiệu thành 256 khoảng %Chia tín hiệu thành frame, frame có chứa 1024 mẫu frame = reshape(signal,1024,length(signal)/1024); %frame ma trận có 1024 hàng length(signal)/1024 cột k = length(signal)/1024; 1) Khối lượng tử hóa tín hiệui lượng tử hóa tín hiệung tử hóa tín hiệu hóa tín hiệc Matlabu Lượng tử hố q trình rời rạc hố tín hiệu mặt biên độ, cụ thể thay tất giá trị tín hiệu nằm khoảng xác định thành giá trị Miền giá trị tín hiệu chia thành số hữu hạn khoảng chia Nhưvậy, độ lớn tín hiệu sau lượng tử nhận số hữu hạn giá trị cho trước Tập hợp khoảng chia gọi phân hoạch tín hiệu (partition) Tập giá trị thay cho khoảng chia gọi mã (codebook) MATLAB biểu diễn phân hoạch tín hiệu vector mà phần tử điểm ranh giới hai khoảng chia liên tiếp Ví dụ, tín hiệu có miền xác định R, phân hoạch thành khoảng (-∞, 0], (0,2], (2,4] (4,+∞) biểu diễn phân hoạch vector: >> partition = [0,2,4]; Tương ứng với vector phân hoạch tín hiệu vector biểu diễn mã tín hiệu Các phần tử giá trị thay khoảng chia tương ứng phân hoạch Nếu ta thay giá trị khoảng (-∞, 0] -1, giá trị khoảng (0,2] 1, giá trị khoảng (2,4] giá trị khoảng (4, +∞] vector biểu diễn mã là: >> codebook = [-1,1,3,5]; Như đề cập, thông thường người ta phân hoạch miền xác định tín hiệu thành 2^v khoảng, sau khoảng tín hiệu lượng tử hố, sau mã hố từ mã nhị phân có chiều dài v bit Phương pháp lượng tử hoá gọi phương pháp điều mã xung (Pulse Code Modulation) Phương pháp khơng cần địi hỏi thơng tin tín hiệu thời điểm trước Trong thực tế, tín hiệu thường thay đổi chậm từ thời điểm lấy mẫu sang thời điểm lấy mẫu nên ta thực lượng tử mã hoá giá trị sai biệt thời điểm với thời điểm trước tốn giá trị so với mã hoá đầy đủ độ lớn tín hiệu Trên sở này, ta có phương pháp lượng tử hoá mới, gọi lượng tử hố tiên đốn, giá trịcủa tín hiệu thời điểm tính thơng qua số giá trị tín hiệu thời điểm khứ Tiêu biểu cho loại lượng tử hoá kỹ thuật điều mã xung vi sai (DPCM – Differential Pulse Code Modulation) Để thực mã hố DPCM, ta khơng phải xác định phân hoạch mã lượng tử mà phải xác định hàm dự đoán, để dự đoán giá trị tín hiệu thời điểm Thơng thường, người ta sử dụng hàm dự đốn tuyến tính: y(k) = p(1)x(k-1) + p(2)x(k-2) + + p(m-1)x(k-m+1) + p(m)x(k-m) (14.1) x tín hiệu gốc cịn y(k) giá trịdự đoán x(k); p vector gồm số thực Thay lượng tử hố tín hiệu x, ta thực lượng tử hố tín hiệu sai số dự đoán y – x m gọi bậc dự đoán Trường hợp đặc biệt m = gọi điều chế delta Trong MATLAB Communications Toolbox, hàm dự đoán sửdụng hàm dự đốn tuyến tính biểu diễn vector: >> predictor = [0, p(1), p(2), p(3), , p(m-1), p(m)] Sử dụng hàm dpcmenco thực trình mã hóa với quant vector chứa giá trị lượng tử index vector chứa số tương ứng mã Code Matlab: function [index,sig_quants] = DPCM(sig_comp,bits) % Luong tu hoa DPCM voi tin hieu sig_comp sau nen % bits la so bit bieu dien mau %Su dung ham du doan la y(k) = x(k-1) predictor = [0 1];% Ham du doan delta bac [index,sig_quants] = dpcmenco(sig_comp,codebook,partition,predictor); end 2) Nén tín hiệc Matlabu Trong ứng dụng xử lý tín hiệu thoại (speech processing), trước lượng tử hoá, người ta thường thực nén (compress) tín hiệu theo hàm logarithm, mục đích để tín hiệu mức biên độ nhỏ thay đổi nhiều mức so với giá trị biên độ lớn, sai số lượng tử tương đối mức biên độ nhỏ lớn không chênh lệch nhiều trường hợp khơng nén Để khơi phục lại tín hiệu ban đầu sau giải mã, ta phải đưa qua giãn tín hiệu (expander) có đặc tuyến truyền đạt nghịch đảo đặc tuyến nén (compressor) Sự kết hợp nén giãn tín hiệu gọi chung nén giãn tín hiệu (compander) Hai luật nén giãn thường sửdụng xử lý tín hiệu thoại luật μ dùng Bắc Mỹ luật A dùng châu Âu: Luật µ : y ymax ln[1 ( x / xmax )] sgn x ln(1 ) Theo chuẩn ởBắc Mỹ, giá trịcủa μ 255 Max x Max y giá trị dương lớn x y A( x / xmax ) sngx ymax ln A y y ln[ A( x / xmax )] sgn x max ln A Luật A: x 0 xmax A x 1 A x max với A hắng số Giá trịchuẩn A 87.6 MATLAB cung cấp hàm compand để thực nén giãn tín hiệu Hàm hỗ trợ hai luật nén giãn A μ nói >> out = compand(in, param, v, method) In tín hiệu vào cịn out tín hiệu v biên độ đỉnh tín hiệu vào param thơng số luật nén giãn (hằng sốA μ) method nhận giá trị sau: Code Matlab: function sig_comp = compressor(sig_t) %Nen tin hieu truoc dua vao khoi luong tu hoá %sig_t la tin hieu dua vao %Su dung nen theo luat A voi he so A = 86.7 A = 87.6; V = max(sig_t); sig_comp = compand(sig_t,A,V,'A/compressor'); end 3) Khối lượng tử hóa tín hiệui Integer to Bit Converter Chuyển đổi giá trị index từ 0- 255 thành số nhị phân bit Code Matlab: function sig_enc = Encoder(index) %Bien doi tu ma thap phan sang nhi phan k bit ysym = de2bi(reshape(index,'left-msb');%Bien doi chuoi thap phan %thanh chuoi bit nhi phan sig_enc = reshape(ysym.',prod(size(ysym)),1); end 4)Khối lượng tử hóa tín hiệui mã chập lớnp Mã chập phương pháp mã hoá sửa sai quan trọng Khác với mã khối, mã chập loại mã có nhớ Mặc dù, mã hố chập nhận thơng điệp có số lượng ký hiệu xác định tạo 10 từ mã có số ký hiệu xác định, từ mã tạo thời điểm không phụ thuộc vào ký hiệu thông điệp mà cịn phụthuộc vào ký hiệu thơng điệp mã hố trước Mã chập mã tuyến tính có ma trận sinh có cấu trúc cho phép mã hóa xem phép lọc Mã chập sử dụng rộng rãi thực tế mã hóa xem tập hợp lọc số tuyến tính với mã đầu lọc ghép xen kẽ Bộ mã hóa cho mã chập thường coi tập hợp lọc số Ví dụ: Dòng mk qua lọc dùng chung phần tử nhớ tạo dòng C(1)k = mk + mk-1 + mk-2 C(2)k = mk + mk-2 Vì bit vào lại có hai bit mã hóa đưa ra, kết ta mã có tốc độ R=1/2 Mã chập tạo cách cho chuỗi thông tin truyền qua hệ thống c c ghi dịch tuyến tính có số trạng thái hữu hạn Cho số lượng ghi dịch m (cũng ký hiệu N), mã có k bit ngõ vào đầu mã chập có n bit ngõ ra(n hàm đại số tuyến tính n ngõ cộng modulo) Tốc độ mã R = k/n, s ố ô nhớ ghi dịch m×k tham số L gọi chiều dài ràng buộc (Constraint length) mã chập (với L=k(m-1)) Code Matlab cho việc mã hóa mã chập: function sig_conv = EnConv(sig_bit) %Ham ma chap voi toc R=1/2 %Cac da thuc sinh la G2=5, G3=7 %Chieu dai rang buoc L=3 %inpbits la tin hieu vào L=3; G =[5 7]; trellis = poly2trellis (L,G); sig_conv = convenc(sig_bit,trellis); end 11 5) Khối lượng tử hóa tín hiệui điềm Matlab mơi trường Windowsu chế QPSK QPSK Điều chế tín hiệu q trình biến đổi hay nhiều thơng số tín hiệu tuần hồn theo thay đổi tín hiệu mang thơng tin cần truyền xa Tín hiệu tuần hồn gọi sóng mang Tín hiệu mang thơng tin gọi tín hiệu điều chế Ở đầu thu giải điều chế dựa vào thay đổi thơng số sóng mang để tái tạo lại tín hiệu mang thơng tin ban đầu Các thơng số sóng mang dùng q trình điều chế biên độ, pha, tần số Trong điều chế số, sóng mang tương tự biến đổi theo chuỗi bit có chiều dài cố định thay đổi Đây coi dạng biến đổi tương tự-số Hình dạng sóng mang lấy từ tập hợp hữu hạn ký hiệu QPSK viết tắt từ Quadrature Phase Shift Keying, gọi điều chế pha cầu phương (điều chế pha vng góc) QPSK kỹ thuật điều chế tín hiệu số, mã hóa bit thành symbol Sơ đồ nguyên lý điều chế QPSK sử dụng pha lệch 900 Tín hiệu băng gốc đưa vào biến đổi nối nối tiếp thành song song Đầu luồng số liệu có tốc độ bit giảm nửa, đồng thời biến đổi tín hiệu đơn cực thành tín hiệu 1 Hai sóng mang đưa tới trộn làm lệch pha 900 Tổng hợp tín hiệu đầu trộn ta tín hiệu QPSK Trong Matlab sử dụng hàm pskmod với số mức điều chế để thực điều chế QPSK Trước điều chế phải đưa bit thành ký tự từ đến Code Matlab cho hàm QPSK function sig_mod = QPSK(sig_conv) %Dieu che QPSK cho tin hieu da dc ma chap %Chuyen doi bit cac ky hieu 12 k = 2;%2bit/1ky tu x = bi2de(reshape(sig_conv,k,length(sig_conv)/k).','left-msb'); sig_mod = pskmod(x,4); end 6) Kênh truyềm Matlab môi trường Windowsn cội dungng nhiễu AWGN (ADDITIVE WHITE GAUSSIAN NOISEu AWGN (ADDITIVE WHITE GAUSSIAN NOISE ) Với kênh thơng tin bản, tín hiệu tin tức sau điều chế gửi kênh truyền Trong thực tế tín hiệu truyền kênh truyền chịu tác động yếu tố kênh truyền làm cho tín hiệu thu khơng cịn giống hồn tồn tín hiệu phát Tuỳ theo dạng mơi trường truyền khác hệ thống thông tin khác nhau, tác động nói có đặc trưng khác MATLAB cho phép người sử dụng mơ ba loại kênh truyền bản, là: kênh truyền với nhiễu AWGN, kênh truyền fading kênh truyền đối xứng nhị phân Kênh truyền AWGN dạng kênh truyền có nhiễu cộng, trắng phân bố theo hàm Gauss Như vậy, tín hiệu truyền qua kênh truyền phải thêm vào tín hiệu ngẫu nhiên không mong muốn phân bố theo hàm Gauss: p ( x) e 2 ( x )2 2 Kênh truyền AWGN MATLAB mô hàm awgn Hàm cộng nhiễu Gauss vào tín hiệu cho trước (có thể tín hiệu thực hay phức), mức cơng suất nhiễu người sử dụng quy định thông qua hai thơng số nhập: - Mức cơng suất tín hiệu phát (đơn vịmặc định dBW, có thểdùng đơn vị W) - TỷsốSNR (đơn vị mặc định dB) Cú pháp hàm awgn sau: >> awgn(X,SNR,SigPower,State,PowerType) Trong đó: X tín hiệu phát SNR tỷsốcơng suất tín hiệu nhiễu (tính dB) SigPower cho biết cơng suất tín hiệu vào (dBW), SigPower = ‘measured’thì MATLAB đo cơng suất tín hiệu phát trước cộng nhiễu State cho biết trạng thái phát tín hiệu ngẫu nhiên PowerType đơn vịcủa SNRvà SigPowerlà đơn vịdecibel (‘dB’) hay đơn vị tuyến tính(‘linear’) 13 Ba thông số cuối không thiết phải đưa vào, trường hợp khơng có thơng số xem cơng suất tín hiệu phát dBW đơn vị SNR dB Code Matlab cho kênh AWGN: function sig_noise = awgnchan(sig_mod) %Cho tin hieu sau da dieu che vao kenh truyen cong nhieu AWGN %Kenh truyen AWGN la kenh truyen nhieu trang va phan bo Gauss %Gia su kenh truyen co nang luong bit tren mat cong suat nhieu Eb/N0 = %9dB M = 4; %Dieu che QPSK k = log2 (M); nsamp = 1; EbNo = 9;%Don vi dB SNR = EbNo + 10*log10 (k) - 10*log10 (nsamp); sig_noise = awgn(sig_mod,SNR,'measured'); end 7) Khối lượng tử hóa tín hiệui giải điều chế QPSKi điềm Matlab môi trường Windowsu chế QPSK QPSK Sơ đồ nguyên lý: Hai sóng mang chuẩn vào trộn sau qua đồng với tín hiệu vào qua lọc thông thấp thu tín hiệu 1 Qua mạch logic tín hiệu đơn cực Trong Matlab, để giải điều chế QPSK dùng hàm Z = pskdemod(Y,M,PHASE) với M = số mức điều chế, PHASE pha ban đầu Code Matlab cho hàm giải điều chế: 14 function sig_demod = DeQPSK(sig_noise) %Giai ma QPSK tin hieu sau cong nhieu %Su dung ham pskdemod sig_demod = pskdemod(sig_noise,4); end 8) Khối lượng tử hóa tín hiệui giải điều chế QPSKi mã mã chập lớnp Thuật toán Viterbi giải pháp sử dụng phổ biến để giải mã chuỗi bit mã hóa mã hóa mã chập Thuật tốn Viterbi dùng để giải mã chuỗi bit mà mã hóa mã chập Tín hiệu sau mã hóa qua kênh truyền sau đến thu, tin hiệu lượng tử hóa trước sử dụng thuật toán viterbit để giải mã Sử dụng định cứng với hàm videc để giải mã len = 2;%Chieu dai traceback để giải mã decbits = vitdec(encbits,trellis,len,’trunc’,’hard’,3); Code Matlab cho hàm giải mã: function sig_deconv = DeConv(sig_demod) %DeConv khoi giai ma ma chap voi toc R = 1/2 %Su dung hàm vitdec voi quyet dinh cung %Dau vao la tin hieu sau giai dieu che QPSK z = de2bi(sig_demod,'left-msb'); %Chuyen doi ky tu cac bit nhi phan z = reshape(z.',prod(size(z)),1); %Chuyen doi ma tran vecto L = 3; G = [5 7]; trellis = poly2trellis(L,G); len = 2; sig_deconv = vitdec(z,trellis,len,'trunc','hard'); end 9) Khối lượng tử hóa tín hiệui giải điều chế QPSKi mã Bit to Integer Converter Khối chuyển đổi bit nhị phân thành số index có giá trị từ – 255 Code Matlab cho hàm này: 15 function index = Decoder(sig_deconv) %Bien doi chuoi nhi phan so thuc %8 bit la ky tu z = reshape(sig_deconv,8,length(sig_deconv)/8); z = z’; index = bi2de(z,'left-msb'); end 10) Khối lượng tử hóa tín hiệui giải điều chế QPSKi mã lượng tử hóa tín hiệung tử hóa tín hiệu hóa DPCM Để thực giải mã hoá DPCM, xác định phân hoạch với giá trị số index đầu vào hàm dự đoán, để dự đốn giá trị tín hiệu thời điểm Chúng ta sử dụng lại hàm dự đốn dùng phần mã hóa là: y = x(k-1) Trường hợp đặc biệt m = gọi điều chế delta predictor = [0 1]; % Hàm dự đoán y(k)=x(k-1) [sig, quant] = dpcmdeco(index, codebook, predictor); sig tín hiệu tin tức khơi phục cịn quant tín hiệu sai số dự đốn Code Matlab cho hàm: function [sig,quants] = DeDPCM(index,codebook) %Ham giai ma luong tu hoa DPCM %Hàm du đoán y(k)=x(k-1) predictor = [0 1]; [sig,quants] = dpcmdeco(index, codebook, predictor); end 11) Khối lượng tử hóa tín hiệui giãn tín hiệc Matlabu Tín hiệu trước lượng tử hóa nén theo luật A, nên sau giải mã lượng tử hóa ta giãn tín hiệu để tín hiệu thu A = 87.6; %Thơng số cho giãn tín hiệu theo luật A sig_r = compand(sig_quant,Mu,max(sig_quant),'mu/expander'); sig_quant tín hiệu sau giải mã lượng tử hóa DPCM Code Matlab: 16 function [sig_r] = expander(sig_quant) %Ham giai nen theo luat A A = 87.6; %Thong so A cua bo giai nen sig_r = compand(sig_quant,A,max(sig_quant),'A/expander'); end 12) Khải điều chế QPSKo sát tỷ lệ lỗi bit đường truyền lệc Matlab lỗi bit đường truyềni bit đường Windowsng truyềm Matlab môi trường Windowsn Sử dụng hàm bitter Matlab so sánh hai tập liệu nhị phân cho trước trả số bit lỗi tỷ lệ lỗi bit [number_of_errors,bit_error_rate] = biterr(sig_enc,sig_deconv); Phương sai: dictor_r = sum((signal_r – signal).^2)/length(signal_r); Với signal_r tín hiệu thu bên thu Code Matlab cho tồn chương trình: >> %Đọc vào tín hiệu âm wav lấy mẫu 16 bit với tần số lấy mẫu 8000Hz >> [filename,pathname]=uigetfile('*.wav'); >> [signal Srate nBits] = wavread([pathname,filename]); >> %File đọc vào BTL.wav >> %Khảo sát tín hiệu signal >>l = length(signal); >>k = mod(l,1024);%Đảm bảo độ dài signal bội 1024 >>signal = signal([1:l-k],1);% Loại bỏ k phần tử dư >> Mp = max(signal); >> bits = 8;%Dùng bit để mã hóa mẫu >> levels = 2^bits;%So mau bit mã hóa >> step_size = (2*Mp)/levels;%Bước nhảy cho khoảng >> codebook = [-Mp+step_size:step_size:Mp]; % Số đại diện cho khoảng phần >> %partition 17 >> partition = [-Mp+2*step_size:step_size:Mp] %Chia tín hiệu thành 256 khoảng >> %Chia tín hiệu thành frame, frame có chứa 1024 mẫu >> frame = reshape(signal,1024,length(signal)/1024); >> %frame ma trận có 1024 hàng length(signal)/1024 cột >> k = length(signal)/1024; >> %Thuc hiên LTH,Nén ,mã hóa, điều chế , truyền, giải điều chế >> %từng frame với frame(:,j) lấy tất phần tử cột thứ j >> %Vòng lặp >> for i = 1:k sig_t = frame(:,i);%Chọn frame thứ i sig_comp = compressor(sig_t);%Thuc hien nen [index,sig_quant] = DPCM(sig_comp,codebook,partition); sig_enc = Encoder(index);%Chuyen số index sang chuỗi số nhị phân sig_conv = EnConv(sig_enc);%Ma chap sig_mod = QPSK(sig_conv);%Điều chế QPSK với pha sig_noise = awgnchan(sig_mod);%Đưa tín hiệu điều chế lên kênh truyền AWGN sig_demod = DeQPSK(sig_noise);%Giai điều chế QPSK sig_deconv = DeConv(sig_demod);%Giải mã mã chập index_out = Decoder(sig_deconv);%Chỉ số đầu sig_dequant = DeDPCM(index_out,codebook);% giải mã lượng tử hóa sig_r = expander(sig_dequant);% Giải nén %sig_r tín hiệu đầu ứng vào frame thứ i đầu vào %Tính tỉ lệ lỗi bit frame[number_of_errors,bit_error_rate] = biterr(sig_conv,decodmsg) [number_of_errors,bit_error_rate] = biterr(sig_enc,sig_deconv); 18 N_er(i) = number_of_errors; B_er(i) = bit_error_rate; %Phương sai frame sig_r = sig_r’; dictor(1,i) = sum((sig_r – sig_t).^2)/length(sig_r); signal_re (:,i) = sig_r;%tín hiệu thu đưa vào cột ma trận signal_r end >>%Kết thúc vịng lặp Tín hiệu nhân bên thu nằm ma trận signal_r >>signal_r = reshape(signal_re,prod(size(signal_re)),1);%Chuyển ma trận ma trận cột >>%Vẽ N_er B_er >>subplot(2,1,2);plot(B_er);title(‘Ty le loi bit tren moi frame’);xlabel(‘frame’);ylabel(‘Ty le bit loi’); >>sound(signal_r);%Phát tín hiệu thu Kết quả: Khi tín hiệu âm đưa vào file Test.wav 19 Source code lưu Script BTLFull.m Chỉ cần gọi lệnh BTLFull để chạy chương trình Nhận xét: Độ dài tín hiệu đầu vào lớn thời gian xử lý lâu Tỷ lệ lỗi bit tuân theo phân bố Gauss, với tỷ số Eb/No nhỏ tỷ lệ lỗi bit lớn Với Eb/No < 10dB nên sử dụng phương pháp điều chế BPSK, 10 < Eb/No < 17 sử dụng điều chế QPSK Tín hiệu thu gần giống với tín hiệu phát có nhiễu không đáng kể tỷ số Eb/No lớn PHẦN A :Mở đầuN C:KẾT LUẬNT LUẬNN Công việc lĩnh vực xử lý âm lớn nên báo cáo khơng thể tránh thiếu sót Do nhóm em mong nhận góp ý thầy Hoàng anh Nghĩa để chúng em hoàn thiện tập lớn Một lần chúng em xin cảm ơn 20