Mã vòng – Cyclic codes

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ã.

pdf12 trang | Chia sẻ: maiphuongtt | Lượt xem: 5475 | Lượt tải: 1download
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
Tài liệu liên quan