Nếu chỉ truyền đúng data cần truyền, lỗi không thể phát hiện. Cần gửi kèm thêm thông tin với data cần truyền[r]
(1)Phát sửa lỗi
(Error Detection and Correction)
1
Tài liệu : Forouzan , Data Communication and Networking
(2)Nội dung
• Khái niệm
• Mã Hamming
(3)Khái niệm
• Dữ liệu truyền bị lỗi
• Có dạng :
– Lỗi sai bit
– Lỗi sai nhiều bit
(4)Khái niệm
• Nguyên tắc phát lỗi :
Nếu truyền data cần truyền, lỗi phát
Cần gửi kèm thêm thông tin với data cần truyền
Thông tin gửi kèm giúp phát lỗi
• Xem xét PP : mã khối – Block coding
(5)Khái niệm
• Ví dụ : kỹ thuật Vertical Redundancy Check (VRC)
Thêm bit vào cuối khối data , theo nguyên tắc : “Tổng số bit số chẵn “
Bit thêm vào gọi Parity Check (bit kiểm tra chẵn lẻ) Ví dụ : kiểm tra chẵn
0110011 01100110
0110001 01100011
Nhận xét : Chỉ phát số lỗi lẻ
// bit thêm vào để tổng số bit chẵn // bit thêm vào để tổng số bit chẵn
(6)Khái niệm
(7)Khái niệm
0110011
01100110 00100110
Thêm bit kiểm tra kiểm tra tổng số bit ?
Lỗi
Data word
Code word
7 Ví dụ :
(8)Khái niệm
• Để phát lỗi :
– Bên nhận có danh sách từ mã (code word)
– Nếu code word nhận khơng thuộc danh sách -> có lỗi
(9)Khái niệm
• Bảng code word để dò lỗi
– từ mã (code word) có Số bit chẵn
– Các từ mã không trùng lặp nhau, khác bit
(10)Khoảng cách Hamming
• Khoảng cách Hamming từ độ dài : số bit (ở vị trí ) khác
• Khoảng cách Hamming tối thiểu : khoảng cách nhỏ cặp có tập từ
d(000, 011)
(11)Khoảng cách Hamming
dmin bảng sau
(12)Khoảng cách Hamming
• Định lý : Để đảm bảo phát lỗi s bit khoảng cách Hamming cực tiểu cặp từ mã phải dmin = s+1
• Định lý 2: để sửa t lỗi , khoảng cách Hamming cực tiểu từ mã phải
(13)Mã Hamming
• Dùng để sửa lỗi
• Mã Hamming xem xét có dmin =
=> Theo định lý 2: dùng để sửa lỗi
(14)(15)Cho bảng mã Hamming C(7,4)
15
Mã Hamming
(16)r
0=a
2+a
1+a
0module 2
r
1=a
3+a
2+a
1module 2
Ký hiệu :
Data word : a3 a2 a1 a0 1010
Code word : a3 a2 a1 a0 r2 r1 r0 1010001
Xác định code word ?
<=> tính r2 r1 r0
(17)s
0=b
2+b
1+b
0+q
0module = % = 1
s
1=b
3+b
2+b
1+q
1module = %2 = 1
s
2=b
0+b
1+b
3+q
2module =(0+0+1+0)%2=1
Chuỗi bit nhận cần kiểm tra : b3b2b1b0q2q1q0Cách phát lỗi : 1000001 => 1010001 => 1010
(1) Tính syndrome s2s1s0
(2) s2s1s0 = 000 khơng có lỗi ngược lại : có lỗi 111 => có lỗi
17
Mã Hamming
(18)Logical decision made by the correction logic analyzer
Cách sửa lỗi :
(1) tìm bit bị lỗi dựa vào bảng dị lỗi sau (2) đảo ngược bit lỗi
(19)Mã Hamming
• VD1 : Bên nhận nhận code word 0100011 Xác định dataword ?
Giải :
Tính syndrome s2s1s0 = 000
Kết luận : code word nhận không lỗi Data word bit cực trái : 0100
(20)Mã Hamming
• VD2 : Bên nhận nhận code word 0101011 Xác định data word ?
Giải :
Tính syndrome s2s1s0 = 101
(ghi chi tiết cách tính s2, s1, s0 … ) Kết luận : code word nhận bị lỗi
(21)Mã phát lỗi
Cyclic Redundancy Check (CRC)
• CRC pp để phát lỗi cách gắn thêm khối bit phía sau khối liệu
• Các bit bổ sung thêm vào gọi bit CRC
• Có số pp cài đặt : modulo 2, đa thức, …
(22)(23)Mơ hình mã giải mã CRC
• Bên gửi :
– Đầu vào : Dataword bit
– Dùng mã để tính r2r1r0 => thu Codeword bit
• Bên nhận :
– Nhận Codeword bit
– Dùng giải mã để tính Syndrome
• Nếu Syndrome ≠ 0 => nhiều bit bị lỗi
• Nếu Syndrome = 0 : trường hợp
– Khơng có lỗi => Thu Dataword
– Một số bit bị lỗi , giải mã không phát
(24)Mơ hình mã giải mã CRC
• Bên gửi : thực mã Dataword k bits (k= 4) => kết thu Codeword n bits (n= 7) => truyền Codeword (1) Thêm vào bên phải Dataword số bit n-k (3 bit)
(2) Một số chia xác định trước d3d2d1d0, có số bit n-k+1 Ví dụ : 1011
(3)Thực phép chia modulo Dataword n bit với số chia d3d2d1d0
(25)25
Bên gửi
(26)Mơ hình mã giải mã CRC
• Bên nhận : Đưa Codeword vào giải mã để tính syndrome => Dựa giá trị syndrome để phát có lỗi hay khơng
(1) Thực phép chia modulo Codeword nhận với số chia d3d2d1d0 (vd : 1011)
=> thu : Phần dư phép chia modulo số syndrome
(27)Trường hợp : Codeword nhận
là codeword đúng
27
Bên nhận
(28)Trường hợp : Codeword nhận
là codeword sai
(29)CRC
• Bài tập : Tìm mã CRC với C(7,4) của liệu gửi 1010
(Số chia dùng mã giải mã 1011)
(30)Tính mã CRC
• 1011 ) 1 0 0
1 1 0
0 0 0 0 0 0
1 0 1
(31)Test
• 1011 ) 1 0 1
1 1 0
0 0 0 1 0 0
1 1 1
0 0 => codeword không lỗi
(32)Test
• 1011 ) 1 1
1 1 0 0
0 0 0 0 0 0