Ðể cải thiện hơn nửa việc kiểm tra lỗi người ta dùng phương phâp kiểm tra dư thừa theo chu kỳ (Cyclic Redundancy Check, CRC)
Nguyín tắc tạo mê CRC: Xĩt khung dữ liệu gồm k bit vă nếu ta dùng n bit cho khung kiểm tra FCS (Frame check sequence) thì khung thông tin kể cả dữ liệu kiểm tra gồm (k+n) bit sao cho (k+n) bit năy chia đúng cho một số P có (n+1) bit chọn trước (dùng phĩp chia Modulo-2). Ở mây thu khi nhận được khung dữ liệu, lại mang chia cho số P năy vă nếu phĩp chia đúng thì khung dữ liệu không chứa lỗi.
Nhắc lại một số tính chất của phĩp toân Mod-2:
- Phĩp cộng Mod-2 lă phĩp cộng nhị phđn không nhớ, dưới đđy lă Ví dụ về phĩp cộng vă phĩp nhđn 1111 11001 + 1010 x 11 0101 11001 11001 101011
- Phĩp cộng Mod-2 được thực hiện bởi cổng EX-OR - Phĩp trừ Mod-2 giống như phĩp cộng
- Nhđn Mod-2 một số với 2n tương ứng với dời số đó n bit về bín trâi vă thím n bit 0 văo bín phải số đó.
Ví dụ: 11001* 23 = 11001000
- Phĩp chia Mod-2 được thực hiện giống như phĩp chia thường nhưng nhớ lă phĩp trừ trong khi chia được thực hiện như phĩp cộng.
3.2.2.1. Xâc định mê CRC dùng thuật toân Mod-2:
Gọi T = (k+n) bit lă khung thông tin được phât, với n < k M = k bit dữ liệu, k bit đầu tiín của T
F = n bit của khung FCS, n bit cuối của T P = (n+1) bit, số chia trong phĩp toân
Số T được tạo ra bằng câch dời số M sang trâi n bit rồi cộng với số F: T = 2nM + F
Chia số 2nM cho P ta được: 2n
Q lă số thương vă R lă số dư
Vì phĩp chia thực hiện với số nhị phđn nín số dư luôn luôn ít hơn số chia 1 bit. Ta dùng số dư năy lăm số F, nghĩa lă:
T = 2nM + R.
Ở mây thu khi nhận được khối dữ liệu, mang chia cho P, kết quả số dư sẽ = 0:
Vì R + R = 0 nín T / P = Q
Như vậy dùng số dư R của phĩp chia 2nM cho P lăm ký tự kiểm tra trong khung FCS thì chắc chắn T sẽ chia đúng cho P nếu bản tin không có lỗi.
3.2.2.2. Dùng phĩp biểu diễn đa thức:
Ðể thấy quâ trình hình thănh mê CRC, ta có thể dùng phĩp biểu diễn một số nhị phđn dưới dạng một đa thức của biến x với hệ số lă câc số nhị phđn vă bậc của x lă giâ trị chỉ vị trí của số nhị phđn đó.
Chú ý mê số n bit cho bậc cao nhất của đa thức lă n-1
3.2.2.3. Khả năng dò sai của mê CRC:
Một lỗi xảy ra ở một vị trí năo đó trong khung dữ liệu lăm đảo bit ở vị trí đó của khung, điều năy tương đương với phĩp tính EX-OR bit đó vă bit 1 (vì 0+1=1 vă 1+1=0).
Nếu gọi E lă một khung có số lượng bit bằng với khung dữ liệu, trong đó chỉ câc vị trí của bit lỗi = 1 vă câc bit khâc = 0 thì khung thông tin Tr nhận được có thể viết.
Tr = T + E.
Mê CRC luôn luôn cho phĩp mây thu dò ra một bit sai.
Giả sử bản tin sai một chuỗi, nhưng có tổng số bit sai lă số lẻ: đa thức E(x) chứa số lẻ bit 1 nín E(1) =1. Mặt khâc, giả sử (x+1) lă thừa số của P(x), ta có thể viết P(x) = (x+1)*H(x),
H(x) lă một đa thức. Ta cũng giả sử lỗi năy không được dò ra, nghĩa lă E(x) chia đúng cho P(x), hay E(x) = P(x)*K(x). Thay P(x) = (x+1)*H(x) văo E(x) được E(x) = (x+1)*H(x)*K(x), biểu thức năy cho E(1) = 0. Ðiều năy trâi với giả thiết ở trín, hay nói câch khâc, mây thu sẽ dò ra lỗi nếu ta chọn P(x) sao cho chia đúng cho (x+1).
Vậy mây thu sẽ luôn luôn dò ra lỗi gồm nhiều bit vă có tổng số bit lỗi lă số lẻ nếu ta chọn P(x) chia đúng cho (x+1).
Giả sử nhiễu lăm sai một đoạn dữ liệu có chiều dăi m (bậc n của P(x)) Giả sử chuỗi bit sai có vị trí từ thứ i đến thứ i+ m -1, E(x) có dạng: E(x) = xi+m-1 + . . . . +xi = xi*(xm-1+ . . . +1)
P(x) không lă thừa số của xi nín E(x) chỉ chia đúng cho P(x) khi xm-1+ . . . +1 chia đúng cho P(x).
Vì m ≤ n hay m-1< n nín phĩp chia trín không thể lă phĩp chia đúng.
Vậy mây thu luôn luôn dò ra lỗi nếu chuỗi dữ liệu sai có chiều dăi m (bậc n của P(x)) Ðoạn dữ liệu sai có chiều dăi m >n
Từ kết quả:
Nhưng bđy giờ m-1≥ n nín xm-1 + . . . + 1 có thể chia đúng cho P(x). Vậy vấn đề lă có bao nhiíu cơ hội để điều năy xảy ra.
- Trường hợp m-1 = n hay (m=n+1). Vì bậc của P(x) lă n nín để có phĩp chia đúng P(x) phải có dạng xn + . . . . . + 1 với câc số hạng giữa xn vă 1 phải hoăn toăn giống với câc số hạng của xm-1 + . . . + 1 thì mây thu không dò được lỗi. Có n-1 số hạng giữa xn vă 1 nín có 2n-1 tổ hợp vă nếu câc tổ hợp năy có xâc suất xảy ra như nhau thì xâc suất mây thu không nhận được lỗi sẽ lă 1/2n-1.
- Trường hợp m > n+1, ta chấp nhận kết quả xâc suất năy lă 1/2n.
Ví dụ: Mê CRC-32 (n=32), xâc suất không dò ra một lỗi có chiều dăi >33 bit lă 1/2.1032
(tương đương với khả năng dò ra lỗi lă 99,99999998%).
Như vậy, với n căng lớn việc mây thu không dò ra lỗi căng rất khó xảy ra.
3.2.2.4. Mạch tạo mê CRC:
Thuật toân mod 2 được thực hiện bởi cổng EX-OR. Dời bit được thực hiện bởi thanh ghi dịch.
Quan sât phĩp tính chia Mod-2 của số 2nM cho P(x) để có R(x) ta thấy đđy lă sự kết hợp của sự dời bit của số 2nM với phĩp cộng Mod-2 của số P(x).
Trong Ví dụ trín, để tạo mê CRC với P(x) = 110101, chuỗi dữ liệu lă số 2nM (gồm 15 bit, 101000110100000) văo mạch, sau 15 lần dời bit, kết quả trín câc thanh ghi dịch chính lă R(x). Mạch tạo mê trong trường hợp năy gồm 5 thanh ghi dịch, ký hiệu A(x5), B(x4), C(x3), D(x2), E(x) .