phƯƠng phÁp phÁt hiỆn vÀ sỬa lỖi

30

Upload: hoang-chung

Post on 28-Oct-2015

1.035 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI
Page 2: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI
Page 3: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

Bit 0

Bit 1

Bit 2

Bit 0

Bit 1

Bit 2

Bit 3

Bit 4

Bit 5

Bit 6

Bit 7

Bit 3

Bit 4

Bit 5

Bit 6

Bit 7

Sender Media Receiver

PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

PHẦN I: Mở đầu1. Đặt vấn đề:

Các thiết bị trong mạng khi truyền cho nhau đòi hỏi tính chính xác. Tuy nhiên dữ liệu dạng số khi được lưu trữ, xử lí hay truyền từ máy này qua máy khác có thể bị lỗi. Như khi truyền dữ liệu đi xa qua môi trường điện thoại, dây cáp, không gian có thể bị ảnh hưởng bởi nhiệt độ, nhiễu đường dây, điện từ… hay do lâu ngày các bộ xử lí, bộ chuyển đổi có một sai sót nhỏ sẽ làm thay đổi dữ liệu.Trên đường truyền dữ liệu có thể bị nhiễu (điện, từ,..) dẫn đến sai lạc trong quá trình truyền.

Vì vậy, trước khi nhận được dữ liệu thì phải phát hiện lỗi và sửa lỗi để nơi nhận có thể nhận thông tin một cách chính xác nhất.

2. Các phương thức truyền: Có 2 phương thức để truyền dữ liệu đó là : truyền song song và truyền nối tiếp.

a. Truyền song song:- Mỗi bit dùng một đường truyền riêng. Nếu có 8 bits được truyền đồng

thời sẽ yêu cầu 8 đường truyền độc lập.- Để truyền dữ liệu trên một đường truyền song song, một kênh truyền

riêng được dùng để thông báo cho bên nhận biết khi nào dữ liệu có sẵn (clock signal)

- Cần thêm một kênh truyền khác để bên nhận báo cho bên gửi biết đã sẵn sàng để nhận dữ liệu kế tiếp.

PARALLEL DATA TRANSMISSION

Page 4: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

- Ví dụ: ISA, ATA, PCI,…..b. Truyền nối tiếp:

- Tất cả các bit đều được truyền trên cùng một đường truyền, bit này tiếp sau bit kia dưới tác động của xung nhịp clock.

- Không cần các đường truyền riêng cho tín hiện truyền đi.- Phải đảm bảo được vấn đề thời gian giữa bên phát và bên nhận ->

tránh sự xung đột.- Trong phương thức truyền nối tiếp bao gồm : truyền đồng bộ và

không đồng bộ Không đồng bộ: mỗi ký tự được đồng bộ bởi bit start và bit

stop. Đồng bộ: mỗi khối ký tự được bồng bộ bởi cờ.

SERIAL DATA TRANSIMISSION

- Ví dụ: RS232, SPI, I2C….

3. Định nghĩa và phân loại lỗi.3.1. Định nghĩa:

Trong thực tế, một phần của thông tin sẽ bị thay đổi trên đường truyền dữ liệu (do từ trường, nhiệt độ….). Chúng có thể làm thay đổi hình dạng và thời điểm của tín hiệu. Nếu dữ liệu được mã hóa dưới dạng nhị phân thì một hoặc nhiều bit bị lỗi, có thể chuyển từ 1 sang 0 hoặc ngược lại hoặc cũng có thể chúng bị mất đi. Lỗi truyền thông

3.2. Phân loại lỗiCó 3 loại lỗi đó là: lỗi đơn bit, lỗi đa bit, lỗi đảo bit.

a. Lỗi đơn bit.- Khi truyền dữ liệu thì 1 bit của khối dữ liệu (1byte, 1 ký tự,..) bị thay

đổi từ 1 sang 0 và ngược lại.- Khi 1 bit bị lỗi thì các bit xung quanh không bị ảnh hưởng.- Thường xảy ra lỗi khi dữ liệu bị nhiễu trắng.

1001 1001 1001 1001

Sender ReceiverMedia

Page 5: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

0 0 0 0 0 0 1 0

- Thường xảy ra khi truyền truyền dữ liệu song song.b. Lỗi đa bit

