BÁO CÁO BÀI TẬP LỚN MÔN THÔNG TIN VÔ TUYẾN ĐỀ TÀI: TRUYỀN DỮ LIỆU BẰNG ÂM THANH I. MỤC LỤC 1 II. DANH MỤC HÌNH ẢNH 2 III. LỜI NÓI ĐẦU 3 IV. NỘI DUNG 3 4.1. Đặt vấn đề 3 4.2. Sơ đồ khối hệ thống 3 4.3. Các khối trong chương trình gửi 4 4.3.1. Khối nhập liệu 4 4.3.2. Khối mã hóa 4 4.3.3. Khối điều chế 6 4.4. Các khối trong chương trình nhận 8 4.4.1. Thu âm thanh 8 4.4.2. Lọc thông dải 9 4.4.3. Giải mã chập bằng Viterbi 11 4.4.4. Kết quả 12 V. Kết luận 13 VI. Tài liệu tham khảo 13
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 THÔNG TIN VÔ TUYẾN ĐỀ TÀI: TRUYỀN DỮ LIỆU BẰNG ÂM THANH Sinh viên thực hiện: PHẠM ĐÌNH TRUNG20114640 NGUYỄN VĂN TUYẾN2011 Giáo viên hướng dẫn: NGUYỄN QUỐC KHƯƠNG Hà Nội, 05-2016 I MỤC LỤC ĐỀ TÀI: TRUYỀN DỮ LIỆU BẰNG ÂM THANH I MỤC LỤC II DANH MỤC HÌNH ẢNH III LỜI NÓI ĐẦU IV NỘI DUNG 4.1 Đặt vấn đề 4.2 Sơ đồ khối hệ thống 4.3 Các khối chương trình gửi 4.3.1 Khối nhập liệu 4.3.2 Khối mã hóa 4.3.3 Khối điều chế .6 4.4 Các khối chương trình nhận 4.4.1 Thu âm .8 4.4.2 Lọc thông dải .9 4.4.3 Giải mã chập Viterbi .11 4.4.4 Kết .12 V VI Kết luận .13 Tài liệu tham khảo 13 II Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình DANH MỤC HÌNH ẢNH Giao diện phần mềm gửi Code đoạn nhận liệu từ người dùng Code chuyển xâu ký tự thành chuỗi bit 4 Mô tả tạo mã 5 Code tạo mã chập từ tin Chuỗi bit đầu vào mã hóa Chuỗi bit đầu sau mã hóa Các thông số âm điều chế Điều chế chuỗi bit thành âm 10 Đồ thị giá trị tín hiệu điều chế 11 Chuyển tín hiệu điều chế thành file âm 12 Đoạn code thu âm vào mảng để giải mã 13 Lọc thông dải 14 Giá trị x1- đầu lọc thông dải BP1 10 15 Tín hiệu sau lọc thông dải (xanh) sau biến đổi Hilbert (đỏ) 10 16 Lượng tử hóa tín hiệu 10 17 Tín hiệu trước (đỏ) sau lượng tử hóa (xanh) 11 18 Xác định đoạn chứa liệu cắt khỏi bit đồng 11 19 Giải mã Viterbi chuyển thành xâu ký tự 11 20 Giao diện gửi .12 21 Giao diện nhận 12 III LỜI NÓI ĐẦU Lời chúng em xin gửi lời cảm ơn đến thầy Nguyễn Quốc Khương tiết học bổ ích thú vị Thầy tạo cảm hứng nghiên cứu khoa học cho học trò chúng em Cách mà thầy truyền đạt khiến kiến thức chúng em tiếp thu nhanh từ ứng dụng vào việc nghiên cứu khoa học Cá nhân nhóm chúng em cho đề tài “Truyền thông âm thanh” mà thầy đưa thử thách không phần thú vị Bình thường, người ta nghĩ liệu truyền theo có dây không dây sử dụng song điện từ, đó, đề tài thầy tạo khác biệt Trong tiết học lớp, thầy khéo léo lồng kỹ sử dụng công cụ vào học, việc gợi mở nhiều cho công tác nghiên cứu chúng em Trong báo cáo chúng em tập trung vào việc sử dụng công cụ Matlab để thực công việc đề tài IV NỘI DUNG 4.1 Đặt vấn đề Trong thông tin vô tuyến, mã hóa điều chế bước bắt buộc để truyền thông tin Trong tập lớn này, ứng dụng mã chập điều chế FSK, chúng em thực hệ thống gồm phần mềm, cho phép truyền gửi thông tin máy tính thông qua card âm 4.2 Sơ đồ khối hệ thống NHẬP DỮ LIỆU MÃ HÓA THÀNH CHUỖI BIT MÃ HÓA (MÃ CHẬP) ĐIỀU CHẾ FSK KÊN H TRU YỀN XUẤT DỮ LIỆU GIẢI MÃ BIT THÀNH KÝ TỰ GIẢI MÃ VITERBI GIẢI ĐIỀU CHẾ FSK Dữ liệu đầu vào chuỗi ký tự nhập từ bàn phím sau ký tự chuyển thành byte (một chuỗi bit) Chuỗi bit sau mã hóa mã chập, điều chế FSK thành âm Bên thu, máy thu thu âm thanh, đưa qua giải điều chế FSK, chuỗi từ mã trước điều chế Sau qua giải mã viterbi, từ chuỗi từ mã này, ta thu chuỗi bit ban đầu, sau tách thành byte chuyển ngược lại thành liệu ban đầu 4.3 Các khối chương trình gửi 4.3.1 Khối nhập liệu Sử dụng textInput, người dùng gõ vào chuỗi ký tự cần gửi Khi bấm vào nút “Tạo file âm thanh”, chương trình chạy thực thuật toán mã hóa, điều chế, sau hiển thị lên hình Hình Giao diện phần mềm gửi Hình Code đoạn nhận liệu từ người dùng 4.3.2 Khối mã hóa Sau nhận liệu, phần mềm chuyển chuỗi nhập vào từ dạng String thành chuỗi bit với lệnh dec2bin(inp) –‘0’: chuyển từ chuỗi byte sang chuỗi bit dạng string, sau trừ phần tử ‘0’ (số tương ứng với kí tự dạng byte theo bảng mã ASCII), mảng chứa bit chuỗi nhập vào dạng byte reshape(dec2bin(inp) –‘0’, 1, []): xếp chuỗi bit vào mảng chiều Hình Code chuyển xâu ký tự thành chuỗi bit Sau có chuỗi bit, ta sử dụng mã chập để mã hóa liệu 4.3.2.1 Mã chập Mã chập phương pháp mã hóa sửa sai xây dựng từ 1955 Tuy nhiên mã chập ứng dụng nhiều từ Viterbi đưa phương pháp giải mã mang tên ông năm 1967 Nguyên lý mã chập giải thích đơn giản chập dòng bit đầu vào với đáp ứng xung tạo mã Hình Mô tả tạo mã Hình cho ta thấy tạo mã đơn giản (lấy từ tài liệu tham khảo matlab), bit vào, mã hóa thành bit đầu ra, từ mã có độ dài lớn tin Trên hình cho ta thấy ví dụ công thức mã chập, đầu có giá trị Y01 = x0+x-1*g11 Y02 = x0+x-1*g12+x-2*g22 Tức bit mã hóa đầu không chứa thông tin bit đầu vào mà chưa thông tin bit đầu vào mã hóa trước Đối với tạo mã, có thông số quan trọng: - L: vector có số phần tử số D-FF có tạo mã, phần tử vector thể chiều dài ràng buộc bộ, số bit đầu vào nằm tạo mã tạo mã hoạt động (bằng số D-FF công thêm 1), ví dụ với hình - G: ma trận đa thức sinh, G có phần tử tạo mã có cộng thêm đầu Ví dụ ma trận G = [5 7] sử dụng chương trình vector có Trong tập lớn này, code em sử dụng để thực mã chập sau Hình Code tạo mã chập từ tin Ở ta có hai hàm thực công việc mã hóa poly2trellis(ContrainLength, GenerateMatrix) convenc(signal, trellis) Hàm poly2trellis(ContrainLength, GenerateMatrix) thực việc vẽ máy trạng thái chuyển thành sơ đồ lưới mắt cáo cho tạo mã sử dụng đầu vào L G Hàm convenc(signal, trellis) tiến hành mã hóa chuỗi bit đầu vào sử dụng sơ đồ lưới mắt cáo vừa tạo Đầu tín hiệu mã hóa Hình Chuỗi bit đầu vào mã hóa Hình Chuỗi bit đầu sau mã hóa 4.3.3 Khối điều chế Mục tiêu khối điều chế từ chuỗi bit nhận từ mã chập, chuyển thành file âm để chuyển sang máy nhận Hình Các thông số âm điều chế Để thực điều này, tập lớn em sử dụng điều chế FSK (frequency shift keying) Các thông số hình có ý nghĩa sau vbit: Tốc đột truyền 100bit/s f1 = 1000: bit điều chế thành sóng sin 1000Hz f2= 3000: Bit điều chế thành sóng sin 3000Hz FS = 10000: Tần số mẫu file xuất 10000Hz Các bước chương trình điều chế: Hình Điều chế chuỗi bit thành âm - Bước 1: chèn chuỗi bit đồng vào đầu cuối chuỗi bit cần gửi Bước 2: nhân chuỗi bit với sóng mang Bước 3: cộng sóng 1000Hz 3000Hz thành sóng hoàn chỉnh Chi tiết: Chèn bit đồng bộ: vừa cung cấp tín hiệu lề để tránh phần liệu hai đầu tin, vừa cung cấp tín hiệu để biết thời điểm bắt đầu tin Nhân chuỗi bit với sóng mang: s giá trị tức thời sóng mang tần số 1000Hz c giá trị tức thời sóng mang tần số 3000Hz Tại thời điểm a, bit truyền (bk(a)) đánh giá giá trị hay 1, R=1, I =0 ngược lại AR AI hai mảng chứa giá trị R I theo thời gian carrierI carrierR hai mảng chứa giá trị sóng sin với tần số 3000Hz 1000Hz theo thời gian Đem nhân AR carrierR sóng ASK1 có tần số 1000Hz, bật tắt theo bit chuỗi liệu, tương tự ASK2 có tần số 3000Hz bật tắt theo bit chuỗi liệu Cộng sóng trên, mảng chứa dãy tín hiệu âm đầy đủ (ký hiệu fsk1) Hình 10 Đồ thị giá trị tín hiệu điều chế Hình cho thấy giá trị tín hiệu điều chế, bit điều chế vào sóng mang tần số 3000Hz nên có đồ thị dày hẳn sóng bit tạo thành từ sóng 1000Hz Cuối cùng, sau điều chế FSK, tín hiệu chuyển thành file âm định dạng WAV, dùng lệnh sau Hình 11 Chuyển tín hiệu điều chế thành file âm Trong đó: 4.4 fsk1 mảng giá trị tín hiệu điều chế FS tần số lấy mẫu file âm Các khối chương trình nhận 4.4.1 Thu âm Hình 12 Đoạn code thu âm vào mảng để giải mã Để thu âm thanh, tạo đối tượng thu âm audiorecorder(FS, 16, 1,1) có nghĩa thu âm với tần số lấy mẫu FS (10000Hz) mẫu có độ sâu 16bit thu mono (1 kênh) thiết bị thu có ID = Sau để bắt đầu thu âm, dùng lệnh recordblocking(recFSK, 8) có nghĩa thu âm đối tượng recFSK thu âm 8s Chuyển âm thu thành mảng, dùng hàm getaudiodata(recFSK) 4.4.2 Lọc thông dải Hình 13 Lọc thông dải Từ âm biến thành liệu, ta cần lọc âm tần số 1000Hz 3000Hz để biến thành chuỗi bit, để làm vậy, em sử dụng lọc thông dải Phân tích code hình 11, ta có - BP1 lọc tần số 900÷1100Hz - BP2 lọc tần số 2700÷3300Hz Sử dụng lọc BP1 BP2, từ tín hiệu ban đầu, ta tách chuỗi giá trị x1 x2 ứng với tần số lọc Hình 14 Giá trị x1- đầu lọc thông dải BP1 Từ chuỗi giá trị này, sử dụng biến đổi Hilbert lấy module số phức thu được, ta có đường bao tín hiệu Hình 15 Tín hiệu sau lọc thông dải (xanh) sau biến đổi Hilbert (đỏ) Sau có đường bao, cần phải lượng tử hóa tín hiệu để biến thành chuỗi bit Ta sử dụng code hình Hình 16 Lượng tử hóa tín hiệu Mảng tên envy1 mảng chứa giá trị đường bao màu đỏ hình 13 Với phần tử mảng này, ta đưa mức lượng tử ứng với bit 1, phân biệt với giá trị ½ giá trị tối đa envy1 Sau lượng tử hóa envy1, ta có chuỗi bit FSK1 Hình 17 Tín hiệu trước (đỏ) sau lượng tử hóa (xanh) Đã thu chuỗi bit, để xác định đoạn chứa liệu, ta dựa vào chuỗi bit đồng Hình 18 Xác định đoạn chứa liệu cắt khỏi bit đồng 4.4.3 Giải mã chập Viterbi Có chuỗi bit mã hóa chập, ta sử dụng hàm giải mã Viterbi để tìm lại liệu ban đầu Hình 19 Giải mã Viterbi chuyển thành xâu ký tự Ở đây, thông số đặt tạo mã đặt - L=3 - G = [5, 7] Đem chuỗi bit thu xếp vào mảng chiều lệnh reshape() Giải mã chập lệnh vitdec(sig_conv,trellis,len,'trunc','hard') Trong đó: sig_conv mảng chứa chuỗi bit cần giải mã - trellis lưới mắt cáo mã chập - - len độ sâu dò ngược giải mã, L =3 - tạo mã bắt đầu với giá trị toàn rỗng, nên sử dụng chế độ trunc cho giải mã mã gửi dạng nhị phân nên dùng chế độ hard để giải mã trả nhị phân Để chuyển từ chuỗi bit thành xâu ký tự, sử dụng hàm outp=char(bin2dec(num2str(reshape(sig_out,[],7)))') 4.4.4 Kết Hình 20 Giao diện gửi Hình 21 Giao diện nhận V Kết luận Thông qua tập lớn này, chúng em hiểu trình truyền tín hiệu thông tin vô tuyến, bước mã hóa, giải mã, điều chế, giải điều chế thành thạo với phần mềm matlab Chúng em xin cảm ơn thầy Nguyễn Quốc Khương giúp đỡ chúng em trình hoàn thành báo cáo tập lớn VI Tài liệu tham khảo: [1] TS Phạm Hồng Liên, Đặng Ngọc Khoa, Trần Thanh Phương , Matlab ứng dụng viễn thông 11/2005 [2] Nguyễn Quốc Trung, Xử lí tín hiệu lọc số [3] Quách Ngọc Tuấn, Xử lí tín hiệu số [3] Cheng-Xiang Wang, PGS.TS Nguyễn Văn Đức, Các tập Matlab thông tin vô tuyến [...]... Hilbert và lấy module của các số phức thu được, ta có được đường bao của tín hiệu trên Hình 15 Tín hiệu sau lọc thông dải (xanh) và sau biến đổi Hilbert (đỏ) Sau khi có được đường bao, cần phải lượng tử hóa tín hiệu để biến thành chuỗi bit Ta sử dụng code như trong hình Hình 16 Lượng tử hóa tín hiệu Mảng tên envy1 là mảng chứa giá trị của đường bao màu đỏ trên hình 13 Với các phần tử trong mảng này, ta đưa... outp=char(bin2dec(num2str(reshape(sig_out,[],7)))') 4.4.4 Kết quả Hình 20 Giao diện gửi Hình 21 Giao diện nhận V Kết luận Thông qua bài tập lớn này, chúng em hiểu hơn về quá trình truyền tín hiệu trong thông tin vô tuyến, các bước mã hóa, giải mã, điều chế, giải điều chế và thành thạo hơn với phần mềm matlab Chúng em xin cảm ơn thầy Nguyễn Quốc Khương đã giúp đỡ chúng em trong quá trình hoàn thành báo cáo... Matlab và ứng dụng trong viễn thông 11/2005 [2] Nguyễn Quốc Trung, Xử lí tín hiệu và lọc số [3] Quách Ngọc Tuấn, Xử lí tín hiệu số [3] Cheng-Xiang Wang, PGS.TS Nguyễn Văn Đức, Các bài tập Matlab về thông tin vô tuyến