Tải bản đầy đủ (.ppt) (39 trang)

ĐIỆN tử VIỄN THÔNG 2 error correction code khotailieu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (461.9 KB, 39 trang )

Điều khiển lỗi



Các hệ thống số tạo lỗi
Các ứng dụng yêu cầu mức độ tin cậy nhất định








Các ứng dụng dữ liệu yêu cầu truyền không lỗi
Các ứng dụng Voice & video có thể chấp nhận một số lỗi

Điều khiển lỗi sử dụng khi hệ thống truyền dẫn
không đáp ứng được yêu cầu của ứng dụng
Điều khiển lỗi đảm bảo một dòng dữ liệu được
truyền với một mức chính xác nhất định ngay cả khi
có lỗi
Hai giải pháp cơ bản:
 Phát hiện lỗi và truyền lại (ARQ)


Sửa lỗi tiến (FEC)
1


Kiểm tra Chẵn/Lẻ đơn bit




Bổ sung thêm parity check chung vào k bit thông tin
Info Bits:




Check Bit:

bk+1= b1+ b2+ b3+ …+ bk modulo 2

Codeword:

(b1, b2, b3, …, bk,, bk+1)

Tất cả các từ mã có số bit 1 chẵn
Máy thu kiểm tra xem số bit 1 có chẵn không





b1, b2, b3, …, bk

Tất cả các mẫu lỗi chuyển số bit 1 thành lẻ không phát hiện
được
Tất cả các mẫu chẵn không phát hiện được

Parity bit sử dụng ở mã ASCII

2


Ví dụ về Parity Code đơn



Information (7 bits): (0, 1, 0, 1, 1, 0, 0)
Parity Bit: b8 = 0 + 1 +0 + 1 +1 + 0 = 1
Codeword (8 bits): (0, 1, 0, 1, 1, 0, 0, 1)



Nếu lỗi đơn xảy ra ở bit 3 : (0, 1, 1, 1, 1, 0, 0, 1)









Số bit 1 = 5, LE
Lỗi phát hiện được

Nếu lỗi ở bit 3 và 5: (0, 1, 1, 1, 0, 0, 0, 1)




Số bit 1 =4, CHẴN
Lỗi không phát hiện được

3


Bít kiểm tra & Phát hiện lỗi
Bit thông tin thu được

Bit thông tin

Tính toán lại
các bit kiểm tra

k bits
Kênh

Tính toán bit
kiểm tra

Các bit
kiểm
tra
phát đi
n – k bits

Bit kiểm tra
thu được

Compare


Thông tin
chấp nhận
được nếu các
bit kiểm tra
phù hợp

4


Mã kiểm tra chẵn/lẻ nào tốt?
 Độ

dư thừa: mã kiểm tra chẵn lẻ đơn bổ
sung 1 bit dư thừa vào k bit thông tin:
overhead = 1/(k + 1)
 Vùng phủ lỗi: tất cả các mẫu lỗi với số lỗi lẻ
có thể phát hiện được
 Liệu có thể phát hiện được nhiều lỗi hơn nếu
chúng ta bổ sung thêm nhiều bit kiểm tra?
 Trả lời: Có, với các mã phù hợp

5


Kiểm tra chẵn/lẻ 2 chiều








Cải tiến khả năng phát hiện lỗi so với parity 1 bit
Sử dụng nhiều bit chẵn lẻ hơn  cải thiện vùng phủ
Sắp xếp thông tin theo cột
Bổ sung bit chẵn lẻ đơn cho mỗi cột
Bổ sung một cột “parity” cuối cùng
Sử dụng ở các hệ thống điều khiển lỗi thời kỳ đầu

1 0 0 1 0 0
0 1 0 0 0 1

Last column consists
1 0 0 1 0 0 of check bits for each
1 1 0 1 1 0 row
1 0 0 1 1 1
Bottom row consists of
check bit for each column

6


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

1 0 0 1 0 0

0 0 0 0 0 1


0 0 0 0 0 1

1 0 0 1 0 0

One error

1 0 0 1 0 0

1 1 0 1 1 0

