Professional Documents
Culture Documents
rạc)
Trong kỹ thuật truyền tin, người ta có thể làm giảm sai số khi nhận tin bằng cách
truyền lặp lại 1 bit với số lẻ lần.
Ví dụ: truyền lặp lại 3 cho 1 bit cần truyền (xác suất nhiễu 1 bit bằng 1/4).
Khi nhận 3 bit liền nhau ở cuối kênh được xem như là 1 bit. Giá trị của bit này
được hiểu là 0 (hay 1) nếu bit 0 (bit 1) có số lần xuất hiện nhiều hơn trong dãy 3
bit nhận được liền nhau. Ta cần chứng minh với phương pháp truyền này thì xác
suất truyền sai thật sự < 1/4 (xác suất nhiễu cho trước của kênh truyền).
Sơ đồ truyền tin:
Bit truyền Truyền lặp 3 lần Nhận 3 bit Giải mã Xác suất
0 000 000 0 27/64
000 001 0 9/64
000 010 0 9/64
000 100 0 9/64
000 101 1 3/64
000 011 1 3/64
000 110 1 3/64
000 111 1 1/64
1 111 000 0 1/64
111 001 0 3/64
111 010 0 3/64
111 100 0 3/64
111 011 1 9/64
111 110 1 9/64
Giả sử Xi xác định giá trị đúng hay sai của bit thứ i nhận được ở cuối kênh
truyền với Xi =1 nếu bit thứ i nhận được là đúng và Xi = 0 nếu bit thứ i nhận
được là sai. Theo giả thiết ban đầu của kênh truyền thì phân phối xác suất của
Xi có dạng Bernoulli b(1/4):
Xi 1 0
P 3/4 1/4
Gọi Y ={X1 + X2 + X3} là tổng số bit nhận sai sau 3 lần truyền lặp cho 1 bit.
Trong trường hợp này Y tuân theo phân phối Nhị thức B(p,n), với p=1/4 (xác
suất truyền sai một bit) và q =3/4 (xác suất truyền đúng 1 bit): Y ~ B(i,n)
Hay:
p(Y = i) = Ci piqn–i vớ i Ci = n!
n n i!(n–i)!
Ví dụ: X = {x0, x1} với xác suất P(x0) = 0,99; P(x1) = 0,01
I(X) = -0,99log20,99 – 0,01log20,01 = 0,081 [bit/ký hiệu]
Trong khi đó lượng tin của x1 khá lớn: I(x1) = -log20,01 = 6,5 [bit/ký hiệu]
Lượng tin tương hỗ trung bình:
p(x,
I(X, Y) = — Σ p(x, y)log
y) (3.8)
p(x)
XY
Lượng tin riêng trung bình có điều kiện:
n
Trước hết, ta cần tìm hiểu một ví dụ về khái niệm độ đo của một lượng tin
dựa vào các sự kiện hay các phân phối xác suất ngẫu nhiên như sau:
Xét 2 biến ngẫu nhiên X và Y trong đó X={1, 2, 3, 4, 5} có phân phối đều hay
p(X=i) = 1/5 và Y={1, 2} cũng có phân phối đều hay p(Y=i) = 1/2.
Bản thân X và Y đều mang một lượng tin và thông tin về X và Y chưa biết
do chúng là ngẫu nhiên. Do đó, X hay Y đều có một lượng tin không chắc chắn
và lượng tin chắc chắn, tổng của 2 lượng tin này là không đổi và thực tế nó bằng
bao nhiêu thì ta chưa thể biết. Lượng tin không chắc chắn của X (hay Y) được
gọi là Entropy.
Tuy nhiên, nếu X và Y có tương quan nhau thì X cũng có một phần lượng tin
không chắc chắn thông qua lượng tin đã biết của Y (hay thông tin về Y đã được
biết). Trong trường hợp này, một phần lượng tin không chắc chắn của thông
qua lượng tin đã biết của Y được gọi là Entropy có điều kiện.
Nhận xét về độ đo lượng tin
Rõ ràng, ta cần phải xây dựng một đại lượng toán học rất cụ thể để có thể đo
được lượng tin chưa biết từ một biến ngẫu nhiên. Một cách trực quan, lượng tin
đó phải thể hiện được các vấn đề sau:
Một sự kiện có xác suất càng nhỏ thì sự kiện đó ít xảy ra, cũng có nghĩa là tính
không chắc chắn càng lớn. Nếu đo lượng tin của nó thì nó cho một lượng tin
không biết càng lớn.
Một tập hợp các sự kiện ngẫu nhiên (hay Biến ngẫu nhiên) càng nhiều sự kiện
có phân phối càng đều thì tính không chắc chắn càng lớn. Nếu đo lượng tin của
nó thì sẽ được lượng tin không biết càng lớn. Hay lượng tin chắc chắn càng nhỏ.
Một phân phối xác suất càng lệch nhiều (có xác suất rất nhỏ và rất lớn) thì tính
không chắc chắn càng ít và do đó sẽ có một lượng tin chưa biết càng nhỏ so với
phân phối xác suất đều hay lượng tin chắc chắn của nó càng cao.
Vậy Entropy là một đại lượng toán học dùng để đo lượng tin không chắc (hay
lượng ngẫu nhiên) của một sự kiện hay của phân phối ngẫu nhiên cho trước
(uncertainty measure).
n¯ = Σ (3.18)
p(xi )ni
i=1
+ p(xi): xác suất xuất hiện tin xi của nguồn X được mã hóa.
+ ni : độ dài từ mã tương ứng với tin xi.
+ N: Tổng số từ mã tương ứng với tổng số các tin của xi
Tổng hợp các tổ hợp mã có thể có được: N0=2n với m=2, nếu:
+ N<N0 ta gọi là mã vơi.
+ N>N0 ta gọi là mã đầy.
ª Điều kiện thiết lập mã hiệu:
Điều kiện chung cho các loại mã là quy luật đảm bảo sự phân tách các tổ
hợp mã.
Điều kiện riêng cho các loại mã:
+ Đối với mã thống kê tối ưu: độ dài trung bình tối thiểu của mã.
+ Đối với mã sửa sai: khả năng phát hiện và sửa sai cao.
Ví dụ: Xét biến ngẫu nhiên X={x1, x2, x3, x4} có bảng mã W={w1=0,
w2=1, w3=01, w4=10}.
Giả sử thông báo nguồn có nội dung: x1x2x3x4x3x2x1. Khi đó dãy mã tương
ứng viết từ W có dạng: 0101100110.
Nếu giải mã tuần tự từ trái qua phải ta nhận kết quả: x1x2x1x2x2x1x1x2x2x1.
Nhưng nếu bằng phương pháp khác ta có thể nhận được kết quả: x 3x3x4x3x4 và
nhiều thông báo khác nữa.
Nhận xét: Bảng mã giải mã không tách được là bảng mã mà trong đó tồn tại
ít nhất một từ mã này là mã khóa của một hay nhiều từ mã khác trong bộ mã
(ví dụ từ mã w1=0 hay w2=1 là mã khóa của w3).
Ví dụ: Xét biến ngẫu nhiên X = {x1, x2} có bảng mã tương ứng W = {w1 = 0, w2
= 01}.
Phương pháp giải mã được sử dụng như sau: chỉ giải mã khi nào đã nhận
Sử dụng phương pháp giải mã trên ta nhận được duy nhất dãy thông báo gốc:
x1x2x1x1x1x2x2x1x2.
Có thể chi tiết hóa các bước giải mã dãy từ mã trên như sau:
Kết luận: Bảng mã tách được là bảng mã mà trong đó không tồn lại từ mã này
là mã khóa từ mã khác, tuy nhiên vẫn có thể tồn tại từ mã này là tiền tố (phần
đầu) của từ mã kia.
Tin a1 a2 a3 a4 a5
Từ mã 00 01 100 1010 1011
aK: trị riêng của các ký hiệu thứ k kể từ trái sang phải với nhị phân aK= 0
hay 1;
k: số thứ tự của ký hiệu trong từ mã.
m: là cơ số của mã (nhị phân m=2).
Ví dụ: trong số từ mã nhị phân có 4 ký hiệu: 1011
b 1 20 0 21 1 22 1 23 13
Mỗi từ mã sẽ hoàn toàn xác định khi ta xác định được cặp (n,b) của nó. Như vậy
mỗi từ mã được biểu diễn 1 cặp tọa độ (n,b) duy nhất.
Đồ hình mã:
Cho phép trình bày gọn hơn các bảng mã, đồng thời nó cho ta thấy rõ các tín chất
quan trọng của mã hiệu một cách trực quan hơn.
Cây mã với bộ mã: 00, 01, 100, 1010, 1011.
0 1
1 2
0 1 0
3
a2(01)
a1(00) 1
0
a4(1010) a5(1011)
Σ 2–jG(j) ≤ 1 (m = 2) (3.19)
j=1
Mã hệ thống có tính prefix được xây dựng từ một mã prefix nào đó bằng
cách lấy một số tổ hợp của mã prefix gốc làm tổ hợp sơ đẳng và các tổ
hợp còn lại làm tổ hợp cuối. Ghép các tổ hợp sơ đẳng với nhau và nối một
trong các tổ hợp cuối vào thành tổ hợp mã mới gọi là mã hệ thống có tính
prefix.
2 –ni
≤ p(ui)và Σ 2–ni ≤ 1 (3.26)
i=1
Ui pi qi Số nhị phân ni Từ mã
qi
U1 0,34 0 0,0000 2 00
U2 0,23 0,34 0,0101 3 010
U3 0,19 0,57 0,1001 3 100
U4 0,1 0,76 0,1100 4 1100
U5 0,07 0,86 0,11011 4 1101
U6 0,06 0,93 0,11101 5 11101
U7 0,01 0,99 0,1111110 7 1111110
+ qi được tính theo bước 2: i = 1 q1 = p0 = 0
i = 2 q2 = p1 = 0,34
i =3 q3 = p1 + p2 = 0,57
+ Đổi qi sang số nhị phân:
qi = 0,34 qi = 0,86
0,34 x 2 = 0,68 0,86 x 2 = 1,72
0,68 x 2 = 1,36 0,72 x 2 = 1,44
0,36 x 2 = 0,72 0,44 x 2 = 0,88
0,72 x 2 = 1,44 0,88 x 2 = 1,76
0,76 x 2 = 1,52
+ Tính ni theo (3.27)
pi = 0,34 -log2pi = 1,55 ni = 2 từ mã: 00
pi = 0,23 -log2pi = 2,1 ni =3 từ mã: 010
Hiệu suất của mã:
H(U) = - 0,34log0,34 – 0,23log0,23 - … - 0,01log0,01 = 2,37
n¯ = 0,34x2 + 0,23x3 + … + 0,01x7 = 2,99
ρ = H(U) = 0,81
n¯
2.2.3. Mã thống kê tối ưu Fano:
Các bước thực hiện mã hoá mã thống kê tối ưu Fano:
Bước 1: Liệt kê các tin ni trong một cột theo thứ tự pi giảm dần.
Bước 2: Chia làm 2 nhóm có tổng xác suất gần bằng nhau nhất. Ký hiệu mã
dùng cho nhóm đầu là 0, thì nhóm thứ 2 là 1.
Bước 3: Mỗi nhóm lại chia thành hai nhóm nhỏ có xác suất gần bằng nhau
nhất (ký hiệu 0 và 1). Quá trình cứ tiếp tục cho đến khi chỉ còn một ký hiệu
thì kết thúc.
B2 B1
Ui pi 1 2 3 4 5 Từ mã
N11 U1 0,34 0 0 00
U2 0,23 0 1 01
N1 U3 0,19 1 0 10
N12 U4 0,1 1 1 0 110
U5 0,07 1 1 1 0 1110
U6 0,06 1 1 1 1 0 11110
N21
U7 0,01 1 1 1 1 1 11111
ρ = H(U) = 0,98
n¯
Nhận xét về mã thống kê tối ưu Fano:
Ưu: Với cách chia nhóm đồng xác suất, sự lập mã thống kê tối ưu đồng thời cũng
là mã prefix.
Khuyết: Không cho phép lập mã duy nhất, nghĩa là có nhiều mã tương đương về
hiệu suất.
Ví dụ: Đối với nguồn tin dưới đây ít nhất có hai cách chia có hiệu suất như nhau:
0 1 0 1
0 1 0 1
0
0
1 1
u1 u4 1
0 0
01u3u40 1
1
u2 u3 u5 1
u1u2 u7 0
0
u6
u5 u6 u7
Bước 1: Các nguồn tin được liệt kê trong cột theo thứ tự xác suất xuất hiện
giảm dần.
Bước 2: Hai tin cuối có xác suất bé nhất được hợp thành tin phụ mới có xác
suất bằng tổng xác suất các tin hợp thành.
Bước 3: Các tin còn lại với tin phụ mới được liệt kê trong cột phụ thứ nhất
theo thứ tự xác suất giảm dần.
Bước 4: Quá trình cứ thế tiếp tục cho đến khi hợp thành một tin phụ có xác
suất xuất hiện bằng 1.
ui pi Từ mã
0
1 1
u1 0,34 0 0,58 00
1
u2 0,23 0 10
0,42
u3 0,19 1 11
0 0,24
u4 0,10 1 011
u5 0,07 0 0,14 0100
1
u6 0,06 0 0,07 01010
u7 0,01 1 01011
Từ mã được đọc ngược từ đầu ra về đầu vào. Cũng có thể dùng cây mã để
xác định mã Huffman:
gèc
0 1
0,42
0 1
0,42 0 1
u1(0,34) 0
1 u2(0,23)
0,14 u3(0,19)
0 1 u4(0,1)
0,07
u5(0,07) 1
u6(0,06) u7(0,01)
ui Pi Mã Huffman Mã đều Từ mã
u1 0,5 0 0
u2 0,25 0 0,5 1 10
u3 0,0315 1 1 00 11000
u4 0,0315 0,125 01 11001
u5 0,031 0 10 11010
u6 0,031 11 11011
u7 0,0157 0,25 000 111000
u8 0,0157 001 111001
u9 0,0157 010 111010
u10 0,0157 0,125 011 111011
u11 0,0156 1 100 111100
u12 0,0156 101 111101
u13 0,0155 110 111110
u14 0,0155 111 111111
Ví dụ: t1 = 1 0 0 1 0 1 1 w(t1) = 4
Khoảng cách giữa 2 vector t1, t2: ký hiệu, d(t1, t2) được định nghĩa là số
các thành phần khác nhau giữa chúng.
Ví dụ: t2 = 0 1 0 0 0 1 1 d(t1, t2) = 3 chúng khác nhau ở vị trí 0, 1 và 3.
Khoảng cách Hamming giữa 2 vector mã t1, t2 bằng trọng số của vector
tổng t1 t2:
d(t1, t2)=w(t1 t2) .
t1 = 1 0 0 1 0 1 1
t2 = 0 1 0 0 0 1 1
t1 t2 = 1 1 0 1 0 0 0 w(t1 t2) = 3 = d(t1, t2)
Điều kiện để một mã tuyến tính có thể phát hiện được t sai:
d t+1 (3.32)
t = 1 d 2; t = 2 d 3; t=5d6
Điều kiện để một mã tuyến tính có thể phát hiện và sửa được t sai:
d 2t + 1 (3.33)
t = 1 d 3; t = 2 d 5; t = 5 d 11
3.1.3. Hệ số sai không phát hiện được:
Ví dụ: đối với bộ mã (5,2) có trọng số Hamming w =2 ta xác định được hệ số sai
không phát hiện được:
p’ = C21pqC31 pq2 + C22p2C32p2q (3.34)
Nếu p = 10-3 p’ 6p2 = 6.10-6 nghĩa là có 106 bit truyền đi, 103 bit bị sai thì có
6 bit sai không phát hiện được.
3.1.4. Phương trình đường truyền –Vector sai – cơ chế sửa lỗi:
- Gọi từ mã phát đi là T.
- Gọi từ mã nhận được là R.
- Gọi từ mã sai do đường truyền gây ra là E.
phương trình đường truyền: R=TE
T=RE
E=TR
Đối với mã nhị phân 3 phương trình trên tương đương nhau.
Vector sai: E = (e0, e1, …, en)
Ví dụ: E = (1 0 0 1 0 1 0) sai ở vị trí 0, 3, 5
Trong các hệ thống truyền số liệu có 2 cơ chế sửa lỗi:
Cơ chế ARQ: cơ chế yêu cầu phát lại số liệu một cách tự động (khi phát hiện
sai). cơ chế này có 3 dạng cơ bản:
- Cơ chế ARQ dừng & chờ (stop and wait ARQ)
- Cơ chế ARQ quay ngược N vector (N go back ARQ).
- Cơ chế ARQ chọn lựa lặp lại.
Cơ chế FEC (Forward Error Control): phát hiện và tự sửa sai sử dụng các loại
mã sửa lỗi.
- Khi có sai đơn (sai 1 ký hiệu) người ta thường dùng các loại mã như: mã
khối tuyến tính, mã Hamming, mã vòng …
- Khi có sai chùm (> 2 sai) người ta thường dùng các loại mã như: mã
BCH, mã tích chập, mã Trellis, mã Turbo, mã Turbo Block, mã tổng
hợp GC …
3.2. Mã khối tuyến tính
Giả sử đầu ra của một nguồn tin là một dãy các bit nhị phân 0 và 1. Trong trường
hợp mã khối dãy thông tin nhị phân được chia thành dãy các thông tin có chiều
dài cố định. Thường được gọi là message. Mỗi message, ký hiệu là u gồm có k
bit thông tin. Vậy tổng cộng có 2k message khác nhau và chúng có thể được thể
hiện là các bộ Vector thành phần, trong đó mỗi thành phần vector là 0 hay 1. Bộ
phận mã hóa theo một quy luật nào đó sẽ ánh xạ message u thành một vector n
thành phần v (n>k), v được gọi là từ mã (code word) của message u. ứng với 2k
từ mã này được gọi là một mã khối. Để mã khối hữu hiệu, 2k từ mã luôn là các từ
mã phân biệt. Do đó sẽ có một ánh xạ 1:1 giữa một message u và một từ mã v.
Đối với một mã khối có hai từ mã và mỗi từ mã có chiều dài n, việc lưu lại bảng
mã để phục vụ cho việc giải mã sẽ gây khó khăn khi 2k lớn. Do đó có một loại
mã khối có cơ chế hoạt động dễ dàng hơn, có thể áp dụng vào thực tế, đó là mã
khối tuyến tính. Với cấu trúc của mã khối tuyến tính. Sự phức tạp của quá trình
mã hóa và giải mã giảm đi rất nhiều.
3.2.1. Định nghĩa
Khi các bit mang tin và các bit kiểm tra được phân thành từng khối tách
bạch, mã hóa và giải mã có thể tiến hành theo từng khối bằng các từ mã
riêng rẽ và sử dụng các phép tính của đại số tuyến tính.
Định nghĩa: mã khối độ dài n & k bits mang tin được gọi là mã khối
tuyến tính C(n,k) nếu và chỉ nếu 2k từ mã lập thành không gian vector n
chiều 2n trên trường Galois sơ cấp GF(2).
3.2.2. Phương pháp tạo mã khối tuyến tính
Vì mã khối tuyến tính C(n,k) có không gian con tuyến tính k chiều của
không gian vector n chiều, nên tồn tại k từ mã độc lập tuyến tính g0, g1,
…, gk-1 trong C, sao cho mỗi từ mã trong C là tổ hợp tuyến tính của k từ
mã đó:
v=t = u0g0 + u1g1+ …+ uk-1gk-1 (3.35)
Trong đó ui = 0 hoặc 1 với 1 i k-1
Gọi G là ma trận sinh của C:
g0 g00 g01 ⋯ g0,n–1
g1 g10 g11 ⋯ g1,n–1
G(k, n) = [ ] (3.36)
⋯ ] = ⋮ ⋮ ⋯ ⋮
gk–1 gk–1,0 gk–1,1 ⋯ gk–1,n–1
Trong đó: gi = [gi0, gi1, …., gi,n-1] với 0 i k-1
Gọi u là thông báo cần mã hóa:
u = u0 , u1,. …, uk-1 (3.37)
Với ui = 0 hoặc 1 và 0 i k-1
Định lý: Vector t gồm n số hạng là một từ mã của mã khối tuyến tính C(n,k) sinh
ra bởi G nếu và chỉ nếu
t.HT = 0 (3.44)
Khi đó ma trận H dạng hệ thống sẽ có dạng:
H = [- PT | In-k] (3.45)
Ví dụ: Từ G(4,7) ta hoán vị hàng thành cột ta sẽ được ma trận kiểm tra
dạng hệ thống:
1 0 1 1 1 0 0
H = [1 1 1 0 0 1 0]
0 1 1 1 0 0 1
Kết luận: Để tiến hành tạo mã khối tuyến tính gồm 2 bước:
Bước 1: Xác định một trong các ma trận sau: ma trận sinh sinh G, P, ma
trận kiểm tra H, ma trận PT.
Bước 2: Dựa vào công thức t = u.G hoặc t.HT = 0 để thiết lập các từ mã
tương ứng với các thông báo u đã biết.
Ta có sơ đồ mã hóa, mã khối tuyến tính dựa trên phương trình (3.41) và
(3.42) như sau:
1
Input u
u0 u1 .... uk-1 Đến keânh
ñeán kênh truyền
truyeàn
2
P0,n-k-1 Pk-1,n-
p00 p01 p01 p11
Pk-1,1
pk-1,0
P1,n-
+ + +
t t ... tn-k-1
Thanhghi
: Thanh ghi dịch : Boä coäng Modulo
+Bộ cộng modulo
K ñaàu vaøo K
p11 pij
pịj ==1
1: :ngắn
Ngaén
mạch h
pijmaïc
= 0: pij =0 : hôû
hở mạch
Hình 3.6: Sơ đồ khối mã hóa khối tuyến tính có cấu trúc hệ thống
Thông báo u = [u0 u1 . . . uk-1] được dịch vào thanh ghi thông tin đồng thời
được đưa đến kênh truyền (khóa K ở vị trí 1 trong k nhịp). Sau khi thông báo
được dịch toàn bộ vào thanh ghi thông tin, (n-k) bit kiểm tra cũng được tạo ra từ
ngõ ra của (n-k) bộ cộng modulo-2 nhiều đầu vào. Sau đó ở nhịp thứ (k+1) khóa
K ở vị trí 2, nên các bit kiểm tra cũng được dịch nối tiếp theo các bit thông báo
ra kênh truyền. Phức tạp của bộ mã hóa tỷ lệ vối độ dài của từ mã.
u0 u1 u2 u3
u
1 k
2 Ñeán
Đến kênhkeânh
truyền
truyeàn
+ + +
t0 t1 t2
Hình 3.7: Mạch mã hóa khối tuyến tính C(7,4)
Ví dụ: Tính Syndrome của mã khối tuyến tính C(7,4) với ma trận H đã cho với
vector thu r = [r0 r1 r2 r3 r4 r5 r6]
1 0 1 1 1 0 0
H = [1 1 1 0 0 1 0]
0 1 1 1 0 0 1
0
0 1 11
F 1
S = rHT = [r r r r r r r ] 1 1 1II = [S S S ]
0 1 2 3 4 5 6 1 0 1I 0 1 2
1 0 0I
0 1 0I
L0 0 1ے
Maïch tính
Mạch tính Syndrome Syndrome
s0 s1
... sn-k-1
Mạch tổMaïch
hợp tínhtoå hôïp
vector saitính vector sai
e0 e1 en-1
r0 r1 rn-1 +
+ +
to t1 t2
Hình 3.8: Bộ giải mã tổng quát cho mã khối tuyến tính
3.2.4. Mã Hamming
Mã Hamming là lớp mã khối đầu tiên nhắm vào việc sửa sai mã khối và các biến
thể của nó được sử dụng rộng rãi trong việc truyền thông số hóa và lưu trữ số
liệu. Với mọi số nguyên dương m 3, tồn tại mã Hamming với các thông số sau:
- Chiều dài từ mã: n = 2m – 1.
- 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 (dmin =3)
- Ma trận kiểm tra H với các cột là vector m chiều khác không.
Dạng cấu trúc hệ thống H = [Q | Im]
Trong đó Im là ma trận đơn vị mxm và ma trận Q gồm 2m–m–1 cột, mỗi cột
là vector m chiều có trọng số là 2 hoặc lớn hơn.
Xét m = 3, ma trận kiểm tra của mã (7,4) được viết dưới dạng.
1 0 0 1 0 1 1
H = [ 0 1 0 1 1 1 0] (3.48)
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 chứ không còn tính chất khối, từ (3.48) ta có:
0 0 0 1 1 1 1
H = [ 0 1 1 0 0 1 1] (3.49)
1 0 1 0 1 0 1
Để mã có dạng hệ thống, ta chọn các bit kiểm tra x, y, z ở các vị trí tương
ứng 2i với i = 0, 1, 2, . . ., nghĩa là các vị trí thứ nhất, thứ hai và thứ tư
của các ký hiệu từ mã:
u = [u0, u1, u2, u3]
(3.50)
t = [x, y, u0, z, u1, u2, u3]
Để tạo mã:
0 0 1
F0 1 01I
I
I0 1 1I
tHT = 0 = [x, y, u , z, u , u , u ]
0 1 2
I1 0 0 I
3
I1 0 1I
I1 1 0 I
L1 1 1 ے
x.0 +y.0 +u0.0 +z.1 + u1.1 + u2.1 + u3.1 =0 z = u1 + u2 + u3
x.0 +y.1 +u0.1 +z.1 + u1.0 + u2.1 + u3.1 =0 y = u0 + u2 + u3
x.1 +y.0 +u0.1 +z.1 + u1.1 + u2.0 + u3.1 =0 x = u0 + u1 + u3
Tìm ma trận sinh:
x = 1. u1 + 1. u2 + 0. u3 + 1. u4
y = 1. u1 + 0. u2 + 1. u3 + 1. u4
u0 = 1. u1 + 0. u2 + 0. u3 + 0. u4
z = 0. u1 + 1. u2 + 1. u3 + 1. u4
u1 = 0. u1 + 1. u2 + 0. u3 + 0. u4
u2 = 0. u1 + 0. u2 + 1. u3 + 0. u4
u3 = 0. u1 + 0. u2 + 0. u3 + 1. u4
1 1 1 0 0 0 0
1 0 0 1 1 0 0
t = [x, y, u0, z, u1, u2, u3] = u [ ] = uG
0 1 0 1 0 1 0
1 1 0 1 0 0 1
1 1 1 0 0 0 0
G=[1 0 0 1 1 0 0]
0 1 0 1 0 1 0
1 1 0 1 0 0 1
Phía thu nhận được từ mã: r = [r0, r1, r2, r3, r4, r5, r6] ta tính Syndrome:
0 0 1
1
I0F 1 0 I
0 1 1
S = rHT = [r I
r r r rI r r ] = S S ]
[S
0 1 2
I1 0 0 I 3 4 5 6 0 1 2
I1 0 1 I
I1 1 0 I
L1 1 1 ے
Khi đó ta có sơ đồ giải mã Hamming (7.4) như sau:
Tín hiệu thu r
Tín
hieäu r1 r2 r3 r4 r5 r6
r0
+ + +
s2 s1 s0
Mạch
maïchchuyển sốñoåi
chuyeån nhị phân ra phaân
soá nhò thập phân
ra thaäp p h a
i
1 2 3 4 5 6 7
- Việc mã hóa và tính toán Syndrome có thể được thực hiện một cách dễ
dàng qua các thanh ghi dịch có nối vòng hồi tiếp.
- Cấu trúc đại số của mã vòng cho phép sử dụng nhiều phương pháp để
thực hiện mã hóa.
3.3.1. Khái niệm
Định nghĩa: Một mã khối tuyến tính C(n,k) được gọi là mã vòng nếu mỗi
khi dịch vòng một vector mã trong C thì vector mới tạo thành cũng là một
vector mã thuộc C.
Đa thức mã vòng.
t(x)= t0 + t1x +t2x2 +…+ tn-1xn-1 (3.51)
Trong đó: vector mã t = [t0, t1, t2 … tn-1]
- Nếu tn-1 ≠ 0 thì bậc của t(x) là n-1.
- Nếu tn-1 = 0 thì bậc của t(x) nhỏ hơn n-1.
Mỗi đa thức mã t(x) trong một mã vòng C(n,k) có thể được biểu diễn dưới
dạng:
t(x) =u(x).g(x) = (u0 + u1x + u2x2 + … + un-1xn-1).g(x) (3.52)
Đa thức sinh g(x) của mã vòng C(n,k) là một ước số của x + 1 và có bậc
n
(3.53)
Σ hk–iti = 0
i=0
k
Σ hk–iti+1 = 0
i=0
(3.54)
⋮
k
Σ hk–iti+n–k–1 = 0
i=0
Từ đó, ta có kết quả sau:
(t0t1 … tn – 1) * (hkhk–1 … h00 … 0)T =
0 (t0t1 … tn – 1) * (0hkhk–1 … h0 … 0)T
=0
…
(t0t1 … tn – 1) * (0 … 0hkhk–1 … h0)T =
0 Như vậy, nếu đặt:
H= (3.55)
h(x) x7 + 1
= = 1 + x + + x4
3
x 21 + x + x
Từ (3.55):
1 0 1 1 1 0 0 (1)
H = [0 1 0 1 1 1 0] (2)
0 0 1 0 1 1 1 (3)
1 0 1 1 1 0 0 ( 1)
H′ = [1 1 1 0 0 1 0] (1) + (2)
0 1 1 1 0 0 1 (2) + (3)
3.3.5. Sơ đồ mã hóa mã vòng
a) Mã hóa theo đa thức sinh g(x)
Để mã hóa mã vòng (n,k) theo dạng hệ thống ta tiến hành theo các bước sau:
Bước 1: Nhân tin u(x).xn-k
Bước 2: Tính đa thức dư q(x)
q(x) = xn-k.u(x) mod g(x)
Bước 3: Thiết lập từ mã phát đi: t(x) = xk.q(x) + u(x)
Các bước này thực hiện bằng một mạch chia gồm một thanh ghi dịch (n-k) tầng
có vòng hồi tiếp dựa trên biểu thức sinh:
g(x)=1+g1(x)+ g2x2+… gn-k-1xn-k-1+xn-1
Cổng
Coå
gn-k-1
g0=1 g1 g2 gn-k =1
hk=1
hk-1 hk-2 h2 h1 h0 =1
Cổng 22
Coå
U(x)
Cổng 1 tn-k tn-k-1 ... tn-2 tn-1
Coång
tj= h4tj-4+ h3tj-3+ h2tj-2+ h1tj-1 = 1.tj-4+ 0.tj-3+ 1.tj-2+ 1.tj-1 = tj-4+ tj-2+ tj-1
Giả sử tin cần mã hóa: u = 1011 khi đó t0 =1, t1 =0, t2 =1, t3 =1
+ Bit kiểm tra đầu tiên tương ứng với j = 4 là:
t4 = t0+t2+t3=1+1+1=1
+ Bit kiểm tra thứ 2 tương ứng j = 5 là:
t5= t1+t3+t4=0+1+1= 0
+ Bit kiểm tra thứ 3 tương ứng j = 6 là:
t6= t2+t4+t5=1+1+0 = 0
Như vậy vector mã vòng với tin [1011] là [1011100]
3.3.6. Giải mã vòng
Gồm 2 bước:
Bước 1: Tính Syndrome
Bước 2: Dò sai và sửa sai.
a- Tính Syndrome:
Đa thức sửa sai Syndrome S(x) là đa thức dư của phép chia r(x) cho g(x), có bậc
nhỏ hơn hoặc bằng (n-k-1).
Mạch tính Syndrome tương tự như mạch mã hóa (n-k) tầng, chỉ khác là
r(x) được dịch vào đầu cực trái của thanh ghi. Trước khi dịch r(x) vào các
tầng của thanh ghi được đặt về không. Ngay sau khi toàn bộ r(x) đã được
dịch hết vào thanh ghi, nội dung của thanh ghi chính là Syndrome S(x).
Coång
gn-k-1
g0 =1 g1 g2
gn-k=1
+ S0 + S1 + ... + Sn-k-1
Coång
g0 =1 g2 =1
g1 =1
+ S0 + S1 S2
100
010
001
S=r.H =(0010110)= 110 = (101)
T
011
111
101
Ta lập bảng trạng thái thanh ghi dịch:
Số lần r(x) Nội dung thanh ghi Nội dung thanh ghi kế tiếp
dịch
b0 b1 b2 s’0=r+s2 s’1=s0+s2 s’2=s1
0 0 0 0 0 0
1 0 0 0 0 0 0 0
2 1 0 0 0 1 0 0
3 1 1 0 0 1 1 0
4 0 1 1 0 0 1 1
5 1 0 1 1 0 1 1
6 0 0 1 1 1 1 1
7 0 1 1 1 1 0 1
Vậy kết quả tính Syndrome theo hai phương pháp là như nhau.
b- Dò sai và sửa sai:
Gọi t(x) là từ mã phát đi và e(x) =e0+e1x+…+enxn-1
là đa thức sai, khi đó đa thức thu có dạng:
r(x) = t(x)+e(x) = a(x).g(x)+S(x)
Do t(x) = b(x)g(x) nên e(x)=[a(x)+b(x)]g(x) +S(x)
Nếu S(x) =0 thì e(x) = 0 hoặc trùng với một vector mã. Nếu e(x) trùng với
vector mã thì đó là sai không phát hiện được. Khi S(x) 0 thì từ S(x) có
thể đối chiếu với bảng coset leader dò ra e(x).
Ví dụ: g(x) =1+x2+x3
S(x) = e(x) mod g(x)
Coset leader Syndrome
0000000 000
0000001 011
0000010 110
0000100 111
0001000 101
0010000 001
0100000 010
1000000 100
Trong ví dụ trên S = (101) trùng với cột thứ 7 trong ma trận kiểm tra thứ tự, khi
đó e6=1 nghĩa là e = 0000001 vậy từ mã nhận đúng là:
t(x) = r(x)+e(x) = (0010110) + (0000001) = 0010111
3.3.7. Mã BCH
Mã BCH (Bose, Chaudhuri và Hocquenghem) là mã vòng có khả năng sửa được
nhiều lỗi. Đối với số nguyên dương m (m 3) và t bất kỳ, ta có thể xây dựng mã
BCH nhị phân có các thông số sau:
- Độ dài từ mã: n = 2m – 1.
- Số bit kiểm tra: n – k mt
Và đa thức sinh g(x) là bội số chung nhỏ nhất của các đa thức nguyên thuỷ có
nghiệm là a, a3, a5, …, a2t-1.
Các đa thức sinh của mã BCH (dạng bát phân) cho như sau:
n k t g(x)
7 4 1 13
15 11 1 23
7 2 721
5 3 2467
31 26 1 45
21 2 3551
16 3 107657
11 5 5423325
6 7 313365047
63 57 1 103
51 2 12471
45 3 1701317
39 4 166623567
36 5 1033500423
30 6 157464165547
24 7 17323260404441
18 10 1363026512351725
16 11 6331141367235453
10 13 472622305527250155
7 15 5231045543503271737
127 120 1 211
113 2 41567
106 3 11554743
99 4 3447023271
92 5 624730022327
85 6 130704476322273
78 7 26230002166130115
71 9 6255010713253127753
64 10 1206534025570773100045
57 11 335265252505705053517721
50 13 54446512523314012421501421
43 14 17721772213651227521220574343
36 15 3146074666522075044764574721735
29 21 403114461367670603667530141176155
22 23 123376070404722522435445626637647043
15 27 22057042445604554770523013762217604353
8 31 70472640527521030651476224271567733130217
Câu 2:
Tìm entropy, độ dư nguồn và tốc độ nguồn cho một nguồn tin gồm có 4 symbol
(A, B, C, D) phát ra với tốc độ symbol là 1024 baud. Biết xác suất xuất hiện các
symbol như sau :
Symbol Probability
A 0.5
B 0.2
C 0.2
D 0.1
Trong điều kiện nguồn không có nhớ (memoryless) nghĩa là các symbol xuất hiện
độc lập không phụ thuộc.
Câu 3:
Cho bộ mã: 00, 010, 100, 1100, 1101, 11101
b. Biểu diễn mã theo phương pháp: cây mã & đồ hình kết cấu.
c. Tính: ∑n m–jG(j). Mã có tính Prefix không?
j
d. Lấy 00, 010, 1101, 1100 làm tổ hợp sơ đẳng; 100 và 11101 làm tổ hợp
gốc. Tính G(8), G(9) và liệt kê các từ mã.
Câu 4: Cho nguồn tin U có 10 lớp tin có xác suất tương ứng:
P(u1) = 0.25; P(u2) = 0.12; P(u3) = 0.03; P(u4) = 0.1; P(u5) = 0.04;
P(u6) = 0.15; P(u7) = 0.05; P(u8) = 0.17; P(u9) = 0.01; P(u10) = 0.08;
Lập mã thống kê tối ưu theo mã đều và Huffman. Tính hiệu suất của hai mã trên.
Câu 6:
Cho mã vòng (7,4) có đa thức sinh g(x) = 1 + x 2 + x 3. Tin cần mã hóa u = 0110.
Câu 7:
Cho mã vòng (7,4) có đa thức sinh g(x) = 1 + x2 + x3. Cho vector thu r =
0110111. Tính Syndrome của mã vòng với g(x) = 1 + x 2 + x3 & lập bảng biểu thị
nội dung thanh ghi hiện tại & thanh ghi kế tiếp theo r.
Câu 8:
Thiết lập mã Hamming có m=3:
Tạo từ mã phát biết u = (1011).
Phía thu nhận đựơc từ mã r = (1011011) đúng hay sai. Nếu sai, xác định
từ mã đúng?
Câu 9:
Cho mã vòng (7,4) có đa thức sinh g(x) = 1 + x + x3. Tin cần mã hóa u = (1110).
Câu 10:
Cho mã vòng (7,4) có đa thức sinh g(x) = 1 + x + x3.
Tìm đa thức kiểm tra H dạng không chính tắc và chính tắc.
Cho vector thu r = 1011011. Tính Syndrome của mã vòng với g(x) = 1 + x
+ x3 & lập bảng biểu thị nội dung thanh ghi hiện tại & thanh ghi kế tiếp
theo r.