













Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
NGHIÊN CỨU MÃ HAMMING...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Typology: Assignments
1 / 21
This page cannot be seen from the preview
Don't miss anything!
BÁO CÁO BÀI TẬP LỚN ĐỀ TÀI 9: MÃ HAMMING (7, 4)
Thành phố Hồ Chí Minh – 2023
LỜI MỞ ĐẦU Trong các hệ thống kỹ thuật số, dữ liệu được truyền cho giao tiếp ở dạng bit (0 và 1). Khi dữ liệu được truyền không khớp với dữ liệu đầu vào đã cho, lúc đó dữ liệu bị “lỗi”. Lỗi có thể xảy ra do nhiễu bên ngoài và bất kỳ lỗi vật lý nào khác. Nếu bit ‘1’ được thay đổi thành bit ‘0’ hoặc ngược lại, thì nó được gọi là “lỗi bit”. Các lỗi dữ liệu hay lỗi bit có thể xóa dữ liệu quan trọng trong hệ thống kỹ thuật số, trong nhiều trường hợp có thể gây hậu quả nghiêm trọng về thông tin. Có các loại lỗi khác nhau như lỗi bit đơn, nhiều lỗi và lỗi cụm. Trong đó, để giải quyết tình trạng này, chúng ta cần có các chương trình hoặc thuật giải mã hiệu quả. Một trong số những thuật giải mã đơn giản nhưng khá thông dụng hiện nay là mã Hamming. Trong đó, mã Hamming (7,4) là một dạng cơ bản, có thể truy vết và sửa chửa các lỗi bit đơn hiệu quả. Bài báo cáo của chúng em xin được trình bày phương pháp xử lí lỗi bit dữ liệu bằng mã Hamming (7,4) thông qua các cơ sở lí thuyết và sản phẩm nhận dạng và sửa lỗi thông qua phần mèm Matlab. Trong quá trình thực hiện đề tài, do nhóm chúng em kiến thức còn hạn chế nên vẫn còn nhiều thiếu sót khi tìm hiểu, đánh giá, trình bày và thực hiện. Rất mong nhận được sự quan tâm, góp ý của các thầy /cô bộ môn để đề tài chúng em được đầy đủ và hoàn thiện hơn.
1. Giới thiệu ma trận tạo mã Từ những năm 1940 và 1950, việc sử dụng ma trận để tạo mã đã trở nên phổ biến khi các nhà toán học và kỹ sư điện tử bắt đầu nghiên cứu và phát triển các phương pháp mã hóa dựa trên ma trận và thuật toán tuyến tính. Từ mã là một chuỗi hoặc một dãy các ký hiệu, bits hoặc ký tự được tạo ra từ thông điệp gốc thông qua quá trình mã hóa. Ma trận tạo mã được sử dụng để tạo ra các từ mã từ các thông điệp ban đầu. Ma trận tạo mã thường được thiết kế sao cho nó có khả năng tạo ra các từ mã không trùng lặp và có khả năng kiểm tra lỗi. Trong mã hóa kỹ thuật số , ma trận tạo mã thường được sử dụng trong mã hóa các thông điệp thành dữ liệu mã hóa, như trong mã hóa kênh truyền thông, mã hóa tín hiệu, hoặc mã hóa trong hệ thống truyền thông không dây. Trong lý thuyết mã hóa, một ma trận tạo mã là một ma trận mà các hàng của nó tạo thành một cơ sở cho một mã tuyến tính. Các từ mã là tất cả các tổ hợp tuyến tính của các hàng của ma trận này, nghĩa là mã tuyến tính là không gian hàng của ma trận tạo mã. 2. Ma trận kiểm tra Ma trận kiểm tra được sử dụng để kiểm tra tính đúng đắn của các từ mã đã được truyền qua kênh hoặc nhận từ nguồn thông tin. Ma trận kiểm tra có khả năng phát hiện và thậm chí sửa chữa các lỗi phát sinh trong quá trình truyền thông. Khi dữ liệu được gửi qua kênh không ổn định hoặc không đáng tin cậy (ví dụ như trong việc truyền thông không dây), ma trận kiểm tra có thể sử dụng để phát hiện và sửa chữa lỗi dữ liệu. Trong lý thuyết mã hóa , ma trận kiểm tra chẵn lẻ của mã khối tuyến tính C là một ma trận mô tả các mối quan hệ tuyến tính mà các thành phần của một từ mã phải thỏa mã. Nó có thể được sử dụng để quyết định xem một vectơ cụ thể có phải là một từ mã hay không và cũng được sử dụng trong các thuật toán giải mã. 3. Ma trận tạo mã tiêu chuẩn và Ma trận kiểm tra cơ bản Nếu G là một ma trận, nó tạo ra các từ mã của một mã tuyến tính C bằng cách:
w = sG Trong đó: w là một từ mã của mã tuyến tính C s là bất kỳ vector đầu vào Cả w và s được giả định là các vector hàng. Một ma trận tạo mã cho một mã tuyến tính [n, k, d]q có kích thước k × n. Trong đó: n là độ dài của một từ mã k là số bit thông tin (kích thước của C như một không gian vector con) d là khoảng cách tối thiểu của mã q là kích thước của trường hữu hạn, tức là số ký hiệu trong bảng chữ cái (do đó, q=2 cho biểu thị một mã nhị phân, v.v.) Số bit dư thừa được ký hiệu là r = n − k. Dạng tiêu chuẩn cho một ma trận tạo mã là: G = [ Ik ∣ P ] Trong đó: Ik là ma trận đơn vị kích thước k × k P là một ma trận nhị phân kích thước k ×( n − k ) Khi ma trận tạo mã ở dạng tiêu chuẩn, mã tuyến tính C sẽ có tính hệ thống trong k định vị đầu tiên của nó. Một ma trận kiểm tra của C là một ma trận tạo mã của mã đối ngẫu C ⊥ , có nghĩa là một từ mã c thuộc C khi và chỉ khi tích ma trận-véctơ Hc⊤^ = 0. Các hàng của một ma trận kiểm tra là các hệ số của các phương trình kiểm tra chẵn. Chúng cho biết làm thế nào các tổ hợp tuyến tính của một số chữ số nhất định (phần tử) của mỗi từ mã bằng không. Điều quan trọng là khoảng cách tối thiểu của mã là số tối thiểu d sao cho mọi d −1 cột của ma trận kiểm tra chẵn H là độc lập tuyến tính trong khi tồn tại d cột của H là phụ thuộc tuyến tính.
Trong lý thuyết mã hóa, Hamming (7,4) là một mã sửa lỗi tuyến tính mã hóa 4 bit dữ liệu thành 7 bit bằng cách thêm ba bit chẵn lẻ để kiểm tra. Thuật toán (7,4) của Hamming có thể sửa chữa bất cứ một bit lỗi nào, và phát hiện tất cả lỗi của 1 bit hay 2 bit gây ra, rất có hiệu quả trong việc tìm và sửa lỗi, trừ trường hợp có chùm lỗi đột phát (brust error) hay phương tiện có độ nhiễu cao.
3. Phân loại mã Hamming Mã Hamming (m,n) có ý nghĩa là trong một nhóm m bit dữ liệu thì có n bit là bit dữ liệu, còn lại là k bit kiểm tra chẵn lẻ (bit được thêm vào chuỗi bit sao cho tổng số bit 1 là chẵn (bit kiểm tra chẵn) hoặc lẻ (bit kiểm tra lẻ)). Sự liên quan của các bit dữ liệu với bit chẵn lẻ được biểu hiện bằng các phần của hình tròn gối lên nhau. Ví dụ: Đối với mã Hamming (7,4), bit thứ 1 kiểm tra bit thứ (3, 5, 7), trong khi bit 2 kiểm tra bit (3, 6, 7). Các vị trị (1,2,4) thực ra là vị trí ( 0 , 2 1 , 2 2 ) Với k bit chẵn lẻ, bao gồm từ 1 đến 2k^ - 1. Sau khi loại bỏ các bit chẵn lẽ, 2k^ - k -1 bit còn lại sẽ được sử dụng làm dữ liệu. Với biến k, chúng ta có được những hamming sau: Bit chẵn lẻ Tổng số bit Bit dữ liệu Tên 2 3 1 Hamming (3,1) 3 7 4 Hamming (7,4) 4 15 11 Hamming (15,11) 5 31 26 Hamming (31,26) 6 63 57 Hamming (63,57)
7 127 120 Hamming (127,120) 8 255 247 Hamming (255,247) … k m = 2k^ - 1 n = 2k^ - k -1 Hamming (2k^ - 1, 2k^ - k -1) Hiệu quả truyền dẫn của mã Hamming tăng lên khi kích thước khối tăng lên. Trong Hamming (7, 4), tốc độ dữ liệu hiệu quả chỉ là 0.571, trong khi Hamming (255, 247) là 0.969.
4. Mã Hamming (7, 4) Cho các bit dữ liệu d 1 , d 2 , d 3 và d 4 Mã Hamming có thể xác định các bit chẵn lẻ p 1 , p 2 và p 3 là: p 1 = d 1 + d 2 + d 4 p 2 = d 1 + d 3 + d 4 p 3 = d 2 + d 3 + d 4 Có một phương trình khác cho một bit chẵn lẻ có thể được sử dụng trong mã Hamming: p 4 = d 1 + d 2 + d 3 Mã Hamming hợp lệ có thể sử dụng bất kỳ ba trong bốn định nghĩa bit chẵn lẻ ở trên và cũng có thể đặt các bit chẵn lẻ ở bất kỳ vị trí nào trong tập hợp 7 bit dữ liệu và chẵn lẻ. Hai mã Hamming có bit chẵn lẻ khác nhau hoặc bit chẵn lẻ ở vị trí khác nhau được coi là tương đương. Chúng sẽ đưa ra các kết quả khác nhau, nhưng chúng vẫn là mã Hamming. Một phương pháp để chuyển đổi bốn bit dữ liệu thành một mã Hamming bảy bit là sử dụng ma trận chuyển đổi dữ liệu 4 × 7 [G]. Xác định d là vectơ 1 × 4 [d 1 d 2 d 3 d 4 ] Có thể tạo ma trận chuyển đổi dữ liệu 4 × 7 [G] sao cho tích modulo 2 của vectơ d và ma trận [G] (d [G]) là mã Hamming 1 × 7 mong muốn. Đây là cách nó được thực hiện: Bước 1. Biểu diễn từng bit dữ liệu bằng vectơ cột như sau:
Thực hiện phép toán v = aG để mã hóa a => v C Vì cột 3, 5, 6, 7 của G là các vectơ đơn vị của cơ sở chính tắc của vR^4 => Các phần tử của v ở các vị trí đó sẽ tạo nên vectơ a, các vị trí còn lại đóng vai trò như những check bit. Sau đó gửi vectơ v cho người nhận, thu được vectơ w (có thể khác v do sai sót trong quá trình truyền dữ liệu). Nếu Hw = 0, tức w C => Không có lỗi xảy ra, người nhận sẽ có được thông tin cần chuyển a tạo nên từ các phần tử ở vị trí 3, 5, 6, 7 của vectơ w. Nếu Hw ≠ 0 thì có lỗi xảy ra ở vị trí thứ i của w (w = v + ei). Khi đó Hw = Hv + Hei = 0 + Hei = ci. Dựa vào đây ta nhận biết lỗi nằm ở vị trí thứ i và sửa lỗi bằng cách đổi 0 <=> 1 tại vị trí i của w. Vậy, thay vì truyền thông điệp a đi, người ta truyền đi thông điệp v = aG C đi và người nhận chỉ cần kiểm tra vector thu được có nằm trong không gian vecto con C của ma trận H hay không để biết có lỗi xảy ra hay không.
5. Ứng dụng Thế kỉ trước, khi mà chưa có cáp quang, cáp đồng là loại cáp chính được sử dụng để truyền thông tin, dữ liệu. Nhưng cáp đồng lại có tốc độ truyền dẫn không cân bằng, thêm vào đó là sự bất ổn định, bị ảnh hưởng nhiều của môi trường, vì vậy, dẫn đến việc các thông tin, dữ liệu khi truyền đến nơi sẽ bị thiếu hụt, sai lệch. Vậy nên, mã Hamming đã được tạo ra với mục đích sửa các lỗi tuyến tính ấy. Mã Hamming được sử dụng trong: Tin học Viễn thông Nén dữ liệu Giải câu đố và mã turbo Vệ tinh Modem …
Cho 1 từ thông tin m (4 bits) biểu diễn dưới dạng 1 vecto hàng: m=[1 0 1 0] Ta có dạng tiêu chuẩn cho một ma trận tạo mã là: G = [ Ik ∣ P ] Giả sử rằng ma trận tạo mã là: G =
Từ mã c theo công thức c=mG có thể là: c=[1 0 1 0 1 1 0] với n=7, k= Ma trận kiểm tra chẵn H: H =[− P ⊤ ∣ In − k ] H =
Giả sử rằng trong quá trình truyền tải, bit thứ 5 bị lỗi và đã trở thành "0" thay vì "1". Để kiểm tra lỗi, chúng ta nhân từ mã c với ma trận kiểm tra chẵn H : s = c × HT Ở đây, HT^ là ma trận chuyển vị của H. Kết quả s của chúng ta có thể là "001", đại diện cho vị trí bit lỗi. Khi chúng ta biết vị trí của lỗi (ở bit thứ 5), chúng ta có thể sửa nó bằng cách đảo bit đó. Điều này có thể được thực hiện bằng cách chỉnh sửa từ mã c ban đầu để loại bỏ lỗi. Trong trường hợp này, chúng ta sẽ đổi "0" thành "1" ở vị trí bit thứ 5 để sửa lỗi. Sau khi sửa lỗi, từ mã mới sẽ trở thành "1011110". Điều này có thể được kiểm tra lại bằng cách nhân từ mã mới này với ma trận kiểm tra chẵn H. Nếu kết quả là vector zero, điều này chứng tỏ rằng từ mã đã được sửa lỗi thành công.
disp('Ma Hamming sau khi sua sai: '); disp(num2str(v)); disp(' '); b = []; b1 = []; for i = 1:size(v,1) k = [v(i,3) v(i,5) v(i,6) v(i,7)]; b = [b;k]; k1 = [p(i,3) p(i,5) p(i,6) p(i,7)]; b1 = [b1;k1]; end c = char(bin2dec(reshape(char(b+'0'), 8,[]).')); c1 = char(bin2dec(reshape(char(b1+'0'), 8,[]).')); disp('Chuyen lai du lieu chu: '); disp(c') disp('Neu khong phat hien va sua loi du lieu chu se la: '); disp(c1') Ý nghĩa: Khởi tạo ma trận: H là ma trận kiểm tra chẵn lẻ cho mã Hamming. G là ma trận tạo mã cho mã Hamming. Nhập dữ liệu từ người dùng: str yêu cầu người dùng nhập tin nhắn dưới dạng văn bản str2num chuyển đổi chuỗi tin nhắn thành một vector số a chuyển đổi vector số thành định dạng nhị phân với 4 cột. Mã hóa: Thực hiện phép nhân ma trận của mỗi khối 4 bit với ma trận tạo mã G để tạo ra từ mã Hamming v. Tạo lỗi: Người dùng được yêu cầu chọn vị trí trong từ mã Hamming để mô phỏng lỗi. Chương trình sẽ đảo ngược các bit tại các vị trí được chọn. Phát hiện và sửa lỗi: Kiểm tra lỗi trong từ mã Hamming bằng cách sử dụng ma trận kiểm tra chẵn lẻ H. Nếu phát hiện lỗi, chương trình sẽ sửa lỗi bằng cách đảo bit tương ứng trong từ mã. Giải mã cuối cùng: Trích xuất dữ liệu ban đầu từ từ mã Hamming đã được sửa lỗi. Tái tạo tin nhắn ban đầu bằng cách chuyển đổi dữ liệu nhị phân trở lại thành các ký tự. Kết quả thu được
Nhóm đã hoàn thành việc tìm hiểu và thực hiện đề tài đã được đặt ra. Nhóm đã tiến hành tìm hiểu các vấn đề liên quan đến đề tài như: ma trận tạo mã và ma trận kiểm tra, mã sửa lỗi - tập trung chủ yếu vào mã Hamming(7,4), cùng với cơ chế và cách vận hành thuật toán mã Hamming bằng ma trận. Xử lí được các số liệu và thuật toán bằng công cụ giải số trong phần mềm lập trình Matlab. Kết quả vận hành thuật toán mà nhóm thu được đúng với mong muốn mà nhóm đặt ra.