1 0 0 1 1 0

1 0 0 1 1 1

1 0 0 1 1 1

1 0 0 1 0 0

1 0 0 1 0 0

0 0 0 1 0 1

0 0 0 1 0 1

1 0 0 1 0 0 Three
errors
1 0 0 1 1 0

1 0 0 1 0 0


1 0 0 1 1 1

1 0 0 1 1 1

1 0 0 0 1 0

Two errors

 Luôn phát
hiện được các
mẫu có 1, 2,
hoặc 3 lỗi;
Không phải
phát tất cả các
mẫu có số lỗi > 4
đều có thể phát
hiện được
 Số bit kiểm tra
nhiều, không
hiệu quả

Four errors
(undetectable)

7

Mũi tên chỉ ra các bit kiểm tra không thỏa mãn


Các mã phát hiện lỗi khác



Nhiều ứng dụng yêu cầu tỉ lệ lỗi bit thấp









VD: các bộ codec yêu cầu BER <= 10-3 để giải mã

Cần các mã có thể phát hiện được nhiều mẫu lỗi hơn
Các mã kiểm tra parity đơn không phát hiện đủ các
lỗi
Mã kiểm tra sử dụng 2-D parity yêu cầu quá nhiều bít
kiểm tra
Thực tế các mã phát hiện lỗi sau đây được sử dụng:
 CRC Polynomial Codes


Hamming



Internet Check Sums
8



Mã đa thức (CRC)
 Là

mã được sử dụng phổ biến nhất trong phát
hiện và sửa lỗi
 Thực hiện dễ dàng bằng shift-register
 Sử dụng biểu diễn đa thức thay cho vector cho
từ mã
 Thực hiện số học đa thức thay cho check sum
 Còn gọi là mã cyclic redundancy check (CRC)
 Mã đa thức cũng là cơ sở cho các phương pháp
sửa lỗi tính năng cao
9


Số học đa thức nhị phân
Phép cộng:

(x7 + x6 + 1) + (x6 + x5) = x7 + x6 + x6 + x5 + 1
= x7 +(1+1)x6 + x5 + 1
= x7 +x5 + 1 do 1+1=0 mod2

Phép nhân:

(x + 1) (x2 + x + 1) = x(x2 + x + 1) + 1(x2 + x + 1)
= x3 + x2 + x) + (x2 + x + 1)
= x3 + 1

10



Chia đa thức nhị phân


Chia thập phân

34
35 ) 1222
105
Số chia
17 2
140
32



Thương số dividend = quotient x divisor +remainder
Số bị chia

1222 = 34 x 35 + 32

Sô dư

Chia đa thức
divisor

x3 + x2 + x

= q(x) quotient


x3 + x + 1 ) x6 + x5
x6 +
x4 + x3
x5 + x4 + x3
x5 +

Note: Bậc của r(x) nhỏ hơn bậc
của đa thức chia

dividend

x3 + x2
x4 +
x4 +

x2
x2 + x
x

11

= r(x) remainder


Nguyên lý mã đa thức





Biểu diễn bằng đa thức: các dấu thông tin, codeword,
error vector với các hệ số nhị phân
K bit thông tin được biểu diễn bởi đa thức bậc k-1
(ik-1 , ik-2 ,…, i2 , i1 , i0) i(x)= ik-1xk-1 + ik-2xk-2 + … + i2x2 + i1x + i0





Mã hóa: sử dụng i(x) để tạo ra từ mã b(x) có chứa các
bit thông tin và các bit kiểm tra theo một qui luật nhất
định
Mã đa thức được xác định bởi đa thức sinh g(x) có dạng
g(x) = xn-k + gn-k-1xn-k-1 + … + g2x2 + g1x + 1
với gk là các số nhị phận, (n-k) là số bít kiểm tra



Kiểm tra: dựa trên từ mã thu được, kiểm tra lại qui luật
xem có thỏa mãn không  phát hiện lỗi
12


Nguyên lý mã đa thức











Nguyên lý
 k-bit message
 Bên phát tạo ra chuỗi n bit FCS (Frame Check
Sequence) sao cho frame gởi đi (k+n bit) chia hết cho 1
số xác định trước
 
 Bên thu chia frame nhận được cho cùng số đó. Nếu
phần dư bằng 0 thì có khả năng không có lỗi
 Số học modulo 2
 Exlusive-or

13


Các đa thức sinh chuẩn


CRC-8:

ATM

= x 8 + x2 + x + 1



CRC-16:


Bisync

= x16 + x15 + x2 + 1
= (x + 1)(x15 + x + 1)



CCITT-16:

HDLC, XMODEM, V.41

= x16 + x12 + x5 + 1



CCITT-32:

IEEE 802, DoD, V.42

= x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1

14


Số chia P (G(x))
 Dài hơn 1 bit so với FCS mong muốn
 Được chọn tùy thuộc vào loại lỗi
mong muốn phát hiện
 Yêu cầu tối thiểu: msb và lsb phải là 1



Xác định FCS
 M(x): message dữ liệu cần truyền k bit
G(x): Đa thức sinh bậc n {có (n+1 ) bit}
T(x): frame được truyền (n+k) bit (gồm k bit thông tin và n bit FCS)
 Xác định FCS:
Nhân M(x) với 2n (Dữ liệu dịch trái n bit) ta được M’(x)
Chia M’(x) cho đa thức sinh ta được số dư là FCS
Ví dụ 1

Dữ liệu cần truyền: 1001001 (k = 7 bits) → đa thức biễu diễn:
M(x) = X6 + X3 + 1

Cho số chia 1001: đa thức sinh P(x) =X3 + 1 (n = 3 bits)

Dữ liệu dịch trái n bits:
2n . M(x) = X9 + X6 + X3

Chia dư 1. FCS = 001

Dữ liệu được truyền: 1001001001


Ví dụ 2:
Generator polynomial: g(x)= x3 + x + 1
Information: (1,1,0,0) i(x) = x3 + x2
Encoding: x3i(x) = x6 + x5
x3 + x2 + x
x3 + x + 1 ) x6 + x5

x6 +

1110
1011 ) 1100000
1011

x 4 + x3

1110
1011

x5 + x4 + x3
x5 +
x 3 + x2
x4 +
x4 +

x2
x2 + x
x

Transmitted codeword:
b(x) = x6 + x5 + x
b = (1,1,0,0,0,1,0)

1010
1011
010

17



Khả năng phát hiện lỗi
 Tr = T + E
 T: frame được truyền
 Tr: frame nhận được
 E: error pattern
 Error không bị phát hiện nếu và chỉ nếu Tr chia hết cho P
(i.e. iff E chia hết cho P)
 Các lỗi được phát hiện
 Tất cả các lỗi bit đơn
 Tất cả các lỗi kép nếu P có ít nhất 3 toán hạng
 Một số lẻ lỗi bất kỳ nếu P chứa 1 thừa số (X+1)
 Bất kỳ lỗi chùm nào mà chiều dài của chùm nhỏ
hơn chiều dài FCS
 Hầu hết các lỗi chùm lớn hơn
 
18















Cách sửa lỗi thông thường yêu cầu truyền lại khối dữ
liệu
  Không thích hợp cho các ứng dụng trao đổi dữ liệu
không dây
 Xác suất lỗi cao, truyền lại nhiều
 Thời gian trễ truyền lớn hơn nhiều thời gian truyền dữ
liệu
 Khối dữ liệu được truyền lại bị lỗi và nhiều khối dữ liệu
khác tiếp theo
 Cần thiết sửa lỗi dựa vào các dữ liệu nhận
được
19


 Phát







hiện các lỗi có số lỗi lẻ

Giả thiết tất cả đa thức từ mã có số bit 1 chẵn, thì
tất cả các lỗi có số lỗi lẻ đều phát hiện được
Tức là, b(x) tính tại x = 1 bằng không do b(x) có
số bit 1 chẵn

Có nghĩa là x + 1 phải là một hệ số của mọi b(x)
Chọn g(x) = (x + 1) p(x) trong đó p(x) là nguyên
thủy

