1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Đề tài Mã Hamming

38 2,7K 11

Đ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 38
Dung lượng 725,62 KB

Nội dung

Đề tài Mã Hamming

Trang 1

Đề tài : Mã Hamming

Richard W Hamming (1915-1998)

Hamming Code

Nhóm 1

Trang 2

Ký hiệu Định nghĩa

u Bản tin gốc

S(x) Tín hiệu truyền N(x) Tín hiệu nhiễu R(x) Tín hiệu nhận

R Chuỗi bit giải điều chế

u Chuỗi bit đã giải mã

Hamming Code

Trang 3

Mục đích của lý thuyết Mã hóa trên kênh truyền (channel encoding theory) là tìm những mã

có thể truyền thông nhanh chóng, chứa đựng nhiều mã ký (code word) hợp lệ và có thể sửa lỗi (error correction) hoặc ít nhất phát hiện các lỗi xảy ra (error detection) Các mục đích trên

không phụ thuộc vào nhau, và mỗi loại mã có công dụng tối ưu cho một ứng dụng riêng biệt Những đặc tính mà mỗi loại mã này cần còn tuỳ thuộc nhiều vào xác suất lỗi xảy ra trong quá trình truyền thông

Ở đây ta tìm hiểu mã khối tuyến tính (Linear block codes), bao gồm :

• Mã tuần hoàn (Cyclic codes, mã Hamming là một bộ phận nhỏ)

• Mã tái diễn (Repetition codes)

Trang 4

Trong viễn thông (telecommunication), mã Hamming là một mã sửa lỗi tuyến tính (linear

error-correcting code), được đặt tên theo tên của người phát minh ra nó, Richard Hamming

Mã Hamming có thể phát hiện một bit hoặc hai bit bị lỗi (single and double-bit errors) Mã

Hamming còn có thể sửa các lỗi do một bit bị sai gây ra

Ngược lại với mã của ông, mã chẵn lẻ (parity code) đơn giản vừa không có khả năng phát

hiện các lỗi khi 2 bit cùng một lúc bị hoán vị (0 thành 1 và ngược lại), vừa không thể giúp để sửa được các lỗi mà nó phát hiện thấy

Hamming Code

Trang 5

Khoảng cách Hamming

Khoảng cách Hamming được sử dụng trong kỹ thuật viễn thông để tính số lượng các bit trong một từ nhị phân (binary word) bị đổi ngược, như một hình thức để ước tính số lỗi xảy ra trong quá trình truyền thông, và vì thế, đôi khi nó còn được gọi là khoảng cách tín hiệu (signal

distance) Việc phân tích trọng số Hamming của các bit còn được sử dụng trong một số ngành, bao gồm lý thuyết tin học, lý thuyết mã hóa, và mật mã học

Trước tiên ta tìm hiểu về trọng số Hamming: trọng số Hamming của một từ mã là số số 1 có trong

từ mã đó Ví dụ với từ mã 00111010 có trọng số Hamming là 4 Khoảng cách Hamming được định nghĩa là các bít khác nhau giữa hai từ mã Khoảng cách Hamming giữa hai từ mã được lấy bằng cách dùng toán tử XOR từng bít của hai từ mã với nhau và khoảng cách Hamming là trọng

số của kết quả tìm được trong phép XOR trên Ví dụ ta có hai từ mã 0110101 và 1110001 ta có:

0 1 1 0 1 0 1XOR

1 1 1 0 0 0 1 -

1 0 0 0 1 0 0Vậy khoảng cách Hamming của 2 từ mã trên là 2

Hamming Code

Trang 6

Trọng lượng Hamming

Trọng lượng Hamming (Hamming weight) 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 (binary string), 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

Đối với một chiều dài cố định "n", khoảng cách Hamming là độ đo trên không gian vectơ của các

từ có chiều dài đó, vì nó thỏa mãn yêu cầu về tính chất số không âm (non-negativity) (số tuyệt đối), hiện thân của tính bất khả phân định (indiscernibles) và tính đối xứng (symmetry), và nó có thể được chứng minh một cách dễ dàng bằng phép quy nạp toàn phần (complete induction) rằng

