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 đ ện sử dụng bit chẵ ẻi 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 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 ằ ỗ đị ị và vỡ vậy s a đượ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 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 khụng phỏt hiệ được, tuy xỏc suất xảy ra tỡnh huống này rất u n 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ồ đề được tham gia nhiề ần vào quỏ trỡnh tớnh toỏn. n u u l
Để 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ữ ố trong một dóy bit. Vớ dụ: s
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 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 xứ ứ 3 + 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 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 đ ề đỏng chỳ ý là tuy phương phỏp CRC cú vẻi u 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 ả ố ư ầ ắ ả ớ ệ ữ ề ủ tin nguồn và bậc của đa thức G. Một cỏch ký hiệu thường được dựng để chỉ quan hệ này
đượ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 xứ ứ 7 + 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.