Mã hóa kênh truyền
262
6 2 2 7 6 7 3
5 7 2 5 6 0 6
Hàng thứ 3 bị sai: hàng thứ 3 của dec chính là 3 phần tử đầu của hàng thứ 3 của code, hàng
thứ 3 của ccode cũng là hàng thứ 3 của code.
17.1.3. MAÕ BCH
Biểu diễn thông điệp và từ mã đối với mã BCH:
Muốn mã hoá một thông điệp bằng mã BCH thì trước hết thông điệp phải được biểu diễn
bằng một dãy Galois nhị phân (trường GF(2)) gồm k cột. Tương ứng với thông điệp này là từ
mã được biểu diễn bằng một dãy Galois nhị phân n cột. Mỗi một dòng của dãy Galois này
ứng với một từ của thông điệp.
Đối với mã BCH, n phải là một số nguyên có dạng 1
2
−
m
, với m là một số nguyên lớn hơn 2;
k là một số nguyên nhỏ hơn n, và với mỗi n, k chỉ có thể nhận một vài giá trị. Các giá trị cho
phép của k tuỳ theo n được trình bày trong bảng sau với các giá trị n < 1000.
Bảng 17.3.
Các giá trị của n và k đối với mã BCH
Giá trị của n
Các giá trị cho phép của k
7 4
15 5,
7,
11
31
6, 11, 16, 21, 26
63
7, 10, 16, 18, 24, 30, 36, 39, 45, 51, 57
127
8, 15, 22, 29, 36, 43, 50, 57, 64, 71, 78, 85, 92, 99
255
9, 13, 21, 29, 37, 45, 47, 55, 63, 71, 79, 87, 91, 99, 107, 115, 123, 131, 139, 147, 155, 163,
171, 179, 187
511
10, 19, 28, 31, 40, 49, 58, 67, 76, 85, 94, 103, 112, 121, 130, 139, 148, 157, 166, 175, 184,
193, 202, 211, 220, 229, 238, 241, 250, 259, 268, 277, 286, 295, 304, 313, 322, 331, 340,
349, 358, 367, 376, 385, 394, 403, 412, 421, 430, 439, 448, 457, 466, 475, 484, 493, 502
Mã hoá và giải mã BCH:
Để mã hoá và giải mã thông điệp dùng mã BCH ta sử dụng hai hàm bchenc và bchdec với cú
pháp tương tự như các hàm mã hoá và giải mã Reed-Solomon, chỉ khác ở chỗ các thông điệp
và từ mã là các dãy Galois trong trường GF(2) thay vì GF(
m
2 ).
>> code = bchenc(msg,n,k)
>> [decoded,cnumerr,ccode] = bchdec(code,n,k,paritypos)
Hàm bchgenpoly tạo ra đa thức sinh cho mã BCH [n,k] đồng thời trả về khả năng sửa lỗi t
của bộ mã.
>> [genpoly,t] = bchgenpoly (n,k,prim_poly)
Ví dụ 17-4. Làm lại ví dụ 17-2 với phương pháp mã hoá được sử dụng là BCH [15,5].
n = 15; k = 5; % Chiều dài từ mã và thông điệp
[gp,t] = bchgenpoly(n,k); % t là khả năng sửa lỗi.
nw = 4; % Tổng số từ của thông điệp
msgw = gf(randint(nw,k)) % Tạo thông điệp ngẫu nhiên