Giải mã Convolution code:
- Sử dụng sơ đồ mắt lưới (Trellis diagram).
- Sử dụng thuật toán Viterbi (một kiểu của dạng code soắn) để lựa
chọn một đường đi xuyên qua các mắt lưới, đường đi này có sự chênh
lệch ít nhất so với chuỗi các giá trị nhận được. Khi một đường đi hợp
lệ đã được chọn bộ giải mã có thể khôi phục dữ liệu ban đầu từ dữ
liệu nhận được.
38 trang |
Chia sẻ: thienmai908 | Lượt xem: 1274 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Các kỹ thuật phát hiện lỗi và sửa lỗi, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CÁC KỸ THUẬT
PHÁT HIỆN LỖI VÀ SỬA LỖI
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
2
I. CÁC KỸ THUẬT PHÁT HIỆN LỖI
1. Khái niệm lỗi trong truyền tin.
Trong các hệ thống truyền tín hiệu số, một lỗi sảy ra khi một bit bị
thay đổi giữa bên gửi và bên nhận. Đó là bên gửi gửi đi bit 1 nhưng
bên nhận lại nhận được bit 0 và ngược lại.
Nhìn chung có hai kiểu lỗi có thể sảy ra đó là lỗi đơn (single
error) và lỗi xuất hiện đột ngột. Một lỗi đơn là một trạng thái lỗi biệt
lập nó thay đổi một bit nhưng không ảnh hưởng các bit bên cạnh.
Một lỗi xuất hiện đột ngột có độ dài B (bit) là một chuỗi B bit kề
nhau trong đó bit đầu tiên, bit cuối cùng và một số bit ở giữa hai bit
này là nhận được có lỗi. Một cách chính xác, IEEE Std 100 định
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
3
nghĩa một lỗi xuất hiện đột ngột như là một nhóm các bit trong đó hai
bit lỗi liên tiếp luôn bị ngăn cách bởi một số x cho trước các bít chính
xác. Bít lỗi cuối cùng trong một lỗi xuất hiện đột ngột và bit lỗi đầu
tiên trong xuất hiện đột ngột tiếp theo cũng được ngăn cách x hoặc
nhiều hơn các bít chính xác.
Lỗi đơn có thể sảy ra và được thể hiện như là sự thể hiện của
nhiễu nhiệt khi tỷ số SNR bị giảm đáng kể dẫn đến bên nhận bị nhầm
lẫn khi nhận một bit
Lỗi xuất hiện đột ngột phổ biến hơn lỗi đơn và khó giải quyết
hơn, lỗi này thường bị gây ra bởi tạp nhiễu xung lực hoặc sự giảm âm
(fading) trong môi trường mạng không dây (mobile wireless). Những
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
4
tác động của lỗi xuất hiện đột ngột sẽ cao hơn với tốc độ truyền cao
hơn.
2. Pháp hiện lỗi (Error Detection)
Giả sử rằng dữ liệu được truyền theo các chuỗi bít liên tiếp và
được gọi là các frames. Khi đó các khả năng có thể sảy ra như sau:
- Pb : Khả năng 1 bit nhận được là bị lỗi và còn được gọi là tỷ lệ
bit lỗi (bit error rate – BER)
- P1: Khả năng một frame nhận được không có lỗi
- P2: Khả năng với một giải thuật phát hiện lỗi được sử dụng, một
frame nhận được còn một hoặc nhiều lỗi không được phát hiện
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
5
- P3: Khả năng với một giải thuật phát hiện lỗi được sử dụng, một
frame nhận được với một hoặc nhiều bit lỗi đã được phát hiện và
không có các bit lỗi không được phát hiện.
- Khi không có một phương tiện nào được sử dụng để phát hiện
lỗi thì P3 bằng 0. Giả sử rằng số lượng bit trong một frame là F khi
đó:
P1=(1-Pb)F
P2=1-P1
Như vậy khả năng một frame nhận được không có bit lỗi giảm khi
khả năng lỗi đơn tăng. Hơn nữa, khả năng một frame nhận được
không có bit lỗi giảm khi tăng độ dài của frame.
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
6
Như vậy P3 là một khả năng một frame có lỗi và cơ chế phát hiện
lỗi đã phát hiện được các lỗi này. P2 được biết đến như là tỷ lệ lỗi còn
sót lại và là khả năng các lỗi không được phát hiện mặc dù đã sử
dụng cơ chế phát hiện lỗi
Có nhiều kỹ thuật được dùng để phát hiện lỗi. Tất các các kỹ thuật
này tuân thủ theo các nguyên tắc sau đây:
Cho một frame gồm các bit, một số bit để tạo thành một mã phát
hiện lỗi được thêm vào bởi bên gửi (transmitter). Mã phát hiện lỗi
được tính toán như là một hàm của các bit sẽ được được truyền.
Thông thường, với một khối gồm k bit dữ liệu, thuật toán phát hiện
lỗi sinh ra một mã phát hiện lỗi gồm n-k bit, trong đó (n-k)<k, và
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
7
được gắn vào khối dữ liệu này và tạo thành một frame gồm n bit và
được truyền đi. Mã phát hiện lỗi còn được gọi là các bit kiểm tra.
Bên nhận chia frame nhận được thành k bit dữ liệu và n-k bit của
mã phát hiện lỗi. Bên nhận thực hiện cùng một tính toán phát hiện lỗi
trên k bit dữ liệu nhận được và so sánh kết quả tính toán này với mã
phát hiện lỗi đã nhận được. Một lỗi được phát hiện khi và chỉ khi có
sự khác nhau giữa hai đoạn mã này.
3. Một số kỹ thuật phát hiện lỗi
a, Phương pháp phát hiện lỗi bằng kiểm tra chẵn lẻ (parity check
– Vertical Redundancy Check – VRC)
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
8
Phương pháp này gắn thêm một bit vào cuối khối dữ liệu. Đơn
giản nhất là truyền ký tự, đó là: một ký tự được xem như là một khối
gồm 7 bit dữ liệu, một bit kiểm tra chẵn lẻ được gắn vào khối này.
Giá trị của bit chẵn lẻ này được lựa chọn sao cho ký tự cần gửi có
một số chẵn (even) hay có một số lẻ (odd) các bit 1
Ví dụ: Cần gửi chữ G (1110001) và sử dụng odd parity. Khi đó bit
1 được gắn vào tạo thành 11110001. Bên nhận xem xét ký tự vừa
nhận được, nếu số lượng các bit 1 la lẻ (odd) thì giả thiết rằng không
sảy ra lỗi. Nếu một hay một số lượng lẻ các bit bị thay đổi trong quá
trình truyền thì bên nhận xẽ phát hiện ra lỗi. Tuy nhiên nếu hai hay
một số lượng chẵn các bit bị thay đổi bởi lỗi khi truyền thì bên nhận
sẽ không được phát hiện được lỗi đã sảy ra.
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
9
Thông thường bit kiểm tra chẵn được dùng trong truyền đồng bộ
và bit kiểm tra lẻ được dùng trong truyền không đồng bộ. Việc sử
dụng bit kiểm tra chẵn lẻ là không dễ ràng chẳng hạn như xung lực
tạp nhiễu có thể phá hủy một hay nhiều bit, đặc biệt với tốc độ truyền
dữ liệu cao.
b, Phương pháp phát hiện lỗi bằng kiểm tra dư thừa theo chiều
dọc - Longitudinal Redundancy Check – LRC
Một kỹ thuật khác được sử dụng để hỗ trợ cho kỹ thuật kiểm tra
bit chẵn lẻ đó là kỹ thuật Longitudinal Redundancy Check – LRC –
Kiểm tra dư thừa theo chiều dọc. Kỹ thuật này như sau:
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
10
Thay vì kiểm tra riêng lẻ từng ký tự như trong VRC, dữ liệu được
gửi đi như là một khối gồm nhiều ký tự, ta gắn thêm vào một bit ở
cuối mỗi hàng và một bit ở cuối mỗi cột sao cho thỏa mãn điều kiện
tổng số các bit 1 là chẵn hay lẻ. Thường một khối dữ liệu bao gồm 7
hoặc 8 ký tự phụ thuộc vào cách mã hóa ký tự là 7 hay 8 bit. Nếu mỗi
ký tự được mã hóa bằng một mã dài 7 bit khi đó một khối dữ liệu sẽ
gồm 7 ký tự và giả sử rằng số các bit 1 là lẻ. Ví du:
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
11
Bit/Value C O N T R O L Odd Parity
1 1 1 0 0 0 1 0 0
2 1 1 1 0 1 1 0 0
3 0 1 1 1 0 1 1 0
4 0 1 1 0 0 1 1 1
5 0 0 0 1 1 0 0 1
6 0 0 0 0 0 0 0 1
7 1 1 1 1 1 1 1 0
8 (Odd Parity) 0 0 1 0 0 0 0
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
12
Khi đó nếu hai hay một số chẵn bit của một ký tự bị thay đổi thì
giá trị của bit chẵn lẻ trên cột kiểm tra không thay đổi nhưng giá tri
của bit chẵn lẻ trên hàng kiểm tra sẽ thay đổi. Kỹ thuật này cũng
không phát hiện được hết tất cả các lỗi, chẳng hạn như hai hay một số
chẵn các bit ở cùng vị trí của hai hay một số chẵn các ký tự bị thay
đổi thì vẫn không phát hiện được lỗi.
c, Phương pháp phát hiện lỗi bằng kiểm tra dư thừa vòng -
Cyclic Redundancy Check (CRC)
Đây là một phương pháp phổ biến và có hiệu quả nhất trong việc
phát hiện lỗi. Cơ chế hoạt động của phương pháp này như sau: Cho
một khối dữ liệu hay một message gồm k bit, bên gửi sinh ra một
chuỗi gồm n-k bit được gọi là chuỗi kiểm tra frame (Frame Check
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
13
Sequence – FCS), như vậy sẽ tạo ra một frame gồm n bit và sau đó
được gửi đi.
Thông thường FCS được tính toán bằng cách chia n bit (bao gồm
k bit dữ liệu và n-k bit 0) cho một số P cho trước. Bên nhận sau khi
nhận được frame đó cũng đem chia frame nhận được bởi số P này,
nếu không có dư thì cho rằng không có lỗi. Phương pháp này được
chia thành các loại như modulo 2, đa thức và lô gic số học
+ Phương pháp Modulo 2: Sử dụng phép cộng không nhớ trong
hệ đếm cơ số 2 hoặc phép trừ không nhỡ trong hệ đếm cơ số 2
(XOR), Ví du:
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
14
Phép cộng trừ không nhớ trong hệ đếm cơ số 2:
1111 1111 11001
+ 1010 - 0101 x 11
0101 1010 11001
11001
11001
101011
Khi đó:
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
15
+ T= một frame gồm n bit để truyền
+ D= một khối dữ liệu hay một message gồm k bit, đây là k bit
đầy tiên của T
+ F= FCS gồm n-k bit và là các bit cuối cùng của T
+ P là một mẫu gồm n-k+1 bit là số chia được xác định trước
Ta mong muốn rằng T/P không có dư
Thuật toán được thực hiện như sau:
+ Ban đầu ta gắn n-k bit 0 vào cuối D để được n bit
+ Thực hiện phép chia lấy phần dư của n bit này cho mẫu P để
tạo ra n-k bit của FCS
+ Gắn n-k bit của số dư vào cuối của T để tạo thành một khối dữ
liệu và truyền đi
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
16
+ Bên nhận sau khi nhận được khối dữ liệu gồm n bit, thực hiện
việc chia n bit này cho mẫu P, nếu kết quả chia không có dư thì
khẳng định việc truyền là không bị lỗi
Ví dụ: Message D=1010001101(10 bits)
Mẫu P=110101(6bits)
FSC F=Được tính gồm 5 bits
Do vậy: n=15, k=10, n-k=5
Từ k bits ban đầu ta có được 15 bits: 101000110100000
Thực hiện phép chia 15 bits này cho mẫu P (110101)
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
17
101000110100000 110101
110101 1
11101110100000 110101
110101 11
111010100000 110101
110101 1
1111100000 110101
110101 1
10110000 110101
110101 1
1100100 110101
110101 1
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
18
1110
Phần dư là 01110, do đó ta có khối dữ liệu 15 bit:
101000110101110 và được truyền đi. Bên nhận sau khi nhận được
chuỗi bit thực hiện phép chia chuỗi bít này cho mẫu P nếu không có
dư thì khẳng định không có lỗi, nếu có dư thì cho rằng đã có lỗi do đó
có thể vứt bỏ khối dữ liệu vừa nhận được và yêu cầu gửi lại.
Mẫu P được chọn sao cho dài hơn FSC 1 bit và mẫu P được chọn
phụ thuộc vào các loại lỗi có thể sảy ra, thông thường các bit cao nhất
và bit thấp nhất trong mẫu P phải được chọn bằng 1.
+ Đa thức (Polynomials)
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
19
Một cách khác để diễn tả quá trình của CRC là diễn tả tất cả các
giá trị D, P, T như là các đa thức của một Nn số X nào đó với hệ số
2. Các hệ số tương ứng với các bit trong các chuỗi nhị phân, chẳng
hạn với D=110011 ta có D(x)=X5+X4+X+1 và P=11001 ta có
P(X)=X4+X3+1. Các công việc tính toán tương tự như trong modulo
2. Lấy lại ví dụ trên ta có:
D=1010001101 do đó D(X)=X9+X7+X3+X2+1
P=110101 ta có P(X)=X5+X4+X2+1
Thực hiện phép nhân đa thức D(X) với phần tử có số mũ cao nhất
trong P(X) khi đó ta có D(X)x X5=x14+X12+X8+X7+X5
Thực hiện phép chia đa thức vừa nhận được cho P(X)
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
20
X14 + X12 +X8+X7 +X5 / X5+X4+X2+1
X14 + X13 +X11 + X9 X9+X8+X6+X4+X2+X
X13 +X12 + X11 +X9 + X8
X13 +X12 + X10 +X8
X11 X10+X9 X7
X11 X10 X8 X6
X9 + X8 + X7 + X6 +X4
X9 + X8 + X6
X7 + X5+X4
X7 + X6 + X4 + X2
X6 + X5 + X2
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
21
X6 + X5 + X3 +X
X3+ X2+X
Ta có đa thức dư bằng X3+X2+X tương đương với 01110
Cách lựa chọn P(X):
Có 4 cách lựa chọn P(x) thường được sử dụng rộng rãi, đó là:
CRC - 12 = X12 + X11 + X3 + X2 + X +1
CRC - 16 = X16 +X15 + X2 +1
CRC - CCITT = X16 + X12 + X2 + 1
CRC 32 = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 +
X5 + X4 + X2 + X +1
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
22
CRC - 12 được sử dụng để truyền các ký tự 6 bit và sinh ra một FCS
có độ dài 12 bit.
CRC -16 và CRC - CCITT thường được sử dụng để truyền các ký tự
8 bit tại Mỹ và Châu Âu và sinh ra một CRC có độ dài 16 bit.
CRC - 32 được lựa chọn trong truyền điểm – điểm đồng bộ và được
sử dụng trong các chuNn của LAN (802).
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
23
II. CÁC KỸ THUẬT SỬA LỖI
1. Khái niệm về sửa lỗi trong truyền thông
Sửa lỗi là một kỹ thuật có ích được sử dụng trong các giao thức
điều khiển liên kết dữ liệu và giao thức truyền tải. Tuy nhiên việc sửa
lỗi sử dụng mã phát hiện lỗi đòi hỏi phải truyền lại khối dữ liệu này.
Điều này là không thích đáng cho các ứng dụng không dây vì:
- Tỷ lệ bit lỗi trong các truyền không dây là tương đối cao, điều
này đòi hỏi phải truyền lại nhiều khối dữ liệu.
- Trong một vài trường hợp, đặc biệt là truyền vệ tinh độ trễ trong
khi truyền là lớn hơn so với thời gian truyền một frame, làm cho hệ
thống kém hiệu quả.
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
24
Một cách tiếp cận phổ biến để truyền lại là: truyền frame bị lỗi và
các frame sau frame lỗi này. Với một liên kết dữ liệu dài một lỗi
trong một frame sẽ bắt buộc phải truyền lại nhiều frame do đó nếu
phải truyền lại nhiều thì sẽ làm cho hệ thống hoạt động không hiệu
quả.
Do đó nên cung cấp cho bên nhận một cơ chế sửa lỗi để sửa các
lỗi sinh ra trong quá trình truyền dữ liệu. Cơ chế này có thể được mô
tả như sau: Với mỗi một khối dữ liệu gồm k bit bên gửi sẽ sinh ra một
khối gồm n bit (n >k) được gọi là một từ mã (codeword) bằng cách sử
dụng mã sửa lỗi tiến (forward error correction – FEC), khối này sau
đó được truyền đi.
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
25
Trong quá trình truyền tin, một vài bit lỗi có thể được đưa vào
khối này. Tại bên nhận, các tín hiệu đến được giải điều chế để sinh ra
một chuỗi bit tương tự như chuỗi ban đầu nhưng có thể có lỗi. Khối
này sau đó được chuyển đến bộ phận giải mã sửa lỗi tiến với một
trong bốn khả năng sau:
i, Nếu không có bit lỗi nào thì dữ liệu vào bộ phận giải mã sửa lỗi
tiến sẽ tương tự như mã lệnh nguồn và bộ phận giải mã sẽ sinh ra
khỗi dữ liệu ban đầu.
ii, Với một vài loại lỗi, bộ phận giải mã có khả năng phát hiện và
sửa những lỗi này
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
26
iii, Với một vài loại lỗi, bộ phận giải mã có thể phát hiện nhưng
không sửa được các lỗi này, do đó nó chỉ thông báo là có các lỗi
không sửa được.
iv, Với một vài loại lỗi ít khi sảy ra, bộ phận giải mã không phát
hiện được lỗi do đó nó sẽ sinh ra k bit dữ liệu từ n bit và k bit này sẽ
khác với k bit ban đầu.
Để cho bộ phận giải mã có thể phát hiện và sửa lỗi, ta cần phải
truyền dư bằng cách thêm vào các bit dữ liệu một số bit dư để bộ
phận giải mã có thể suy ra khối dữ liệu ban đầu, các bit dư này được
gọi là khối mã phát hiện lỗi. Một vài giải thuật FEC biến đổi k bit
thành n bit sao cho k bit ban đầu không suất hiện trong n bit.
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
27
Nguyên tắc cơ bản của mã phát hiện lỗi là dựa trên khoảng cách
Hamming (Hamming Distance) như sau: Khoảng cách Hamming
giữa 2 chuỗi n bit v1 và v2 là số lượng của các bit khác nhau trong v1
và v2. Ví dụ: V1=011011 và v2= 110001
Do đó d(v1,v2)=3
Giả sử với k= 2 và n=5 và sử dụng mã lệnh ta có:
Dữ liệu Mã hóa
00 00000
01 00111
10 11001
11 11110
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
28
Giả sử bên nhận nhận được 00100, đây là mã không hợp lệ nên
bên nhận phát hiện ra lỗi, tuy nhiên ta không biết khối dữ liệu nào đã
được gửi đi vì có thể 1,2, 3, 4 thậm chí cả 5 bit đều bị lỗi, song ta
cũng có thể nhận thấy được là d(00000,00100) = 1, và
d(00111,00100) = 2 … do đó ta có thể suy luận rằng khả năng các
bits đã được gửi là 00000 và do đó sẽ sinh ra được khối dữ liệu ban
đầu là 00.
Một cách tổng quát ta có thể quy định rằng nếu một mã nhận được
bị sai thì mã đúng sẽ là mã có khoảng cách ngắn nhất so với nó và chỉ
có duy nhất một mã đúng có khoảng cách ngắn nhất so với nó.
Với một khối mã (k,n) có 2k mã đúng trong tổng số 2n mã. Tỷ lệ
(n-k)/k được gọi tỷ lệ dư và k/n được gọi là tỷ lệ mã hóa.
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
29
Cho một mã bao gồm các mã lệnh w1, w2, …., ws (s=2k) khoảng
cách ngắn nhất giữa các từ mã được định nghĩa
Dmin= min[(wi,wj)] (ij)
Khi đó với một số nguyên dương cho trước t nếu một mã thỏa
mãn dmin >= 2t+1 khi đó có thể sửa được tất cả các lỗi trong phạm vi
từ 0 đến t.
Nếu dmin >=2t thì các lỗi <t-1 có thể được sửa và các lỗi gồm t bit
có thể được phát hiện nhưng về cơ bản là không được sửa, và ngược
lại.
2. Sửa lỗi sử dụng mã soắn
a, Mã hoá
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
30
Để sinh ra mã cần truyền có độ dài n bit từ k bit dữ liệu ban đầu ta có
thể sử dụng mã soắn (Colvolution code) như sau:
- Sinh ra các bit dư liên tục
- Việc kiểm tra lỗi và sửa lỗi được thực hiện liên tục
- Bộ mã bao gồm 3 thành phần (n,k,K):
+ Đầu vào xử lý k bit dữ liệu
+ Đầu ra sinh ra n bit cho mỗi một k bit dữ liệu .
+ K là hệ số ràng buộc.
- n bit đầu ra của (n,k,K) mã phụ thuộc vào:
+ k bit dữ liệu đầu vào hiện thời
+ Các khối K-1 trước của k bit đầu vào.
Các trạng thái gồm: a, b, c, d.
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
31
- Nếu trạng thái là a và bit dữ liệu là 0 thì sinh ra 00 và quay trở lại a.
- Nếu trạng thái là a và bit dữ liệu là 1 thì sinh ra 11 và chuyển sang
trạng thái b.
- Nếu trạng thái là b và bit dữ liệu là 0 thì sinh ra 10 và chuyển sang
trạng thái c.
- Nếu trạng thái là b và bit dữ liệu là 1 thì sinh ra 01 và chuyển sang
trạng thái d.
- Nếu trạng thái là c và bit dữ liệu là 0 thì sinh ra 11 và chuyển sang
trạng thái a.
- Nếu trạng thái là c và bit dữ liệu là 1 thì sinh ra 00 và chuyển sang
trạng thái b.
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
32
- Nếu trạng thái là d và bit dữ liệu là 0 thì sinh ra 01 và chuyển sang
trạng thái c.
- Nếu trạng thái là d và bit dữ liệu là 1 thì sinh ra 10 và chuyển sang
trạng thái d.
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
33
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
34
Ví dụ: Mã hoá khối dữ liệu 1011000 sử dụng bộ mã hoá (2,1,3) ở trên
ta thu được:
11100001011100
b, Giải mã Convolution code:
- Sử dụng sơ đồ mắt lưới (Trellis diagram).
- Sử dụng thuật toán Viterbi (một kiểu của dạng code soắn) để lựa
chọn một đường đi xuyên qua các mắt lưới, đường đi này có sự chênh
lệch ít nhất so với chuỗi các giá trị nhận được. Khi một đường đi hợp
lệ đã được chọn bộ giải mã có thể khôi phục dữ liệu ban đầu từ dữ
liệu nhận được.
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
35
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
36
Giải thuật Viterbi sử dụng sự chênh lệch = Khoảng cách Hamming:
- Đường đi hiệu quả = đường đi hợp lệ xuyên qua lưới có khoảng
cách Hamming so với các bit nhận được cho đến thời điểm i là ngắn
nhất.
- Khoảng cách của đường đi = khoảng cách của một trạng thái cuối
+ khoảng cách của cạnh cuối.
- Mỗi một trạng thái tại thời điểm i được gán nhãn bằng khoảng
cách của đường đi hiệu quả của nó so với các bit nhận được.
- Xác định trước kích thước của sổ là b.
Giải mã Viterbi:
- Giải thuật thực hiện trong b+1 bước:
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
37
[Bước i=0]: Trạng thái đầu tiên của mắt lưới tại thời điểm 0 được gán
nhãn là 0 vì tại thời điểm này không có sự chênh lệch nào về khoảng
cách.
[Bước i+1]: Cho mỗi trạng thái S, tìm tất cả các đường đi hiệu quả
dẫn đến S, gán nhãn cho S bằng khoảng cách của các đường này.
[bước b]: Giải thuật kết thúc tại thời điểm b. Nếu tất cả các đường
hiệu quả tại thời điểm này có cùng một cạnh đầu tiên, và nhãn của
cạch này là x0x1….xn thì từ mã đầu tiên w0w1….wn sẽ được sửa
thành x0x1….xn . Nếu có nhiều hơn một cạnh hiệu quả đầu tiên thì lỗi
không thể sửa được
Trường Đại học Tây Bắc - Khoa Toán - Lý – Tin.
Mai Văn Tám – Bộ môn Kỹ thuật máy tính và Mạng
38
Các file đính kèm theo tài liệu này:
- Bai so 8 - CAC KY THUAT PHAT HIEN VA SUA LOI .pdf