nó còn thỏa mãn bất đẳng thức tam giác (triangle inequality) nữa

Hamming Code

Trang 7

Khoảng cách Hamming giữa hai từ a và b còn được gọi là trọng lượng Hamming (Hamming

weight) của phép toán a−b, dùng một toán tử thích hợp thay thế cho toán tử "−"

Đối với hai dãy ký tự nhị phân a và b, phép toán này tương đương với phép toán a XOR b

Khoảng cách Hamming của các dãy ký tự nhị phân còn tương đương với khoảng cách Manhattan giữa hai giao điểm của một hình giả phương cấp n (n-dimensional hypercube), trong đó n là chiều dài của các từ

Hamming Code

Trang 8

Ví dụ đối với mã ASCII 7 bit

Mã ASCII 7 bit cần 4 bit dư thừa để thêm vào dữ liệu gốc Sở dĩ ta chọn là 4 bít vì 24 = 16 sẽ xác định được 16 trường hợp bị lỗi đơn bít (trong dãy ta xét có 11 bit: 7 bit dữ liệu và 3 bit

mã) Các bít dư thừa được đặt vào vị trí 1, 2, 4 và 8 (Chữ d (data) được dùng để biểu thị các bit

dữ liệu và chữ p (parity) để biểu thị các bit chẵn lẻ (parity bits).)

Trang 9

Thuật toán :

Mã Hamming là một mã sửa lỗi tuyến , mã này có thể phát hiện một bit hoặc hai bit bị lỗi Mã Hamming còn có thể sửa các lỗi do một bit bị sai gây ra

Có thể tóm tắt các bước cho việc sử dụng mã Hamming như sau:

1) Các vị trí trong một khối được bắt đầu đánh số từ 1: Bit 1, 2, 3…

2) Tất cả các bít ở vị trí số mũ của 2 được dùng làm bít chẵn lẻ Vd: 20, 21, 22, 23, 24…

3) Tất cả các vị trí khác vị trí còn lại sẽ được dùng cho các bit dữ liệu VD: vị trí thứ 2, 3, 5, 6, 7…4) Mỗi bit chẵn lẻ tính giá trị chẵn lẻ cho một số bit trong từ mã theo quy tắc như sau:

Hamming Code

Trang 10

Bít chẵn lẻ ở vị trí số 1 (20) sẽ kiểm tra tính chẵn lẻ của các vị trí mà số thứ tự của vị trí đó trong

Tương tự với các bít chẵn lẻ ở vị trí cao hơn: 8, 16, 32…

Tóm lại, mỗi bít chẵn lẻ trong mã Hamming sẽ tính giá trị chẵn lẻ mà tại đó, bit nhị phân của vị trí AND với các bit vị trí sẽ là một số khác không.

Hamming Code

Trang 11

Hình 1: Vòng tròn trong mã Hamming

Trong đó, bit R được dùng để tính chẵn lẻ các tổ hợp bít sau:

Bit p1 tính các bit thứ 3, 5, 7, 9, 11 Bit p2 tính các bit thứ 3, 6, 7, 10, 11Bit p3 tính các bit thứ 5, 6, 7

Bit p4 tính các bit thứ 9, 10, 11

Hamming Code

Trang 12

Ví dụ, ta có chuỗi bit "1010110" và mã Hamming sử dụng bít chẵn lẻ chẵn thì

p1 = 1, p2 = 0, p3 = 0, p4 = 0

Khi đó, chuỗi dữ liệu truyền đi sẽ là 10100100110

Hình 2: Vòng tròn Hamming

Hamming Code

Trang 13

Do mã hamming sử dụng bit chẵn-lẻ-chẵn nên tổng số bít 1 trong 1 vòng tròn là số chẵn Giả