20


21


Mã Hamming







Là loại mã sửa sai
Có thể sửa tất cả các mẫu lỗi đơn
Gọi m là số bít của chuỗi dữ liệu và n là số bít của mã Hamming, tổng số bít phát đi là m+n
Với n = 1 ta xác định được 1 trong 2 kết quả : chuỗi dữ liệu sai hoặc đúng nhưng không biết vị
trí lỗi.
Với n = 2, 1 trong 4 trường hợp xảy ra: 2 phép kiểm tra đều cho kết quả đúng, 2 phép kiểm tra
đều cho kết quả sai, phép kiểm tra thứ nhất sai, phép kiểm tra thứ hai đúng và ngược lại. 4
trường hợp này cho phép kết luận được 1 bít sai ở 1 trong 3 vị trí.

Redundancy

22



mã Hamming
- Với n=3, có 8 khả năng xảy ra và ta có thể kết
luận được 1 bít sai ở 1 trong 7 vị trí.
 - Với số n bất kỳ, có 2n khả năng xảy ra và ta có
thể kết luận được 1 bít sai ở 1 trong 2n -1 vị trí.
 Vậy để có thể phát hiện 1 lỗi tại 1 vị trí cụ thể thì
số n nhỏ nhất được chọn phải thỏa:

2n - 1  m + n hay 2n  m + n + 1

Các bít của mã Hamming chèn vào vị trí 2n
và dùng cho kiểm tra chẵn lẻ. Các bít khác là bít
thông tin (dữ liệu).


23


Nguyên tắc lập mã Hamming
Thuật toán cho việc sử dụng bit chẵn lẻ trong 'mã
Hamming' thông thường cũng tương đối đơn giản:
Tất cả các bit ở vị trí là các số mũ của 2 (powers of two)
được dùng làm bit chẵn lẻ. (các vị trí như 1, 2, 4, 8, 16, 32,
64 v.v. hay nói cách khác 20, 21, 22, 23, 24, 25, 26 v.v.)
Tất cả các vị trí bit khác được dùng cho dữ liệu sẽ được
mã hóa. (các vị trí 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17,
etc.)
Mỗi bit chẵn lẻ tính giá trị chẵn lẻ cho một số bit trong từ

mã (code word). Vị trí của bit chẵn lẻ quyết định chuỗi các
bit mà nó luân phiên kiểm tra và bỏ qua (skips):
Bỏ qua (n-1) bit, kiểm tra n bit, bỏ qua n bit, kiểm tra n
bit.v.v…
24


Nguyên tắc lập mã Hamming
















Vị trí 1 (n=1): bỏ qua 0 bit(n-1), kiểm 1 bit(n), bỏ qua 1 bit(n), kiểm 1
bit(n), bỏ qua 1 bit(n), v.v.
Vị trí 2(n=2): bỏ qua 1 bit(n-1), kiểm 2 bit(n), bỏ qua 2 bit(n), kiểm 2
bit(n), bỏ qua 2 bit(n), v.v.
Vị trí 4(n=4): bỏ qua 3 bit(n-1), kiểm 4 bit(n), bỏ qua 4 bit(n), kiểm 4
bit(n), bỏ qua 4 bit(n), v.v.

Vị trí 8(n=8): bỏ qua 7 bit(n-1), kiểm 8 bit(n), bỏ qua 8 bit(n), kiểm 8
bit(n), bỏ qua 8 bit(n), v.v.
Vị trí 16(n=16): bỏ qua 15 bit(n-1), kiểm 16 bit(n), bỏ qua 16 bit(n),
kiểm 16 bit(n), bỏ qua 16 bit(n), v.v.
Vị trí 32(n=32): bỏ qua 31 bit(n-1), kiểm 32 bit(n), bỏ qua 32 bit(n),
kiểm 32 bit(n), bỏ qua 32 bit(n), v.v.
và tiếp tục như trên.

Nói cách khác, bit chẵn lẻ tại vị trí 2k kiểm các bit ở các bit ở
vị trí t có giá trị logic của phép toán AND giữa k và t là khác 0
25


×