Bao Cao NCKH

46
LỜI NÓI ĐẦU Hàng năm được sự quan tâm của ban giám hiệu, sinh viên trường Đại học Giao thông vận tải có điều kiện thực hiện nghiên cứu khoa học. Năm học 2011-2012 cũng không phải ngoại lệ, nhờ vậy sinh viên khóa 49 chúng em có cơ hội tham gia sân chơi bổ ích này. Được sự giúp đỡ của các thầy cô trong khoa Điện – Điện tử và bộ môn Kỹ thuật viễn thông, nhóm chúng em đăng kí tham gia với mục tiêu học hỏi thêm những kiến thức mới mà chúng em khó có cơ hội tiếp cận trên giảng đường. Những gì chúng em thu được trong hoạt động nghiên cứu lần này sẽ góp phần không nhỏ vào hành trang của chúng em khi bước vào thực tế công việc sau khi tốt nghiệp. Vì vậy, chúng em xin dành trang đầu của báo cáo để gửi lời cảm ơn chân thành tới ban giám hiệu Trường đại học giao thông vận tải, các thầy cô trong Khoa Điện – Điện tử nói chung và các thầy cô trong bộ môn Kỹ thuật viễn thông nói riêng đã mở ra sân chơi này và hỗ trợ chúng em cả về kiến thức, kỹ năng cũng như kinh nghiệm trong hoạt động nghiên cứu khoa học. Đặc biệt, chúng em xin chân thành cảm ơn thầy Lê Minh Tuấn là người đã trực tiếp hướng dẫn chúng em thực hiện đề tài này. Vì thời gian và điều kiện có hạn nên đề tài của chúng em không khỏi những thiếu sót. Vì vậy kính mong quý thầy cô, ban giám khảo cùng toàn thể các bạn tham gia góp ý cho chúng em để nghiên cứu được hoàn hảo hơn. Về phần mình, chúng em cũng sẽ hết sức nỗ lực để hoàn thiện đề tài.

Transcript of Bao Cao NCKH

Page 1: Bao Cao NCKH

LỜI NÓI ĐẦU

Hàng năm được sự quan tâm của ban giám hiệu, sinh viên trường Đại học Giao thông vận tải có điều kiện thực hiện nghiên cứu khoa học. Năm học 2011-2012 cũng không phải ngoại lệ, nhờ vậy sinh viên khóa 49 chúng em có cơ hội tham gia sân chơi bổ ích này. Được sự giúp đỡ của các thầy cô trong khoa Điện – Điện tử và bộ môn Kỹ thuật viễn thông, nhóm chúng em đăng kí tham gia với mục tiêu học hỏi thêm những kiến thức mới mà chúng em khó có cơ hội tiếp cận trên giảng đường. Những gì chúng em thu được trong hoạt động nghiên cứu lần này sẽ góp phần không nhỏ vào hành trang của chúng em khi bước vào thực tế công việc sau khi tốt nghiệp.

Vì vậy, chúng em xin dành trang đầu của báo cáo để gửi lời cảm ơn chân thành tới ban giám hiệu Trường đại học giao thông vận tải, các thầy cô trong Khoa Điện – Điện tử nói chung và các thầy cô trong bộ môn Kỹ thuật viễn thông nói riêng đã mở ra sân chơi này và hỗ trợ chúng em cả về kiến thức, kỹ năng cũng như kinh nghiệm trong hoạt động nghiên cứu khoa học. Đặc biệt, chúng em xin chân thành cảm ơn thầy Lê Minh Tuấn là người đã trực tiếp hướng dẫn chúng em thực hiện đề tài này.

Vì thời gian và điều kiện có hạn nên đề tài của chúng em không khỏi những thiếu sót. Vì vậy kính mong quý thầy cô, ban giám khảo cùng toàn thể các bạn tham gia góp ý cho chúng em để nghiên cứu được hoàn hảo hơn. Về phần mình, chúng em cũng sẽ hết sức nỗ lực để hoàn thiện đề tài.

Page 2: Bao Cao NCKH

MỤC LỤC

PHẦN 1 - TỔNG QUAN VỀ MÃ HÓA 1

1.1. Mã hóa – một biện pháp chống nhiễu trong truyền dẫn số....................................1

1.2. Các loại mã............................................................................................................2

PHẦN 2 - CƠ SỞ TOÁN HỌC CỦA MÃ 3

2.1. Trường...................................................................................................................3

2.1.1. Sơ lược về trường............................................................................................3

2.1.2. Trị riêng của một trường.................................................................................4

2.1.3. Chu kỳ của một phần tử..................................................................................4

2.2. Trường GF(2) và GF(2m).......................................................................................5

2.2.1. Trường GF(2) và đa thức trên trường GF(2)...................................................5

2.2.2. Xây dựng trường GF(2m) từ GF(2)..................................................................6

PHẦN 3 - TỔNG QUAN VỀ MÃ KHỐI TUYẾN TÍNH 8

3.1. Mã khối tuyến tính.................................................................................................8

3.1.1. Ma trận sinh và cách mã hóa...........................................................................8

3.1.2. Khả năng phát hiện và sửa sai.........................................................................9

3.1.3. Cách phát hiện sai của mã khối tuyến tính....................................................10

3.1.4. Cách sửa sai và thuật toán giải mã................................................................11

3.2. Mã vòng...............................................................................................................13

3.2.1. Định nghĩa và các tính chất cơ bản của mã vòng..........................................13

3.2.2. Cách mã hóa của mã vòng.............................................................................14

3.2.3 Mã BCH nhị phân..........................................................................................14

3.2.4 Mã BCH không nhị phân...............................................................................15

PHẦN 4 - MÃ REED – SOLOMON 16

4.1. Đa thức sinh và cách mã hóa...............................................................................16

4.2. Mã Reed – Solomon hiệu quả đối với lỗi chùm..................................................18

Page 3: Bao Cao NCKH

4.3. Giải mã mã Reed – Solomon...............................................................................18

4.3.1.Tính Syndrome...............................................................................................18

4.3.2. Đa thức định vị lỗi σ(X)................................................................................19

4.3.3. Xác định giá trị lỗi.........................................................................................22

4.3.4. Ví dụ..............................................................................................................22

PHẦN 5 – KHỐI PHẦN MỀM THỰC THI MÃ HÓA REED – SOLOMON VÀ CHƯƠNG TRÌNH MÔ PHỎNG 24

5.1. Khối phần mềm thực thi mã hóa Reed – Solomon..............................................24

5.2. Chương trình mô phỏng mã hóa Reed – Solomon..............................................24

5.2.1. Giao diện phần mềm mô phỏng....................................................................25

5.2.2. Sơ đồ khối mô tả hoạt động của chương trình..............................................29

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 30

TÀI LIỆU THAM KHẢO 31

Page 4: Bao Cao NCKH

0

PHẦN 1 - TỔNG QUAN VỀ MÃ HÓA

