C phát hiện xung đột, hủy bỏ bức đIện hờ một thời gian ngẫu nhiên và lặp lạ
2.5.3 Bit chẵn lẻ 2 chiều
Phương phỏp dựng bit chẵn lẻ hai chiều cũn được gọi là phương phỏp bảo tồn khối. Dóy bit mang thụng tin nguồn được sắp xếp lại thành từng khối vuụng (trong tưởng
tượng), coi như cú hai chiều. Trong thực tế người ta hay chọn 7 hàng và 7 cột. Việc tớnh bit chẵn lẻ được thực hiện theo cả hai chiều hàng và cột.
Dưới đõy là vớ dụ một bức điện sử dụng bit chẵn lẻ 2 chiều khụng bị lỗi, với cấu trỳc (7+1) x (7+1) và parity chẵn. Một điểm đỏng chỳ ý là số bit 1 hoặc 0 ở cột p (tớnh parity theo hàng) cũng giống như ở hàng p (tớnh parity theo cột), nờn bit cuối cựng giao nhau giữa hàng p và cột p cú thể tớnh parity theo hàng hoặc cột.
1. 2. 3. 4. 5. 6. 7. p 1. 0 1 0 0 1 0 1 1 2. 1 0 0 1 0 0 0 0 3. 1 1 1 0 1 1 1 0 4. 0 1 0 1 0 1 0 1 5. 1 1 1 1 0 1 1 0 6. 0 0 0 1 1 1 1 0 7. 1 1 0 0 1 1 0 0 p 0 1 0 0 0 1 0 0
Trong trường hợp chỉ một bớt bị đảo, vớ dụ ở hàng thứ 3 và cột thứ 4 trong bảng sau
đõy, thỡ lỗi đú khụng những phỏt hiện được, mà ta cũn cú thể cho rằng lỗi định vị được
1. 2. 3. 4. 5. 6. 7. p 1. 0 1 0 0 1 0 1 1 1. 0 1 0 0 1 0 1 1 2. 1 0 0 1 0 0 0 0 3. 1 1 1 1 1 1 1 0 4. 0 1 0 1 0 1 0 1 5. 1 1 1 1 0 1 1 0 6. 0 0 0 1 1 1 1 0 7. 1 1 0 0 1 1 0 0 p 0 1 0 0 0 1 0 0
Tương tự như vậy, hai bit bị lỗi nằm khỏc hàng và khỏc cột sẽ phỏt hiện được và sửa
được. Tuy nhiờn, nếu hai bit bị lỗi lại nằm cựng một cột hay cựng một hàng, thỡ chỳng
chỉ cú thể phỏt hiện nhưng khụng định vị được.
Trong trường hợp 3 bit bị đảo, bờn nhận vẫn chắc chắn phỏt hiện được cú lỗi. Tuy nhiờn, một điều rất thỳ vị là ở đõy bờn nhận khụng khẳng định được số lỗi là 1 hay là 3. Xỏc định nhầm số lỗi ở đõy là 1 sẽ dẫn đến nhầm lẫn tai hại khi tỡm cỏch sửa bit lỗi. Lật lại vấn đề ở vớ dụ một lỗi hoặc hai lỗi (khỏc hàng và khỏc cột) xột ở trờn, rừ ràng bờn nhận khụng cú cỏch gỡ xỏc định được số lỗi một cỏch chớnh xỏc mà chỉ biết được số lỗi là chẵn hoặc lẻ. Tồi tệ hơn nữa là khi chớnh cỏc parity bit cú thể bị lỗi. Như vậy cú thể kết luận rằng ngay cả với phương phỏp parity hai chiều này, bờn nhận nếu cú phỏt hiện ra lỗi cũng khụng cú khả năng sửa lỗi một cỏch tin cậy.
1. 2. 3. 4. 5. 6. 7. p 1. 0 1 0 0 1 0 1 1 2. 1 0 0 1 0 0 0 0 3. 1 1 1 1 0 1 1 0 4. 0 1 0 1 0 1 0 1 5. 1 1 1 0 1 1 1 0 6. 0 0 0 1 1 1 1 0 7. 1 1 0 0 1 1 0 0 p 0 1 0 0 0 1 0 0
Ta xột tiếp trường hợp 4 bit bị lỗi cựng nằm ở 2 hàng và 2 cột bất kỳ. Cỏch tớnh chẵn lẻ theo cả hai chiều đều khụng phỏt hiện được, tuy xỏc suất xảy ra tỡnh huống này rất nhỏ. Vậy khoảng cỏch Hamming của mó dữ liệu thực hiện theo phương phỏp này là 4.
1. 2. 3. 4. 5. 6. 7. p 1. 0 1 0 0 1 0 1 1 1. 0 1 0 0 1 0 1 1 2. 1 0 0 1 0 0 0 0 3. 1 1 1 1 0 1 1 0 4. 0 1 0 1 0 1 0 1 5. 1 1 1 0 1 1 1 0 6. 0 0 0 1 1 1 1 0 7. 1 1 0 0 1 1 0 0 p 0 1 0 0 0 1 0 0 2.5.4 CRC
CRC (Cyclic Redundancy Check) cũn được gọi là phương phỏp mó đa thức hoặc mó vũng. Phương phỏp này được sử dụng trong hầu hết cỏc hệ thống truyền thụng. Tuy cỏi tờn của nú khụng biểu hiện nhiều, nhưng ý tưởng ở đõy là thụng tin kiểm lỗi (ở đõy được gọi là checksum) phải được tớnh bằng một thuật toỏn thớch hợp, trong đú giỏ trị
mỗi bit của thụng tin nguồn đều được tham gia nhiều lần vào quỏ trỡnh tớnh toỏn.
Để tớnh toỏn thụng tin kiểm lỗi đú, người ta dựng một “đa thức phỏt” G (generator
polynomial) cú một dạng đặc biệt. Chớnh vỡ thế phương phỏp này cũn được gọi là
phương phỏp dựng đa thức. G được qui ước dưới dạng nhị phõn, tức cỏc hệ số của nú chỉ cú giỏ trị 1 hoặc 0 tương ứng với cỏc chữ số trong một dóy bit. Vớ dụ:
Dạng đa thức: G = x7 + x6 + x5 + (0x4 + 0x3) + x2 + (0x1) + 1 Dạng nhị phõn: G = {11100101}
Dạng octal: G = {345}
Nguyờn tắc cơ bản của phương phỏp CRC
Giả sử đa thức G cú bậc n, vớ dụ x3+x+1 tương ứng với dóy bit {1011}. Dóy bit mang thụng tin nguồn I được thờm vào n bit 0 và coi như một đa thức nhị phõn P. Vớ dụ thụng tin nguồn là {110101} thỡ sau khi thờm 3 bit 0, ta cú dóy bit {110101000} tương ứng với đa thức P = x8+x7+x5+x3.
• Đa thức P được chia cho đa thức G, dựa vào cỏc qui tắc đơn giản của phộp trừ
khụng cú nhớ như sau: 1 - 1 = 0
0 - 0 = 0 1 - 0 = 1 1 - 0 = 1 0 - 1 = 1
• Khụng cần quan tõm tới kết quả của phộp chia, phần dư R (lấy n chữ số) của phộp chia được thay thế vào chỗ của n chữ 0 bổ sung trong P, tức là ta cú D = P +
R. Theo tớnh chất của phộp chia đa thức nhị phõn, nếu D-R chia hết cho G thỡ D = P+R cũng vậy. R được gọi là checksum và D chớnh là dóy bit được gửi đi thay cho I.
• Giả sử dóy bit nhận được là D' khụng chia hết cho G thỡ tức là D khỏc D', ta cú
thể khẳng định được rằng bức điện chắc chắn bị lỗi. Ngược lại, nếu D' chia hết cho G, thỡ xỏc suất rất cao là bức điện nhận được khụng cú lỗi. Ta núi “xỏc suất cao”, bởi mỗi bit trong thụng tin nguồn tham gia nhiều vũng (cyclic) vào tớnh toỏn thụng tin bổ trợ nờn khả năng “dữ kiện sai mà kết quả đỳng” là rất ớt.
Vớ dụ minh họa
• Thụng tin cần truyền I = 110101
• Đa thức qui ước G = 1011 (tức x3 + x + 1)
• Thờm 3 bit 0 vào thụng tin nguồn I, ta cú P = 110101000
• Chia đa thức P : G theo kiểu nhị phõn
1 1 0 1 0 1 0 0 0 1 0 1 1 - 1 0 1 1 1 1 1 1 0 1 - 1 0 1 1 1 1 1 1 0 1 0 1 1 0 0 - 1 0 1 1 0 1 1 1 1 - 1 0 1 1 0 1 0 0 0 - 1 0 1 1 0 0 1 1 0 0 - 1 0 1 1 0 1 1 1 P hần dư R • Dóy bit được chuyển đi: D = P + R = 110101111
• Giả sử dữ liệu nhận được là D' = 110101111
• Chia đa thức D' : G
110101111 : 1011 = 111101
Phần dư 0000 -> Xỏc suất rất cao là khụng cú lỗi
Một điều đỏng chỳ ý là tuy phương phỏp CRC cú vẻ như phức tạp, nhưng thực sự việc thực hiện nú lại rất đơn giản. Phộp chia đa thức nhị phõn ở đõy được thực hiện
thuần tỳy bởi cỏc phộp trừ khụng cú nhớ - hay chớnh là cỏc phộp logic XOR. Bờn cạnh
đú chỉ cần cỏc phộp sao chộp và so sỏnh bit thụng thường.
Như ta thấy, khả năng phỏt hiện lỗi được đặc trưng qua khoảng cỏch Hamming phụ thuộc hoàn toàn vào cỏch chọn đa thức qui ước G. Tuy nhiờn, để phương phỏp này đạt
được hiệu quả tối ưu, cần cõn nhắc cả tới quan hệ giữa chiều dài của dóy bit mang thụng
được gọi là mó (m, n), trong đú m là tổng số bit và n là số bit mang dữ liệu. Một cấu
trỳc bức điện theo tiờu chuẩn DIN 19 244:
Tờn gọi: Mó (8i+8, 8i), với i = 1...15 là số byte (octet) của dữ liệu Lớp cấu trỳc (format class): FT2
Đa thức phỏt: G = 11100101, tức x7 + x6 + x5 + x2 + 1 Khoảng cỏch Hamming: HD = 4
Vớ dụ với i = 7, ta sẽ cú mó (64, 56), tức bức điện dài 8 byte chứa 7 byte dữ liệu. Trong 8 bit kiểm lỗi cú 7 bit là phần dư R được tớnh theo phương phỏp CRC, bit cũn lại chớnh là parity bit chẵn của R, sau đú giỏ trị mỗi bit lại được đảo lại.