Nếu một tuyến truyền dẫn PCM không đạt được tỷ số BER yêu cầu với các ràng buộc này thì cần phải sử dụng các phương pháp mã hóa điều khiển lỗi error control coding.. Mã hóa điều khiển lỗ
Trang 1Chương 5
Mã hóa kênh
Theo quan điểm của ngành thông tin, tài nguyên thông tin chủ yếu là công suất, thời gian và băng thông của tín hiệu Đối với một môi trường thông tin cho trước, ba tài nguyên này có thể mâu thuẫn lẫn nhau Việc cân đối các mâu thuẫn này tùy vào từng trường hợp cụ thể Tuy nhiên, nhìn chung thì ta có thể đạt được tốc độ truyền sốî liệu cao nhất trong một băng thông nhỏ nhất trong khi giữ cho chất lượng truyền dẫn ở mức chấp nhận được Trong thông tin số
thì chất lượng truyền dẫn có liên quan mật thiết với xác suất lỗi bit P b tại đầu thu
Định lý về thông lượng kênh của Shannon- Hartley:
) N / S 1 ( log B C
đã chỉ ra giới hạn lý thuyết của tốc độ truyền số liệu từ bộ phát có công suất cho trước, qua một kênh với băng thông cho trước, hoạt động trong môi trường có nhiễu đã biết Tuy nhiên, để thực hiện được giới hạn lý thuyết này, ta phải tìm được một phương pháp mã hóa phù hợp (theo Shannon thì phương pháp này có tồn tại)
Trong thực tế, yêu cầu của việc thiết kế là phải thực hiện được một tốc độ truyền số liệu yêu cầu (thường được xác định bởi dịch vụ cung cấp) trong một băng thông hạn chế của một kênh truyền sẵn có và một công suất hạn chế tùy ứng dụng cụ thể Hơn nữa, còn phải đạt được tốc độ này với một tỷ số BER (Bit Error Rate) và thời gian trễ chấp nhận được Nếu một tuyến truyền dẫn PCM không đạt được tỷ số BER yêu cầu với các ràng buộc này thì cần phải sử dụng các phương pháp mã hóa điều khiển lỗi (error control coding).
Mã hóa điều khiển lỗi, còn được gọi là mã hóa kênh (channel encoding) được sử dụng để phát hiện và sửa các ký tự hay các bit thu bị lỗi Mã hóa phát hiện lỗi (error detection coding) được sử dụng như là bước đầu tiên của quá trình sửa lỗi bằng cách kích cho đầu cuối thu phát ra tín hiệu yêu cầu lặp lại tự động ARQ (Automatic Repeat reQuest), truyền theo hướng ngược lại về cho đầu cuối phát Nếu quá trình truyền lại thành công thì coi như là đã sửa được lỗi Nếu kỹ thuật ARQ không thích hợp, chẳng hạn như khi trễ truyền dẫn quá lớn thì sẽ sử dụng kỹ thuật mã hóa sửa lỗi không phản hồi FECC (Forward Error Correction Coding) Cả mã phát hiện lỗi và mã sửa lỗi đều đưa thêm độ dư vào dữ liệu phát, trong đó độ
dư thêm vào trong mã sửa lỗi nhiều hơn trong mã phát hiện lỗi Lý do là đối với mã sửa lỗi, độ dư thêm vào phải đủ cho bên thu không chỉ phát hiện được lỗi mà còn sửa được lỗi, không cần phải truyền lại
Phần đầu của chương này sẽ trình bày tổng quan về điều khiển lỗi áp dụng trong hệ thống thông tin số, bao gồm giới thiệu về các phương pháp điều khiển lỗi, phân loại các mã điều khiển lỗi
Phần sau của chương tập trung vào các loại mã điều khiển lỗi, bao gồm hai loại chính là mã khối (block code) và mã chập (convolutional code).
- 105 -
Trang 2- Chương V -
Phần mã khối sẽ nêu một loại mã khối đơn giản nhất là mã kiểm tra chẵn lẻ parity
Phần mã khối tuyến tính (linear block code) sẽ tập trung trình bày về mã vòng (cyclic code)
và một loại mã vòng đơn giản là mã Hamming
Phần mã chập ở cuối chương sẽ trình bày phương pháp dùng sơ đồ cây (tree diagram), sơ đồ lưới (trellis diagram) và sơ đồ trạng thái (state diagram) để minh họa cho quá trình mã hóa mã chập Phần giải mã mã chập trình bày thuật toán Viterbi dùng sơ đồ lưới
Các nội dung về mã hóa được trình bày ở đây theo quan điểm là dành cho người đã nắm được lý thuyết mã hóa, chỉ nêu thuật toán mã hóa và giải mã, đưa ra ví dụ minh họa, chứ không nêu cơ sở toán học
5.1 Tổng quan về điều khiển lỗi
5.1.1 Các phương pháp điều khiển lỗi
Đại lượng đo lỗi thông thường là tỷ lệ lỗi bit BER (Bit Error Rate) hay xác suất lỗi bit (P b ) P b
đơn giản là xác suất một bit nhị phân bất kỳ truyền đi bị lỗi BER là tỷ số lỗi trung bình, được
tính là tích của P b và R b , ở đây R b là tốc độ bit trong kênh P b điển hình trong một hệ thống PCM tuyến tính là 10 -7, trong hệ thống PCM nén phi tuyến là 10 -5, trong hệ thống ADPCM là 10 -4
Điều khiển lỗi nhằm mục đích là làm giảm tỷ lệ lỗi trong một hệ thống khi tỷ lệ này lớn quá mức cho phép Nhìn chung có năm phương pháp điều khiển lỗi
Giải pháp đầu tiên và dễ thấy nhất là tăng công suất phát, nhưng không phải lúc nào cũng có thể thực hiện được Ví dụ như, đối với một máy điện thoại bỏ túi thì không chấp nhận khối lượng của pin quá lớn
Giải pháp thứ hai, rất hiệu quả trong việc chống lại lỗi chùm gây bởi fading, là sử dụng phân tập (diversity). Có ba kiểu phân tập chính là phân tập không gian, phân tập tần số và phân tập thời gian Cả ba kiểu phân tập này đều đưa thêm độ dư vào trong dữ liệu phát bằng cách truyền gấp đôi: qua hai đường, tại hai tần số hay vào hai thời điểm khác nhau Trong phân tập không gian, sử dụng hai hay nhiều antenna đặt tại những vị trí đủ xa để có một trong các antenna đó thu được tín hiệu tốt nhất, ít bị fading nhất Phân tập tần số sử dụng hai hay nhiều tần số khác nhau để phát cùng một tin Phân tập tần số có thể là trong băng hay ngoài băng tùy vào khoảng cách tần số giữa các sóng mang Trong hệ thống phân tập thời gian, phát cùng một tin nhưng vào hai hay nhiều thời điểm khác nhau
Giải pháp thứ ba là truyền song công, hay còn gọi là kiểm tra echo (echo checking). Ở đây, khi bộ phát phát tin đến bộ thu, tin được phát ngược về bộ phát trên một kênh hồi tiếp riêng Nếu tin phát ngược về khác với tin phát đi thì biết là có lỗi Phương pháp này có khuyết điểm là yêu cầu băng thông gấp đôi so với truyền trên một hướng nên không chấp nhận khi cần tận dụng phổ
Phương pháp thứ tư để đối phó với BER cao là yêu cầu lặp lại tự động ARQ (Automatic Repeat reQuest). Trong hệ thống ARQ, mã phát hiện lỗi (error detecting code) được sử dụng đề bên thu kiểm tra lỗi trong khối số liệu thu và trả lời cho bên phát trên một kênh hồi tiếp
Trang 3Tín hiệu trả lời là chấp nhận ACK (ACKnowledgment) khi số liệu thu đúng và không chấp nhận NAK (Non - AcKnowledgment) khi số liệu thu sai Nếu bên phát nhận NAK, bên phát phải tiến hành truyền lại khối số liệu bị lỗi Có hai kỹ thuật ARQ chính là ARQ dừng và đợi (stop and wait ARQ) và ARQ liên tục (continuous ARQ). Trong hệ thống ARQ dừng và đợi, sau khi phát khối số liệu đi, bên phát dừng lại và chờ nhận trả lời từ bên thu, rồi tuỳ theo trả lời đó là ACK hay NAK mà bên phát phát khối số liệu tiếp theo hay phát lại khối số liệu vừa rồi Nếu thời gian chờ quá thời gian quy định (gọi là time-out), bên phát coi như là khối số liệu vừa phát bị lỗi và vẫn tiến hành phát lại Hạn chế của phương pháp này là thời gian trễ truyền dẫn lớn Trong hệ thống ARQ liên tục, các khối số liệu đều mang số thứ tự - N - và bản tin trả lời ACK/NAK cũng mang số thứ tự N tương ứng Bên phát liên tục phát đi các khối số liệu mà không chờ nhận trả lời từ bên thu Bên thu kiểm tra lỗi các khối số liệu thu và trả lời về cho bên phát bản tin ACK/NAK kèm theo số thứ tự của khối tin tương ứng Khi nào bên phát nhận trả lời NAK từ bên thu, bên phát sẽ phát lại tất cả các khối số liệu kể từ khối số liệu bị lỗi đối với ARQ lùi lại N (go-back-N ARQ), hoặc bên phát sẽ chỉ phát lại khối số liệu
bị lỗi đối với ARQ chọn lọc (selective ARQ). Mặc dù ARQ chọn lọc rất hiệu quả trong sử dụng băng thông nhưng yêu cầu dung lượng bộ nhớ lớn hơn ARQ lùi lại N, đặc biệt trong các kết nối tốc độ cao ARQ phù hợp với các hệ thống thông tin máy tính, vì ở đó có sẵn kênh song công để bên thu có thể phát lại cho bên phát bản tin ACK/NAK Tuy nhiên, trong các đường truyền dài với tốc độ cao, điển hình như thông tin vệ tinh thì rất khó thực hiện ARQ Phương pháp thứ năm để giảm BER là thực hiện mã hóa sửa lỗi không phản hồi FECC (Forward Error Correction Coding) Trong lịch sử, việc chấp nhận sử dụng rộng rãi FECC có trễ hơn so với các phương pháp khác, bởi vì độ phức tạp và giá cả của nó cao hơn Ngày nay, độ phức tạp đã giảm xuống nhờ vào sự gia tăng các chip mã hóa/ giải mã VLSI FECC
lợi dụng sự khác nhau giữa tốc độ truyền dẫn và thông lượng kênh để giảm xác suất lỗi P b Việc giảm xác suất lỗi bị trả giá bằng việc tăng thời gian trễ truyền dẫn, do tăng độ dư cho đủ để mã có thể phát hiện và sửa được lỗi và do mất thời gian kiểm tra khối số liệu thu để sửa lỗi Tuy nhiên, lợi ích của FECC có được thường nhiều hơn khuyết điểm về độì trễ lớn
Mã tuyến tính (Mã nhóm)
Mã không
tuyến tính
Mã chập
Mã hóa điều khiển lỗi
- 107 -
Trang 4- Chương V -
5.1.2 Phân loại mã điều khiển lỗi
Nhìn chung, có thể phân loại mã phát hiện và sửa lỗi (gọi chung là mã hóa kênh - mã hóa
điều khiển lỗi) theo sơ đồ trong hình 5.1
a) Mã khối
Mã khối được đặc trưng bởi hai số nguyên n và k, và một ma trận sinh hay đa thức sinh
Hình 5.2 minh họa một bộ mã hóa mã khối với k bit tin vào và n bit mã hóa ra Từ mã n bit
được tạo ra duy nhất từ k bit tin và (n-k) là số bit kiểm tra dư Tỷ lệ mã (coder rate) là R = k/n, là tiêu chuẩn để đánh giá độ dư của mã Tỷ lệ mã thường từ 1/2 đến 1 Mã hệ thống (systematic code) là mã có mặt các bit tin cùng với các bit dư trong từ mã Trong các tài liệu về mã hóa thì có hai định nghĩa về mã hệ thống Định nghĩa nghiêm ngặt hơn cho rằng mã có tính hệ thống khi k bit tin phải nằm liên tục thành một khối và các bit dư phải nằm liên tục trong một khối khác Định nghĩa ít nghiêm ngặt hơn thì chỉ yêu cầu trong từ mã có mặt các bit tin chứ không cần phải nằm liên tục thành khối
mã hóa
k bit tin
0 và tính chất đóng làm cho việc tính toán đối với mã tuyến tính đặc biệt dễ Hình 5.3 là một
ví dụ đơn giản về mã tuyến tính Nó minh họa cho tính chất đóng của mã Có 4 ký tự nguồn là a, b, c, và d, k = 2, n = 5 Đây là mã (5, 2)
Hình 5.3 Minh họa tính chất đóng của mã khối tuyến tính
Mã vòng (cyclic code) là một lớp con của mã khối tuyến tính không có từ mã gồm toàn số 0
Trang 5Một mã khối tuyến tính được gọi là mã vòng nếu sau một lần dịch vòng một từ mã thì cũng được một từ mã thuộc cùng bộ mã Ví dụ các từ mã sau đây được gọi là mã vòng:
1101000, 0110100, 0011010, 1000110, 0001101, 1010001, 0100011
Mã Golay là một loại mã vòng sửa được sai nhiều lỗi Mã Golay (23, 12) có khả năng sửa được 3 lỗi cho từ mã dài 23 bit Mã này được Golay phát minh năm 1949 và được nhiều chuyên gia quan tâm nghiên cứu tới cấu trúc và cơ chế giải mã Thực tế đang có hai phương pháp giải mã là phương pháp Kasami và giải mã tìm kiếm có hệ thống (systematic search decoding) Mã Golay (23, 12) được sử dụng khá phổ biến trong một số hệ thống thông tin
Mã BCH nhị phân (binary BCH code) là một loại mã vòng được Hocquenghem tìm ra năm
1959, sau đó được Bose và Chaudhuri tìm ra một cách độc lập vào năm 1960 Mã BCH có thể sửa được t lỗi trong từ mã dài n bit, với Ví dụ mã BCH (15, 7) có thể sửa sai tối đa 2 lỗi
1 t 2 d
, mt k n , 1 2 n
2
k n
2 2
n k
Mã chập được Elias đề xuất lần đầu tiên vào năm 1955 Sau đó, Wozencraft đưa ra một thuật toán giải mã tương đối hiệu quả Năm 1963, Massey đưa ra cách giải mã ít hiệu quả hơn nhưng dễ thực hiện Năm 1967, Viterbi đã đưa ra thuật toán giải mã tối ưu được gọi là thuật toán Viterbi Từ đây, mã chập được ứng dụng rộng rãi trong ngành viễn thông
5.1.3 Khả năng phát hiện và sửa lỗi của mã khối
- 109 -
Trang 6- Chương V -
a) Mối quan hệ giữa khoảng cách Hamming và khả năng phát hiện và sửa lỗi
Lý thuyết mã đã chứng minh rằng: khoảng cách Hamming giữa các từ mã trong một bộ mã có liên quan đến khả năng phát hiện sai và sửa sai của bộ mã đó, cụ thể là:
1 s r
trong đó d là khoảng cách Hamming, r là số lỗi phát hiện được, s là số lỗi sửa được, s ≤ r
Ta kiểm tra điều này qua một ví dụ minh họa sau đây:
Giả sử ta có bộ mã đều M M có 8 từ mã như sau:
Gọi 4 từ mã trên là từ mã dùng và 4 từ mã còn lại là từ mã cấm
Trong trường hợp sai 1 lỗi, rõ ràng các từ mã dùng được truyền đi sẽ chuyển thành các từ mã cấm bên thu Cụ thể là B (001) chuyển thành F (101), D (011), A (000); C chuyển thành G(110), A (000), D (011); E chuyển thành A (000), G (110), F (101); H chuyển thành D (011), F (101), G (110) Lúc này có thể dễ dàng phát hiện được lỗi Nếu bên thu nhận được từ mã là A, có thể kết luận là từ mã truyền đi bị lỗi nhưng không thể kết luận được từ mã nào (B,
C hay E) đã truyền đi Nói cách khác, khi số trường hợp sai nhiều hơn số từ mã cấm thì không thể phát hiện được lỗi Trong trường hợp sai 2 lỗi, ta thấy từ mã dùng này sẽ chuyển thành từ mã dùng khác nên không thể phát hiện được lỗi
Từ M, ta lập bộ mã M 2 có khoảng cách Hamming đều là 3 Nếu chọn từ mã B (001) làm từ
mã xuất phát thì bộ mã M 2 bao gồm 2 từ mã sau:
Trong trường hợp sai 1 lỗi, rõ ràng các từ mã dùng được truyền đi sẽ chuyển thành các từ mã cấm bên thu Cụ thể là B (001) chuyển thành F (101), D (011), A (000); G chuyển thành C(010), E (100), H (111) Lúc này có thể dễ dàng phát hiện được lỗi và do số trường hợp sai
Trang 7không trùng nhau và bằng sốú từ mã cấm nên có thể sửa được lỗi Trong trường hợp sai 2 lỗi,
ta thấy từ mã dùng chuyển thành từ mã cấm nhưng trùng với từ mã cấm trong trường hợp sai
1 lỗi chỉ phát hiện được lỗi chứ không sửa được lỗi
Tóm lại, từ ví dụ trên ta có thể kết luận: nếu khoảng cách Hamming là 2 thì có khả năng phát hiện được 1 lỗi, nếu khoảng cách Hamming là 3 thì có khả năng phát hiện và sửa được 1 lỗi và phát hiện được 2 lỗi Điều này hoàn toàn đúng chứng minh trên về mối quan hệ giữa khoảng cách Hamming và khả năng phát hiện và sửa lỗi của mã
Cũng qua ví dụ trên về bộ mã M 2 ta thấy rằng: với số lượng từ mã trong bộ mã là 2 thực sự trong mỗi từ mã chỉ có 1 bit tin Nhưng ở đây chiều dài từ mã là 3 Như vậy trong 3 bit đó có
2 bit dư "Dư" ở đây hiểu theo nghĩa là không mang tin nhưng được thêm vào nhằm mục đích kiểm tra lỗi Phần sau ta sẽ xét tổng quát về mối quan hệ giữa độ dài tổng cộng của từ mã và số bit tin
b) Mối quan hệ giữa độ dài tổng cộng của từ mã và số bit tin
Để tìm ra mối quan hệ giữa độ dài tổng cộng của từ mã và số bit tin, trước hết ta đưa ra khái
niệm vector lỗi e Vector lỗi là vector biểu diễn vị trí các bit lỗi xuất hiện trong từ mã thu, qui ước bit không lỗi được biểu diễn là 0 và bit lỗi được biểu diễn là 1
Ví dụ từ mã phát là 1110010 và từ mã thu là 1100110 Lúc này vector lỗi là e = 0010100 Gọi độ dài tổng cộng của từ mã là: n; suy ra số từ mã tổng cộng là: 2 n
Gọi số bit tin trong từ mã là : k; suy ra số từ mã dùng là: 2 k
Vậy số từ mã cấm là: 2 n
- 2 k Gọi E là số lượng vector lỗi, ta có:
n 3
! n C
k n k
2 2 2
Trong trường hợp sai 1 lỗi, ta có:
n E E
1 =
=
Vậy quan hệ giữa n và k phải thỏa mãn bất đẳng thức sau:
- 111 -
Trang 8- Chương V -
1 n
2 2
n k
+
≤
5.2 Mã khối
5.2.1 Mã kiểm tra chẵn lẻ (parity)
Đây là loại mã khối đơn giản nhất Mã này được dùng phổ biến trong truyền số liệu dạng ASCII Với phương pháp này, mỗi ký tự trước khi truyền đi được thêm vào một bit chẵn lẻ, gọi là bit parity (P) Bit P được tính toán dựa vào ký tự phát sao cho tổng số bit 1 trong ký tự (kể cả bit P) là số chẵn nếu parity là loại chẵn ( even parity) và là số lẻ nếu parity là loại lẻ (odd parity) Dùng mã parity lẻ sẽ tránh được trường hợp truyền từ mã gồm toàn số 0, tuy nhiên, mã parity chẵn lại được dùng phổ biến hơn
Hình 5.4 là một ví dụ minh họa cho mã kiểm tra chẵn lẻ Bit parity chẵn là 1, bit parity lẻ là
0 với ký tự 1001001 Tỷ lệ mã là 7/8, một mức dư rất thấp
Trang 9Khi nhận ký tự, bên thu sẽ thực hiện tính toán bit parity tương tự như bên phát và so sánh Nếu chúng bằng nhau thì kết luận không có lỗi, nếu khác nhau thì kết luận có lỗi
Mạch tính toán bit parity cho cả bên phát và bên thu đơn giản là tập các cổng XOR như trên
hình 5.5
Bây giờ ta xét đến khả năng phát hiện lỗi của mã parity Giả sử dùng P chẵn, các từ mã mang tin là 7 bit từ 0000000 đến 1111111, các từ mã liên tiếp trong bộ mã này sẽ là:
0000000 0
0000001 1
0000010 1
Ta thấy khoảng cách Hamming của bộ mã này là 2 Vậy theo lý thuyết mã, mã này chỉ phát hiện được 1 lỗi Tuy nhiên, thực tế mã này phát hiện được tất cả các lỗi đơn hay các lỗi xuất hiện với số lỗi lẻ, không phát hiện được các lỗi xuất hiện với số lỗi chẵn
5.2.2 Mã kiểm tra tổng khối BCC(Block sum Check Character)
Khi truyền đi một khối ký tự, một ký tự trong khối có thể bị lỗi, và vì vậy coi như khối đó bị lỗi Xác suất khối ký tự bị lỗi gọi là xác suất lỗi khối (block error rate). Khi truyền đi khối ký tự, ta có thể cải thiện khả năng khả năng phát hiện lỗi của mã parity bằng cách không chỉ thêm bit P cho riêng từng ký tự đơn lẻ mà còn thêm tập các bit P tính trên cả một khối hoàn chỉnh
Với phương pháp này, mỗi ký tự trong khối được thêm vào một bit P, gọi là bit parity hàng (row parity), mỗi vị trí của bit trong khối được thêm một bit P gọi là bit parity cột (column parity). Tập các bit parity cột tạo thành ký tự kiểm tra tổng khối BCC
Hình 5.6 trình bày một ví dụ dùng parity chẵn cho hàng và parity lẻ cho cột
B 0 B 1 B 2 B 3 B 4 B 5 B 6 P
1 1 1 1 0 0 1 1
BCC =
Các bit parity cột
Các bit Parity hàng
Nội dung khung
1
Bit P cho BCC
Hình 5.6 Ví dụ kiểm tra tổng modulo-2
- 113 -
Trang 10- Chương V -
Qua ví dụ trên ta thấy mặc dù hai bit lỗi trong một ký tự không được phát hiện nhờ bit parity hàng nhưng sẽ được phát hiện nhờ bit parity cột Mã này không phát hiện được hai bit lỗi trong cùng ký tự xảy ra ở cùng cột vào cùng thời điểm (ví dụ như các bit lỗi xuất hiện ở các
vị trí như đánh dấu trong hình) Tuy nhiên, khả năng này rất ít xảy ra nên mã kiểm tra tổng đã cải thiện được khả năng phát hiện lỗi của mã parity đơn Nếu xảy ra lỗi đơn thì căn cứ vào bit
P hàng và P cột thu sai khác so với P hàng và P cột tính, ta có thể xác định được vị trí bit lỗi,
do đó có thể sửa lỗi
Phương pháp kiểm tra tổng thường được dùng trong trường hợp số liệu truyền đi là một mảng ký tự ASCII
Phương pháp này có một biến thể là sử dụng tổng bù 1 để tính BCC thay cho tổng modulo-2 Trong phương pháp mới này, xem các ký tự trong khối cần truyền như là các số nhị phân không dấu Trước hết, cộng các số này lại dùng thuật toán bù 1, sau đó đảo ngược kết quả lại tạo thành BCC Bên thu tiến hành tính tổng bù 1 của tất cả các ký tự trong khối (kể cả BCC), nếu không có lỗi xuất hiện thì kết quả phải bằng 0 Lưu ý rằng, với thuật toán bù 1, bit nhớ cuối cùng được quay vòng rồi cộng vào tổng đang có cho nên số 0 sẽ được biểu diễn hoặc là toàn số 0 hoặc là toàn số 1
Phương pháp mới này được trình bày qua ví dụ trên hình 5.7 Từ ví dụ ta thấy phương pháp
mới này phát hiện lỗi tốt hơn phương pháp tổng modulo-2
Hình 5.7 Ví dụ kiểm tra tổng bù 1
Mã kiểm tra tổng bù 1 thường được tính toán bằng phần mềm, dùng để kiểm tra lỗi cho các bản tin giao thức qua internet
5.2.3 Mã khối tuyến tính
a) Ví dụ về mã khối tuyến tính
Hình 5.8 minh họa một mạch tạo mã khối tuyến tính (4, 7) gồm 4 bit tin (I1 đến I4) và 3 bit kiểm tra chẵn lẻ (P1 đến P3)
Trang 11Giả sử dùng parity chẵn, mối quan hệ giữa các bit tin và bit kiểm tra là:
3 2 1 3
4 2 1 2
4 3 1 1
I I I P
I I I P
I I I P
Hình 5.8 Mạch tạo mã khối (4, 7)
Ta có thể viết lại quan hệ giữa các bit tin và bit kiểm tra trong ví dụ trên như sau:
4 3
2 1
1
4 3
2 1
1
4 3
2 1
1
xI 0 xI 1 xI 1 xI 1 P
xI 1 xI 0 xI 1 xI 1 P
xI 1 xI 1 xI 0 xI 1 P
0 1 0 : 1 0 1 1
0 0 1 : 1 1 0 1 H
Phần bên trái của đường chấm chấm là các hệ số của các bit tin I1 đến I4, phần bên phải đường chấm chấm là ma trận 3x3 có đường chéo là 1 (ma trận đơn vị)
b) Ma trận sinh (generator matrix)
Ma trận sinh, ký hiệu là G, là một ma trận 4 x 7, được tạo ra bằng cách kết hợp một ma trận đơn vị 4 x 4 với ma trận hoán vị của ma trận bên trái đường chấm chấm của H Trong ví dụ
1 0 1 : 0 1 0 0
1 1 0 : 0 0 1 0
1 1 1 : 0 0 0 1 G
Nhờ ma trận sinh G, ta có thể tính toán được từ mã bằng cách nhân vector hàng m biểu diễn
- 113 -
Trang 12- Chương V - cho từ mã mang tin với G Trong ví dụ trên, dãy mang tin là 1011, từ mã khối tuyến tính (4,7)
được tạo ra là:
0001110 0010101 0100011
c) Bảng syndrome để giải mã sửa lỗi
Syndrome là một từ mã độc lập với từ mã phát và chỉ phụ thuộc vào dãy thu bị lỗi, ký hiệu
vector syndrome là s Bảng syndrome là tập hợp tất cả các syndrome có thể có Gọi c là
vector biểu diễn cho từ mã khối (n, k) Ta có quan hệ:
c G x
Gọi e là vector lỗi và r là từ mã thu, ta có:
e c
Syndrome được tính như sau:
T T
T T
T T
H x e H x e 0 H x e H x c H x ) e c ( H x r
Bảng syndrome được tính sẵn với giả thiết là truyền đi từ mã gồm toàn bit 0 Ví dụ bảng
syndrome trong trường hợp sai 1 lỗi như hình 5.9:
Vector lỗi Syndrome
001 0000001
010 0000010
100 0000100
110 0001000
101 0010000
011 0100000
111 1000000
000 0000000
Hình 5.9 Bảng syndrome hoàn chỉnh cho tất cả các lỗi đơn
Nhìn vào bảng hình 5.9 ta thấy: khi không có lỗi syndrome là 0, khi có lỗi syndrome khác 0