sử trong quá trình truyền xảy ra lỗi tại bit 11, tại phía thu, thuật toán sẽ phát hiện ra tổng số bit 1 trong 3 vòng tròn (vòng bên trái và hai vòng trên dưới) là một số lẻ, trái với quy tắc nên

nó sẽ thay đổi giá trị của bít nằm ở vùng giao của 3 vòng tròn này

Hình 2.3: Bit thứ 11 bị lỗi khiến tổng số bít 1 của 3 vòng tròn bên phải

là một số lẻ

Hamming Code

Trang 14

Bộ mã V có thể thay đổi bằng bộ mã V’ có cùng xác suất sai

Các bộ mã tương đương được tạo ra bằng cách biến đổi tương đương trên ma trận sinh : hoán bị cột , tổ hợp tuyến tính các hàng củ thành hàng mới

G  Gch = [Ik,k , p k,(n-k)]

Ma Trận Sinh

Trang 15

Dưới dạng cấu trúc hệ thống H = [Ir.Q] Trong đó :

Ir là ma trận đơn vị

Ma trận Q gồm 2r – 1 – r cột

Mỗi cột là vector r chiều có trọng số là 2 hoặc lớn hơn

Định nghĩa : với v € V , u € U thì ma trận sinh [H] = [h1 h2 …hn-k] với v.HT =0

Định lý : nếu V có Gch = [Ik,k , p k,(n-k)] thì Hch = [- , Ik,(n-k)]

Trong thực tế để việc tạo và giải mã hamming một cách đơn giản, người ta đổi vị trí các cột trong ma trận H Khi đó các bit cần kiểm tra xen kẽ với các bit mang tin chứ không còn tính chất khối

Ma Trận Thử

Hamming Code

-T K

P

Trang 16

Mô tả bằng thuật toán

Ví dụ, với m=3, ma trận của mã [7,4] được viết dưới dạng H(3,7) =

Như ta đã biết, mã Hamming là một mã khối Và với mọi m > 2, luôn tồn tại mã Hamming với các thông số sau:

• Chiều dài từ mã: n = 2m-1

• Chiều dài phần tin: k=2m-m-1

• Chiều dài phần kiểm tra: m=n-k

• Khả năng sửa sai: t=1

Trang 17

Xây Dựng Mã Hamming

Hamming Code

Mã hamming có đặc điểm : Ma trận thử H có r hàng , 2r – 1 cột

Xét Ví Dụ : mã hamming ( 7,4 ) có ma trận thử H

Để việc tạo mã đơn giản ta chọn các bit kiểm tra c 1 , c 2 , c 3 ở các vị trí tương ứng 2i với i = 0,1,2, (nghĩa là các vị trí thứ nhất , thứ hai và thứ tư của các ký hiệu từ mã)

V có dạng : v= c 1 c 2 u 1 c 3 u 2 u 3 u 4 , với u = u 1 u 2 u 3 u 4

Trang 19

Sơ đồ tạo mã : u = u1 u2 u3 u4

Trang 20

Ưu điểm :

Từ ma trận H ta dễ dàng suy ra từ mã v , nghĩa là không cần biết ma trận sinh G ta cũng dễ dàng tìm được v

Hamming Code

Trang 21

Sơ Đồ Sửa Lỗi Mã Hamming

Để nhận biết sai và sửa lỗi kênh truyền ta dùng Syndrome

Trang 23

Cho : e= 1000000 => s1= eHT = [ 1000000 ] HT = 001 e= 0100000 => s2 = 010

e= 0010000 => s3 = 011 e= 0001000 => s4 = 100 e= 0000100 => s5 = 101 e= 0000010 => s6 = 110 e= 0000001 => s7 = 111

Hamming Code

Trang 24

Bản sự thật :

Hamming Code

Trang 25

Mạch Sửa Lỗi :

Hamming Code

Trang 26

Ví Dụ : tín hiệu thu được r = ( r1 r2 r3 r4 r5 r6 r7 ) = ( 0 0 1 1 0 1 1 )

Vậy : S = ( 1 1 0) , nếu đổi ra nhị phân là 6 , ta nhận thấy S trùng với cột số 6 của ma trận H , có nghĩa