1.1. Mã hóa – một biện pháp chống nhiễu trong truyền dẫn sốVài thập kỉ gần đây, nhu cầu về những hệ thống truyền dẫn số với độ tin cậy và

hiệu quả cao tăng mạnh do đòi hỏi về những mạng số liệu có quy mô lớn, tốc độ cao cho trao đổi, xử lý và lưu trữ thông tin số phục vụ cho quân sự, chính trị, kinh tế - tài chính và những nhu cầu trao đổi thông tin khác của con người. Vì thế sự kết hợp giữa truyền thông và công nghệ thông tin là bắt buộc để có thể tạo nên những hệ thống này mà mục tiêu chính là kiểm soát được lỗi trong quá trình truyền dẫn, giúp cho phía thu nhận được chính xác thông tin mà phía phát đã phát đi.

Năm 1948, Claude Elwood Shannon đã chứng minh rằng chỉ cần mã hóa thông tin theo cách thích hợp thì khả năng xảy ra lỗi do nhiễu tác động lên kênh truyền có thể được giảm tới mức mong muốn mà không phải đánh đổi bởi tốc độ truyền dẫn hay không gian lưu trữ. Đây là tiền đề cho rất nhiều những nỗ lực sau này nhằm tìm kiếm một phương thức mã hóa cũng như giải mã hiệu quả để kiểm soát lỗi xảy ra trong truyền dẫn trên những môi trường nhiễu cao. Và ngày nay, việc sử dụng mã hóa kiểm soát lỗi đã trở thành một phần tất yếu trong các hệ thống truyền thông và máy tính số.

Hình 1.1 thể hiện sơ đồ khối khái quát một hệ thống truyền dẫn:

Hình 1.1 Sơ đồ khối khái quát một hệ thống truyền dẫn

Ý tưởng của việc mã hóa có thể khái quát lại như sau:

Giả sử chúng ta có nguồn phát là một nguồn nhị phân đối xứng phát đi tín hiệu 0 và 1. Ở đầu nhận ta quy ước cơ chế giải mã là nếu nhận được tín hiệu 0 thì đoán bên phát đã phát đi tín hiệu 0, nếu nhận được tín hiệu 1 thì đoán bên phát đã phát đi tín hiệu 1. Với cơ chế giải mã như thế này, xác suất xảy ra lỗi khá cao.

Page 5: Bao Cao NCKH

1

Có một hướng để làm giảm xác xuất giải mã lỗi: để gửi tín hiệu 0 thì thay vì gửi đi một, chúng ta gửi một chuỗi 3 tín hiệu 0 và tương tự với tín hiệu 1. Ở đầu nhận, ta quy ước cơ chế giải mã là nếu chuỗi nhận có nhiều tín hiệu nào hơn thì giải mã thành tín hiệu đó. Ví dụ nếu chuỗi nhận được là 010 thì giải mã thành 0, nếu nhận được 110 thì giải mã thành 1. Cơ chế này hiển nhiên đã làm giảm xác suất giải mã lỗi nhưng lại nảy sinh vấn đề khác đó là làm giảm hiệu suất truyền thông tin đi 3 lần.

Nếu mã hóa tín hiệu 0 thành một chuỗi 2n + 1 tín hiệu 0 và 2n + 1 tín hiệu 1 mã hóa cho tín hiệu 1 thì xác suất giải mã sai tiến tới 0 khi n tiến tới ∞. Đổi lại, hiệu suất truyền thông tin sẽ giảm đi 2n + 1 lần.

Chúng ta có thể giảm xác suất giải mã xuống gần bằng 0 nhưng không giảm hiệu suất truyền thông tin xuống gần bằng 0 mà chỉ nhỏ hơn một ngưỡng nào đó chấp nhận được. Ý tưởng của phương án này cũng khai thác ý tưởng của phương án phía trên ở chỗ: thay vì gửi đi 0 và 1 – khác biệt ở 1 bit thì chúng ta sẽ mã hóa chúng thành 000 và 111 – khác biệt ở 3 bit làm giảm xác suất giải mã lỗi.

1.2. Các loại mãNgày nay, có 2 loại mã được sử dụng rộng rãi là mã khối và mã chập.

Đối với mã khối, bộ mã hóa sẽ chia nhỏ chuỗi thông tin thành các bản tin có độ dài k bit và được thêm vào n – k bit dư để tạo thành một từ mã có độ dài n bit. n – k bit dư này có được nhờ đưa k bit thông tin qua một thuật toán đặc biệt, giúp cho mã có khả năng phát hiện và sửa lỗi. Vì đầu vào có k bit bản tin nên tương ứng sẽ có 2k từ mã độ dài n bit ở đầu ra bộ mã hóa, tập hợp 2k từ mã này tạo thành một mã khối (n, k).

Hiển nhiên là nếu số lượng bit dư càng lớn thì khả năng phát hiện và sửa lỗi của mã càng lớn nhưng hiệu suất truyền tin của mã càng nhỏ. Để tăng khả năng phát hiện và sửa lỗi mà không làm giảm hiệu suất truyền tin của mã, chúng ta có thể tăng lượng bit dư đồng thời tăng độ dài từ mã.

Bộ mã hóa của mã chập cũng tạo ra từ mã độ dài n với k bit bản tin và n – k bit dư. Tuy nhiên từ mã của mã chập không chỉ phụ thuộc vào k bit bản tin hiện tại mà còn phụ thuộc vào m bản tin trước đó nhờ một bộ nhớ bậc m.

Trong khuôn khổ đề tài nghiên cứu khoa học này, nhóm chúng em xin không đề cập tới mã chập.

Page 6: Bao Cao NCKH

2

PHẦN 2 - CƠ SỞ TOÁN HỌC CỦA MÃ

2.1. Trường

2.1.1. Sơ lược về trườngNhìn chung trường là một tập hợp các phần tử mà trong tập hợp đó chúng ta có

thể cộng, trừ nhân chia mà kết quả vẫn nằm trong tập hợp. Phép cộng và nhân phải có tính giao hoán, kết hợp và phân phối.

Gọi F là một tập hợp mà trên đó tồn tại 2 phép toán nhị phân cộng và nhân. Tập F cùng 2 phép toán cộng và nhân là một trường nếu thỏa mãn điều kiện:

- F là một nhóm giao hoán với phép cộng, phần tử đơn vị đối với phép cộng gọi là phần tử không và kí hiệu là 0.

- Tập hợp các phần tử khác 0 trong F là một nhóm giao hoán với phép nhân. Phần tử đơn vị đối với phép nhân gọi là đơn vị hoặc đơn vị nhân của F và kí hiệu là 1.

- Phép nhân có tính chất phân phối với phép cộng, với mọi 3 phần tử a,b,c ∈ F:a.(b + c) = a.b + a.c

Phép trừ a cho b trong một trường là phép cộng của a với –b. Nếu b ≠ 0, phép chia a cho b là phép nhân của a với b-1.

Một số tính chất cơ bản của trường:

- Với mọi phần tử a trong một trường: a.0 = 0.a =0- Với 2 phần tử a, b ≠ 0 bất kỳ trong một trường: a.b ≠ 0- a.b = 0 và a ≠ 0 b = 0- Với mọi a, b thuộc trường: -(a.b) = (-a).b = a.(-b)- Với a ≠ 0, a.b = a.c => b = c

Tập hợp {0,1} với phép cộng và phép nhân modul 2 được cho trong bảng 2.1 và bảng 2.2 tạo thành một trường có 2 phần tử, thường được gọi là trường nhị phân. Một trường có số phần tử xác định được gọi là trường hữu hạn hoặc trường Galois. Do đó, trường nhị phân còn được kí hiệu là GF(2). Trường nhị phân GF(2) có vai trò quan trọng trong lý thuyết mã hóa mà được sử dụng rộng rãi trong máy tính số và truyền dẫn số (hoặc lưu trữ).

Page 7: Bao Cao NCKH

3

2.1.2. Trị riêng của một trường Xét một trường GF(q). Xét các dãy tổng của các phần tử đơn vị

Vì trường đóng với phép cộng nên kết quả của những tổng này cũng là các phần tử của trường. Vì k có thể nhận vô hạn giá trị mà trường chỉ có q phần tử nên tồn tại hai giá trị k1 và k2 khác nhau (giả sử k1 > k2 ) sao cho:

Từ đây suy ra:

Đến đây chúng ta dẫn ra khái niệm trị riêng của một trường.

Trị riêng của một trường là số nguyên dương nhỏ nhất λ sao cho

2.1.3. Chu kỳ của một phần tử Xét một phần tử a bất kỳ khác 0 của trường GF(q). Xét các luỹ thừa ak của a

với k = 1, 2, 3, … Vì trường đóng với phép nhân nên các ak cũng là các phần tử của trường. Vì k có thể nhận vô hạn giá trị mà trường chỉ có q phần tử nên tồn tại hai giá trị k1 và k2 khác nhau (giả sử k1 > k2 ) sao cho:

Bảng 2.1 Phép cộng modul 2 Bảng 2.2 Phép nhân modul 2

Page 8: Bao Cao NCKH

4

.

Từ đây suy ra:

= 1

Đến đây chúng ta dẫn ra khái niệm chu kỳ của một phần tử của trường.

Chu kỳ của một phần tử a của một trường GF(q) là số nguyên dương nhỏ nhất n sao cho an = 1.

2.2. Trường GF(2) và GF(2m)

2.2.1. Trường GF(2) và đa thức trên trường GF(2)Nhìn chung, chúng ta có thể xây dựng mã với các kí tự từ bất kỳ trường GF(q)

nào, trong đó q là số nguyên tố hoặc lũy thừa của số nguyên tố. Tuy nhiên, mã với kí tự từ trường nhị phân GF(2) hay trường mở rộng của nó GF(2m) được sử dụng rộng rãi trong truyền dẫn số và các hệ thống lưu trữ bởi thông tin trên các hệ thống số thường được mã hóa ở dạng nhị phân.

Trong số học nhị phân, ta dùng phép cộng modul 2 và phép nhân modul 2. Hầu hết đều giống như toán học thông thường chỉ trừ việc ta coi 2 = 1 + 1 = 0. Chú ý rằng 1 + 1 = 0 => 1 = -1.

Một đa thức trên trường GF(2), chẳng hạn kí hiệu là f(X), là đa thức có dạng

f(X) = a0 + a1X + a2X2 + … + anXn

trong đó các hệ số ai ∈ GF(2). GF(2) có 2 phần tử là 0 và 1.

Đa thức trên GF(2) có thể cộng, trừ, nhân, chia theo cách thông thường. Phép cộng và nhân đối với các hệ số là phép cộng và nhân modul 2. Các đa thức trên GF(2) luôn thỏa mãn các tính chất giao hoán, kết hợp và phân phối.

Một đa thức bậc m trên GF(2) được gọi là tối giản nếu nó không thể được phân tích thành tích của các đa thức có bậc nhỏ hơn m và lớn hơn 0.

Ví dụ:

Page 9: Bao Cao NCKH

5

X2 + X không phải đa thức tối giản nhưng X2 + X + 1 là đa thức tối giản

Ngoài ra, đa thức trên trường GF(2) còn có một tính chất rất đáng chú ý. Gọi f(X) là một đa thức trên GF(2), ta có:

f2(X) = (f0 + f1 X + … + fn Xn)2

= [f0 + (f1X + f2X2 + … + fnXn)]2

= + f0(f1X + f2X2 + … + fnXn)

+ f0(f1X + f2X2 + … + fnXn) + (f1X + f2X2 + … + fnXn)2

= + (f1X + f2X2 + … + fnXn)2

Tiếp tục khai triển phương trình trên ta có:

f2(X) = + (f1X)2 + (f2X2)2 + … + (fnXn)2

Do các hệ số của đa thức là 0 hoặc 1 nên = fi. Vì vậy:

f2(X) = f0 + f1X2 + f2(X2)2 + … + fn(X2)n

= f(X2)

Từ phương trình trên, với mọi l ≥ 0:

=

2.2.2. Xây dựng trường GF(2m) từ GF(2) Đa thức nguyên thủy

Cho p(X) là một đa thức tối giản bậc m trên GF(2) và một số nguyên dương n.

Nếu n là số nguyên dương nhỏ nhất đồng thời thỏa mãn 2 điều kiện sau:

n = 2m + 1

Xn + 1 chia hết cho p(X)

Page 10: Bao Cao NCKH

6

thì p(X) được gọi là đa thức nguyên thủy.

Ví dụ:

p(X) = X3 + X + 1

Ta thấy với n = 1, 2,..., 6 thì Xn +1 không chia hết cho p(X) nhưng với n = 23 – 1 = 7 thì:

X7 + 1 = (X3 + X + 1) (X4 + X2 + X + 1) nên p(X) = X3 + X + 1 là một đa thức nguyên thủy.

Xây dựng trường GF(2m) từ đa thức nguyên thủy

Việc xây dựng trường GF(2m) từ một đa thức nguyên thủy bậc m khá đơn giản. Chúng em xin được đưa ra một ví dụ minh họa, việc chứng minh phương pháp này thầy cô và các bạn có thể xem trong tài liệu tham khảo.

Giả sử ta cần xây dựng trường GF(23) từ đa thức p(X) = X3 + X + 1

Cho p(α) = α3 + α + 1 = 0 suy ra:

α3 = α + 1

α4 = α3.α = (α +1)α = α2 + α

α5 = α.α4 = α3 + α2 = α2 + α + 1

α6 = α.α5 = α3 + α2 + α = α + 1 + α2 + α = α2 + 1

α7 = α.α6 = α3 + α = α + 1 + α = 1 = α0

Vậy 8 phần tử của trường GF(23) là {0, α0, α1, α2, α3, α4, α5, α6}

Page 11: Bao Cao NCKH

7

