Khả năng phát hiện lỗ

Một phần của tài liệu KTTruyen So lieu Chuong 8_9 (Trang 31 - 34)

DÒ TÌM VÀ SỬA LỖ

9.6.3.Khả năng phát hiện lỗ

Phương pháp checksum phát hiện ra tất cả các lỗi bao gồm số lẻ bít bị lỗi, cũng như là số lượng lớn nhất các bao gồm số chẵn bít bị lỗi. Tuy nhiên nếu một hoặc nhiều bít ở một đoạn bị lỗi và các bít tương ứng ở đoạn khác cũng bị lỗi thì checksum sẽ không phát hiện ra.

9.7. SỬA LỖI

Các phương pháp mà chúng ta đa nghiên cứu chỉ có tác dụng tìm lỗi mà không có tác dụng sửa lỗi. Việc sửa lỗi có thể đựoc thực hiện theo 2 cách. Theo cách thứ nhất, khi lỗi được phát hiện ra, trạm nhận sẽ yêu cần trạm gửi truyền lại toàn bộ dữ liệu. Theo cách thư hai, trạm nhận có thể sử dụng mã sửa lỗi để tự động sửa lỗi đã phát hiện ra.

Về mặt lý thuyết, có thể sửa bất kỳ lỗi nhị phân nào. Tuy nhiên, các mã sửa lỗi, phức tạp hơn các mã tìm lỗi nhiều lần và thường đòi hỏi thêm số bít dư thừa vào dữ liệu nhiều hơn. Số lượng bít cần thêm vào để sửa lỗi đa bít nhiều đến mức mà trong nhiều trường hợp người ta không sử dụng nó. Vì lý do này hầu hết các phương pháp sử lỗi chỉ tập trung sửa lỗi đơn bít, 2 bít hoặc 3 bít.

9.7.1. Sửa lỗi đơn bít

Nguyên tác của việc sửa lỗi có thể được hiểu qua việc tìm hiểu phương pháp sửa lỗi đơn bít.

Như chúng ta đã nghiên cứu, các lỗi đơn bít có thể được phát hiện nhờ vào việc thêm bít chẵn lẻ vào dữ liệu. Một bít được thêm vào có thể phát hiện ra lỗi

đơn bít ở bất cứ đoạn dữ liệu nào bởi vì nó có thể phần biệt được 2 trạng thái, có lỗi hoặc không có lỗi. Một bít thì có 2 trạng thái 0 và 1. Hai trạng thái này đủ để phát hiện mọi lỗi đơn bít.

Những nếu ta muốn sửa lỗi bít đơn thì sao. 2 trạng thái đủ để phát hiện ra lỗi nhưng không đủ để sửa lỗi. Một lỗi xảy ra khi trạm nhận đọc giá trị 1 thành 0 hoặc 0 thành 1. Để sửa nó trạm nhận chỉ đơn thuần là đảo ngược bít đó là xong. Để làm như vậy, tuy nhiên, nó phải biết được vị trí xảy ra lỗi. Vì vậy bít quyết trong việc sử lỗi chính là tìm ra các bít không hợp lệ.

Ví dụ, Để mà sửa lỗi đơn bít trong một ký tự ASCII, mã sửa lỗi phải xác định vị trí nào trong 7 bít đã bị thay đổi. Trong trường hợp này có 8 khả năng có thể xảy ra: Không có lỗi, lỗi ở bít 1,…,lỗi ở bít 7. Để làm như vậy đỏi hỏi đủ số bít thêm vào để thể hiện được cả 8 trạng thái.

Nhìn thoảng qua, ta thấy chỉ cần 3 bít là đủ vì 3 bít có thể biểu diễn được 8 trạng thái khác nhau. Nhưng điều gỉ xảy ra nếu các lỗi lại xảy ra ở chính các bít thêm vào? Rõ ràng ta thấy có 7 bít dữ liệu và 3 bít thêm vào thành 10 bít. Tuy nhiên các bít đó lại chỉ có khả năng phân biệt được 8 trạng thái. Như vậy các bít thêm vào cần thiết để bao bọc tất cả các vị trí lỗi.

9.7.2. Các bít thêm vào

Để xác định được số bít cần thiết phải thêm vào (r) để sửa được m bít dữ liệu, đều tiên chúng ta phải xác định được mối quan hệ

Hình 9.16 Data and redundancy bits (Dữ liệu và các bit thừa)

Nếu tổng số bít đựoc truyền đi là m+r, khi đó r phải có khả năng biếu diễn được ít nhất m+r+1 trạng thái. Trong đó 1 trạng thái là không có lỗi và m+r trạng thái còn lại chỉ ra m+r vị trí lỗi khác nhau.

Vì vậy, m+r+1 trạng thái phải có thể được phát hiện bởi r bít. Mà r bít có thể biểu diễn 2r trạng thái khác nhau, suy ra 2r phải lớn hơn hoặc bằng m+r+1.

12rm+r+ 2rm+r+

Giá trị của r có thể được xác định dựa vào giá trị của m. Ví dụ nếu m=7 thì r nhỏ nhất phải là 4.

Số bít dữ liệu (m) Số bít thừa (r) Tổng số bít (m + r) 1 2 3 2 3 5 3 3 6 4 3 7 5 4 9 6 4 10 7 4 11

Bảng 9.1 Mối quan hệ giữa dữ liệu và các bít thừa

9.7.4. Mã Hamming

Trong phần trước chúng ta đã xác định được số bít cần thiết phải thêm vào để biểu diễn được tất cả các trạng thái của lỗi. Nhưng làm thế nào để xác định được các vị trí lỗi này. Một kỹ thuật được xây dựng bởi R.W. Hamming cung cấp cho ta một phương pháp như thế.

9.7.4.1. Vị trí của các bít thêm vào

Mã Hamming có thể được áp dụng để sửa lỗi có một khối dữ liệu có độ dài bất kỳ và sử dụng mối quan hệ giữa dữ liệu và các bít thêm vào như đã phân tích ở trên. Ví dụ với 7 bít dữ liệu cần ít nhất 4 bít thếm vào, các bít này có thể được thêm vào cuối hoặc rải rác trong dữ liệu.

Hình 9.17 Vị trí các bít thừa trong mã Hamming

Trong phương pháp mã Hamming, mỗi r bít là VRC cho việc kiểm tra một số bít dữ liệu. r1 là VRC bít cho sự kết hợp của một số bít dữ liệu. r2 là VRC cho một số bít dữ liệu khác,…,.Sự kết hợp được sử dụng để kiểm tra cho 7 bít trên như sau:

R1: bít 1, 3, 5, 7, 9, 11 R2: bít 2, 3, 6, 7, 10, 11 R4: bít 4, 5, 6, 7

R8: bít 8, 9, 10, 11

Mỗi bít dữ liệu có thể ở trong nhiều hơn một VRC. Trong thứ tự trên, Mỗi bít của dữ liệu được thêm vào ít nhất 2 tập, trong khi các bít thêm vào chỉ được đưa vào một tập.

Để xem xét kỹ hơn về phương pháp này, ta xem sự biểu diễn nhị phân của mỗi vị trí bít. Bít r1 được tính sử dụng tất cả các vị trí bít mà sự biểu diễn nhị phần của nó có bít 1 ở bên phải cùng. R2 được tính sử dụng tất cả các bít mà có bít 1 ở vị trí thứ 2,…

Hình 9.18 Tính toán các bít thừa (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu KTTruyen So lieu Chuong 8_9 (Trang 31 - 34)