- Là lỗi mà khi dữ liệu truyền đi có nhiều hơn 2 bit bị lỗi. ( điều này không có nghĩa là phải 2 lỗi xãy ra liên tiếp nhau).

- Chiều dài của lỗi tính từ bit bị lỗi đầu tiên đến bit bị lỗi cuối cùng (mặc dù các bit nằm ở giữa không bị lỗi).

-

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

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

- Thường xảy ra trong quá trình truyền dữ liệu nối tiếp.- Thời gian của nhiễu thường dài hơn của 1 bit nhưng nó có thể tác

động đến nhiều bit. Số bit bị tác động phụ thuộc và khoảng thời gian của nhiễu và tốc độ truyền.c. Lỗi đảo bit

- Là lỗi xuất hiện khi có 2 lỗi liên tiếp nhau đảo giá trị cho nhau.- Ví dụ

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

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

PHẦN II: Phương pháp phát hiện và sửa lỗi.

0 changed 1

Sender Receiver

Sent

Receiver

Length of burt error (5 bit)

Bits corrupted by burts error

0 0 0 0 1 0 1 0

Page 6: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

I- Phát hiện lỗi.- Khi truyền dữ liệu nếu gặp lỗi thì không thể nhận ra được trước khi

giải mã dữ liệu nhận đươc. - Khi gửi dữ liệu đi, nó sẽ được gắn vào phần đuôi 1 phần kiểm tra lỗi.

Bên nhận sẽ dựa vào đó để xem dữ liệu có bị lỗi hay không.

- Có 4 phương pháp phát hiện lỗi: VRC, LRC, CRC, CHECKSUM

1. Phương pháp VRC ( bit chẵn lẽ).- Mỗi xâu bit biểu diễn ký tự truyền đi được thêm và 1 bit, gọi là parity

bit hay là bit chẵn lẽ. - Quy ước: Chẵn: tổng số bit 1 có trong khối dữ liệu (cả bít parity) là số chẵn. Lẻ: tổng số bit 1 có trong khối dữ liệu (cả bit parity) là số lẽ.- Ở đầu nhận dữ liệu, mạch sẽ kiểm tra từng khối dữ liệu nhận được

xem có tổng số bit là chẵn(lẽ). Nếu không thì tức là đã có 1 bit nào đó trong khối dữ liệu  bị sai. Ngược lại là mạch truyền đúng.

- Ví dụ: Truyền 1 khối  dữ liệu 4 bit 1101 có sử dụng mạch tạo kiểm parity để rò sai được minh hoạ như hình dưới đây:

Accept

RejectChecking

101000000001010101010

Data

Generating function

1011101

Redundancy check

101000000001010101010

1011101

Data & redundancy checkReceiver Sender

Page 7: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

1 0 1 1 0 1 1 1

1 1 0 1 0 1 1 1

0 0 1 1 1 0 1 0

1 1 1 1 0 0 0 0

1 0 0 0 1 0 1 1

0 1 0 1 1 1 1 1

0 1 1 1 1 1 1 0

Hình 2.3.28 Mạch tạo kiểm Parity

Nhận xét:- Chỉ dò được lỗi sai số bit lẽ.- Không sửa được lỗi.- Ít được dùng trong truyền dữ liệu đi xa, đặc biệt ở tốc độ cao (hiệu

suất truyền thông tin kém).

2. Phương pháp LRC- Vẫn sử dụng phương pháp của VRC nhưng theo dạng 2 chiều (việc

kiểm tra được thực hiện cả chiều ngang lẫn chiều dọc)- Ví dụ:

Parity bit

Data bits

LRC bits

Page 8: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

- Theo chiều ngang, mỗi ký tự được thêm vào 1 bit kiểm tra chẵn lẽ như VRC, và được gọi là Kiểm tra chiều ngang VRC (Vertical Redundancy Check).

- Theo chiều dọc, cung cấp thêm 1 ký tự kiểm tra, được gọi là LRC (Longitudinal Redundancy Check).

- Khối dữ liệu gửi đi được gắn thêm LRC. Nơi nhận sẽ đem dữ liệu nhận được tập hợp theo hàng ngang và hàng dọc.Nếu:

Nếu tất cả các cột(ngang và dọc) đều =0 thì dữ liệu không bị lỗi.

Nếu 1 giá trị bất kỳ bằng không thì dữ liệu bị lỗi.

Ví dụ khối dữ liệu trên bị lỗi.