PHẦN 3 - TỔNG QUAN VỀ MÃ KHỐI TUYẾN TÍNH

Như đã nói ở trên, mã khối tuyến tính là một loại mã được dùng phổ biến trong việc chống nhiễu. Gọi là mã tuyến tính vì loại mã này được xây dựng dựa trên lý thuyết của đại số tuyến tính. Ở phần tổng quan này, chúng em xin chỉ xin đề cập tới mã nhị phân. Lớp mã không nhị phân cũng có đặc điểm tương tự chỉ khác một điều là các kí tự mã của mã không nhị phân được lấy từ trường mở rộng của GF(2).

3.1. Mã khối tuyến tính

3.1.1. Ma trận sinh và cách mã hóaNói một cách ngắn gọn nhất, một mã khối có chiều dài n gồm 2k từ mã được gọi

là mã tuyến tính C(n, k) nếu và chỉ nếu 2k từ mã hình thành một không gian véc-tơ con k chiều của không gian véc-tơ n chiều gồm tất cả các véc-tơ n thành phần trên trường GF(2). Do vậy có thể tìm được k từ mã độc lập tuyến tính trong C, chẳng hạn (g0, g1,..., gk-1) sao cho mỗi từ mã trong C là một tổ hợp tuyến tính của k từ mã này:

v = a0g0 + a1g1 +... + ak-1gk-1

với ai ∈ {0, 1} với mọi i = 0, 1,..., k-1.

Đặt k từ mã độc lập tuyến tính này thành những hàng chúng ta có được một ma trận cấp k × n như sau:

với gi = (gi0, gi1, …, gi(n-1)), với i = 0, 1, …, k-1.

Ma trận G gọi là ma trận sinh của bộ mã vì mọi từ mã đều có thể được tạo ra thông qua ma trận này.

Page 12: Bao Cao NCKH

8

Tuy nhiên, nếu theo phương pháp trên sẽ khó cho việc xây dựng bộ mã. Vì vậy, chúng ta xét một khái niệm mới đó là mã tuyến tính hệ thống:

Một mã tuyến tính C(n, k) gọi là mã tuyến tính hệ thống nếu mỗi từ mã có k bit thông tin tách biệt với n – k bit dư.

k bit thông tin n – k bit dưHoặc

n – k bit dư k bit thông tin

Từ đó, ma trận sinh G của bộ mã có dạng như sau:

Có được ma trận sinh, để mã hóa thông tin u = (a0, a1, a2, …, ak-1) ta chỉ cần lấy u nhân với G sẽ được từ mã v(v0, v1, v2, …, vn-1)

3.1.2. Khả năng phát hiện và sửa saiTrọng số Hamming và khoảng cách Hamming

Năm 1950, Richard Wesley Hamming đã đưa ra 2 khái niệm vô cùng quan trọng trong lý thuyết mã hóa là khoảng cách Hamming và trọng số Hamming như sau:

Trọng số Hamming của một chuỗi kí hiệu v = a1a 2…a n trong đó ai ∈ {0, 1, …, m – 1} là số kí hiệu khác 0 của chuỗi, kí hiệu là w(v)

Ví dụ

Trọng số Hamming của 11101là 4

Trọng số Hamming của 00000000 là 0

Khoảng cách Hamming của 2 chuỗi kí hiệu v1, v2 với chiều dài bằng nhau là số vị trí khác nhau của 2 chuỗi, kí hiệu là d(v1, v2)

Page 13: Bao Cao NCKH

9

Ví dụ

Khoảng cách Hamming giữa 1011101 và 1001001 là 2.

Khoảng cách Hamming giữa 2143896 và 2233796 là 3.

Khoảng cách Hamming của bộ mã A với điều kiện A là mã đều là khoảng cách Hamming nhỏ nhất giữa 2 từ mã bất kì thuộc A.

Bổ đề:

d(v1, v2) = w(v1 + v2)

d(v1, v2) + d(v2, v3) ≥ d(v1, v3)

Từ những định nghĩa trên có thể rút ra kết luận sau:

Một bộ mã nhị phân có khoảng cách Hamming d có thể:

- Phát hiện được t bit sai nếu d ≥ t + 1- Sửa được t bit sai nếu d ≥ 2t + 1

Chứng minh:

Gọi vi là từ mã phát, ri là dãy nhận được tương ứng. Để chứng minh ý thứ nhất chúng ta thấy rằng nếu sai tối đa t > 0 bit thì khoảng cách Hamming giữa từ mã phát và tổ hợp nhận sẽ không vượt quá t. Do đó tổ hợp nhận sẽ không thể trùng với bất kỳ từ mã nào vì khoảng cách Hamming giữa hai từ mã bất kỳ là ≥ t + 1. Vì vậy bên nhận có thể phát hiện được sai.

Tương tự trong trường hợp thứ hai chúng ta sẽ có d(vi, ri) ≤ t. Mặt khác, ta có d(vi, vj) ≥ 2t + 1, với vj là một từ mã bất kỳ khác vi nên theo bất đẳng thức tam giác về khoảng cách Hamming chúng ta có d(vj, ri) ≥ t + 1 với mọi từ mã vj ≠ vi. Vì vậy bên nhận có thể giải mã đúng vi thành ri dựa trên sự khác biệt về khoảng cách Hamming này.

3.1.3. Cách phát hiện sai của mã khối tuyến tínhCách đơn giản nhất để phát hiện một từ mã nhận được có bị lỗi hay không là so

trùng nó với các từ mã có thể có của bộ mã. Tuy nhiên, cách làm thủ công này sẽ khiến chúng ta tốn số bước bằng tổng số từ mã của bộ mã và nếu đem ứng dụng trong thực tế

Page 14: Bao Cao NCKH

10

thì chúng ta phải đánh đổi quá nhiều chỉ cho việc kiểm tra lỗi (thời gian, tài nguyên hệ thống). Vì vậy cần tìm một phương pháp khác hiệu quả hơn.

Cho S là một không gian con k chiều của không gian n chiều V. Nếu Sd là

tập hợp tất cả các vec-tơ trong V sao cho: ∀ u ∈ S, v ∈ Sd, u.v = 0 (phép nhân ở đây là phép nhân vô hướng của 2 véc-tơ) thì Sd là một không gian con của V và có số chiều là n – k. Sd gọi là không gian bù trực giao của S và ngược lại.

Dựa trên kết quả này chúng ta suy ra rằng luôn tồn tại ma trận H(n – k) × n với n – k hàng độc lập tuyến tính sao cho G × HT = 0 với HT là ma trận chuyển vị của H. Nói cách khác, các véc-tơ hàng của H đều trực giao với các véc-tơ hàng của G. Từ đây ta có một cách nhận biết từ mã sai như sau:

Nếu v là một từ mã được sinh ra từ ma trận sinh G có ma trận trực giao tương ứng là H thì do v là một tổ hợp tuyến tính của các véc-tơ hàng của G nên

v × HT = 0

