Mã vòng (Cyclic Codes) là một họ mã có ứng dụng đặc biệt rộng rãi trong thông tin.
Mã có tên gọi là cyclic vì do có đặc tính dịch vòng của một từ mã cũng là một từ mã.
Mã vòng (hay mã chu kỳ) còn được gọi một lớp con quan trọng của mã tuyến tính. Mã
này đáng chú ý vì hai lý do sau đây:
- Mạch mã hoá và tính syndrome (hội chứng) có thể được thực hiện dễ dàng nhờ bộ
ghi dịch có hồi tiếp (feedback connection).
- Nhờ cấu trúc của mã có thể tìm được nhiều phương pháp để giải mã.
12 trang |
Chia sẻ: maiphuongtt | Lượt xem: 5815 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Mã vòng – Cyclic codes, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Mã vòng
Hoàng Chiến Thắng - ĐHKTCN Thái Nguyên Email: ht.destiny@gmail.com 1
Mã vòng – Cyclic codes
I/ Mô tả
Mã vòng (Cyclic Codes) là một họ mã có ứng dụng đặc biệt rộng rãi trong thông tin.
Mã có tên gọi là cyclic vì do có đặc tính dịch vòng của một từ mã cũng là một từ mã.
Mã vòng (hay mã chu kỳ) còn được gọi một lớp con quan trọng của mã tuyến tính. Mã
này đáng chú ý vì hai lý do sau đây:
- Mạch mã hoá và tính syndrome (hội chứng) có thể được thực hiện dễ dàng nhờ bộ
ghi dịch có hồi tiếp (feedback connection).
- Nhờ cấu trúc của mã có thể tìm được nhiều phương pháp để giải mã.
Định nghĩa: Một mã tuyến tính C(n, k) được coi là mã vòng nếu mỗi lần dịch vòng
một từ mã của C thì kết quả cũng là một mã véc tơ của C.
Cho véc tơ mã v = (v0,v1,...vn-1), các thành phần của véc tơ mã này có thể xem như là hệ
số của đa thức v(x): v(x) = v0 + v1x + ... + vn-1x
n-1 .
Vậy mỗi véc tơ mã v có chiều dài n tương ứng với đa thức mã v(x) có bậc nhỏ hơn
hoặc bằng n-1. Nếu vn-1 ạ 0 thì bậc của v(x) là n-1, nếu vn-1 = 0 thì bậc của v(x) nhỏ hơn vn-
1. Sự tương đương giữa véc tơ mã v và đa thức mã v(x) là 1-1, v(x) được gọi là đa thức mã
(code polynomial) của véc tơ mã v. Khi đó từ véc tơ mã và từ đa thức mã được sử dụng như
nhau.
Ví dụ: Mã tuyến tính ở bảng 1 được goi là mã vòng
Khối tin Véc tơ mã: v Đa thức mã v(x)
(0000) (0000000) 0 = 0.g(x)
(1000) (1101000) 1 + x +x3 = g(x)
(0100) (0110100) x + x2 + x4 = x.g(x)
(1100) (1011100) 1 + x2 + x3 + x4 = (1 + x).g(x)
(0010) (0011010) x2 + x3 + x5 = x2.g(x)
(1010) (1110010) 1 + x + x2 + x5 = (1 + x + x2).g(x)
(0110) (0101110) x + x3 + x4 +x5 = (1 +x + x2).g(x)
(1110) (1000110) x3 + x4 + x6 = x3.g(x)
(0001) (0001101) 1 + x + x4 + x6 = (1 + x3).g(x)
(1001) (1100101) x + x2 + x3 + x6 = (x + x3).g(x)
(0101) (0111001) x + x2 + x6 = (1 + x + x3).g(x)
(1101) (1010001) 1 + x2 + x6 = (1+ x + x3).g(x)
Mã vòng
Hoàng Chiến Thắng - ĐHKTCN Thái Nguyên Email: ht.destiny@gmail.com 2
(0011) (0010111) x2 + x4 + x5 + x6 = (x2 + x3).g(x)
(1011) (1111111) 1 + x + x2 + x3 + x4 + x5 + x6 = (1 + x2 + x3).g(x)
(0111) (0100011) x + x5 + x6 = (x + x2 + x3).g(x)
(1111) (1001011) 1 + x3 + x5 + x6 = (1 + x + x2 + x3).g(x)
Bảng 1: Mã vòng với đa thức sinh g(x) = 1 + x + x3
Một số tính chất đại số quan trọng của mã vòng:
Định lý 1: Đa thức mã khác 0 có bậc nhỏ nhất của mã vòng là duy nhất.
Định lý 2: Nếu g(x) = g0 + g1x + ... + gr-1x
r-1 + xr là đa thức mã nhỏ nhất của mã vòng
C(n, k) thì hệ số g0 bắt buộc phải bằng 1.
Định lý 3: Cho g(x) = 1 + g1x + g2x
2 + ... + xr là đa thức mã khác 0 có bậc nhỏ nhất
của mã vòng C(n, k), một đa thức nhị phân có bậc nhỏ hơn hoặc bằng n-1 là đa thức mã
nếu và chỉ nếu nó là bội của g(x).
Định lý 4: Cho mã vòng C(n,k), tồn tại một và chỉ một đa thức mã có bậc n - k:
g(x) = 1 + g1x + g2x
2 + ... + gn-k-1x
n-k-1 + xn-k.
Định lý 5: Đa thức sinh g(x) của một mã vòng C(n,k) là một thừa số của xn+1.
Định lý 6: Nếu g(x) là đa thức bậc (n-k) và là một thừa số của xn+1 thì g(x) sinh ra mã
vòng C(n, k).
Mã vòng
Hoàng Chiến Thắng - ĐHKTCN Thái Nguyên Email: ht.destiny@gmail.com 3
II/ Ma trận sinh và ma trận kiểm tra của mã vòng.
Gọi g(x) là đa thức sinh bậc n-k của mã vòng C(n,k). Một khối dữ liệu k phần tử (m0,
m1,... mk-1) có thể được xem là một đa thức thông tin: m(x) = m0 + m1x + ... + mk-1x
k-1. Việc
mã hoá thông qua việc nhân đa thức thông tin với đa thức sinh. Kết quả ta có:
Cm = (c0, c1, ... cn-1)
Cm(x) = m(x).g(x) = c0 + c1.x + ... + cn-1.x
n-1
Tích đa thức trên được biểu diễn dưới dạng tích ma trận như:
Cm(x) = m(x).g(x) = (m0 + m1.x + ... + mk-1.x
k-1).g(x)
= m0.g(x) + m1.x.g(x) + ... + mk-1.x
k-1.g(x)
g(x)
x.g(x)
= [m0 + m1.x + ... + mk-1.x
k-1]. .
.
xk-1.g(x)
Dạng tổng quát của ma trận sinh G của mã vòng C(n,k) là:
g0 g1 g2 ... ... ... ... gn-k 0 0 ... 0
0 g0 g1 ... ... ... ... ... gn-k 0 ... 0
G = 0 0 g0 gn-k ... 0
.. .. .. .. .. .. .. .. .. .. .. ..
0 0 0 .. 0 g0 gn-k
( với g0 = gn-k = 1)
Trường hợp tổng quát G không có dạng hệ thống. Tuy nhiên có thể chuyển G về dạng
hệ thống bằng phép biến đổi hàng của ma trận.
Ví dụ: Xét mã vòng C(7, 4) cho ở bảng 1 với đa thức sinh g(x) = 1 + x + x3 có ma trận
như sau:
1 1 0 1 0 0 0
G = 0 1 1 0 1 0 0
0 0 1 1 0 1 0
0 0 0 1 1 0 1
Ta thấy G không có dạng hệ thống.
Nhưng nếu dùng phép biến đổi hàng: h3 = h3 + h1 và h4 = h4 + h1 + h2 ta thu được
Ma trận G’ có dạng hệ thống như sau:
Mã vòng
Hoàng Chiến Thắng - ĐHKTCN Thái Nguyên Email: ht.destiny@gmail.com 4
1 1 0 1 0 0 0
G’ = 0 1 1 0 1 0 0
1 1 1 0 0 1 0
1 0 1 0 0 0 1
Với g(x) là thừa số của xn + 1, có: xn + 1 = g(x).h(x)
Với đa thức h(x) có bậc là k được biểu diễn như sau:
h(x) = h0 + h1.x + ... + hk.x
k, (với h0 = hk = 1)
Cho v = (v0, v1,... vn-1) là véc tơ mã của C. Khi đó v(x) = m(x).g(x). Nhân v(x) với h(x)
ta được:
v(x).h(x) = a(x).g(x).h(x)
= a(x).(xn + 1)
= a(x) + xn.a(x)
Do bậc của v(x) nhỏ hơn hoặc bằng k-1 nên các giá trị của xk, xk+1, ...xn-1 không có
trong biểu thức m(x) + xk.m(x). Nếu khai triển kết quả v(x).h(x) thì hệ số xk, xk+1,... xn phải
bằng 0. Do đó nhận được n-k phương trình sau:
ồhivn-i-j = 0, với i Ê j Ê n-k.
Hàm số ngược của h(x) là:
x k.h(x-1) = hk + hk-1x + hk-2x
2 + ... + h0x
k
Dễ dàng nhận thấy rằng xkh(x-1) cũng là thừa số của (xn + 1). Vậy đa thức sinh xkh(x-1)
sinh ra mã vòng (n,n-k) với ma trận H(n-k) x n là ma trận sinh:
h k hk-1 hk-2 ..... h0 0 .... 0
0 hk hk-1 hk-2 ... h0 .... 0
H = 0 0 hk hk-1 hk-2 .... h0... 0
...
0 0 ...0 hk hk-1 hk-2 ... h0
Bất kỳ véc tơ mã nào của C đều trực giao với mỗi hàng của H. Do đó H là ma trận
kiểm tra chẵn lẻ của mã vòng C. Do H nhận được tù đa thức h(x) nên h(x) được gọi là đa
thức kiểm tra của C.
Định lý 7: Gọi C là mã vòng (n,k) với đa thức sinh g(x). Mã đối ngẫu của C cũng là
mã vòng và được sinh ra bởi đa thức: xk.h(x-1) với h(x) = (xn + 1)/g(x).
Mã vòng
Hoàng Chiến Thắng - ĐHKTCN Thái Nguyên Email: ht.destiny@gmail.com 5
III/ Mã hoá mã vòng
Mã hoá mã vòng (n,k) dạng hệ thống gồm ba bước:
Bước 1: Nhân đa thức thông tin u(x) với xn-k.
Bước 2: Chia xn-k.u(x) cho g(x) nhận được phần dư b(x).
Bước 3: Hình thành từ mã b(x) + xn-k.u(x).
Tất cả ba bước này có thể thực hiện bằng mạch chia với thanh ghi dịch n-k tầng có
hàm hồi tiếp tương ứng với đa thức sinh g(x):
g(x) = 1 + g1x + g2x
2 +... + gn-k-1x
n-k-1 + xn-k.
Sơ đồ mã hoá được chỉ trong hình 1
Quy ước:
Là một khâu của thanh ghi dịch (flip-flop)
Cổng cộng modul-2
(XOR)
Mối liên kết (g = 0:
không có sự liên kết, g = 1 có sự liên kết)
Hình 1: Mạch mã hoá vòng (n,k) với đa thức sinh:
g(x) = 1 + g1.x + g2.x
2 + ... + gn-k-1.x
n-k-1 + xn-k
Các bước tạo mã dùng đa thức sinh như sau:
Bước 1: Cổng đóng (cho thông tin qua), k chữ số thông tin: u0, u1,... uk-1 (hay ở dạng
đa thức là: u(x) = u0 + u1x + u2x
2 + ... + uk-1x
k-1) được dịch vào mạng và đòng thời nối vào
kênh truyền. Dịch thông tin u(x) vào mạch từ thiết bị đầu cuối để nhân trước u(x) với xn-k.
Ngay sau khi thông tin được đưa vào mạch thì n - k chữ số còn lại trong thanh ghi là những
số kiểm tra chẵn lẻ.
b0 bn-k-1 b2 b1
Cổng
g0=1
g1 g2 gn-k-1
Thông tin xn-k.u(x)
Các số kiểm tra
chẵn lẻ
Từ mã
Mã vòng
Hoàng Chiến Thắng - ĐHKTCN Thái Nguyên Email: ht.destiny@gmail.com 6
Bước 2: Cắt đứt đường hồi tiếp bằng cách điều khiển cho các cổng gi (hở không cho
thông tin qua).
Bước 3: Dịch những con số kiểm tra chẵn lẻ và đưa ra đường truyền. Các chữ số kiểm
tra này kết hợp với k chưc số thông tin tạo thành véc tơ mã.
Ví dụ: Xét một mạch mã hoá mã vòng (7,4) với đa thức sinh g(x) = 1 + x + x3 như
hình 2
Hình 2: Mạch mã hoá mã vòng (n = 7, k = 4) với đa thức sinh g(x) = 1 + x + x3
Việc mã hoá mã vòng cũng có thể thực hiện bằng cách sử dụng đa thức kiểm tra chẵn
lẻ h(x) = h0 + h1.x + ... + hk.x
k. Có thể coi công thức:
Vn-k-j = ồhivn-i-j = 0 , với i Ê j Ê n-k là luật để xác định n-k chữ số kiểm tra chẵn lẻ v0,
v1,... vn-k-1. Hình 3 là mạch mã hoá có hệ số h(x) là các kết nối hồi tiếp.
Nguyên lý hoạt động của mạch và các bước mã hóa dùng đa thức kiểm tra như
sau:
Bước 1: Cổng 1 đóng, cổng 2 hở, k chữ số thông tin u(x) = u0 + u1x + ... +uk-1x
k-1 được
dịch vào thanh ghi đồng thời truyền ra kênh thông tin.
Bước 2: Ngay sau khi toàn bộ các chữ số thông tin được dịch vào thanh ghi. Cổng 1
hở, cổng 2 đóng, chữ số kiểm tra đầu tiên là:
Vn-k-1 = h0.vn-1 + h1.vn-2 + ... + hk-1.vn-k
uk-1 + h1.uk-2 + ...+ hk-1.u0
Vn-k-1 được tạo thành và xuất hiện tại điểm P.
Bước 3: Thanh ghi dịch vòng một bit, chữ số kiểm tra được dịch vào kênh thông tin và
đồng thời cũng dịch vào thannh ghi, chữ số kiểm tra thứ hai là:
Vn-k-2 = h0.vn-2 + h1.vn-3 + .... + hk-1.vn-k
= uk-2 + h1.uk-3 + ... + hk-2.u0 + hk-1.un-k-1.
Vn-k-2 được tạo thành và xuất hiện tại diểm P.
Các số kiểm tra
chẵn lẻ
b0 b2 b1
Cổng
g0=1
g1
Thông tin xn-k.u(x) Từ mã
Mã vòng
Hoàng Chiến Thắng - ĐHKTCN Thái Nguyên Email: ht.destiny@gmail.com 7
Bước 4: Lặp lại bước 3 cho đến khi n-k chữ số kiểm tra được tạo ra và dịch vào kênh
thông tin.
Hình 3: Mạch mã hoá mã vòng (n, k) dựa vào đa thức kiểm tra h(x) = 1 + h1.x + ... + x
k
Để minh hoạ, xét ví dụ sau:
Hình 4 là sơ đồ mã hoá cho mã vòng (7,4) có đa thức sinh g(x) = 1 + x + x3 dựa vào đa
thức kiểm tra: h(x) = x7/1 + x + x3 = 1 + x + x2 + x4
Mỗi từ mã có dạng v = (v0, v1, v2, v3, v4, v5, v6) với v3, v4, v5, v6 là những con số của
thông tin, còn v0, v1, v2 là những con số kiểm tra chẵn lẻ (parity), phương trình xác định
bởi những con số kiểm tra là:
V3-j = 1.v7-j + 1.v6-j + 1.v5-j + 0.v4-j
= v7-j + v6-j + v5-j, với 1 Ê j Ê 3
Giả sử thông tin cần mã hoá là (1011) thì: v3 = 1, v4 = 0, v5 = 1, v6 = 1.
Chữ số kiểm tra đầu tiên là: v2 = v6 + v5 + v4 = 1 + 1 + 0 = 0
Chữ số kiểm tra thứ hai là: v1 = v5 + v4 + v3 = 1 + 0 + 1
Chữ số kiểm tra thứ ba là: v0 = v4 + v3 + v2 = 0 + 1 + 0 = 1
Vì vậy từ mã tương ứng với thông tin (1011) là (1001011)
Hình 4: Mạch mã hoá vòng (n=7, k=4) dựa vào đa thức kiểm tra h(x) = 1 + x + x2 + x4
Cổng1
Cổng2
Vn-k Vn-2 Vn-(k-1) Vn-1
hk-1 hk-2 h2 h0
h0=1
Đầu
vào
P
Đầu ra: Vn-k-1, Vn-k-2,..
Cổng1
Cổng2
h0=1
Đầu
vào
P
Đầu ra: 1001011
h2=1 h1=1
Mã vòng
Hoàng Chiến Thắng - ĐHKTCN Thái Nguyên Email: ht.destiny@gmail.com 8
IV/ Giải mã vòng
Việc giải mã vòng bao gồm ba bước như việc giải mã khối tuyến tính:
Bước 1: Tính Syndrome.
Bước 2: Dựa vào syndrome để xác định véctơ lỗi.
Bước 3: Sửa lỗi, thực hiện phép cộng modul-2 giữa véctơ lỗi và véctơ nhận được. Kết
quả là véctơ thông tin thực sự được truyền đi. Nếu sửa tuần tự từng bit một thì chỉ cần một
cổng XOR. Ngược lại nếu thực hiện một cách sửa song song thì phải dùng n cổng XOR.
Cấu trúc mã vòng cho phép giải mã véctơ nhận r(x) = r0 + r1x + r2x
2+ .... + rn-1x
n-1 một
cách tuần tự. Những bit nhận được sẽ được giải mã lần lượt bởi cùng một mạch giải mã.
Ngay sau khi tính syndrom. Mạch giải mã kiểm tra sự tương ứng của syndrome s(x)
với véctơ sửa được e(x) = e0 + e1x + e2x
2 +... +en-1x
n-1 với một lỗi sai ở vị trí cao nhất xn-1
(en-1 = 1). Nếu s(x) không có sai ở vị trí bậc cao nhất (en-1ạ0) thì lưu giữ trong thanh ghi
đệm (buffer register) và đồng thời thanh ghi sundrome dịch đi một lần. Bằng cách này,
r(1)(x) = r0x + r1x
2 + ... + rn-2x
n-1 và đa thức syndrome mới của r(1)(x) là s(1)(x). Lúc đó bit thứ
hai rn-2 của r(x) trở thành bit thứ nhất của r
(1)(x). Mạch giải mã tương tự sẽ kiểm tra s(i)(x)
có tương đương với véctơ sai số với lỗi tại vị trí xn-1 hay không.
Nếu syndrome s(x) của r(x) tương ứng với một véctơ sai với lỗi sai ở vị trí xn-1 thì bit
đầu tiên nhận được rn-1 là bit sai và nó phải được sửa cho đúng. Việc sửa sau được thực hiện
qua việc tính tổng rn-1Åen-1. Đa thức sửa lỗi là:
r1(x) = r0 + r1x + r2x
2 + ... + rn-2x
n-1 + (rn-1Åen-1)x
n-1.
Sau đó lỗi sai ở bit en-1 được xoá bỏ khỏi syndrome s(x). Việc này thực hiện bằng việc
cộng modul syndrome của e’(x) = xn-1 với s(x). Kết quả cộng này là đa thức đã sửa sai r1(x).
Tiếp theo dịch vòng r1(x) và đồng thời dịch vòng thanh ghi syndrome. Kết quả việc dịch
vòng thu được r1
(1)(x) = (rn-1Åen-1) + r0x + ...+ rn-2x
n-1
Vì thế nếu 1 được thêm vào tận cùngbên trái của thanh ghi sundrome trong khi dịch
vòng thì thu được s1
(1)(x). Mạch giải mã bắt đầu giải những bit nhận được rn-2. Việc giải mã
rn-2 và các loại bit còn lại đều được tính giống như giải mã rn-1. Khi một lỗi được phát hiện
và sửa, nó sẽ là cho syndrome thay đổi. Quá trình giải mã sẽ ngừng sau n lần dịch vòng.
Nếu e(x) là véctơ lỗi đã được sửa thì thanh ghi syndrome sẽ bằng 0. Kết thúc quá tringhf
giải mã sẽ nhận được r(x) được giải mã chính xác. Nếu kết thúc quá trình giải mã mà
syndrome khác 0 thì lỗi sai được phát hiện và không sửa sai được.
Bộ giải mã vòng (n,k) có sơ đồ như hình 5 gồm các khối:
Mã vòng
Hoàng Chiến Thắng - ĐHKTCN Thái Nguyên Email: ht.destiny@gmail.com 9
- Thanh ghi syndrome.
- Bộ phát hiện véctơ lỗi.
- Thanh ghi đệm lưu giữ véctơ nhận.
Hình 5: Bộ mã vòng với đa thức nhận được ở đầu thu r(x) được dịch vào thanh ghi
syndrome từ bên trái.
Thủ tục sửa lỗi được mô tả như sau:
Bước 1: Syndrome được tạo ra bằng cách dich toàn bộ véctơ nhận vào thanh ghi
syndrome và thanh ghi dệm.
Bước 2: Bộ phát hiện sai là mạch logic được thiết kế sao cho đầu ra của nó là 1 khi và
chỉ khi syndrome trong thanh ghi syndrome tương ứng với véctơ sai có thể sửa được một
lỗi tại bit bậc cao nhất xn-1. Do đó nếu bit 1 xuất hiện ở đầu ra của mạch phát hiện sai thì
bit nhận được là bit sai phải sửa, nếu bit 0 xuất hiện thì bit nhận được là đúng là không
phải sửa.
Bước 3: Bit đầu tiên được dịch ra khỏi thanh ghi đệm. Cùng lúc đó thanh ghi
syndrome cũng dịch một bit. Nếu ký hiệu vừa đọc ra là sai thì sẽ được sửa và ở đầu ra sẽ
nhận được ký hiệu đúng. Đầu ra ở mạch phát hiện sai cũng được mắc hồi tiếp vào thanh
ghi syndrome. Kết quả có một syndrome tương ứng với véctơ nhận đã dịch về bên phải.
Bước 4: Syndrome mới nhận được ở bước 3 sẽ dùng để phát hiện sai ở ký hiệu kế tiếp
sắp được đọc ra khỏi thanh ghi đệm. Mạch giải mã lặp lại ở bước 2 và 3.
Bước 5: Mạch giải mã sẽ giải mã lần lượt từng ký hiệu theo cách trên cho đến khi toàn
bộ véctơ nhận r được đọc ra khỏi thanh ghi đệm. Sau khi toàn bộ véctơ r đọc ra khỏi thanh
ghi đệm: nếu thanh ghi syndrome chứa toàn 0 nghĩa là véctơ lỗi được phát hiện và sửa
đúng.
Cổng1
Cổng2
Thanh ghi syndrome
Thanh ghi dệm
Cổng
ei
Véctơ
được
sửa
sai
Cổng
r1
Cổng1
Thanh ghi syndrome
Chỉnh syndrome
Mã vòng
Hoàng Chiến Thắng - ĐHKTCN Thái Nguyên Email: ht.destiny@gmail.com 10
Ví dụ: Cho mã vòng (7, 4) với ma trận sinh g(x) = 1 + x + x3. Mã này có khoảng cách
Hamming nhỏ nhất là 3 và do vậy có khả năng sửa lỗi đơn.
Giả sử chuỗi nhận r(x) = r0 + r1x + r2x
2 + r3x
3 + r4x
4 + r5x
5 + r6x
6 được dịch vào thanh
ghi syndrome từ sang trái. Bảng véctơ lỗi và các syndrome tương ứng của chúng được kê ở
bảng 2:
Véctơ lỗi
e(x)
Syndrome
s(x)
Véctơ syndrome
(s0, s1, s2)
e6(x) = x
6
e5(x) = x
5
e4(x) = x
4
e3(x) = x
3
e2(x) = x
2
e1(x) = x
1
e0(x) = x
0
s(x) = 1 + x2
s(x) = 1 + x + x2
s(x) = x + x2
s(x) = 1 + x
s(x) = x2
s(x) = x
s(x) = 1
101
111
011
110
001
010
100
Bảng 2: Véc tơ lỗi và các syndrome tương ứng với đa thức nhận được chuyển vào
thanh ghi syndrome từ trái sang phải.
Syndrome s(x) được tính bằng cách lấy phần dư cảu phép chia xi cho g(x). Từ đó suy
ra véctơ syndrome tương ứng.
Giả sử rằng một lỗi đơn xuất hiện ở vị trí xi. Sau khi chuỗi nhập được dịc vào thanh ghi
syndrome. Syndrome trong danh sách ghi sẽ là (101). Tuy nhiên sau (6-i) lần dịch thì nội
dung của thanh ghi không phải là (101). Vì thế cần sửa lỗi syndrome (101). Một mạch giải
mã hoàn chỉnh được vẽ như hình 6:
Mã vòng
Hoàng Chiến Thắng - ĐHKTCN Thái Nguyên Email: ht.destiny@gmail.com 11
Hình 6: Mạch giải mã cho mã vòng (7,4) với đa thức sinh g(x) = 1 + x + x2
Miêu tả quá trình giải mã như sau:
Giả sử véctơ mã v = (1001011) được truyền thành véctơ nhận r = (1011011). Mỗi lỗi
đơn xuất hiện ở vị trí x2. Khi nhập được dịch vào thanh ghi đệm và thanh ghi syndrome.
Thanh ghi syndrome chứa giá trị (001). ậ hình dưới đây là mô tả quá trình ghi dịch trên các
thanh ghi đệm và thanh ghi syndrome. Sau 4 lần dịch nội dung của thanh ghi syndrome là
(101) và mẫu lỗi r2 sẽ là số kế tiếp xuất khỏi thanh ghi đệm. Nhược điểm của mạch giải mã
hình 6 là thời gian giải mã lâu do phải dịch vòng từng bit một.
Bộ giải mã như trên được gọi là bộ giải mã Meggit. ở bộ giải mã này từ mã được đưa
vào vị trí bậc cao nhất đến vị trí thấp nhất và khi dịch vòng cả thanh ghi đệm và thanh ghi
syndrome đêù dịch vòng sang phải: Bộ giải mã Meggit cũng có thể giải mã ngược, nghĩa là
nó sẽ giải mã từ vị trí bậc thấp nhất đến bậc cao nhất. Khi đó, thanh ghi đệm và thanh ghi
syndrome sẽ dịch sang trái.
Bộ dồn kênh
Cổng
Đầu ra
r(x)
Cổng
Cổng
Đầu
vào
Mã vòng
Hoàng Chiến Thắng - ĐHKTCN Thái Nguyên Email: ht.destiny@gmail.com 12
Quá trình sửa sai của mạch được mô tả như trên hình vẽ dưỡi đây:
Về nguyên tắc, phương pháp giải mã Meggit có thể áp dụng với bất kỳ mã nào, nhưng
trong thực tế mạch giải mã rất phức tạp vì vậy còn nhiều phương pháp giải mã khác đã
được phát minh, chúng là các dạng biến thể từ phương pháp giải mã Meggit như là: giải mã
bằng phương pháp bẫy lỗi, phương pháp giải mã bẫy lỗi cải tiến... tuỳ theo từng trường hợp
cụ thể mà có thể sử dụng một mạch giải mã hoặc kết hợp nhiều mạch giải mã nhằm đảm
bảo tốt yêu cầu của từng nhiệm vụ đặt ra.
0 0 1 1 0 1 1 0 1 1 Bắt đầu
0
1 0 0 1 1 0 1 1 0 1
0
0 1 1 1 1 1 0 1 1 0 Lần dịch
Thứ 2
0
1 1 1 0 1 1 1 0 1 1 Lần dịch
Thứ 3
0
1 0 1 1 0 1 1 1 0 1 Lần dịch
Thứ 4
0
0 0 0 0 1 0 1 1 1 0 Lần dịch
Thứ 5
0
0 0 0 0 0 1 0 1 1 1 Lần dịch
Thứ 6
0
0 0 0 1 0 0 1 0 1 1 Lần dịch
Thứ7
0
Lần dịch
Thứ1