- Vậy có lỗi xảy ra sau khi dữ liệu được truyền.

VRC

1 0 1 1 0 1 1 1 0

1 1 0 1 0 1 1 1 0

0 0 1 0 1 0 1 0 1

1 1 1 1 0 0 0 0 0

1 0 0 0 1 0 1 1 0

0 1 0 1 1 1 1 1 0

0 1 1 1 1 1 1 0 0

0 0 0 1 0 0 0 0

Page 9: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

- Nhận xét Giảm tỷ lện lỗi không phát hiện được 2-4 bậc so với dùng VRC. Độ tin cậy tương đối cao. Có khả năng phát hiện và sửa lỗi nếu trường hợp lỗi đơn bit.

3. Phương pháp CRC (Cyclic Redundancy Check)

Để cải tiến hơn nữa, ta dùng kỹ thuật dễ dàng và hiệu quả được gọi là kiểm tra phần dư tuần hoàn CRC, trong đó có một số phương pháp khác nhau như:

a. Phương pháp Modulo Nguyên lý:- CRC: Cyclic Redundancy Check.- Nguyên tắc tạo mã: khung truyền gồm:

M: k bit dữ liệu F: n bit kiểm tra FCS (Frame Check Sequence). T=2rM+F: khung truyền (n + k) bit chia hết cho chuổi kiểm tra

P (n+1) bit.- Nơi nhận sẽ kiểm tra lỗi bằng cách chia T cho P, nếu chia không hết

thì chuỗi nhận được là có lỗi. Cách tạo CRC:

Ta có T=2rM+F

- F được tạo bằng cách dời chuỗi M (k bit) sang trái n bit.- Chia chuỗi 2rM cho chuỗi kiểm tra P (n+1) bit.- Số dư của phép chia chính là F (n bit). Ví dụ: giả sử ta có:

M = 1010001101 (10 bit). P = 110101 (6 bit).Tính F = ?Bài làm:

- Vì P = 6 bit nên n = 5 bit, ta tính M * 25

M*25 = 101000110100000- Thực hiện phép chia modulo 2 T cho M * 25

Page 10: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

( M*2r) = 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 1 (P)

- 1 1 0 1 0 1 0 1 1 0

b. Phương pháp đa thức:Ngoài ra người ta có thể sử dụng phương pháp đa thức để biểu diễn

phương pháp kiểm tra phần dư tuần hoàn. Trong phương pháp này người ta biểu diễn các chuỗi nhị phân dưới dạng những đa thức của biến x với các hệ số nhị phân. Các bit tương ứng với các bit trong chuổi nhị phân cần biểu diễn.

- Các chuỗi P thường được biểu diễn bằng 1 đa thức theo biến x -> P(x) gọi là đa thức sinh.

- Bậc của x chỉ trọng số, và hệ số là các số nhị phân.- Ví dụ: chuổi 11001 được biểu diễn là: x3+x2+0. x1+1.- 4 đa thức sinh P(x) thông dụng:

CRC−12=X12+X11+X3+X2+X+1

1 1 0 1 0 1

11 1 0 1 1

11 0 1 0 1

0 1 1 1 0 1

0 0 0 0 0 0

1 1 1 0 1 0

1 1 0 1 0 1

0 1 1 1 1 1

0 0 0 0 0 0

1 1 1 1 1 0

1 1 0 1 0 1

0 1 0 1 1 0

0 0 0 0 0 0

1 0 1 1 0 0

1 1 0 1 0 1

1 1 0 0 1 0

1 1 0 1 0 1

0 0 1 1 1 0

0 0 0 0 0 0

0 1 1 1 0 = F

Page 11: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

CRC−16=X 16+X15+X2+1 CRC−CCITT=X16+X12+X 5+1CRC−32=X32+X26+X23+X 22+X 16+X12+X11+X10+X8+X7+X5+X 4+X2+X+1

- Những phép toán trên đa thức vẫn là modulo 2. Quá trình tính CRC được mô tả dưới dạng các biểu thức sau:

1. XnM (X )P (X )

=Q ( X )+ F (X )P (X )

2. T ( X )=X nM (X )+F (X )

Ví dụ: Cho: M=1010001101 P=110101 Ta có: r=5

M (x )=x9+x7+x3+x2+1

x5M ( x )=x14+ x12+x8+x7+x5

P ( x )=x5+x 4+x2+1

- Thực hiện phép toán:

xnM (x)P(x)

=Q ( x )+F (x )P (x)

- Suy ra: Q ( x )=x9+ x8+x6+x4+x4+ x2+x

F ( x )=x3+x2+ x 01110

Khung cần truyền đi là T= 101000110101110 Nhận xét :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(x) có ít nhất 3 toán hạng. Một số lẻ lỗi bất kỳ nếu P(x) 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 hoặc bằng chiều

dài FCS.

3. Phương pháp CHECKSUMTại nơi phát, bộ này chia các đơn vị dữ liệu thành các phân đoạn bằng

nhau với n bit (thường là 16). Các phân đoạn này được cộng với nhau dùng

Page 12: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

10101001

00111001

11100010

00011101

Sum

Checksum

10101001

00111001

11111111

00000000

Sum

Checksum

00011101

phương pháp bù 1 đễ có kết quả cũng có n bit. Giá trị này được lấy bù và gắn vào phần dưới của dữ liệu gốc như là giá trị thừa, và được gọi là trường CHECKSUM. Các đơn vị dữ liệu mở rộng này được truyền qua mạng. Như vậy, nếu tổng của đơn vị dữ liệu là T, thì CHECKSUM là T.

Bên nhận chia nhỏ đơn vị dữ liệu thành các phân đoạn và lấy các giá trị bù. Nếu đơn vị dữ liệu còn nguyên, thì giá trị có được từ phép cộng các phân đoạn dữ liệu và CHECKSUM đều bằng 0. Nếu kết quả khác 0, thì khối dữ liệu có chứa lỗi và nơi nhận sẽ loại bổ đơn vị dữ liệu này.

Ví dụ :Giả sữ khối 16 bit sau được gửi đi dùng CHECKSUM 8 bit

Số này được cộng với phần bù 1, ta có :

Ví dụ nơi nhận nhận được dữ liệu không bị lỗi:Nơi nhận sẽ cộng 3 phân đoạn, kết quả CHECKSUM đều bằng 0

Giả sử có nhiễu ở vị trí thứ 5 lên 4 bit

Khi nhận nơi nhận cộng 3 đoạn lại thì có giá trị khác 0

10101001 00111001

10101001 00111001 00011101

10101111 11111001 00011101

10101111

11111001

00011101

1 11000101

1

11000110Sum

Page 13: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

Nhận xét: CHECKSUM phát hiện được tất cả các lỗi bit lẻ và hầu hết các bit

chẵn. Thuận lợi khi dữ liệu được tổ chức theo dạng ký tự. Độ tin cậy tương đối cao nhưng vẫn còn sót lỗi.

II- Sữa lỗi.Như chúng ta đã biết, ưu thế của truyền thông kĩ thuật số so với truyền thông tương tự, ngoài tốc độ dữ liệu chính là khả năng sử dụng mã hóa sửa sai. Mã hóa sửa sai (Error Control Coding – ECC) có nhiều họ khác nhau: từ cái mã khối đơn giản như mã Hamming, BCH đến các mã khối phức tạp hơn như Reed Solomon, từ các mã chập đơn giản đến các mã chập phức tạp và nhiều loại mã phối hợp. ECC có lịch sử nghiên cứu khá lâu dài và phong phú. Do đó, chúng ta chỉ nghiên cứu kĩ đến các phương pháp sửa lỗi thông dụng. Sau đây là một số mã sửa lỗi thông dụng:

1. Mã Hamming:Trong Kĩ thuật truyền số liệu, mã Hamming là một mã sửa lỗi tuyến tính

được đặt theo tên người phát minh ra nó, Richard Hamming. Mã Hamming có thể phát hiệu một bit hoặc hai bit bị lỗi và có thể sửa sai tại các lỗi đơn bit.

Thuật toán dùng trong mã Hamming:1. Các bit ở vị trí là lũy thừa của 2 được dùng làm bit mã (các vị trí như

1, 2, 4, 8, 16…).2. Các bit ở các vị trí còn lại dùng cho việc truyền dữ liệu (các vị trí như

3, 5, 6, 7, 9,…)

Như vậy, nếu dùng m bit mã thì kiểm tra được 2m – 1 bit dữ liệu. Tổng số bit dữ liệu truyền là m + n.

3. Các giá trị ci được tính dựa vào 2 yếu tố:- Quy ước chẵn lẻ giữa bên gửi và bên nhận

Page 14: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

- Sự đóng góp của ci vào việc hình thành vị trí bit.Nghĩa là: Với bit mã ci, bit tác động bắt đầu từ vị trí 2i, bỏ qua 2i bit kế tiếp, tác động vào 2i bit tiếp theo.+ Với i = 0, các bit bị tác động là 1, 3, 5, 7…+ Với i = 1, các bit bị tác động là 2, 3, 6, 7, 10, 11…+ Với i = 2, các bit bị tác động là 4, 5, 6, 7, 12, 13, 14, 15…+ Với i = 3, các bit bị tác động là 8, 9, 10, 11, 12, 13, 14, 15, 24, 24…+ Với i = 4, các bit bị tác động là 16, 17, 18, 19, 20, 21, 22, 23, 24, 25…

Ví dụ: cho chuỗi bit cần truyền là A = 1101100111. Sử dụng mã Hamming để mã hóa và truyền dữ liệu.Giả sử quy ước chẵn lẻ là chẵn:1. Chèn các bit chẵn lẻ ( kí hiệu là c0, c1, c2, c3 ) vào các vị trí, ta được

chuỗi mới:

14 13 12 11 10 9 8 7 6 5 4 3 2 11 1 0 1 1 0 c3 0 1 1 C2 1 C1 C0

2. Tính toán giá trị của các bit mã, ta được chuỗi dữ liệu truyền là:

14 13 12 11 10 9 8 7 6 5 4 3 2 11 1 0 1 1 0 0 0 1 1 1 1 1 0

3. Phía nhận nhận dữ liệu và kiểm tra bằng việc tính toán lại giá trị các bit mã. Nếu đều bằng “0” thì việc truyền là không có lỗi. Nếu có bit bằng “1” thì chuỗi bit c3c2c1c0 là chỉ vị trí bit lỗi.

Ví dụ chuỗi dữ liệu trên, ở phía nhận sai ở bit thứ 9:

14 13 12 11 10 9 8 7 6 5 4 3 2 11 1 0 1 1 1 0 0 1 1 1 1 1 0

C0= 0

C1=1

C2= 1

C3 = 0

C0 = 1

Page 15: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

Chuỗi bit mã nhận được c3c2c1c0 = 1001 = 9.Vậy, chuỗi dữ liệu đúng khi nhận là:

14 13 12 11 10 9 8 7 6 5 4 3 2 11 1 0 1 1 1 0 0 1 1 1 1 1 0

4. Bỏ đi cách bit dư thừa, chuỗi dữ liệu gốc là: A = 1101100111

2. Mã vòngXét dữ liệu dạng ở dạng tuyến tính. Đem dữ liệu chia cho một đa thức

sinh, lấy phần dư:Với - M(x) là dữ liệu truyền (có K bit), là số bị chia.- G(x) là đa thức sinh, đóng vai trò số chia.- R(x) là số dư, là dãy N bit với N<K

Đem phần dư nhận được gắn vào cuối dữ liệu rồi đem gửi đi. Phía nhận đem dữ liệu nhận được, chia cho đa thức sinh G(x). Nếu phép chia có dư tức là dữ liệu bị lỗi.

Phương pháp sửa lỗi: (1). Đem đa thức nhận được V(x) chia cho G(x), tính Ri(x) dư. (2). Tính trọng số của phần dư.

+ Nếu trọng số của phần dư w(Ri(x)) > t với t = [

d0−1

2 ], dịch vòng bằng cách nhân G(x).x rồi tính Ri+1(x).

+ Nếu trọng số phần dư w(Ri(x)) ≤ t, sang (2) (3). Tính toán từ mã đúng:

M(x) = x .V (x )+Ri (x)x

Thuật toán:

C1 = 0

C2 = 0

C3 = 1

Page 16: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

w(Ri(x)) > t

w(

R0(x)) ≤ t

Ví dụ: Cho mã Vòng có n = 7, k = 3, d0 = 4 có đa thức sinh G(x) = x4 + x3 + x2 + 1.

Giả sử từ mã nhận được của bộ mã trên có dạng V(x) = x2 + x +1. Sử dụng thuật toán chia dịch vòng để tìm lại từ mã đã phát:

