đồ án mã hamming

14 7.1K 251
đồ án mã hamming

Đ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 về cở sở lý thuyết của việc truyền dữ liệu và sử dụng mã hamming để mã hóa và giải mã dữ liệu truyền

BỘ CÔNG THƯƠNGTRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘIKHOA : ĐIỆN TỬĐỒ ÁN MÔN HỌCKỸ THUẬT TRUYỀN SỐ LIỆUĐỀ TÀI : MÃ HAMMING Giáo viên hướng dẫn Phạm thị quỳnh trang Sinh viên thực hiện Phạm văn mừng1LỚP ĐT3K4-CN Lời nói đầuNgày nay việc truyền thông tin đi là rất quan trọng . Cùng với sự phát triển không ngừng của công nghệ mà nhu cầu truyền tin ngày càng được chú ý. Trong quá trình truyền dẫn sẽ không tránh khỏi lỗi và nhiễu . Do vậy việc sửa lỗi là rất cần thiết .Từ đó đã có rất nhiều phương pháp sửa lỗi ra đời như : mã chập , mã vòng , mã golay , mã nhị phân , mã hamming ….Sau đây em xin tìm hiểu về mã hamming.Chúng em xin chân thành cảm ơn các thầy cô đã giúp đỡ cho chúng em trong quá trình thực hiện bài tập này . Mặc dù đã có nhiều cố gắng nhưng trong quá trình làm đồ án , chưa có kinh nghiệm và trình độ học vấn con ít ỏi nên còn có nhiều khiếm khuyết trong cách trình bày và nội dung . Mong các thầy , cô góp ý và bổ xung.Em xin chân thành cảm ơn. 2LỚP ĐT3K4-CN Mục lụcTrang Lời nói đầu : …………………………………………………………………… 2 I. lịch sử phát triển…………………………………………………………………… 4II. mã hamming:………………………………………………………………………. 4 1.khoảng cách mã hamming :……………………………………………………………. 4 2.trọng lượng hamming :…………………………………………………………………. 4 3.các mã trước thời mã hamming :………………………………………………………. 4 3.1 mã chẵn lẻ :……………………………………………………………………………. 4 3.2 mã hai trong năm :……………………………………………………………………. 5 3.3 mã tái diễn dữ liệu :…………………………………………………………………… 5 3.4 mã hamming :……………………………………………………………………… . 6 III. chương trình mô phỏng :…………………………………………………………… 143LỚP ĐT3K4-CN I. Lịch sử phát triểnTrong những năm của thập niên kỷ 1940, Hamming làm việc tại bell labs trên máy tính bell model V , một máy điện cơ (electromechanical) dung rơ-le , với tốc độ rất chậm , mấy giây đồng hồ một chu kỳ máy . Nhập liệu được cho vào máy bằng nhưng cái thẻ đục lỗ , và hầu như máy luôn gây lỗi trong khi đọc . trong những ngày làm việc trong tuần , những mã đặc biệt được dung để tìm lỗi và mỗi khi tìm được , nó nhấp nháy đèn báo hiệu , báo cho người điều khiển biết để họ sửa , điều chỉnh máy lại. Trong thời gian ngoài giờ làm việc hoặc trong những ngày cuối tuần, khi người điều khiển máy không có mặt, mỗi khi có lỗi xảy ra, máy tính tự động bỏ qua chương trình đương chạy và chuyển sang công việc khác.Hamming thường làm việc trong những ngày cuối tuần và ông càng ngày càng trở nên bực tức mỗi khi ông phải khởi động lại các chương trình ứng dụng từ đầu, do chất lượng kém, không đáng tin cậy (unreliability) của bộ máy đọc các thẻ đục lỗ. Mấy năm tiếp theo đó, ông dồn tâm lực vào việc xây dựng hằng loạt các thuật toán có hiệu quả cao để giải quyết vấn đề sửa lỗi. Năm 1950, ông đã công bố một phương pháp hiện nay được biết là Hamming. Một số chương trình ứng dụng hiện thời vẫn còn sử dụng này của ông.II.MÃ HAMMING1. Khoảng cách mã hammingTrong lý thuyết thông tin , khoảng cách hamming giữa hai dãy ký tự có chiều dài bằng nhau là số các ký hiệu ở vị trí tương đương có giá trị khác nhau . Nói một cách khác , khoảng cách hamming đo số lượng thay thế cần phải có để đổi giá trị của một dãy ký tự sang một dãy ký tự khác , hay số lượng lỗi xảy ra biến đổi một dãy ký tự sang một dãy ký tự khác.Ví dụ :• Khoảng cách hamming giữa 1011101 và 1001001 là 2• Khoảng cách hamming giữa 2143896 và 2299796 là 3• Khoảng cách hamming giữa “toned “ và “roses” là 3 Trọng lương mã hammin2. Trọng lượng Hamming (Hamming weight) Trọng lượng hamming của một dãy ký tự là khoảng cách Hamming từ một dãy ký tự toàn số không có cùng chiều dài. Có nghĩa là số phần tử trong dãy ký tự không có giá trị không (0): đối với một dãy ký tự nhị phân , nó chỉ là số các ký tự có giá trị một (1), lấy ví dụ trọng lượng Hamming của dãy ký tự 11101 là 4.3. Các mã trước thời kỳ mã hamming3.1 chẵn lẻMã chẵn lẻ thêm một bit vào trong dữ liệu, và bit cho thêm này cho biết số lượng bit có giá trị 1 của đoạn dữ liệu nằm trước là một số chẵn hay một số lẻ. Nếu một bit bị thay đổi trong quá trình truyền dữ liệu, giá trị chẵn lẻ trong thông điệp sẽ thay đổi và do đó có thể phát hiện được lỗi (Chú ý rằng bit bị thay đổi có thể lại chính là bit kiểm tra). Theo quy ước chung, bit kiểm tra có giá trị bằng 1 nếu số lượng bit có giá trị 1 trong dữ liệu là một số lẻ, và giá trị của bit kiểm tra bằng 0 nếu số lượng bit có giá trị 1 trong dữ liệu là một số chẵn. Nói cách khác, nếu đoạn dữ liệu và bit kiểm tra được gộp lại cùng với nhau, số lượng bit có giá trị bằng 1 luôn luôn là một số chẵn.4LỚP ĐT3K4-CN Việc kiểm tra dùng chẵn lẻ là một việc không được chắc chắn cho lắm, vì nếu số bit bị thay đổi là một số chẵn (2, 4, 6 - cả hai, bốn hoặc sáu bit đều bị hoán vị) thì này không phát hiện được lỗi. Hơn nữa, chẵn lẻ không biết được bit nào là bit bị lỗi, kể cả khi nó phát hiện là có lỗi xảy ra. Toàn bộ dữ liệu đã nhận được phải bỏ đi, và phải truyền lại từ đầu. Trên một kênh truyền bị nhiễu, việc truyền nhận thành công có thể mất rất nhiều thời gian, nhiều khi còn không truyền được nữa. Mặc dù việc kiểm tra bằng chẵn lẻ không được tốt cho lắm, song vì nó chỉ dùng 1 bit để kiểm tra cho nên nó có số tổng phí (overhead) thấp nhất, đồng thời, nó cho phép phục hồi bit bị thất lạc nếu người ta biết được vị trí của bit bị thất lạc nằm ở đâu.3.2 hai-trong-nămTrong những năm của thập niên kỷ 1940, Bell có sử dụng một hiệu phức tạp hơn một chút, gọi là hai-trong-năm (two-out-of-five code). này đảm bảo mỗi một khối 5 bit (còn được gọi là khối-5) có chính xác hai bit có giá trị bằng 1. Máy tính có thể nhận ra là dữ liệu nhập vào có lỗi nếu trong một khối 5 bit không 2 bit có giá trị bằng 1. Tuy thế, hai-trong-năm cũng chỉ có thể phát hiện được một đơn vị bit thôi; nếu trong cùng một khối, một bit bị lộn ngược thành giá trị 1, và một bit khác bị lộn ngược thành giá trị 0, quy luật hai-trong-năm vẫn cho một giá trị đúng (remained true), và do đó nó không phát hiện là có lỗi xảy ra.3.3 Tái diễn dữ liệuMột nữa được dùng trong thời gian này là hoạt động bằng cách nhắc đi nhắc lại bit dữ liệu vài lần (tái diễn bit được truyền) để đảm bảo bit dữ liệu được truyền, truyền đến nơi nhận trọn vẹn. Chẳng hạn, nếu bit dữ liệu cần được truyền có giá trị bằng 1, một tái diễn n=3 sẽ cho truyền gửi giá trị "111". Nếu ba bit nhận được không giống nhau, thì hiện trạng này báo cho ta biết rằng, lỗi trong truyền thông đã xảy ra. Nếu kênh truyền không bị nhiễu, tương đối đảm bảo, thì với hầu hết các lần truyền, trong nhóm ba bit được gửi, chỉ có một bit là bị thay đổi. Do đó các nhóm 001, 010, và 100 đều tương đương cho một bit có giá trị 0, và các nhóm 110, 101, và 011 đều tương đương cho một bit có giá trị 1 - lưu ý số lượng bit có giá trị 0 trong các nhóm được coi là có giá trị 0, là đa số so với tổng số bit trong nhóm, hay 2 trong 3 bit, tương đương như vậy, các nhóm được coi là giá trị 1 có số lượng bit bằng 1 nhiều hơn là các bit có giá trị 0 trong nhóm - chẳng khác gì việc các nhóm bit được đối xử như là "các phiếu bầu" cho bit dữ liệu gốc vậy. Một có khả năng tái dựng lại thông điệp gốc trong một môi trường nhiễu lỗi được gọi là "sửa lỗi" (error-correcting code).Tuy nhiên, những này không thể sửa tất cả các lỗi một cách đúng đắn hoàn toàn. Chẳng hạn chúng ta có một ví dụ sau: nếu một kênh truyền đảo ngược hai bit và do đó máy nhận thu được giá trị "001", hệ thống máy sẽ phát hiện là có lỗi xảy ra, song lại kết luận rằng bit dữ liệu gốc là bit có giá trị bằng 0. Đây là một kết luận sai lầm. Nếu chúng ta tăng số lần các bit được nhắc lại lên 4 lần, chúng ta có thể phát hiện tất cả các trường hợp khi 2 bit bị lỗi, song chúng ta không thể sửa chữa chúng được (số phiếu bầu "hòa"); với số lần nhắc lại là 5 lần, chúng ta có thể sửa chữa tất cả các trường hợp 2 bit bị lỗi, song không thể phát hiện ra các trường hợp 3 bit bị lỗi.Nói chung, tái diễn là một hết sức không hiệu quả, giảm công suất xuống 3 lần so với trường hợp đầu tiên trong ví dụ trên của chúng ta, và công suất làm việc giảm xuống một cách 5LỚP ĐT3K4-CN nhanh chóng nếu chúng ta tăng số lần các bit được nhắc lại với mục đích để sửa nhiều lỗi hơn.3.4 Mã hamminga) Mã hóaTừ trước tới nay chúng ta đã kiểm tra số các bit cần thiết để có thể kiểm soát toàn bộ các trạng thái lỗi bit đơn có thể xảy ra trong khi truyền. Nhưng làm cách nào chúng ta có thể xử lý các bit này để khám phá ra trạng thái nào đã xảy ra?.Một kỹ thuật được phát triển bởi R.W Hamming cung cấp một giải pháp thực tế.Định vị trí các bit dư thừa – Positioning Redundancy BitsMã Hamming có thể được áp dụng cho các đơn vị dữ liệu có chiều dài bất kỳ và sử dụng mỗi quan hệ giữa dữ liệu và bit dư thừa được bàn luận ở phần trên. Ví dụ, một ASCII 7 bit cần phải có 4 bit dư thừa có thể được thêm vào cuối đơn vị dữ liệu hoặc đặt rải rác với các bit dữ liệu gốc. Trong hình dưới đấy là những bit này được đặt ở các vị trí 1,2,4 và 8 (các vị trí trong chuỗi tuần tự 11 bit là bình phương của 2). Để thấy rõ trong các ví dụ dưới đây, chúng ta cần xem các bit r1, r2, r4 và r8. Các vị trí của các bit dư thừa trong HammingTrong Hamming, mỗi r bit là bit VRC cho một tổ hợp các bit dữ liệu; r1 là bit VRC cho một tổ hợp các bit dữ liệu, r là bit VRC cho tổ hợp các bit dữ liệu khác, vân vân…Các tổ hợp được sử dụng để tích toán từng giá trị r cho chuỗi 7 bit dữ liệu như sau:r1: Các bit 1,3, 5, 7, 9, 11r2: các bit 2, 3, 6,7, 10, 11r4: các bit 4, 5, 6, 7r8: các bit 8, 9, 10, 11Mỗi bit dữ liệu này có thể bao gồm một hoặc nhiều tính toàn VRC. Trong các chuỗi trên, từng bit dữ liệu gốc được bao gồm trong ít nhất 2 tập hợp, trong khi r bit chỉ được bao gộp một lần.Để xem mẫu theo giải pháp này, hãy xem biểu diễn nhị phân của từng vị trí bit. Bit r1 được tính toàn bằng cách sử dụng tất cả các vị trí biểu diễn nhị phân của nó bao gồm một bit 1 ở vị trí phải nhất. Bit r2 được tính toán bằng cách sử dụng tất cả các vị trí bit với một bit 1 ở vị trí thứ 2…. 6LỚP ĐT3K4-CN Tính toán các bit dư thừaTính toán các giá trị rthể hiện Hamming áp dụng đối với một ký tự ASCII. Trong bước đầu tiên, chúng ta thay thế từng bit của ký tự gốc trong các vị trí thích hợp của nó bằng đơn vị dữ liệu có chiều dài 11 bit. Trong các bước tiếp sau, chúng ta tính toán các giá trị chẵn lẻ đối với nhiều tổ hợp bit. Giá trị chẵn lẻ cho từng tổ hợp đó là giá trị tương ứng với r bit. Ví dụ, giá trị của r1 được tính toán để cung cấp tính chẵn lẻ-chẵn đối với tổ hợp các bit 3, 5, 7, 9 và 11. Giá trị của r2 được tính toán để cung cấp tính chẵn lẻ-chẵn với các bit 3, 6, 7, 10 và 11 vân vân…Mã 11 bit cuối cùng được gửi qua đường truyền dẫn.7LỚP ĐT3K4-CN b) tìm và sửa lỗiGiờ chúng ta hãy hình dung rằng theo thời gian khi dữ liệu được truyền tới bên nhận, số 7 bit đã bị thay đổi từ 1 thành 0Ví dụ về tính toán các bit dư thừaBên nhận lấy dữ liệu từ đường truyền và tính toán lại 4 VRC mới sử dụng cùng tập bit đã được sử dụng bởi bên gửi cộng với bit chẵn lẻ tương ứng (r) đối với từng tập hợp (xem hình 9.21). Sau đó nó lắp ghép các giá trị chẵn lẻ đó vào một số nhị phân theo thứ tự của r (r8, r4 ,r2 ,r1). Trong ví dụ của chúng ta, bước nay cho chúng ta số nhị phân 0111 (bằng 7 trong hệ mười), là vị trí chính xác của bit lỗi. Một khi bit lỗi đã được xác định, bên nhận có thể đảo ngược giá trị của nó và thực hiện sửa lỗi đó.c) Sửa lỗi hàng loạt bit Hamming có thể được thiết kế để sửa các lỗi hàng loạt bit có chiều dài cụ thể. Số các bit dư thừa cần thiết để tạo ra những sửa lỗi này là lớn hơn rất nhiều so với sửa lỗi bit đơn. Ví dụ, để sửa lỗi bit đôi, chúng ta cần phải xem xem hai bit đó có thể là tổ hợp của bất kỳ 2 bit bất kỳ trong toàn bộ chuỗi bit hay không. Sửa lỗi 3 bit của nghĩa là bất kỳ 3 bit nào trong toàn bộ chuỗi bit, vân vân…Vì thế, giải pháp đơn giản được sử dụng Hamming để sửa các lỗi bit đơn phải được thiết kế lại để có thể áp dụng cho sửa lỗi đa bit. Những phần sửa lỗi nhiều bit và lược đồ phức tạp của chúng nằm ngoài phạm vi của quyền sách này.8LỚP ĐT3K4-CN Lỗi bit đơn Lỗi bit đơnd) các ví dụVí dụ dùng (11,7) HammingLấy ví dụ chúng ta có một từ dữ liệu dài 7 bit với giá trị là "0110101". Để chứng minh phương pháp các Hamming được tính toán và được sử dụng để kiểm tra lỗi, xin xem bảng liệt kê dưới đây. Chữ d (data) được dùng để biểu thị các bit dữ liệu và chữ r là các bit thêm vào Đầu tiên, các bit của dữ liệu được đặt vào vị trí tương thích của chúng, sau đó các bit thêm vào cho mỗi trường hợp được tính toán dùng quy luật 9LỚP ĐT3K4-CN Cách tính các bit chẵn lẻ trong Hamming (từ trái sang phải)Thứ tự bit 1 2 3 4 5 6 7 8 9 10 11Vị trí bit chẵn lẻ và các bit dữ liệu r1r2d1r3d2d3d4r4d5d6d7Nhóm dữ liệu (không có bit chẵn lẻ): 0 1 1 0 1 0 1r11 0 1 0 1 1r20 0 1 0 0 1r30 1 1 0r40 1 0 1Nhóm dữ liệu (với bit thêm vào): 1 0 0 0 1 1 0 0 1 0 1Nhóm dữ liệu mới (new data word) - bao gồm các bit chẵn lẻ - bây giờ là "10001100101". Nếu chúng ta thử cho rằng bit cuối cùng bị thoái hóa (gets corrupted) và bị lộn ngược từ 1 sang 0. Nhóm dữ liệu mới sẽ là "10001100100"; Dưới đây, chúng ta sẽ phân tích quy luật kiến tạo Hamming bằng cách cho bit chẵn lẻ giá trị 1 khi kết quả kiểm tra dùng quy luật số chẵn bị sai.10LỚP ĐT3K4-CN [...]... Do vậy, Hamming phát hiện tất cả các lỗi do hai bit bị thay đổi — song nó không phân biệt được chúng với các lỗi do 1 bit bị thay đổi 12 LỚP ĐT3K4-CN Ví dụ : Hamming (7, 4) gồm 4 bit mang tin d3 d2 d1 d0 và 3 bit kiểm tra r2 r1 r0 ⇒ Hamming có dạng : d3 d2 d1 d0 r2 r1 r0 * Các bit kiểm tra c2, c1, c0 được tính như sau : r0 = d0 ⊕ d1 ⊕ d3 r1 = d0 ⊕ d2 ⊕ d3 r2 = d1 ⊕ d2 ⊕ d3 Ví dụ cho chữ... = d0 ⊕ d1 ⊕ d3 r1 = d0 ⊕ d2 ⊕ d3 r2 = d1 ⊕ d2 ⊕ d3 Ví dụ cho chữ A là : d3 d2 d1 d0 = 1010 r0 = 0 ⊕ 1 ⊕ 1 = 0 ⇒ r1 = 0 ⊕ 0 ⊕ 1 = 1 r2 = 1 ⊕ 0 ⊕ 1 = 0 ⇒ Vậy A theo Hamming là : 1010010 Giải mã * Khi bộ phận thu thu được một từ mã, có thể tính lại 3 giá trị kiểm tra : p0, p1, p2 như sau : p0 = r0 ⊕ d0 ⊕ d1 ⊕ d3 = 0 ⊕ 0 ⊕ 1 ⊕ 1 = 0 p1 = r1 ⊕ d0 ⊕ d2 ⊕ d3 = 1 ⊕ 0 ⊕ 0 ⊕ 1 = 0 p2 = r2 ⊕ d1 ⊕ d2 ⊕... giá trị (lỗi trong truyền thông) thì giá trị của bit chẵn lẻ vẫn đúng như giá trị gốc (0,1) Việc đổi ngược giá trị của bit thứ 11 làm cho nhóm 10001100100 trở lại thành 10001100101 Bằng việc bỏ đi phần Hamming, chúng ta lấy được phần dữ liệu gốc với giá trị là 0110101 Lưu ý, các bit chẵn lẻ không kiểm tra được lẫn nhau, nếu chỉ một bit chẵn lẻ bị sai thôi, trong khi tất cả các bit khác là đúng, thì . nay được biết là Mã Hamming. Một số chương trình ứng dụng hiện thời vẫn còn sử dụng mã này của ông.II.MÃ HAMMING1 . Khoảng cách mã hammingTrong lý. toán bằng cách sử dụng tất cả các vị trí bit với một bit 1 ở vị trí thứ 2…. 6LỚP ĐT3K4-CN Tính toán các bit dư thừaTính toán các giá trị rthể hiện mã Hamming

Ngày đăng: 24/01/2013, 09:42

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan