- Chương 5.1.2 Phân loại mã điều khiển lỗ
7 bit tin 1bit kiểm tra
Đây là loại mã khối đơn giản nhất. Mã này được dùng phổ biến trong truyền số liệu dạng ASCII. Với phương pháp này, mỗi ký tự trước khi truyền đi được thêm vào một bit chẵn lẻ, gọi là bit parity (P). Bit P được tính tốn dựa vào ký tự phát sao cho tổng số bit 1 trong ký tự (kể cả bit P) là số chẵn nếu parity là loại chẵn ( even parity) và là số lẻ nếu parity là loại lẻ
(odd parity). Dùng mã parity lẻ sẽ tránh được trường hợp truyền từ mã gồm tồn số 0, tuy
nhiên, mã parity chẵn lại được dùng phổ biến hơn.
Hình 5.4 là một ví dụ minh họa cho mã kiểm tra chẵn lẻ. Bit parity chẵn là 1, bit parity lẻ là 0 với ký tự 1001001. Tỷ lệ mã là 7/8, một mức dư rất thấp. 1 0 0 1 0 0 1 P Hình 5.4 Ví dụ mã parity B0 B1 B2 B3 B4 B5 B6 P chẵn = 1 P lẻ = 0 R = k/n = 7/8
7 bit tin 1bit kiểm tra kiểm tra
B6 B5 B4 B3 B2 B1 B0
P lẻP chẵn P chẵn
- Chương V -
Khi nhận ký tự, bên thu sẽ thực hiện tính tốn bit parity tương tự như bên phát và so sánh. Nếu chúng bằng nhau thì kết luận khơng cĩ lỗi, nếu khác nhau thì kết luận cĩ lỗi.
Mạch tính tốn bit parity cho cả bên phát và bên thu đơn giản là tập các cổng XOR như trên
hình 5.5.
Bây giờ ta xét đến khả năng phát hiện lỗi của mã parity. Giả sử dùng P chẵn, các từ mã mang tin là 7 bit từ 0000000 đến 1111111, các từ mã liên tiếp trong bộ mã này sẽ là:
0000000 0
0000001 1
0000010 1
...
Ta thấy khoảng cách Hamming của bộ mã này là 2. Vậy theo lý thuyết mã, mã này chỉ phát hiện được 1 lỗi. Tuy nhiên, thực tế mã này phát hiện được tất cả các lỗi đơn hay các lỗi xuất hiện với số lỗi lẻ, khơng phát hiện được các lỗi xuất hiện với số lỗi chẵn.
5.2.2 Mã kiểm tra tổng khối BCC(Block sum Check Character)
Khi truyền đi một khối ký tự, một ký tự trong khối cĩ thể bị lỗi, và vì vậy coi như khối đĩ bị lỗi. Xác suất khối ký tự bị lỗi gọi là xác suất lỗi khối (block error rate). Khi truyền đi khối ký tự, ta cĩ thể cải thiện khả năng khả năng phát hiện lỗi của mã parity bằng cách khơng chỉ thêm bit P cho riêng từng ký tự đơn lẻ mà cịn thêm tập các bit P tính trên cả một khối hồn chỉnh.
Với phương pháp này, mỗi ký tự trong khối được thêm vào một bit P, gọi là bit parity hàng
(row parity), mỗi vị trí của bit trong khối được thêm một bit P gọi là bit parity cột (column
parity). Tập các bit parity cột tạo thành ký tự kiểm tra tổng khối BCC.
Hình 5.6 trình bày một ví dụ dùng parity chẵn cho hàng và parity lẻ cho cột.
B0 B1 B2 B3 B4 B5 B6 P 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 BCC = Các bit parity cột Các bit Parity hàng Nội dung khung 1 Bit P cho BCC
- Chương V -
Qua ví dụ trên ta thấy mặc dù hai bit lỗi trong một ký tự khơng được phát hiện nhờ bit parity hàng nhưng sẽ được phát hiện nhờ bit parity cột. Mã này khơng phát hiện được hai bit lỗi trong cùng ký tự xảy ra ở cùng cột vào cùng thời điểm (ví dụ như các bit lỗi xuất hiện ở các vị trí như đánh dấu trong hình). Tuy nhiên, khả năng này rất ít xảy ra nên mã kiểm tra tổng đã cải thiện được khả năng phát hiện lỗi của mã parity đơn. Nếu xảy ra lỗi đơn thì căn cứ vào bit P hàng và P cột thu sai khác so với P hàng và P cột tính, ta cĩ thể xác định được vị trí bit lỗi, do đĩ cĩ thể sửa lỗi.
Phương pháp kiểm tra tổng thường được dùng trong trường hợp số liệu truyền đi là một mảng ký tự ASCII.
Phương pháp này cĩ một biến thể là sử dụng tổng bù 1 để tính BCC thay cho tổng modulo-2. Trong phương pháp mới này, xem các ký tự trong khối cần truyền như là các số nhị phân khơng dấu. Trước hết, cộng các số này lại dùng thuật tốn bù 1, sau đĩ đảo ngược kết quả lại tạo thành BCC. Bên thu tiến hành tính tổng bù 1 của tất cả các ký tự trong khối (kể cả BCC), nếu khơng cĩ lỗi xuất hiện thì kết quả phải bằng 0. Lưu ý rằng, với thuật tốn bù 1, bit nhớ cuối cùng được quay vịng rồi cộng vào tổng đang cĩ cho nên số 0 sẽ được biểu diễn hoặc là tồn số 0 hoặc là tồn số 1.
Phương pháp mới này được trình bày qua ví dụ trên hình 5.7. Từ ví dụ ta thấy phương pháp mới này phát hiện lỗi tốt hơn phương pháp tổng modulo-2.
Bên phát Bên thu
0 1 1 1 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 0 1 = tổng bù 1 0 1 0 1 1 0 1 0 1 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 = số 0 trong số bù 1 0 1 0 1 1 0 1 = BCC Đảo bit 1 1 Hình 5.7 Ví dụ kiểm tra tổng bù 1
Mã kiểm tra tổng bù 1 thường được tính tốn bằng phần mềm, dùng để kiểm tra lỗi cho các bản tin giao thức qua internet.
5.2.3 Mã khối tuyến tính