(1) Chia V(x) = x2 + x +1cho G(x) = x4 + x3 + x2 + 1. Nhận thấy bậc của V(x) nhỏ hơn bậc của G(x) V(x) chính là phần dư của phép chia R0(x) = x2

+ x + 1 trọng số của phần dư w(r0(x)) = 3 > t

với t = phần nguyên của

d0−1

2 = phần nguyên của

4−12 = 1

(2) Dịch vòng phải bằng cách nhân V(x) với x rồi lại chia cho G(x) để tìm phần dư:V(x).x = x3 + x2 +x G(x) = x4 + x3 + x2 + 1 R1(x) = x + x2 + x3

w(R1(x)) = 3 > t- Tiếp tục dịch vòng:

x2.V(x) x2 = x4 + x3 + x2 G(x) = x4 + x3 + x2 + 1 r2(X) =1 w(r2(X)) =1 = t

Đem V(x) chia cho G(x), tính Ri(x) dư.

Tính trọng số của phần dư.

W(Ri(x))

Tính toán từ mã đúng:

M(x) = x .G (x )+Ri (x)

x

dịch vòng bằng cách nhân G(x).x rồi tính

Ri+1(x)

Page 17: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

- B3: Xác định từ mã (dữ liệu đã được dịch phải 2 lần, do đó, muốn tìm dữ liệu gốc, ta dịch trái 2 lần bằng cách chia cho x2)

M(x) =

X2 .v (X )+r2 (X )

X2 =

X4+X 3+X2+1X2

= x2 + x + 1 + x5

(coi 1 = X0 = X7)Từ mã nhận được: 1110010So với V(x) 1110000Ta thấy sai ở vị trí X5 đã được sửa

Lưu ý: Thay bằng dịch vòng phải có thể dịch vòng trái bằng cách chia V(x) cho G(x). Khi tìm dữ liệu gốc, dịch bit phải bằng cách lũy thừa x với số lần dịch.

3. Giải mã theo thuật toán Meggit:Giả sử f(x) là một từ mã của một bộ mã xyclic V_(n,k) có đa thức sinh G(x).

Khi đó f(x)⋮G(x).

F(x) V(x) = F(x) + e(x)E (x)

Giả sử V(x) là từ mã được đưa đến đầu vào bộ giải mã, khi đó:v ( x)g (x)=

f (x )g (x)

+e (x)g (x)

Bằng cách phân tích phần dư của phép chia trên, ta có thể tìm được đa thức sai e(x).Sơ đồ phân tích phần sư là một sơ đồ logic tổng hợp, là thành phần chức năng quan trọng trong sơ đồ giải mã theo thuật toán Meggit sau:

Ví dụ: xét mã có đa thức sinh g(x) = x3 + x + 1. Giả sử dấu sai là dấu đầu tiên có bậc cao nhất của từ mã, khi đó, ta có e(x) = x6 . Phần dư tương ứng:

Kênh

Thiết bị nhớ từ mã n dấu

Thiết bị chia cho g(x) và tính dư

Sơ đồ phân tích phần dư

Page 18: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

x6 x3 + x +1 x4 + x3 x3 + x +1 x3 + x2 +x

Phần dư r(x) = x2 + 1

Khi nhận thấy phần dư có dạng r(x) = x2 + 1 thì sơ đồ phân tích phần dư cho ra tín hiệu sửa sai (tín hiệu 1) đưa tới bộ cộng mod 2 để sửa sai cho dấu mã tương ứng.Như vậy, chỉ khi phần dư có dạng 101 thì thiết bị logic tổ hợp mới tạo tín hiệu “1” để sửa sai. Sơ đồ giải mã có dạng:

VÀOV0 V1 V2 V3 V4 V5 V6

1÷7

V124

Sau 2n = 14 nhịp, bộ giải mã hoàn thành quá trình giải mã (bảy nhịp đầu chia là tính dư, đồng thời đưa từ mã vào bộ ghi dịch đệm, 7 nhịp sau để giải mã).Ví dụ: từ mã nhận được có dạng: v(x) = x3 + x2 +x 0 1 1 1 0 0 0Hoạt động của bộ giải mã được mô tả theo bảng sau:

Nhịp vàoV0 V1 V2 V3 V4 V5 V6 1 2 3

