Chương 1: Tổng quan về mã hóa kênh – Tài liệu text
Đại học Công Nghệ – Đại học Quốc gia Hà Nội
được biểu diễn bằng 4, 8 hoặc nhiều hơn nữa các ký hiệu. Với hệ thống dùng mã hóa
kênh, ở phía thu chúng ta không tách các bit thông tin thực tế mà thay vào đó là các ký
hiệu mã hóa để từ các ký hiệu đó chúng ta có thể khôi phục lại các bit thông tin gốc… Có
hai loại mã hóa kênh chính là mã khối (block code) và mã chập (convolutional code).
Mã khối tiến hành trên từng khối bản tin k bit, cho thêm (n – k) bit dư tạo nên từ mã
n bit có tốc độ bit R0 = (n/k)Rs
Rs
: Tốc độ nguồn thông tin.
R0
: Tốc độ dữ liệu kênh.
R = k/n
: Tốc độ mã.
Có nhiều loại mã khối, như:
• Mã tuần hoàn (Cyclic codes) (Mã Hamming là một bộ phận nhỏ của mã tuần
hoàn)
• Mã lặp (Repetition codes)
• Mã chẵn lẻ (Parity codes)
• Mã Reed-Solomon (Reed Solomon codes)
• Mã BCH (BCH code)
• Mã Reed-Muller
Mã Xoắn (Convolutional code) có thể coi là chập giữa dãy lối vào và đáp ứng xung
của bộ mã. Độ dài của đáp ứng xung bằng bộ nhớ của bộ mã. Mộ mã dùng cửa sổ trượt
trên dãy bản tin đến, độ rộng cửa sổ bằng độ dài bộ nhớ. Như vậy khác với mã khối, mã
Xoắn nhận bản tin như dãy liên tục và cho bit mã ra cũng liên tục với tốc độ cao hơn. Mã
Turbo được phát triển dựa trên mã Xoắn, gồm hai mã Xoắn đệ quy hệ thống RSC kết nối
song song, phân biệt nhờ bộ xáo trộn giả ngẫu nhiên và thuật toán giải mã lặp với chất
lượng tiến tới tiệm cận Shannon.
Trong khuôn khổ của luận án, tôi chỉ trình bày về một số mã điển hình là mã
Hamming, mã Convolutional và mã Turbo.
9
Đại học Công Nghệ – Đại học Quốc gia Hà Nội
Chương 2: Mã Hamming
2.1: Giới thiệu chung:
Trong những năm của thập niên kỷ 1940, Hamming làm việc tại Bell Labs trên máy
tính Bell Model V và một máy điện cơ (electromechanical) dùng rơ-le với tốc độ rất
chậm, mấy giây đồng hồ một chu kỳ máy. Nhập liệu được cho vào máy bằng những cái
thẻ đục lỗ (punch cards), và hầu như máy luôn luôn gây lỗi trong khi đọc. Trong những
ngày làm việc trong tuần, những mã đặc biệt được dùng để tìm ra lỗi và mỗi khi tìm
được, nó nhấp nháy đèn báo hiệu, báo cho người điều khiển biết để họ sửa, điều chỉnh
máy lại. Trong thời gian ngoài giờ làm việc hoặc trong những ngày cuối tuần, khi người
điều khiển máy không có mặt, mỗi khi có lỗi xảy ra, máy tính tự động bỏ qua chương
trình đương chạy và chuyển sang công việc khác.
Hamming thường làm việc trong những ngày cuối tuần và ông càng ngày càng trở
nên bực tức mỗi khi ông phải khởi động lại các chương trình ứng dụng từ đầu, do chất
lượng kém, không đáng tin cậy của bộ máy đọc các thẻ đục lỗ. Mấy năm tiếp theo, ông
dồn tâm lực vào việc xây dựng hằng loạt các thuật toán có hiệu quả cao để giải quyết vấn
đề sửa lỗi. Năm 1950, ông đã công bố một phương pháp mà hiện nay được biết là Mã
Hamming.
2.2: Mã Hamming:
2.2.1: Khoảng cách Hamming:
Khoảng cách Hamming được sử dụng trong kỹ thuật viễn thông để tính số lượng
các bit trong một từ nhị phân (binary word) bị đổi ngược, như một hình thức để ước
tính số lỗi xảy ra trong quá trình truyền thông, và vì thế, đôi khi nó còn được gọi là
khoảng cách tín hiệu (signal distance). Việc phân tích trọng số Hamming của các bit
còn được sử dụng trong một số ngành, bao gồm lý thuyết tin học, lý thuyết mã hóa, và
10
Đại học Công Nghệ – Đại học Quốc gia Hà Nội
mật mã học.
Trước tiên ta tìm hiểu về trọng số Hamming: trọng số Hamming của một từ mã là
số số 1 có trong từ mã đó. Ví dụ với từ mã 00111010 có trọng số Hamming là 4.
Khoảng cách Hamming được định nghĩa là các bít khác nhau giữa hai từ mã. Khoảng
cách Hamming giữa hai từ mã được lấy bằng cách dùng toán tử XOR từng bít của hai
từ mã với nhau và khoảng cách Hamming là trọng số của kết quả tìm được trong phép
XOR trên. Ví dụ ta có hai từ mã 0110101 và 1110001 ta có:
0110101
XOR
1110001
—————1000100
Vậy khoảng cách Hamming của 2 từ mã trên là 2.
2.2.2: Thuật toán:
Mã Hamming là một mã sửa lỗi tuyến, mã này có thể phát hiện một bit hoặc hai bit
bị lỗi. Mã Hamming còn có thể sửa các lỗi do một bit bị sai gây ra.
Có thể tóm tắt các bước cho việc sử dụng mã Hamming như sau:
1) Các vị trí trong một khối được bắt đầu đánh số từ 1: Bit 1, 2, 3…
2) Tất cả các bít ở vị trí số mũ của 2 được dùng làm bít chẵn lẻ.
Vd: 2 0, 21, 22, 23,
24…
3) Tất cả các vị trí khác vị trí còn lại sẽ được dùng cho các bit dữ liệu. VD: vị trí thứ
2, 3, 5, 6, 7…
4) Mỗi bit chẵn lẻ tính giá trị chẵn lẻ cho một số bit trong từ mã theo quy tắc như
sau:
• Bít chẵn lẻ ở vị trí số 1 (2 0) sẽ kiểm tra tính chẵn lẻ của các vị trí mà số thứ tự của
vị trí đó trong hệ nhị phân có bít ngoài cùng là 1. Vd: 1 (1), 3 (11), 5 (101), 7 (111), 9
(1001) ..
11
Đại học Công Nghệ – Đại học Quốc gia Hà Nội
• Bít chẵn lẻ ở vị trí số 2 (10) sẽ kiểm tra tính chẵn lẻ của các vị trí mà số thứ tự
của vị trí đó trong hệ nhị phân có bít thứ 2 là 1. Vd: 2 (10), 3 (111), 6 (110), 7 (111), 10
(1010)…
• Bít chẵn lẻ ở vị trí số 4 (100) sẽ kiểm tra tính chẵn lẻ của các vị trí mà số thứ tự
của vị trí đó trong hệ nhị phân có bít thứ 3 là 1. Vd: 4, 5, 6, 7, 12, 13, 14, 15…
• Tương tự với các bít chẵn lẻ ở vị trí cao hơn: 8, 16, 32…
• Tóm lại, mỗi bít chẵn lẻ trong mã Hamming sẽ tính giá trị chẵn lẻ mà tại đó, bit
nhị phân của vị trí AND với các bit vị trí sẽ là một số khác không.
2.2.3: Ví dụ đối với mã ASCII 7 bit:
Mã ASCII 7 bit cần 4 bit dư thừa để thêm vào dữ liệu gốc. Sở dĩ ta chọn là 4 bít vì
24 = 16 sẽ xác định được 16 trường hợp bị lỗi đơn bít (trong dãy ta xét có 11 bit: 7 bit dữ
liệu và 3 bit mã).
Các bít dư thừa được đặt vào vị trí 1, 2, 4 và 8.
11
7
d
10
6
d
9
5
d
8
4
p
7
4
d
6
3
d
5
2
d
4
p
3
3
1
d
2
2
p
1
p
1
Trong đó, bit R được dùng để tính chẵn lẻ các tổ hợp bít sau:
• Bit p1 tính các bit thứ 3, 5, 7, 9, 11
• Bit p2 tính các bit thứ 3, 6, 7, 10, 11
• Bit p3 tính các bit thứ 5, 6, 7
• Bit p4 tính các bit thứ 9, 10, 11
12
Đại học Công Nghệ – Đại học Quốc gia Hà Nội
Hình 2.1: Vòng tròn trong mã Hamminh
Ví dụ, ta có chuỗi bit “1010110” và mã Hamming sử dụng bít chẵn lẻ chẵn thì
p1 = 1, p2 = 0, p3 = 0, p4 = 0
Khi đó, chuỗi dữ liệu truyền đi sẽ là 10100100110
13
Đại học Công Nghệ – Đại học Quốc gia Hà Nội
Hình 2.2: Vòng tròn Hamming
Do mã hamming sử dụng bit chẵn-lẻ-chẵn nên tổng số bít 1 trong 1 vòng tròn là số
chẵn. Giả sử trong quá trình truyền xảy ra lỗi tại bit 11, tại phía thu, thuật toán sẽ phát
hiện ra tổng số bit 1 trong 3 vòng tròn (vòng bên trái và hai vòng trên dưới) là một số lẻ,
trái với quy tắc nên nó sẽ thay đổi giá trị của bít nằm ở vùng giao của 3 vòng tròn này.
Hình 2.3: Bit thứ 11 bị lỗi khiến tổng số bít 1 của 3 vòng tròn bên phải
là một số lẻ
2.2.4: Mô tả bằng thuật toán:
Như ta đã biết, mã Hamming là một mã khối. Và với mọi m > 2, luôn tồn tại mã
Hamming với các thông số sau:
• Chiều dài từ mã: n = 2m-1
14
Đại học Công Nghệ – Đại học Quốc gia Hà Nội
• Chiều dài phần tin: k=2m-m-1
• Chiều dài phần kiểm tra: m=n-k
• Khả năng sửa sai: t=1
• Ma trận kiểm tra H có dạng: H = [Im.Q]
Trong đó Im là mà trận đơn vị m*m và Q là ma trận [2 m-m-1] cột, mỗi cột là vectơ m
chiều có trọng số là 2 hoặc lớn hơn.
Ví dụ, với m=3, ma trận của mã [7,4] được viết dưới dạng
1 0 0 1 0 1 1
H(3,7) = 0 1 0 1 1 1 0
0 0 1 0 1 1 1
Trong thực tế, để việc tạo và giải mã Hamming một cách đơn giản, người ta đổi vị
trí các cột trong ma trận H. Khi đó, các bit kiểm tra xen kẽ với các bit mang tin.
Để việc tạo các mã đơn giản, ta chọn các bit kiểm tra x, y, z ở các vị trí tương ứng 2 i
với i=0, 1, 2… nghĩa là tại các vị trí thứ nhất, thứ hai và thứ tư của các ký hiệu (đối với
khối có 4 bit dữ liệu): t=(x, y, u0 ,z, u1, u2, u3 )
a) Tạo mã:
0 0 1
0 1 0
0 1 1
t.Ht = | x y u0 z u1 u2 u3 |. 1
0 0 =0
1 0 1
1 1 0
1 1 1
z + .1+ .1+ .1=
u2
u3
0
u1
y .1+ 0 .1+z .1+ 2 .1+ 3 .1=
u
u
u
0
x .1+ 0 .1+z .1+ 1 .1+ 3 .1=
u
u
u
0
15
Đại học Công Nghệ – Đại học Quốc gia Hà Nội
z = + +
u1 u2 u3
y = 0 + 2 + 3
u
u
u
x = 0 + 1 + 3
u u
u
Ví dụ: Tin cần phát đi là
U = (u0, u1, u2, u3) = (1 0 1 1)
Ta có:
x = u 0 + u 1 + u3 = 1 + 0 + 1 = 0
y = u 0 + u 2 + u3 = 1 + 1 + 1 = 1
z = u 1 + u2 + u 3 = 0 + 1 + 1 = 0
vậy từ mã phát đi sẽ là : t = (0 1 1 0 0 1 1)
b) Giải mã tại bên thu :
0
0
0
t
s = r. H = |r0 r1 r2 r3 r4 r5 r6|. 1
1
1
1
0
1
1
0
0
1
1
1
0
1
0
1
0
1
= (S0, S1, S2)
s
r
r
0 =r3 +r4 + 5 + 6
s
r
r
1 =r + 2 +r5 + 6
1
=r + + +
s
r2
r4
r5
0
2
Ví dụ: Tín hiệu thu được là
R = (r0, r1, r2, r3, r4, r5, r6) = (0 0 1 0 0 1 1)
Khi đó:
s0=1+0+1+1=1
s1=0+1+1+1=1
16
Đại học Công Nghệ – Đại học Quốc gia Hà Nội
s2=0+1+0+1=0
Ta có S = (1 1 0), đổi sang thập phân thì S = 6, tức là bít thứ 6 (tương ứng với r 1) bị
lỗi, đảo bít này ta thu được chuỗi bít đúng là R = (0 1 1 0 0 1 1).
2.3: Kết luận
Có thể nói, lịch sử phát triển của mã sửa lỗi được bắt đầu bằng sự ra đời của mã
Hamming và định lý Shannon. Việc ra đời mã Hamming là cơ sở cho việc phát triển thêm
nhiều loại mã hóa mới, có độ tin cậy cao hơn sau này. Mã Hamming có tầm quan trọng
cơ bản trong lý thuyết mã hóa và được sử dụng thực tế trong thiết kế máy tính. Ưu điểm
của mã này là đơn giản, số bit kiểm tra ít, ngoài ra, mã này hoạt động tốt trong việc phát
hiện các lỗi đơn bit và một số trường hợp lỗi hai bit. Tuy nhiên, mã Hamming không thể
sửa được bản tin bị lỗi đa bit.
Chương 3: Mã Xoắn
3.1: Giới thiệu chung:
Như ta đã biết, xác suất xảy ra lỗi có thể được giảm bằng cách truyền nhiều bít hơn
số bít cần thiết, và các bít cạnh nhau phải có sự liên quan nào đó với nhau để nếu có lỗi
xảy ra thì sẽ đủ thông tin để xác định ra bít bị lỗi. Đối với mã khối, chúng được coi là các
mã không có sự ghi nhớ, với ý nghĩa là từ mã hoặc các bít dư được thêm vào chỉ là một
hàm của khối bít hiện tại. Trái lại, các mã xoắn hoạt động có sự ghi nhớ. Đối với mã
xoắn, các bit sau khi mã hóa là các hàm của các bit thông tin và các hàm của độ dài giới
hạn (constraint length). Đặc biệt, mỗi bit sau khi mã hóa (tại đầu ra của bộ mã hóa xoắn)
là tổ hợp tuyến tính của một số bit thông tin trước đó.
17
Đại học Công Nghệ – Đại học Quốc gia Hà Nội
Trong mã xoắn, tỉ lệ R = bit thông tin / bit truyền gọi là tỷ lệ mã hóa (code rate), tỷ
lệ này nhỏ hơn 1. Còn số bit thông tin xảy ra mã xoắn là độ dài giới hạn k (contraint
length).
Ví dụ, ta sẽ mã hóa một bản tin sử dụng mã xoắn, với tỷ lệ mã hóa là R = 0.5 thì với
mỗi 1 bit thông tin sẽ có 2 bit được truyền đi và sử dụng độ dài giới hạn k=3. Khi đó, bộ
mã hóa xoắn sẽ gửi ra ngoài 16 bit với mỗi 8 bit thông tin đầu vào, với mỗi 1 cặp bit ra sẽ
phụ thuộc vào bit đầu vào hiện tại và 2 bit trước đó (vì độ dài giới hạn k=3).
Hình3.15: Mã xoắn với tốc độ mã R=0.5 và k=9
Ta có thể thấy là với phương pháp mã hóa này thì mỗi bít thông tin đầu vào sẽ ảnh
hưởng tới 6 bít đầu ra.
3.2: Mã Xoắn:
3.2.1: Ví dụ về mã xoắn:
Để làm rõ hơn phương thức hoạt động của mã xoắn, ta xét một bộ mã xoắn có tốc
độ mã k=0.5.
18
Đại học Công Nghệ – Đại học Quốc gia Hà Nội
Hình 3.2: Sơ đồ khối của mã xoắn
Với k=0.5 thì với mỗi bit đầu vào sẽ có 2 bit đầu ra. Ta có:
z1 = x(n) ⊕ x(n-1) ⊕ x(n-2)
z2 = x(n) ⊕ x(n-2)
Đầu vào được nối với các bộ XOR có thể được viết dưới dạng các vector nhị phân
[1 1 1] và [1 0 1], các vector này được gọi là các vector sinh.
3.2.2: Giải mã bằng sơ đồ trạng thái:
Dưới đây là sơ đồ trạng thái của bộ mã xoắn
19
Source: https://thomaygiat.com
Category : Kỹ Thuật Số
Chuyển vùng quốc tế MobiFone và 4 điều cần biết – MobifoneGo
Muốn chuyển vùng quốc tế đối với thuê bao MobiFone thì có những cách nào? Đừng lo lắng, bài viết này của MobiFoneGo sẽ giúp…
Cách copy dữ liệu từ ổ cứng này sang ổ cứng khác
Bạn đang vướng mắc không biết làm thế nào để hoàn toàn có thể copy dữ liệu từ ổ cứng này sang ổ cứng khác…
Hướng dẫn xử lý dữ liệu từ máy chấm công bằng Excel
Hướng dẫn xử lý dữ liệu từ máy chấm công bằng Excel Xử lý dữ liệu từ máy chấm công là việc làm vô cùng…
Cách nhanh nhất để chuyển đổi từ Android sang iPhone 11 | https://thomaygiat.com
Bạn đã mua cho mình một chiếc iPhone 11 mới lạ vừa ra mắt, hoặc có thể bạn đã vung tiền và có một chiếc…
Giải pháp bảo mật thông tin trong các hệ cơ sở dữ liệu phổ biến hiện nay
Hiện nay, với sự phát triển mạnh mẽ của công nghệ 4.0 trong đó có internet và các thiết bị công nghệ số. Với các…
4 điều bạn cần lưu ý khi sao lưu dữ liệu trên máy tính
08/10/2020những chú ý khi tiến hành sao lưu dữ liệu trên máy tính trong bài viết dưới đây của máy tính An Phát để bạn…