ký hiệu sai là ký hiệu số 6(r) đầu ra thứ 6 của sơ đồ giải mã sẽ có i=1

Ta chỉ cần đảo bit thứ 6 theo thuật toán :

Kết luận : Mã hamming chỉ sửa được 1 lỗi / 1 đường truyền do đó được dùng rất nhiều

trong truyền dữ liệu trong mạng máy tính

Trang 27

Độ lợi mã hóa (Coding Gain)

𝑘 𝐸𝑏= 𝑛𝐸𝑠→ 𝐸𝑏= 𝐸𝑠

𝑅

Trang 28

Độ lợi mã hóa :

Hamming Code

Trang 30

Có thể nói, lịch sử phát triển của mã sửa lỗi được bắt đầu bằng sự ra đời của mã Hamming và định lý Shannon Việc ra đời mã Hamming là cơ sở cho việc phát triển thêm nhiều loại mã hóa mới, có độ tin cậy cao hơn sau này

Mã Hamming có tầm quan trọng cơ bản trong lý thuyết mã hóa và được sử dụng thực tế

trong thiết kế máy tính Ưu điểm của mã này là đơn giản, số bit kiểm tra ít, ngoài ra, mã này hoạt động tốt trong việc phát hiện các lỗi đơn bit và một số trường hợp lỗi hai bit Tuy nhiên,

mã Hamming không thể sửa được bản tin bị lỗi đa bit

Hamming Code

Trang 31

MÃ HÓA NGUỒN

Trang 32

MÃ SHANNON

Định nghĩa giới hạn của n 0 : m-ni ≤ P(Ui) ≤ m1-ni (1).

• Bước 1: Liệt kê Ui và P(Ui) theo thứ tự giảm dần vào cột 1 và 2

Trang 33

Ví Dụ : Cho bộ mã U với xác suất như sau

U i U 1 U 2 U 3 U 4 U 5 U 6 U 7 U 8 U 9 P(U i ) 0.34 0.2 0.19 0.1 0.07 0.04 0.03 0.02 0.01

U i P(u i ) P i n i Dạng nhị phân của P i Từ mã

Trang 34

• Độ dài trung bình từ mã :

• Entropy của tập tin :

• Chỉ số kinh tế của bộ mã :

Shannon Code

Trang 35

Mã Từ Điển LZ77

• Đưa chuỗi văn bản vào bộ đệm

• Dùng 1 cửa sổ trượt để đọc các ký tự cần mã hóa vào

• Ngõ ra :

+ Khi bắt đầu mã hóa: <0,0,k> (k là kí tự đầu tiên)

+ Lần mã hóa tiếp theo: <i,j,k> So sánh kí tự mã hóa với kí tự đã mã hóa,

nếu giống thì đưa ra từ mã <i,j,k> trong đó : i là vị trí bắt đầu của đoạn/kí tự

giống nằm trong từ điển với đoạn/kí tự đang nén ; j là độ dài của đoạn kí tự giống ; k là ký tự kế tiếp

Dictionary Algorithm

Trang 36

Ví Dụ : mã hóa đoạn ký tự sau AABCBBABC

Trang 37

Mã Từ Điểm LZSS

Nếu có 2 kí tự giống trở lên thì mới chép trong từ điển ra <0,i,j>

Chỉ có 1 kí tự giống hoặc không có kí tự giống <1,k>

Trang 38

Hamming Code

Ngày đăng: 09/08/2015, 16:13

HÌNH ẢNH LIÊN QUAN

Hình 1: Vòng tròn trong mã Hamming - Đề tài  Mã Hamming
Hình 1 Vòng tròn trong mã Hamming (Trang 11)
Hình 2: Vòng tròn Hamming - Đề tài  Mã Hamming
Hình 2 Vòng tròn Hamming (Trang 12)
Sơ Đồ Sửa Lỗi Mã Hamming - Đề tài  Mã Hamming
a Lỗi Mã Hamming (Trang 21)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w