1 0 0 0 0 0 0 0 0 0 0 02 0 0 0 0 0 0 0 0 0 0 03 0 0 0 0 0 0 0 0 0 0 04 1 1 0 0 0 0 0 0 1 0 0

+ 1 + 2 3

+

Page 19: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

5 1 1 1 0 0 0 0 0 1 1 06 1 1 1 1 0 0 0 0 1 1 17 0 0 1 1 1 0 0 0 1 0 1

8 0 0 0 1 1 1 0 0 1 0 0 1 19 0 0 0 0 1 1 1 0 0 1 0 0 010 0 0 0 0 0 1 1 1 0 0 1 0 011 0 0 0 0 0 0 1 1 1 1 0 0 112 0 0 0 0 0 0 0 1 0 1 1 0 113 0 0 0 0 0 0 0 0 1 1 1 0 114 0 0 0 0 0 0 0 0 1 0 1 0 0

Từ mã đã sửa: V’(x) = v(x) + e(x) = x6 + x3 + x2 +xDấu sai là x6 đã được sửa. 4. Mã xoắn: Mã chập (hay còn gọi là mã xoắn) là một loại mã sửa lỗi trong đó :

- Mỗi symbol m-bit thông tin (chuỗi m-bit) được mã hóa thành một symbol n-bit, với m/n là tỉ lệ mã hóa (n ≥m)

- Hàm truyền đạt là một hàm của k symbol thông tin cuối cùng, với k là chiều dài hạn chế của mã.

Mã chập (Convolution Codes), là một kỹthuật mã hóa sửa sai (EEC), thuộc họ mã lưới (mã hóa theo Trellis) và được xây dựng dựa trên 1 đa thức sinh hoặc 1 sơ đồ chuyển trạng thái (trellis mã) đặc trưng. Quá trình giải mã của mã chập phải dựa vào trellis mã thông qua các giải thuật khác nhau, trong đó phổ biến nhất là giải thuật Viterbi. Gọi là mã chập vì cấu trúc mã hóa có thể biểu diễn dưới dạng phép tính chập (convolution) giữa đa thức sinh mã và chuỗi tín hiệu được mã hóa. Mã chập là mã tuyến tính có ma trận sinh có cấu trúc sao cho phép mã hóa có thể xem như một phép lọc (hoặc lấy tổng chập). Mã chập được sử dụng rộng rãi trong thực tế. Bởi mã hóa được xem như một tập hợp các bộ lọc số tuyến tính với dãy mã là các đầu ra của bộ lọc được phép xen kẽ. Các mã chập là các mã đầu tiên được xây dựng các thuật toán giải mã quyết định phần mềm hiệu quả. Bộ mã hóa cho mã chập thường được coi là một tập các bộ lọc số. 4.1. Kĩ thuật mã hóa:

Trong mã chập, một chuỗi bit dữ liệu nhị phân được mã hóa thành một dãy các ký hiệu tuần tự qua một phép “chập”, mỗi ký hiệu là một nhóm bit. Với mọi trường hợp của chuỗi bit dữ liệu ngẫu nhiên qua phép “chập” tạo ra một số xác định các tuần tự ký hiệu, gọi là các tuần tự hợp lệ. Tuần tự

Page 20: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

các ký hiệu tương ứng sẽ được truyền đi, có mối quan hệ với chuỗi dữ liệu gốc.

Căn cứ vào mối quan hệ này, máy thu sẽ giải mã thành dữ liệu đã truyền. Nếu có lỗi xảy ra, một tuần tự ký hiệu hợp lệ gần giống nhất với tuần tự ký hiệu nhận sẽ được chọn để chuyển ngược thành chuỗi dữ liệu ban đầu. Kỹ thuật này được áp dụng cho các thông điệp rất dài. Giải pháp giải mã nhanh được áp dụng rộng rãi là giải mã ViterbiII.4.2. Giải mã ViterbiXác định tất cả các đường dẫn, tính ra khoảng cách Hamming giữa chúng với tuần tự nhận được, chọn lấy giá trị nhỏ nhất là công việc khá lớn. Để khắc phục, lợi dụng đặc tính của lược đồ lưới để chọn ra một số đường dẫn tốt nhất cho chọn lựa sau cùng:

- Tại mỗi khoảng, lưới chỉ có 4 trạng thái BA có thể, có nhiều đường dẫn đến bốn trạng thái này.