Và ngược lại nếu v × HT = 0 thì v phải là một tổ hợp tuyến tính của các véc-tơ hàng của G do đó v là một từ mã. v × HT thường được gọi là syndrome của v và kí hiệu là s(v). Vậy chúng ta có:

v là từ mã khi và chỉ khi s(v) = 0

3.1.4. Cách sửa sai và thuật toán giải mã Véc-tơ lỗi

Là véc-tơ biểu diễn các vị trí lỗi giữa từ mã truyền và tổ hợp nhận, mỗi vị trí lỗi được biểu diễn bằng bit 1, còn các vị trí còn lại sẽ có giá trị 0.

Nếu từ mã được truyền đi là v, véc-tơ lỗi là e và véc-tơ nhận là r thì chúng ta có:

r = v + e

e = r + v

Ví dụ:

Nếu từ mã v = 1011011, véc-tơ lỗi là e = 0010100 có nghĩa là sai ở vị trí số 3 và 5 (tính từ trái, bắt đầu bằng 1) thì véc-tơ nhận sẽ là r = v + e = 1001111. Ngược lại nếu từ mã v =

Page 15: Bao Cao NCKH

11

0110010 còn véc-tơ nhận là r = 0010011 thì véc-tơ lỗi là e = v + r = 0100001 có nghĩa là đã có lỗi xảy ra ở các vị trí số 2 và số 7.

Tập giải mã coset

Chúng ta sẽ xây dựng một ma trận kích trước 2n – k × 2k của mã C(n, k) theo quy tắc như sau:

Hàng đầu tiên gồm 2k từ mã của bộ mã, bắt đầu bằng từ mã v1 = (0, 0, …, 0) Trong số 2n – 2k véc-tơ (r0, r1, r2, …rn-1) còn lại, chọn 1 véc-tơ e2 bất kì, các

phần tử trong hàng thứ 2 của ma trận được xây dựng bằng cách cộng e2 với phần tử ở cột tương ứng.

Tiếp tục chọn 1 véc-tơ e3 bất kì trong số 2n – 2k+1 véc-tơ (r0, r1, r2, …rn-1) còn lại và xây dựng hàng thứ 3 theo quy tắc như trên.

Lặp đi lặp lại các bước trên tới khi toàn bộ 2n tổ hợp n bit được điền vào ma trận.

Và ta được một ma trận có dạng:

Mỗi hàng trong ma trận trên được gọi là một coset. Phần tử đầu tiên trong hàng gọi là coset leader. Các phần tử của một tập coset có cùng một syndrome và các coset khác nhau có syndrome khác nhau.

Chứng minh:

Thật vậy, nếu wi là một phần tử bất kì của coset nào đó thì:

s(v + wi) = (v + wi) × HT = (v × HT) + (wi × HT) = ( v × HT) + 0 = (v × HT) = s(v)

Vì vậy các phần tử của một coset có syndrome như nhau và dĩ nhiên có cùng syndrome với coset leader của tập.

Page 16: Bao Cao NCKH

12

Mặt khác, giả sử u và v thuộc 2 coset khác nhau và s(u) = s(v), suy ra

u × HT = v × HT → (u + v ) × HT = 0 → u + v = wi (wi là một từ mã) → u = v + wi

Tức là u và v cùng thuộc 1 coset (mâu thuẫn).

Rút ra thuật toán giải mã

Bộ giải mã lưu trữ một bảng quy chiếu giữa syndrome và coset leader được xây dựng sẵn (coset leader ở đây là véc-tơ lỗi e)

Với mỗi véc-tơ nhận r, bộ giải mã sẽ tính syndrome s = r × HT

Nếu s = 0 thì véc-tơ nhận chính là từ mã được phát đi Nếu s ≠ 0 thì bộ giải mã sẽ tra bảng để tìm véc-tơ lỗi tương ứng và giải

mã ra từ mã được phát đi là v = r + e

3.2. Mã vòngMã vòng là một lớp con quan trọng của mã khối tuyến tính. Việc mã hóa và tính

syndrome cho mã vòng có thể được thực hiện dễ dàng với các thanh ghi dịch có hồi tiếp. Hơn nữa, do mã vòng kế thừa các nghiên cứu từ đại số tuyến tính nên có thể tìm nhiều phương pháp giải mã.

3.2.1. Định nghĩa và các tính chất cơ bản của mã vòngMột mã tuyến tính C(n, k) được gọi là mã vòng nếu v = v0v1…vn-2vn-1 là một từ

mã thì v = vn-2v0v1…vn-2 cũng là một từ mã.

Mã vòng có một số tính chất cơ bản sau:

- Đa thức mã khác 0 có bậc nhỏ nhất g(X) là duy nhất. Hay nói cách khác không tồn tại hai đa thức mã khác 0, khác nhau và cùng có bậc nhỏ nhất

- Hệ số tự do g0 của g(X) phải bằng 1- Một đa thức v(X) trên trường GF(2) có bậc ≤ n - 1 là đa thức mã nếu và chỉ nếu

nó là một bội số của g(X). Tức là nó có thể viết v(X) = q(X)*g(X). g(X) được gọi là đa thức sinh của mã

- Đa thức sinh của một mã vòng C(n, k) có bậc r = n – k- Đa thức sinh của một mã vòng C(n, k) là một ước số của Xn + 1

Page 17: Bao Cao NCKH

13

3.2.2. Cách mã hóa của mã vòngMã vòng có một phương pháp mã hóa khá đơn giản mà không cần sử dụng ma

trận sinh như sau: gọi u(X) là đa thức tương ứng với bản tin u. Do đó, bậc của u(X) không quá k - 1. Chia Xn – k u(X) cho g(X) ta được:

Xn – k u(X) = q(X) g(X) + r(X) ↔ Xn – k u(X) + r(X) = q(X) g(X)

Vì Xn – k u(X) + r(X) là bội của g(X) nên nó là đa thức mã. Để ý từ mã tương đương với đa thức mã này có k bit sau là k bit bản tin còn n – k bit đầu là các bit dư.

Ví dụ:

Mã vòng C(7, 4) có ma đa thức sinh là g(X) = 1 + X + X3. Từ mã tương ứng với bản tin u(X) = 1 + X2 + X4 là:

X3 (1 + X2 + X4) = X3 + X5 + X7

3.2.3 Mã BCH nhị phânMã BCH (mã Bose, Chaudhuri và Hocquenghem) là một loại mã sửa lỗi vòng

ngẫu nhiên quan trọng, có khả năng sửa được nhiều lỗi và được ứng dụng rất rộng dãi. Trong mã BCH có 2 lớp con là mã BCH nhị phân và mã BCH không nhị phân. Mã BCH nhị phân được Hocquenghem đưa ra vào năm 1959, sau đó được Bose và Chaudhuri tìm ra một cách độc lập vào năm 1960.

Với mọi số nguyên dương m (m ≥ 3) và t (t < 2m -1) luôn tồn tại một mã BCH nhị phân với những đặc tính sau:

Độ dài từ mã: n = 2m – 1

