Các đa thức sinh chuẩn... Parity Check Equations Rearrange parity check equations: All codewords must satisfy these... Minimum distance of Hamming Code Previous slide shows that u
Trang 1Điều khiển lỗi
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
không đáp ứng được yêu cầu của ứng dụng
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 )
Trang 2Kiểm tra Chẵn/Lẻ đơn bit
Bổ sung thêm parity check chung vào k bit thông tin
Info Bits: b1, b2, b3, …, bk
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
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
Trang 3 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
Trang 4Bít kiểm tra & Phát hiện lỗi
Tính toán bit
Thông tin chấp nhận được nếu các bit kiểm tra phù hợp
Bit kiểm tra thu được
k bits
n – k bits
Trang 5Mã kiểm tra chẵn/lẻ nào tốt?
sung 1 bit dư thừa vào k bit thông tin: overhead = 1/(k + 1)
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
Trang 6Kiểm tra chẵn/lẻ 2 chiều
Last column consists
of check bits for each row
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
Trang 7 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ả
Trang 8Cá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:
Hamming
Internet Check Sums
Trang 9Mã đa thức (CRC)
hiện và sửa lỗi
từ mã
sửa lỗi tính năng cao
Trang 11Chia đa thức nhị phân
Thương số
Sô dư
Số bị chia
1222 = 34 x 35 + 32 dividend = quotient x divisor +remainder
x3
Note: Bậc của r(x) nhỏ hơn bậc
của đa thức chia
Trang 12Nguyê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
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
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
(ik-1 , ik-2 ,…, i2 , i1 , i0) i(x)= ik-1xk-1 + ik-2xk-2 + … + i2x2 + i1x + i0
g(x) = xn-k + gn-k-1xn-k-1 + … + g2x2 + g1x + 1
Trang 13Nguyên lý mã đa thức
Sequence) sao cho frame gởi đi (k+n bit) chia hết cho 1 số xác định trước
phần dư bằng 0 thì có khả năng không có lỗi
Trang 14Các đa thức sinh chuẩn
Trang 15Số 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
Trang 16Xá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
Dữ liệu được truyền: 1001001001
Trang 171110101110101011010
Trang 18Khả 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
Trang 19 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
Trang 20 Phát hiện các lỗi có số lỗi lẻ
tất cả các lỗi có số lỗi lẻ đều phát hiện được
số bit 1 chẵn
thủy
Trang 2121
Trang 22Mã 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
Trang 23 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).
Trang 24Nguyê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…
Trang 25Nguyê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
Trang 26Mã Hamming
Ví dụ:
Giả sử chuỗi dữ liệu cần truyền gồm 4 bít như sau :
1 0 1 0 Với m = 4 , ta chọn n = 3, bất đẳng thức trên được thỏa mãn Gọi các bít của mã Hamming là H1 H2 và H4 (1, 2, 4 là các vị trí mà ta sẽ đặt 3 bít của mã Hamming vào dòng dữ liệu) Gọi các bít dòng dữ liệu là X 3 , X 5 , X 6 , X 7
Tổ hợp các bít dữ liệu và bít mã, ta đươc
1 2 3 4 5 6 7
H1 H2 X3 H4 X5 X6 X7Giả sử ta chọn Parity chẵn, các bít mã sẽ được xác định như sau:
H1 X3 X5 X7 = 0
H1 =X3 X5 X7 =1 ( 0 0 ) = 1 0 = 1 Tương tự:
H 2 = X 3 X 6 X 7 = 1 ( 1 0 ) = 1 1 = 0
H4 = X5 X6 X7 =0 ( 1 0 ) = 0 1 Bản tin bao gồm bít mã trở thành: 1 0 1 1 0 1 0
Trang 27Nguyên tắc tạo mã Hamming
Ở máy thu để kiểm tra người ta thực hiện các phép toán:
C1 = H1 X3 X5 X7
C2 = H2 X3 X6 X7
C4 = H4 X5 X6 X7 Nếu C1=C2=C4=0, không có lỗi xảy ra
Nếu C1 = 1, C2 = C4 = 0, một trong các bít 1, 3, 5, 7 bị lỗi Nhưng C2 = C4 = 0 có nghĩa là các bít 2, 3, 6, 7 và 4,
5, 6, 7 đã đúng Vậy bít sai phải là bít 1
Lý luận tương tự ta có các trường hợp khác Thí dụ nếu C1= C2 = C4 = 1 thì bít lỗi là bít 7
Trang 28Nếu tổ hợp này bằng 0 chứng tỏ bản tin nhận đúng Mã Hamming có thể được phát triển để dò ra hai bít
sai và sửa được một bit lỗi
Trang 29Ví dụ: 15 bit data, 5 bit parity
Bit position 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Bất kỳ một bit nào đều có một vùng phủ parity duy nhất
VD: chỉ mình bit 12 (d8) được phủ bởi p3 và p4 mã Hamming có thể sửa bất kỳ lỗi đơn nào (SEC code)
Trang 30Ví dụ: mã Hamming (7,4)
Data word (with parity): 1 0 0 0 1 1 0 0 1 0 1
Calculation of Hamming code parity bits
Ví dụ cho từ: 0110101
Trang 31Nguyên tắc sửa sai
Giả thiết bít cuối cùng bị thu lỗi: 10001100101 10001100100
p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7 Parity check Parity bit Received data word: 1 0 0 0 1 1 0 0 1 0 0
Checking of parity bits (switched bit highlighted)
Parity mới 1011=11 cần sửa bit thứ 11 = Đảo dấu
Trang 32m = 3 Hamming Code
Information bits are b1, b2, b3, b4
Phương trình kiểm tra cho parity b5, b6, b7
b5 = b1 + b3 + b4
b6 = b1 + b2 + b4
b7 = + b2 + b3 + b4
Trang 34Parity Check Equations
Rearrange parity check equations:
All codewords must satisfy these
Trang 350010000
s = H e = = 10
1
Single error detected
0100100
s = H e = = + =01
1
Double error detected
100
1 0 1 1 1 0 0
1 1 0 1 0 1 0
0 1 1 1 0 0 1
1110000
101
Error Detection with Hamming Code
Trang 36Minimum distance of Hamming Code
Previous slide shows that undetectable error pattern must have 3 or more bits
At least 3 bits must be changed to convert one codeword into another codeword
b1 o o b2
oo
Trang 37General Hamming Codes
through the check matrix H:
of H
code with g(x) of degree m that is equivalent
to a Hamming code and corrects all single
errors
Trang 38Error-correction using Hamming Codes
s = HR = H (b + e) = Hb + He = He
codeword
Hamming decoder assumes a single error has occurred
Each single-bit error pattern has a unique syndrome
The receiver matches the syndrome to a single-bit error
Trang 39Performance of Hamming
Error-Correcting Code
and with probability p