Thiết kế modul mã hoá và giải mã mã chập
1 LỜI MỞ ĐẦU Mã hoá và giải mã đã xuất hiện từ rất sớm đặc biệt là trong quân sự. Các yêu cầu với một loại mã là phải có tính bảo mật cao, khả năng phát hiện và sửa lỗi trong qua trình truyền. Để tìm ra được một loại mã thực sự hiệu quả là không đơn giản. Trong các loại mã mã chập ra đời từ những năm 1955 cùng thời với nhiều loại mã như mã vòng, mã BCH Mã chập là loại mã có khả năng khôi phục dữ liệu rất tốt, song khi mới ra đời do chưa tìm được giải thuật giải mã khả thi nên ít được quan tâm. Mãi đến năm 1967 Viterbi đã đưa ra một giải thuật giải mã tối ưu gọi là giải thuật Viterbi. Với giải thuật Viterbi cùng với sự tiến bộ KHKT với công nghệ sản xuất các mạch tổ hợp cỡ lớn và sự phát triển của công nghệ sản xuất bộ nhớ, mã chập ngày càng được ứng dụng rộng rãi trong công nghệ viễn thông. Mặc dù đã xuất hiện từ rất lâu song mã hoá vẫn là một môn học khá mới. Với mong muốn tạo một bộ thí nghiệm về mã hoá và giải mã phục vụ cho việc học tập, đề tài : nghiên cứu “ Thiết Kế Modul Mã hoá và Giải mã Mã Chập“. Nội dung của đề tài là nghiên cứu và hiện thực thuật toán mã hoá mã chập và giải thuật giải mã của Viterbi. Mặc dù có nhiều cố gắng, nhưng do kiến thức hạn chế và thời gian thực hiện đề tài không nhiều nên đề tài vẫn còn nhiều hạn chế và sai sót. Em rất mong nhận được sự đánh giá nhận xét của các thầy giáo và các bạn. Nhân đây em muốn nói lời cảm ơn sâu sắc tới các thầy giáo trong khoa đặc biệt là thầy giáo hướng dẫn Ths Nguyễn Phương Lâm đã nhiệt tình quan tâm và giúp đỡ em hoàn thành đồ án. Đồng thời em cũng muốn gửi lời cảm ơn tới gia đình và các bạn đã động viên, giúp đỡ em trong quá trình hoàn thành đồ án tốt nghiệp. Hải Phòng, ngày 9 tháng 12 năm 2008 Sinh viên : Vũ Xuân Hiệp 2 Chương I. TỔNG QUAN VỀ MÃ HOÁ I.1. CÁC KHÁI NIỆM CƠ BẢN VỀ MÃ HOÁ I.1.1.Định nghĩa mã hoá Mã hoá nguồn tin X theo bộ mã M là phép ánh xạ 1:1 biến đổi một tin x i X thành một tổ hợp các kí hiệu của bộ mã M. Nguồn X = {x 1 ,x 2 ,x 3 , ,x n } Bộ mã M = {m 1 ,m 2 , ,m k } Trong đó k là cơ số của bộ mã. Nếu k=2 là mã nhị phân, k=10 là mã thập phân, k=8 là mã bát phân Một tin x i được mã hoá thành x i m r1 m r2 m rL Trong đó L là số kí hiệu của bộ mã dùng để biểu diễn x i , đồng thời L cũng là độ dài của từ mã. Ví dụ: Ta có nguồn tin X = {x 1 ,x 2 ,x 3 ,x 4 }. Nguồn này được mã hoá với bộ mã nhịu phân M={0,1}. Mã hoá x 1 = 00, x 2 = 01, x 3 = 11, x 1 = 10. I.1.2. Một số khái niệm cơ bản về mã hoá a) Chiều dài từ mã Chiều dài từ mã là số kí hiệu của bộ mã dùng để mã hoá cho từ mã đó. Ví dụ: từ mã 10101110 được mã hoá bằng 8 kí hiệu của bộ mã nhị phân nên có chiều dài là 8. b) Trọng lượng từ mã Trọng lượng từ mã là tổng số các kí hiệu khác 0 của từ mã. Kí hiêu: w(x i ) là trọng lượng của từ mã x i Ví dụ: từ mã 01010111 có trọng lượng là 5. c)Quãng cách mã Quãng cách mã là số kí hiệu khác nhau tính theo vị trí tương ứng của 2 từ mã có chiều dài bằng nhau. Kí hiệu quãng cách mã d(x 1 ,x 2 ) = w(x 1 x 2 ). Trong đó là phép toán cộng modul 2. 3 Ví dụ: có 2 từ mã x 1 = 01011011, x 2 = 10101110 Quãng cách mã d(x 1 ,x 2 ) = 2. Quãng cách của một bộ mã được dịnh nghĩa là quãng cách mã tối thiểu của 2 từ mã bất kì của bộ mã. I.2.MỤC ĐÍCH MÃ HOÁ VÀ CÁC ĐIỀU KIỆN KHI LẬP M Ã Một số mục đích mà việc mã hoá nhằm tới ; - Phối hợp nguồn tin và nơi nhận tin - Tăng hiệu suất thông tin. - Tăng độ tin cậy truyền tin. - Bảo mật thông tin. Khi thiết lập một mã nào đơ ta cần tuân theo một số điều kiện sau: a)Điều kiện chung. Đảm vảo tính đơn trị, nghĩa là khi nhận được một dãy tín hiệu thì phải tách ra được thành từng từ mã một và phép tách này phải duy nhất. b) Điều kiện riêng. Đối với phương pháp xây dựng mã thống kê tối ưu (mã nén) thì phải làm sao cho độ dài trung bình của mã là nhỏ nhất, còn đối với mã có thể phát hiện và sửa sai thì phải cho phép phát hiện và sửa được lỗi càng nhiều càng tốt. I.3.CÁC CÁCH PHÂN LO ẠI MÃ Có nhiều cách để phân loại mã, dưới đây là một số phương pháp tiêu biểu [1]: I.3.1. Phân loại theo trọng lượng của từ mã. - Mã có trọng lượng không đổi - Mã có trọng lượng thay đổi I.3.2. Phân loại theo chiều dài của từ mã. - Mã có chiều dài không đổi - Mã có chiều dài thay đổi 4 I.3.3. Phân loại theo hiệu suất thông tin - Mã tối ưu - Mã chưa tối ưu I.3.4. Phân loại theo độ tin cậy -Mã có khả năng phát hiện và sửa sai -Mã không có khả năng phát hiện và sửa sai I.3.5. Phân loại theo cơ số của bộ mã Có thể xây dựng bộ mã với cơ số bất kì, trong đó mã nhị phân là phổ biến nhất. I.3.6. Phân loại theo các cột số trong từ m ã - Mã có trọng số: Thứ tự các cột số có ảnh hưởng đến nội dung từ mã. - Mã khôg có trọng số: Thứ tự các cột số không ảnh hưởng đến nội dung từ mã. I.3.7. Phân loại theo mục đích sử dụng m ã - Mã số. - Mã kí tự. I.3.8. Phân loại theo quãng cách mã giữa hai từ mã kế cận - d const : mã vòng. - d = const : mã Gray, mã Johnson. I.3.8. Phân loại theo cách tạo mã. Trong việc truyền tin có hai loại mã được sử dụng phổ biến là mã khối (Block Code) và mã chập (Convolutional Code). a) Mã khối Bộ mã hoá của mã khối sẽ chia dòng thông tin thành những khối tin có k bit. Mỗi tin được biẻu diễn thành một khối k thành phần nhị phân u = {u 1 ,u 2 , ,u k }, u được gọi là vector thông tin. Có tổng cộng 2 k vector thông tin khác nhau. Bộ mã hoá sẽ chuyển vector thông tin u thành một bộ n thành phần v = {v 1 ,v 2 , ,v n }, v được gọi là từ mã.Như vậy ứng với 2 k vector thông tin sẽ có 2 k từ mã khác nhau. Tập hợp có 2 k từ mã có chiều dài n được gọi là một mã khối (n,k). 5 Gọi R = k/n là tỉ số mã. R chính là số bít thông tin đưa vào bộ giải mã trên số bít được truyền. Do n bít ra chỉ phụ thuộc vào k bit thông tin vào nên bộ mã hoá và giải mã không có nhớ và có thể thực hiện được bằng mạch logic tổ hợp. b) Mã chập Bộ mã hoá của mã chập giống như bộ mã hoá của mã khối, cũng nhận k bít thông tin u và tạo thành từ mã v là những khối n bít. Nhưng n bít của từ mã v không chỉ phụ thuộc vào k bít thông tin mà còn phụ thuộc vào m bít thông tin trước đó. Do đó bộ mã hoá có bộ nhớ m bít. Tập hợp dòng mã hoá n bit tạo bởi k bít thông tin và m bít nhớ được gọi là mã chập (n,k,m). Tỉ số R=k/n được gọi là tốc độ lập mã. Do tính có nhớ của mã chập nên nó phải được thực hiện bằng mạch dãy. 6 CHƯƠNG II. MÃ HOÁ VÀ GIẢI MÃ MÃ CHẬP II.1.TỔNG QUAN VỀ MÃ CHẬP II.1.1.Cấu trúc bộ mã hoá Cũng giống như nhiều loại mã sửa lỗi khác, mã hoá mã chập đưa vào dòng dữ liệu một lượng dư thừa bằng cách sử dụng thanh ghi dịch tuyến tính. Sơ đồ của một bộ mã hoá mã chập được cho trong hình vẽ sau: Hình 2.1.Sơ đồ bộ mã hoá mã chập (3,2,3) Trong sơ đồ trên các có kí hiệu D biểu thị một khâu trễ. Các bít thông tin được đưa lần lượt vào thanh ghi dịch, các bít mã hoá được tạo bởi các bộ cộng modul 2 giữa bít vào và các bít lưu trong thanh ghi dịch. Đường nối giữa bộ cộng modul 2 và các bít trong thanh ghi dịch được cho bởi các đa thức sinh. II.1.2.Các tham số của bộ mã hoá mã chập Một bộ mã hoá mã chập thường được xác định thông qua các tham số (n,k,m). trong đó : n: số bít ra tại tại một thời điểm k: số bít vào bộ mã hoá tại tại một thời điểm m: độ dài lớn nhất của thanh ghi dịch. D D D D D + + + X 1 X 2 C 1 C 2 C 3 7 Tốc độ lập mã: k r n Độ dài ràng buộc (Constrain Lenght) K. Đây là một thông số rất quan trọng của bộ mã chập. Với bộ tạo mã, độ dài ràng buộc xác định có bao nhiêu bít tại các thời điểm trước có ảnh hưởng đến bít hiện tại. Với bộ giải mã, độ dài ràng buộc xác định khi nào có thể quyết định được bít giải mã. Trong mã chập, độ dài ràng buộc càng lớn thì khả năng sửa lỗi càng tốt. Độ dài ràng buộc được tính theo biểu thức: K = m+1 Ứng với tốc độ lập mã r=1/2 ta có một số đa thức sinh [3]: Độ dài ràng buộc K G 1 (D) G 2 (D) G 1 (D) (HEX) G 2 (D) (HEX) 3 1 + D 2 1 + D + D 2 0x05 0x07 4 1 + D + D 3 1 + D + D 2 + D 3 0x0B 0x0F 5 1 + D 3 + D 4 1 + D + D 2 + D 4 0x19 0x17 6 1 + D 2 + D 4 + D 5 1 + D + D 2 + D 3 + D 5 0x35 0x2F 7 1 + D 2 + D 3 + D 5 + D 6 1 + D + D 2 + D 3 + D 6 0x6D 0x4F 8 1 + D 2 + D 5 + D 6 + D 7 1 + D + D 2 + D 3 + D 4 + D 7 0XE5 0x9F 9 1 + D 2 + D 3 + D 4 + D 8 1 + D + D 2 + D 3 + D 5 + D 7 + D 8 8 Với bộ mã hoá trong hình 2.1 ta có thể xác định các tham số: n = 3 , k = 2 , m = 3. Tốc độ mã r = 2/3 . Độ dài ràng buộc K = 4. II.2. CÁC PHƯƠNG PHÁP BI ỂU DIỄN MÃ CHẬP Bộ mã của mã chập có thể được biểu diễn bằng các phương pháp sau: - Đồ hình trạng thái (state Diagram) - Đồ hình cây (Tree Diagram) - Đồ hình đồ hình lưới (Trellis Diagram) Ví dụ ta có sơ đồ bộ mã hoá như sau: Hình vẽ 2.2. Sơ đồ bộ mã hoá mã chập (2,1,2) II.2.1. Đồ hình trạng thái Đồ hình trạng thái của mã (2,1,2) cho trong hình 2.1 được biểu diễn như hình vẽ dưới. Các kí hiệu trong mỗi vòng tròn biểu diễn trạng thái hi ện thời của thanh ghi dịch, tại mỗi thời điểm bộ mã hoá sẽ ở một trong số các trạng thái đó. Các đường nối biểu diễn sự chuyển đổi trạng thái khi có một bít vào. Các kí hiệu ghi trên các đường nối biểu diễn bít vào/ các bít ra của bộ mã hoá, ví dụ: kí hiệu 0/10 ghi trên đường nối từ trạng thái 10 đến trạng thái 01 nghĩa là khi có bít 0 vào bộ mã hoá và trạng thái thanh ghi dịch là 10 thì trạng thái của thanh ghi dịch sẽ chuyển sang 01 và cặp bít sau mã hoá là 10. D D X 1 + + C 2 C 1 MUX 9 Hình 2.3a.Đồ hình trạng thái của bộ mã (2,1,2) Thông thường, bộ mã hoá sẽ bắt đầu từ trạng thái 0. Lấy 1 ví dụ, khi dãy bít vào bộ mã hoá là x = { 1011} (với trạng thái đầu của thanh ghi dịch là 0) thì dãy chuyển đổi trạng thái là s = {00,10,01,10,11} và dãy bít sau mã hoá là c = {11,10,00,01}. Hình dưới biểu diễn sự chuyển đổi trạng thái của bộ mã hoá với dãy bít vào cho trên (đường in đậm. Hình 2.3b. Sự chuyển trạng thái với chuỗi bit vào x = { 1011} II.2.2. Đồ hình cây. Đồ hình dạng cây biểu diễn theo thời gian tất cả các khả năng mà ta có thể đi tới theo chiều sâu của các nhánh. 10 Hình 2.4. Đồ hình cây của bộ mã hoá (2,1,2) Trong đồ hình cây, các đường nét liền biểu diễn nhánh khi có bít vào là 0, các đương nét đứt biểu diễn nhành khi có bít 1 vào. Và các bít sau mã hoá được biểu diễn ở trên mỗi nhánh cây. Với một chuỗi bít vào sẽ xác định một đường đi nhất định từ trái sang phải trên đồ hình. Ví dụ với chuỗi bít vào x = {1011} (với trạng thái đầu của thanh ghi dịch là 0) . Ta sẽ thực hiện việc dịch chuyển trên đồ hình như sau: đầu tiên tại nhánh 1 ta đi xuống, cặp bít mã hoá là 11 và trạng thái thanh ghi dịch l à 10. Tiếp theo ta thu được bít 0, do đó ta tiếp tục đi lên , cặp bít mã hoá là 10 và trạng thái thanh ghi dịch là 01. Bít thu được tiếp theo là 1, ta đi xuống, cặp bít mã hoá là 00 và trạng thái thanh ghi dịch là 10. Cuối cùng ta thu được bít 1, ta đi xuống, cặp bít mã hoá là 00 và trạng thái thanh ghi dịch l à 10. Cuối cùng chuỗi thông tin ra là: c = {11,10,00,00}. II.2.3. Đồ hình lưới Đồ hình lưới phức tạp hơn các dạng đồ hình khác, tuy nhiên nó lại được sử dụng nhiều hơn vì nó thể hiện được sự thay đổi theo thời gian của chuỗi bít vào. Đồ hình lưới biểu diễn tất cả các trạng thái chuyển đổi có thể xảy ra tại mỗi thời điểm. Trong đó [...]... hình lưới của bộ tạo mã (2,1,2) với chuỗi bít vào 1011 11 II.3 CÁC PHƯƠNG PHÁP GIẢI MÃ MÃ CHẬP Có một số phương pháp giải mã mã chập, chúng được gộp lại thành 2 phương pháp chính: - Giải mã theo từng chuỗi (Sequential Decoding) dựa vào giải thuật của Fano - Giải mã dựa vào kết quả so sánh sự giống nhau giữa các từ mã (Maximmum Likely-hood Decoding), dựa vào giả thuật của Viterbi Cả 2 phương pháp trên... TOÁN GIẢI MÃ VITERBI III 1 CƠ SỞ TOÁN HỌC CỦA GIẢI THUẬT VITERBI III.1.1.Thuật toán giải mã Viterbi quyết định cứng (Hard_Decison Viterbi Algorithm-HDVA) Với mã hoá mã chập, dòng bít vào là x sẽ cho chuỗi thông tin ra l à c Chuỗi bít c sẽ được phát đi qua kênh thông tin có nhiễu và khi đến phía giải mã sẽ thu được chuỗi bit r Nhờ tính có nhớ của mã chập nên phía giải mã có thể căn cứ vào các từ mã thu... Delay 3 ms Giải mã Request ‘d’ gửi byte giải mã Hình 4.2 Thủ tục bắt tay giữa các mạch và máy tính 34 IV.2 MẠCH MÃ HOÁ VÀ THUẬT TOÁN MÃ HOÁ IV.2.1 Mạch mã hoá Hình 4.3 Mạch mã hoá Mạch mã hoá được thiết kế sử dụng vi điều khiển ATMega16, đây là 1 dòng vi điều khiển khá phổ biến hiện nay nhất là với sinh viên AVR là một dòng vi điều khiển có nhiều tính năng nổi trội như khả năng chương trình hoá dễ dàng,... hoá và giải mã có thể nhận các byte dữ liệu từ máy tính hoặc từ bàn phím Trong mỗi lần nhập dữ liệu mạch mã hoá sẽ thu vào 2 byte liên tiếp, sau đó sẽ tiến hành mã hoá tạo ra 4 byte mã và phát đến mạch giải mã (theo thủ tục bắt tay bên dưới) Người sử dụng sẽ nhập vào máy tính phát một đoạn văn bản, máy tính phát sẽ phát 2 byte trong 1 lần phát theo yêu cầu của mạch mã hoá, trong đó có 1 byte dữ liệu và. .. dịch về trạng thái đầu Mạch giải mã sẽ nhận 4 byte từ mạch mã hoá, sau khi giải mã tạo lại 2 byte dữ liệu Trong trường hợp giải mã đúng trong 2 byte giải mã sẽ có 1 byte dữ liệu và 1 byte 0, sau đó mạch giải mã sẽ phát trở lại máy tính thu đồng thời hiển thị trên LCD Sau đây là lưu đồ thủ tục bắt tay trong hệ thống: 33 PC1 encoder PC2 decoder Request ‘a’ gửi 1 byte Stanby Mã hoá Delay 50 ms Stanby Sẵn... hình ta chỉ xét với giải thuật giải mã Viterbi quyết định cứng Ta sẽ trình bày thông qua một ví dụ, để thấy rõ giải thuật giải mã Viterbi hoạt động như thế nào Một cách mô tả dễ hiểu nhất thuật toán giải mã Viterbi là sử dụng đồ hình lưới Đồ hình lưới dưới đây cho ví dụ với sơ đồ mã hoá (2,1,2) cho trong hình 2.2, với bản tin vào có độ dài 15 bít: Hình 3.2.1 Đồ hình lưới của bộ mã hoá (2,1,2) với 17... *> Nhận xét: - Trước hết ta nhận thấy giải thuật HDVA đơn giản, dễ thực hiện hơn giải thuật SDVA - Trong giải thuật HDVA ta thu vào và xử lí với từng từ mã, trong giải thuật SDVA ta thu vào và xử lí với cả chuỗi thông tin - Theo tính toán hệ số tăng ích của mã (Coding Gain) trong gi ải thuật SDVA lớn hơn so với giải thuật HDVA 3Db III.2.PHÂN TÍCH THUẬT TOÁN GIẢI MÃ VITERBI QUYẾT ĐỊNH CỨNG Do điều kiện... quan)(SDVA2) a)Thuật toán giải mã Viterbi quyết định mềm_ phương pháp 1 (SDVA1) Vởi thuật toán giải mã quyết định mềm ta không cần xác định rõ từng bít thu vào là 0 hay 1, mà ta thu vào từng khối nhiều bit (hữu hạn hoặc vô hạn) Ý tưởng của thuật toán là, chuỗi thu vào r có nhiều bít (vô hạn) sẽ được đưa trực tiếp vào giải mã Phương pháp này cũng giống với thuật toán giải mã quyết định cứng, nhưng nó... trị p hoặc (1-p) Bảng sau mô tả ma trận bit theo cách thông thường : M (ri (j) | yi( j ) ) Bít thu vào ri ( j ) Bít giải mã yi( j ) ri ( j ) 0 1 1 1 0 0 Bít giải mã yi( j ) 0 Bít thu vào 1 Ma trận bít cho ta biết giá trị (trọng số) của bít thu được và bít sau khi giải mã Ví dụ, nếu bít giải mã là yi(j) = 0 và bít thu được là ri(j) = 0 thì giá trị sẽ là M ri ( j ) | yi( j ) 1 Ta có nhận xét, nó có quan... quay trở lại bước 2 Kết quả của thuật toán Viterbi là toàn bộ đường đi giữa các trạng thái trong đồ hình lưới tương ứng với từ mã đúng nhất III.1.2.Thuật toán giải mã Viterbi quyết định mềm (Soft_Decison Viterbi Algorithm) Thuật toán giải mã Viterbi quết định mềm có thể giải mã với từng khối nhiều bít Cũng giống như với thuật toán giải mã quyết định cứng nhưng với thuật toán giải mã quyết định mềm ta . về mã hoá và giải mã phục vụ cho việc học tập, đề tài : nghiên cứu “ Thiết Kế Modul Mã hoá và Giải mã Mã Chập . Nội dung của đề tài là nghiên cứu và hiện thực thuật toán mã hoá mã chập và giải. là mã chập (n,k,m). Tỉ số R=k/n được gọi là tốc độ lập mã. Do tính có nhớ của mã chập nên nó phải được thực hiện bằng mạch dãy. 6 CHƯƠNG II. MÃ HOÁ VÀ GIẢI MÃ MÃ CHẬP II.1.TỔNG QUAN VỀ MÃ CHẬP II.1.1.Cấu. giải mã không có nhớ và có thể thực hiện được bằng mạch logic tổ hợp. b) Mã chập Bộ mã hoá của mã chập giống như bộ mã hoá của mã khối, cũng nhận k bít thông tin u và tạo thành từ mã v là những khối