Số lượng các bit kiểm tra (parity): n – k ≤ mt

Khoảng cách tối thiểu: dmin ≥ 2t + 1

Đa thức sinh và cách mã hóa

Mã BCH độ dài từ mã 2m – 1 với khả năng sửa t lỗi có đa thức sinh g(X) là đa thức có bậc nhỏ nhất trên GF(2) có α, α2, α3, …,, α2t là nghiệm. Nếu gọi Фi(X) là đa thức tối thiểu của αi trên trường GF(2) thì g(X) phải là bội chung nhỏ nhất của các đa thức Ф1(X), Ф2(X), …, Ф2t(X). Nếu i là một số chẵn, i có thể được biểu diễn dưới dạng

Page 18: Bao Cao NCKH

14

i = i’ 2L trong đó i’ là một số lẻ và L ≥ 1. Suy ra αi = (αi’ . Vì vậy mà αi và αi’ có

chung đa thức tối thiểu do một tính chất của đa thức trên trường GF(2) đã nêu ở trên

như sau: =

Vậy g(X) = Bội chung nhỏ nhất của { Ф1(X), Ф3(X), …, Ф2t - 1(X)}

Có g(X), việc mã hóa diễn ra như đã nói ở mục 3.2.2.

Thuật toán giải mã

Thuật toán giải mã mã BCH có 4 bước như saua. Tính syndromeb. Xác định đa thức định vị lỗic. Tìm nghiệm cho đa thức định vị lỗid. Xác định giá trị lỗi (sửa lỗi)

3.2.4 Mã BCH không nhị phânNếu p là một số nguyên tố và q là lũy thừa của p, chúng ta sẽ có các mã với kí tự

trong trường GF(q), các mã này gọi là mã q-phân. Các khái niệm và tính chất được triển khai cho mã nhị phân trong các phần trước được áp dụng cho mã q-phân với một chút sửa đổi. Một mã tuyến tính (n, k) với kí tự trong GF(q) là một không gian con k chiều của không gian vectơ của tất cả tổ hợp n bit trên GF(q). Một mã vòng q-phân (n, k) được tạo bởi một đa thức có bậc n – k với hệ số từ GF(q) là một ước số của Xn - 1. Mã hóa và giải mã đối với mã q-phân tương tự như mã nhị phân.

Đối với bất kỳ số nguyên dương s và t, tồn tại một mã BCH q-phân có độ dài n = qS - 1, có khả năng sửa chữa ít hơn t lỗi tổ hợp bất kỳ trong khi chỉ cần không quá 2st số kí tự kiểm tra. Gọi α là một phần tử trong GF(qS). Đa thức sinh g(X) của mã

BCH q-phân sửa chữa t lỗi là đa thức có bậc thấp nhất với hệ số từ GF(q) mà α, α2,..., α2t là nghiệm. Gọi Φi(X) là đa thức tối giản của αi:

g(X) = LCM{Φ1(X), Φ2(X), …, Φ2t(X)}

Bậc của mỗi đa thức tối giản nhỏ hơn s. g(X) có bậc lớn nhất là 2st, do đó số kí tự kiểm tra của mã tạo ra bởi g(X) không quá 2st.

Page 19: Bao Cao NCKH

15

PHẦN 4 - MÃ REED – SOLOMON

Mã Reed – Solomon được tìm ra bởi Irving S. Reed và Gustave Solomon, sau này là nhân viên của phòng thí nghiệm MIT Lincoln. Năm 1960, Irving S. Reed và Gustave Solomon xuất bản một bài báo trong nhật báo Society for Industrial and Applied Mathematics. Bài viết này nói về một họ mã sửa lỗi mới mà sau này được gọi là mã Reed – Solomon (RS). Khi bài báo được viết, một thuật toán giải mã hiệu quả vẫn chưa được tìm ra. Mãi đến năm 1969, Elwyn Berlekamp và James Massey đã giới thiệu một thuật toán lặp để giải mã mã RS mà sau này được biết đến với tên thuật toán Berlakamp – Massey.

4.1. Đa thức sinh và cách mã hóaMột mã Reed Solomon (RS) có khả năng sửa t lỗi và có các kí tự mã được lấy

từ trường GF(q) có các đặc tính sau:

Độ dài từ mã: n = q – 1

Số lượng các bit kiểm tra (parity): n – k ≤ 2t

Khoảng cách tối thiểu: dmin ≥ 2t + 1

Đa thức sinh của mã RS(n, k) có bậc n – k = 2t tức là bằng với số kí tự parity trong từ mã. Vì đa thức sinh g(X) có bậc 2t nên phải có 2t lũy thừa liên tiếp của α là nghiệm của g(X) đó là α, α2, α3, …, α2t nên ta có:

g(X) = (X + α) (X + α2) (X + α3) … (X + α2t)

Khai triển ra và sắp xếp các hệ số theo bậc của X:

g(X) = g0 + g1 X + g2 X2 + … + g2t - 1 X2t - 1 + X2t

Việc xác định nghiệm cho đa thức sinh khá đơn giản, ta chỉ cần xây dựng trường GF(2m) và chọn 2t phần tử từ αi tới αi + 2t – 1 là nghiệm của g(X). Giá trị của i là tùy ý và không ảnh hưởng tới tính chất của mã.

Page 20: Bao Cao NCKH

16

Có được đa thức sinh, thuật toán mã hóa với đầu vào là đa thức bản tin u(X), đầu ra là đa thức mã v(X) diễn ra hết sức đơn giản theo 3 bước sau:

1. Nhân u(X) với Xn – k

2. Chia u(X) Xn – k cho đa thức sinh g(X), lấy phần dư b(X)3. v(X) = b(X) + u(X)Xn – k

Xét ví dụ sau để thấy rõ hơn:

Xây dựng mã RS(7, 3) có khả năng sửa 2 lỗi và mã hóa bản tin u= (α1, α3, α5)

Trước hết ta nhận thấy mã RS(7, 3) có từ mã có các tính chất sau:

- Độ dài từ mã là : n = 7 = 23 – 1- Số kí tự parity là : n – k = 2t = 4

Do đó, các kí tự mã là phần tử của trường GF(23). Việc cần làm đầu tiên là xây dựng trường GF(23).Sau khi xây dựng xong trường GF(23) chúng ta sẽ đi xác định đa thức sinh của mã. Theo quy tắc nêu ở trên ta có:

g(X) = (X + α) (X + α2) (X + α3) (X + α4)

Sau khi khai triển g(X) = α3 + α1 X + α0 X2 + α3 X3 + X4

Bước 1 trong thuật toán mã hóa:

u(X) Xn – k = (α1 + α3 X + α5X2) X4 = α1 X4 + α3 X5 + α5X6 (*)

Bước 2 trong thuật toán mã hóa:

Chia đa thức (*) cho g(X) ta được phần dư là b(X) = α0 + α2X + α4X2 + α6X3

Bước 3 trong thuật toán mã hóa:

v(X) = b(X) + u(X)Xn – k = α0 + α2X + α4X2 + α6X3 + α1 X4 + α3 X5 + α5X6

Vậy từ mã cần tìm là v = (α0, α2, α4, α6, α1, α3, α5)

Page 21: Bao Cao NCKH

17

4.2. Mã Reed – Solomon hiệu quả đối với lỗi chùmKhi một từ mã được truyền trên kênh truyền qua một vùng chịu ảnh hưởng của nhiễu, nó có thể bị nhiễu làm thay đổi một cách ngẫu nhiên. Sự thay đổi này có thể gây nên 2 loại lỗi khác nhau đó là lỗi ngẫu nhiên và lỗi chùm. Lỗi ngẫu nhiên có thể hiểu là các bit lỗi nằm rải rác trong từ mã còn lỗi chùm là các bit lỗi nằm liên tiếp nhau

Vậy tại sao mã Reed – Solomon lại hiệu quả đối với lỗi chùm?

Xét mã RS(255, 247) với mỗi kí tự mã được biểu diễn bởi 8 bit. Vì n – k = 8 nên mã

này có thể sửa được tối đa t = = 4 lỗi trên mỗi từ mã 255 kí tự.

Giả sử nhiễu tác động lên kênh truyền gây ra lỗi chùm 25 bit liên tiếp nhau trên một từ mã như hình 4.1 dưới đây:

Kí tự 1 Kí tự 2 Kí tự 3 Kí tự 4 Kí tự 5 Kí tự 6

Hình 4.1 Minh họa lỗi chùm

Với 25 bit lỗi như trên, chúng ta có tất cả 4 kí tự mã bị lỗi. Mã RS(255, 247) có khả năng sửa 4 lỗi bất kể loại lỗi đó là lỗi ngẫu hiên hay lỗi chùm. Bây giờ giả sử 25 bit lỗi này nằm rải rác trên 25 kí tự mã, tức là chúng ta có 25 kí tự lỗi, vượt quá khả năng sửa lỗi của mã. Đó là nguyên nhân tại sao mã Reed – Solomon hiệu quả đối với lỗi chùm.

4.3. Giải mã mã Reed – Solomon

4.3.1.Tính SyndromeSyndrome là kết quả của việc kiểm tra thực hiện trên r để xác định xem r có là

một phần tử hợp lệ của tập hợp từ mã hay không (r là đa thức nhận được ở phía thu). Nếu r là một từ mã, syndrome S có giá trị 0 và ngược lại, nếu S ≠ 0 cho thấy có lỗi xảy ra.

Syndrome S là một mảng n – k phần tử, kí hiệu {S i} (i = 1,..., n – k), giá trị của nó có thể được tính bởi đa thức r(X) nhận được ở phía thu.

Có thể thấy rằng mỗi đa thức mã hợp lệ v(X) là một bội số của đa thức sinh g(X). Vì vậy, nghiệm của g(X) cũng phải là nghiệm của v(X). Vì r(X) = v(X) + e(X)

25 bit lỗi chùm

Page 22: Bao Cao NCKH

18

nên để r(X) cũng là một từ mã thì nó phải là bội của g(X). Ta có thể tính syndrome theo biểu thức sau và nhận ra rằng bất kỳ lỗi nào cũng sẽ dẫn việc syndrome có giá trị khác 0:

4.3.2. Đa thức định vị lỗi σ(X)Giả sử có ν lỗi trong từ mã tại vị trí Xj1, Xj2,..., Xjv. Các đa thức lỗi e(X) có thể

được viết như sau:

e(X) = ej1 Xj1 + ej2 Xj2 +…+ ejv Xjv

Chỉ số 1, 2,... v xem như lỗi đầu tiên, thứ hai,...,thứ v và chỉ số j xem như vị trí lỗi. Để sửa từ mã bị hỏng, mỗi giá trị lỗi ejl và vị trí lỗi Xjl, với l = 1, 2,..., ν phải được xác định. Ta định nghĩa số vị trí lỗi βl = αj1. Chúng ta có n – k = 2t kí tự syndrome bằng cách thay thế αi vào đa thức nhận r(X) với i = 1, 2,... 2t:

Có 2t ẩn (t giá trị lỗi và t vị trí và 2t phương trình. Tuy nhiên, 2t phương trình không thể giải theo cách thông thường. Một đa thức định vị lỗi σ(X) được định nghĩa như sau:

σ(X) = (1 + β1 X) (1 + β2 X)... (1 + βv X)

= 1 + σ1 X + σ2 X2 + … + σv Xv

Hệ số của σ(X) và số vị trí lỗi có quan hệ với nhau theo hệ phương trình sau:

Page 23: Bao Cao NCKH

19

Từ hai hệ phương trình (4.1) và (4.2) ta thấy các hệ số của đa thức định vị lỗi σ(X) cũng có quan hệ với các phần tử của syndrome

Lưu ý rằng các hệ số của σ(X) là chưa biết và chúng ta cần xác định chúng.

Năm 1967, Elwyn Ralph Berlekamp đã đưa ra một thuật toán lặp giúp xác định các hệ số của σ(X) như sau:

Bước đầu tiên là xác định 1 đa thức σ(1)(X) có bậc nhỏ nhất mà các hệ số của nó thỏa mãn phương trình đầu tiên trong hệ (4.3)

Tiếp theo là kiểm tra các hệ số của σ(1)(X) có thỏa mãn phương trình thứ 2 của hệ (4.3) hay không.

Nếu thỏa mãn, ta đặt σ(2)(X) = σ(1)(X) Nếu không thỏa mãn, ta cộng thêm một số hạng nào đó vào σ(1)(X) để tạo

thành σ(2)(X) sao cho σ(2)(X) thỏa mãn cả 2 phương trình đầu của hệ (4.3) Lặp lại bước trên, ta kiểm tra các hệ số của σ(2)(X) có thỏa mãn phương trình thứ

3 của hệ (4.3) hay không. Nếu thỏa mãn, ta đặt σ(3)(X) = σ(2)(X) Nếu không thỏa mãn, ta cộng thêm một số hạng nào đó vào σ(2)(X) để tạo

thành σ(3)(X) sao cho σ(3)(X) thỏa mãn cả 3 phương trình đầu của hệ (4.3)

Cứ làm như vậy cho tới khi ta thu được đa thức σ(2t)(X) và σ(2t)(X) chính là đa thức định vị lỗi. Sơ đồ khối của thuật toán trên được mô tả như hình 4.2, trong đó:

n và k là biến lặp

L là bậc của đa thức σ(X) tại bước đang xét

Page 24: Bao Cao NCKH

20

D(z) đa thức định vị lỗi

d là biến kiểm tra điều kiện các hệ số của σ(X) ở bước hiện tại có thỏa mãn phương trình trong hệ (4.3) hay không

Page 25: Bao Cao NCKH

21

Hình 4.2 Sơ đồ khối thuật toán Berlekamp

Page 26: Bao Cao NCKH

22

4.3.3. Xác định giá trị lỗiKhi đã có đa thức định vị lỗi σ(X), ta có thể xác định giá trị lỗi. Gọi

Z(X) = 1 + (S1 + σ1)X + (S2 + σ1 S1 + σ2)X2 +…+ (Sv + σ1 Sv – 1 + σ2 Sv – 2 +…+ σv)Xv

Khi đó, giá trị lỗi tại vị trí βl = αji được tính theo công thức:

4.3.4. Ví dụXét mã RS sửa 3 lỗi với kí tự trong trường GF(24). Đa thức sinh của mã là:

g(X) = (X + α) (X + α2) (X + α3) (X + α4) (X + α5) (X + α6)

= α6 + α9X + α6X2 + α4X3 + α14X4 + α10X5 + X6

Gọi vec-tơ 0 là véc-tơ mã được truyền và r = (0 0 0 α7 0 0 α3 0 0 0 0 0 α4 0 0) là véc-tơ nhận. Vậy, r(X) = α7X3 + α3X6+ α4X12

Bước 1: Tính syndrome

S1 = r(α) = α10 + α9 + α = α12

S2 = r(α2) = α13 + 1 + α13 = 1

S3 = r(α3) = α + α7 + α10 = α14

S4 = r(α4) = α4 + α12 + α7 = α10

S5 = r(α5) = α7 + α3 + α4 = 0

S6 = r(α6) = α10 + α9 + α = α12

Bước 2: Tìm đa thức định vị lỗi theo thuật toán Berlekamp đã trình bày ở trên, chúng ta được bảng 4.1

Page 27: Bao Cao NCKH

23

Bảng 4.1 Kết quả thực hiện thuật toán Berlekamp

Như vậy, σ(X) = 1 + α7X + α4X2 + α6X3

Bước 3: Thay 1, α, α2, …, α14 vào σ(X), ta thấy rằng α3, α9 và α12 là nghiệm của σ(X), nghịch đảo của chúng là α12, α6 và α3 là số vị trí lỗi của e(X). Như vậy, lỗi được phát hiện ở các vị trí X3, X6 và X12.

Bước 4: Ta có:

Z(X) = 1 + α2X + X2 + α6X3

Suy ra giá trị lỗi tại các vị trí X3, X6 và X12 là:

= = =

= = =

Page 28: Bao Cao NCKH

24

= = =

Vậy: e(X) = α7X3 + α3X6 + α4X12

Ta thấy r(X) và e(X) giống nhau nên v(X) = r(X) + e(X) = 0, nói cách khác, từ mã được phát đi là r = (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)

PHẦN 5 – KHỐI PHẦN MỀM THỰC THI MÃ HÓA REED – SOLOMON VÀ CHƯƠNG TRÌNH MÔ PHỎNG

5.1. Khối phần mềm thực thi mã hóa Reed – SolomonDựa vào những kết quả của hoạt động nghiên cứu đã trình bày ở trên, nhóm chúng em dưới sự hướng dẫn của thầy Lê Minh Tuấn đã xây dựng thành công khối phần mềm thực thi mã hóa Reed – Solomon.

Khối phần mềm này bao gồm 4 hàm chức năng sau:

Hàm sinh trường GF(2m) Hàm sinh đa thức g(X) từ đa thức nguyên thủy Hàm mã hóa Hàm giải mã

Ngôn ngữ lập trình để xây dựng khối phần mềm trên là Visual Basic.NET

5.2. Chương trình mô phỏng mã hóa Reed – Solomon Chương trình có các tính năng như sau:

Cho phép người sử dụng lựa chọn đặc tính của mã RS thông qua các tham số độ dài từ mã, số lỗi có thể sửa, kích thước một kí tự mã tính theo bit.

Cho phép người sử dụng nhập vào một bản tin ở dạng văn bản ở phía phát rồi gửi tới phía thu thông qua kênh truyền.

Trên kênh truyền này cho phép người sử dụng nhập lỗi tác động lên từ mã được truyền hoặc tự sinh lỗi ngẫu nhiên

Page 29: Bao Cao NCKH

25

Phần mềm có giao diện đơn giản và hiển thị trực quan giúp người sử dụng có thể dễ dàng nắm bắt các bước cơ bản để mã hóa và giải mã mã RS.

Page 30: Bao Cao NCKH

26

5.2.1. Giao diện phần mềm mô phỏng

Page 31: Bao Cao NCKH

27

Page 32: Bao Cao NCKH

28

Page 33: Bao Cao NCKH

29

Page 34: Bao Cao NCKH

30

5.2.2. Sơ đồ khối mô tả hoạt động của phần mềm

Page 35: Bao Cao NCKH

31

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI

Sau một thời gian nghiên cứu dưới sự chỉ dẫn của thầy Lê Minh Tuấn, nhóm chúng em đã hiểu được tầm quan trọng của việc mã hóa trong truyền dẫn cũng như có những kiến thức nhất định về mã khối tuyến tính, đặc biệt là về mã Reed – Solomon, một loại mã có khả năng sửa lỗi mạnh.

Nhìn chung một mã Reed – Solomon thường được kí hiệu là RS(n, k) với các kí tự m bit, trong đó n là số kí tự trong một từ mã và k là số kí tự dữ liệu. Bộ mã hoá lấy k kí tự dữ liệu (mỗi kí tự có kích thước m bit) rồi thêm vào n – k kí tự kiểm tra để tạo thành một từ mã n kí tự. Số lỗi tối đa trong một từ mã mà mã RS(n, k) có thể đảm bảo sửa

được là t = , thông thường n = 2m – 1. Nếu n nhỏ hơn số này thì mã được gọi là mã

rút gọn. Một mã Reed – Solomon được đặc trưng bởi hai đa thức: đa thức nguyên thủy xác định trường Galois mà các kí tự mã được lấy từ trường đó và đa thức sinh định nghĩa các kí tự kiểm tra được sinh ra như thế nào. Mã Reed – Solomon đặc biệt hiệu quả để đối phó lại hiện tượng lỗi chùm (các bit lỗi liên tiếp nhau trong một từ mã).

Với khối phần mềm thực thi mã hóa đã xây dựng được, chúng em có thể dễ dàng chuyển đổi qua các nền tảng khác nhau như nhúng vào các vi điều khiển trong các thiết bị như modem xDSL, điện thoại di động hay các thiết bị lưu trữ hoặc xây dựng các chương trình tiện ích mã hóa thông tin trên các hệ điều hành Windows, Linux…

Page 36: Bao Cao NCKH

32

TÀI LIỆU THAM KHẢO

Tiếng Việt

1. Hồ Văn Quân, Bài giảng lý thuyết thông tin, Khoa CNTT Đại học Bách khoa Tp.HCM

Tiếng Anh

2. Peter Sweeney (2002), Error Control Coding: From theory to practice, John Wiley & Sons, Inc.,

3. Shu Lin & Daniel J. Costello, Jr (1983), Error Control Coding: Fundamentals And Applications, PRENTICE-HALL, INC.