- Mỗi trạng thái có thể dẫn đến một trong hai trạng thái trong khoảng kế tiếp. Ngược lại, một trạng thái cho trước luôn là đích đến từ hai trạng thái xác định trong khoảng thời gian kếtrước. Nói cách khác, có đúng hai đường dẫn đến mỗi một trong bốn trạng thái.

- Thông thường, một trong hai đường dẫn sẽ có số sai lệch tích lũy hiện tại nhỏ hơn đường kia. Đường có sai lệch tích lũy hiện hành nhỏ hơn sẽ được chọn để xét tiếp.

Thuật toán giải mã Viterbi

Bước 1: Quá trình bắt đầu tại tầng thứ nhất với trạng thái 00. Từ đây chỉ có hai đường dẫn. Tính khoảng cách Hamming cho mỗi đoạn đường dẫn, với ký hiệu tương ứng nhận được tại tầng này. Giá trị được ghi lại để tích lũy cho bước kế tiếp.Bước 2: Có bốn đường dẫn được xác định dẫn đến tầng kế tiếp, khoảng cách Hamming của mỗi đoạn đường lúc này sẽ tùy thuộc vào ký hiệu nhận được tương ứng với tầng này. Cách tích lũy khoảng cách Hamming của đoạn đường: khoảng cách Hamming = khoảng cách Hamming + sai khác tại tầng hiện hành. Tính cho mỗi đoạn đường. Bước 3: Có tám đường dẫn đến tầng kế tiếp, hai đường đến một trạng thái. Tính khoảng cách Hamming cho mỗi đoạn: khoảng cách Hamming = khoảng cách Hamming + sai khác tại tầng hiện hành. Một trong hai đường cùng đến một trạng thái sẽ có khoảng cách Hamming tích lũy nhỏ hơn và được chọn đi tiếp. Trong trường hợp cả hai có cùng khoảng cách Hamming, chọn đường bên trên.

Page 21: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

Bước 4: Lặp lại bước 3 cho tầng kế tiếp cho đến khi kết thúc. Cuối cùng còn lại bốn đường, chọn đường có khoảng cách Hamming nhỏ hơn cả. Bước 5:Giải mã từ tuần tự ký hiệu thành chuỗi bit dữ liệu đã truyền. Xét ví dụsau:

Page 22: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

4.3. Kết luậnMã hóa xoắn với giải mã Viterbi là một kỹ thuật EEC đặc biệt phù

hợp với một kênh, trong đó tín hiệu truyền chủ yếu là bị lỗi do tiếng ồn phụ gaussian trắng (AWGN). Có thể hiểu AWGN như tiếng ồn phân phối điện áp qua thời gian có đặc điểm là có thể được mô tả bằng cách sử dụng một Gaussian, hoặc bình thường, thống kê, phân phối, tức là một đường cong chuông.

Mã xoắn thường được mô tả bằng hai tham số: tỷ lệ mã và độ dài hạn chế. Tỷ lệ mã, k/n, được thể hiện như một tỷ lệ số bit vào bộ mã hóa xoắn (k) với số lượng đầu ra ký hiệu kênh của bộ mã hóa xoắn (n) trong một chu kỳ mã hóa là nhất định. Các thông số chiều dài hạn chế, K, là bắt chiều dài "" của bộ mã hóa xoắn, tức là có bao nhiêu giai đoạn k-bit có sẵn để nuôi các tổ hợp logic mà tạo ra những biểu tượng có liên quan chặt chẽ đến K là m tham số, mà chỉ ra bao nhiêu. chu kỳ mã hóa một bit đầu vào được giữ lại và được sử dụng để mã hoá sau khi lần đầu tiên xuất hiện ở đầu vào của bộ mã hóa xoắn. Tham sốm có thể được dùng như chiều dài bộ nhớ của các bộ mã hóa. Trong nhiều năm qua, Mã xoắn và giải mã Viterbi là các kỹ thuật EEC chủ yếu được sử dụng trong giao tiếp không gian, đặc biệt là trong các mạng

Page 23: PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI

truyền thông vệ tinh địa tĩnh, như VSAT (thiết bị đầu cuối khẩu độ rất nhỏ) ở các mạng. Các biến thể phổ biến nhất được sử dụng trong các mạng VSAT là tỷ lệ1/ 2 mã hóa xoắn bằng cách sử dụng một mã với chiều dài hạn chế K = 7.