1. Trang chủ
  2. » Công Nghệ Thông Tin

đồ án mã hamming

14 7,1K 257
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 195,39 KB

Nội dung

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

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA : ĐIỆN TỬ

ĐỒ ÁN MÔN HỌC KỸ 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ừng

Trang 2

Lời nói đầu

Ngà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

Trang 3

Mục lục

Trang

Lời nói đầu : ……… 2

I lịch sử phát triển……… 4

II 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 :……… 14

Trang 4

I Lịch sử phát triển

Trong 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 mà hiện 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Ã HAMMING

1 Khoảng cách mã hamming

Trong 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ụ :

Trọng lương mã hammin

2 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ã hamming

3.1 Mã 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

Trang 5

Việc kiểm tra dùng mã 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ì mã này không phát hiện được lỗi Hơn nữa, mã 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 mã 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 Mã hai-trong-năm

Trong những năm của thập niên kỷ 1940, Bell có sử dụng một mã hiệu phức tạp hơn một

chút, gọi là mã hai-trong-năm (two-out-of-five code) Mã 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ế, mã hai-trong-năm cũng chỉ có thể phát hiện được một đơn vị bit mà 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ệu

Một mã nữa được dùng trong thời gian này là mã 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 mã 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 mã 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à mã "sửa lỗi" (error-correcting code).

Tuy nhiên, những mã 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

Trang 6

Nói chung, mã tái diễn là một mã 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 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ã hamming

a) Mã hóa

Từ 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 Bits

Mã 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 mã ASCII 7 bit cần phải có 4 bit dư thừa mà 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 mã Hamming

Trong mã 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, 11 r2: các bit 2, 3, 6,7, 10, 11 r4: các bit 4, 5, 6, 7 r8: các bit 8, 9, 10, 11 Mỗ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í mà 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…

Trang 7

Tính toán các bit dư thừa

Tính toán các giá trị r

thể hiện mã 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

Trang 8

b) Dò tìm và sửa lỗi

Giờ 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 0

Ví dụ về tính toán các bit dư thừa Bê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

Mã 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 mã 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

Trang 9

Lỗi bit đơn

Lỗi bit đơn

d) các ví dụ

Ví dụ dùng (11,7) mã Hamming

Lấ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 mã 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

Trang 10

Cách tính các bit chẵn lẻ trong mã Hamming (từ trái sang phải)

Vị trí bit chẵn lẻ và các bit dữ liệu r 1 r 2 d 1 r 3 d 2 d 3 d 4 r 4 d 5 d 6 d 7

Nhóm dữ liệu (không có bit chẵn

Nhóm dữ liệu (với bit thêm vào): 1 0 0 0 1 1 0 0 1 0 1

Nhó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 mã 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.

Trang 11

Kiểm tra các bit thêm vào (bit bị đảo lộn có nền thẫm)

Vị trí bit chẵn lẻ và các bit

dữ liệu r 1 r 2 d 1 r 3 d 2 d 3 d 4 r 4 d 5 d 6 d 7 Kiểm chẵn

lẻ

Bit chẵn lẻ

Bước cuối cùng là định giá trị của các bit chẵn lẻ (nên nhớ bit nằm dưới cùng được viết về bên phải - viết ngược lại từ dưới lên trên) Giá trị số nguyên của các bit chẵn lẻ là 11(10), và như vậy

có nghĩa là bit thứ 11 trong nhóm dữ liệu (data word) - bao gồm cả các bit chẵn lẻ - là bit có giá

trị không đúng, và bit này cần phải đổi ngược lại

r 4 r 3 r 2 r 1

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

TỪ KHÓA LIÊN QUAN

w