Dạng phổ biến nhất để biểu diễn bộ mã hoá chập là dùng bộ ghi dịch. Ngoài ra nó còn được biểu diễn bằng véctơ kết nối; Đa thức kết nối; Sơ đồ lưới; Sơ đồ trạng thái; Cây mã (sơ đồ cây).
Mã chập sử dụng phương pháp kiểm soát lỗi khác hẳn so với mã khối. Bộ mã chập được coi là một cơ cấu tuyến tính hữu hạn trạng thái được điều khiển bởi dãy thông tin đầu vào để tạo ra dãy mã hoá ở đầu ra. Các dãy đầu vào hoặc đầu ra có thể có chiều dài tuỳ ý. Quá trình mã hoá sẽ đưa thuộc tính nhớ và độ dư vào dãy mã hoá. Ngược lại quá trình giải mã sẽ quan sát lần lượt các kí hiệu ở dãy mã hoá thu được sau khi chịu tác động bởi nhiễu ở kênh để tìm lại thông tin ban đầu. Như vậy, khác với cách mã hoá và giải mã theo từng khối một như ở mã khối, ở mã chập quá trình mã hoá và giải mã được xét trên toàn bộ dãy dữ liệu.
- Bộ ghi dịch: Gồm r bậc. - Bộ cộng modul 2: Gồm T bộ.
Thanh ghi dịch Xung nhịp
R1 R2 Rr-1 Rr Các bit thông tin vào … Dãy bit ra 1 T M1 M2 MT Hình 2.5: Bộ mã hoá chập
- Chuyển mạch CM: Gồm T tiếp điểm. Ví dụ sơ đồ tạo mã chập (1/2).
Với:
- Bộ ghi dịch (4 khâu): R=4. - Có 2 bộ cộng modul 2: M=2.
- Chuyển mạch k được đồng bộ bởi các dấu thông tin và kiểm tra.
Bộ mã hoá chập thực hiện mã hoá cho toàn bộ dãy thông tin đầu vào để thu được dãy mã hoá đầu ra. Do bộ mã hoá cho mã chập ở trên được xây dựng từ các phần tử tuyến tính nên hiển nhiên mã thu được cũng là tuyến tính.
2.2.3. Một số đặc trưng cơ bản của mã chập. Tốc độ mã hoá.
Giả sử đầu vào hình 2.11 có một dấu thông tin, cứ sau mỗi dấu xung nhịp dấu thông tin được ghi dịch trong bộ ghi dịch. Chuyển mạch dịch chuyển lần lượt đến các đầu ra của các bộ cộng modul 2 để nhập các dãy bít ra. Số các bít ra là m (bằng số bộ công modul 2). Tốc độ mã hoá được đánh giá bằng tỷ số 1/T ta có:
Tốc độ mã hoá bằng: 1/T (2.1)
a. Tỷ lệ mã.
Nếu đầu vào có m dấu thông tin thì trong một chu trình chuyển mạch sẽ nhận được tốc độ mã hoá là m.1/T. 1 2 3 4 Ra B Xung nhịp T Vào A C 1 2 M2 M1 Hình 2.6: Sơ đồ tạo mã chập (1/2).
Tỷ lệ mã hoá bằng: m/T.
b. Độ dài bắt buộc (hay khối lượng nhớ của mã chập).
Nếu đầu vào của sơ đồ 2.5 có m dấu thông tin thì trong một chu trình chuyển mạch bộ ghi dịch ghi chỉ nhớ được R dấu (hay là một trong m/R nhóm dấu thông tin dầu vào).
Dãy bit ra ứng với m dấu thông tin đầu vào sẽ bằng đại lượng m/R.T được gọi là độ dài bắt buộc của bộ mã chập. Đó cũng chính là khối lượng nhớ (kích thước nhớ) cần thiết của bộ mã chập.
d. Khoảng cách bảo vệ của bộ mã chập.
Bộ mã chập có khả năng sửa được chùm sai nếu kí hiệu độ dài chùm sai là b thì mã chập có khả năng sửa được chùm sai có đọ dài là bội số của n[(b=2,4,6,8 …) Đối với mã xích (1/2)].
Để sửa được chùm sai có độ dài càng lớn thì thiết bị mã hoá và giải mã càng phức tạp.
Các sai mà mã chập có thể sửa được cũng là những chùm sai đơn. Do đó khoảng cách giữa hai chùm sai xảy ra phải cách nhau một khoảng xác định tối thiểu được gọi là khoảng bảo vệ kí hiệu là d. Để mã chập có thể sửa được chùm sai thì trong khoảng bảo vệ không có bất cứ một sai nào xảy ra.
Độ lớn khoảng bảo vệ d phụ thuộc vào từng sơ đồ tạo mã chập và phụ thuộc vào độ dài chùm sai d ≥ 3d + 1. Khi thoả mãn những điều kiện này thì chùm sai tiếp sau sẽ không ảnh hưởng tới thủ tục sửa sai ở chùm sai trước.
e. Chiều dài giới hạn cho đầu vào thứ i.
Chiều dài giới hạn cho luồng thông tin đầu vào thứ i của bộ mã hoá chập (n,k,m) là: ))] ( [deg( max ( ) 1 0 g D m ij n i i = ≤≤ − (2.2)
Do mi chính là phần trong trễ trong bộ ghi dịch thứ i nên nó còn được gọi là bậc nhớ cho đầu vào thứ i.
deg[gi(j)(D)]: Bậc của đa thức sinh gi(j)(D). g. Bộ nhớ của bộ mã hoá chập.
Bâc nhớ dùng để đặc trưng cho khả năng nhớ của bộ mã hoá chập, nó dùng để chỉ phạm vi ảnh hưởng của một kí hiệu đầu vào tới các kí hiệu đầu ra. Số lượng lớn nhất các kí hiệu trong một luồng mã hoá đầu ra mà có thể thay đổi bởi một kí hiệu đầu vào bất kỳ là (m+1), trong đó m là bậc nhớ của bộ mã hoá.
m = max mi (2.3)
Bậc nhớ m chính là bậc của đa thức sinh có bậc lớn nhất. h. Tổng chiều dài giới hạn.
Tổng chiều dài giới hạn của bộ mã hoá chập (n,k,m) là:
∑− = = 1 0 k i i m V (2.4).
Tổng chiều dài giới hạn còn được gọi là tổng dung lượng nhớ của bộ mã hoá bởi nó chính là tổng số các phần tử nhớ (phần tử trễ) trong bộ mã hoá. Tổng dung lượng của bộ mã hoá ảnh hưởng rất nhiều đến độ phức tạp của bộ giải mã Viterbi tương ứng.
i. Chiều dài giới hạn đầu ra:
Chiều dài giới hạn đầu ra của bộ mã hoá chập (n,k,m) là:
UA= n(m+1) (2.5).
Chiều dài giới hạn đầu ra chính là đại lượng chỉ số lượng lớn nhất các kí hiệu trong tất cả n luồng mã hoá đầu ra mà có thể bị thay đổi bởi một kí hiệu đầu vào bất kỳ.
k. Chiều dài giới hạn đầu vào.
K = v + k (2.6).
Chiều dài giới hạn đầu vào dùng để xác định số lượng lớn nhất các kí hiệu thông tin đầu vào có thể ảnh hưởng giá trị một ký hiệu mã hoá đầu ra.
Ngoài định nghĩa về chiều dài giới hạn trên, người ta còn dùng một định nghĩa khác về chiều dài giới hạn. Đó là số lượng lớn nhất các ký hiệu trong một luồng mã hoá đầu ra mà có thể bị thay đổi bởi một ký hiệu đầu vào bất kỳ, do đó nó có giá trị bằng (m+1).
2.2.4. Thiết bị giải mã.
Có ba phương pháp giải mã cho mã chập thường được sử dụng đó là: - Sử dụng thuật toán Viterbi.
- Sử dụng phương pháp giải mã tuần tự. - Sử dụng phương pháp giải mã ngưỡng.
Các phương pháp giải mã trên đều có ưu nhược điểm khác nhau nhưng về mặt lý thuyết là rất phức tạp.
Thiết bị giải mã có hai phần gồm sơ đồ gia công các dấu mã nhận được để phát hiện sai (Sơ đồ tính Syndrome) và sửa sai.
Ví dụ sơ đồ giải mã chập (1/2) với b = 4.
CM Vào 5 6 1 2 3 4 7 8 9 10 M3 Ra Dấu thông tin
Dấu kiểm tra
M1
M2
Xung nhịp
Xung nhịp
Tính syndrome Sửa sai
Hình 2.7: Sơ đồ giải mã chập (1/2) với b=4. G1
Về nguyên tắc chung, muốn sửa được sai trước hết phải xác định được vị trí dấu sai rồi đưa ra dấu “1” tương ứng để cộng modul 2 với dấu sai (ở bộ cộng M3) sẽ cho dấu đúng. Để xác định dấu sai phải tách ra các dấu thông tin và các dấu kiểm tra trong dãy các dấu nhận được nhờ khoá K1 hoạt đồng đồng bộ với khoá K của thiết bị mã hoá. Các dấu thông tin được đưa vào bộ ghi dịch G1 có sơ đồ hoàn toàn tương tự như sơ đồ bộ ghi dịch của thiết bị mã hoá để tạo ra các dấu kiểm tra mới. Từ bộ cộng modul 2 M1 các dấu kiểm tra này được đưa tới cộng theo modul 2 (ở bộ cộng M2) với các dấu kiểm tra nhận được để tạo ra Syndrome. Theo Syndrome này ta có thể phán đoán được phần nào đệ chính xác của các dấu mã đã nhận. Thật vậy, khi không có sai dãy dấu kiểm tra tạo ra từ các dấu thông tin nhận được sẽ trùng với dãy dấu kiểm tra nhận được, lúc này Syndrome chỉ gồm toàn các dấu “0”. Khi có sai trong Syndrome sẽ xuất hiện các đơn vị, vị trí của các đơn vị này sẽ khác nhau nếu dấu sai ở các vị trí khác nhau. Căn cứ vào đó ta có thể sửa được các dấu thông tin bị sai (nếu cần ta có thể sửa sai cho cả các dấu kiểm tra nữa).
Một dấu kiểm tra hình thành từ việc cộng modul 2 hai dấu thông tin khác nhau một bước cộng cho trước. Vì vậy, mỗi một dấu thông tin sẽ tahm gia vào việc hình thành hai dấu kiểm tra cách nhau một bước cộng.
Nếu một dấu kiểm tra nhận được náo đó bị sai thì Syndrome sẽ có đơn vị ở vị trí tương ứng. Như vậy, trong các Syndrome có các đơn vị riêng lẻ không tạo thành các cặp cách nhau một bước cộng thì điều đod chứng tỏ đã có sai ở các dấu kiểm tra tương ứng.
Trong thức tế bộ mã chập được sử dụng khá rộng rãi do khả năng sửa được lỗi chum của nó. VÍ dụ nó được sử dụng để chống các lỗi chum khi thiết lập cuộc gọi của thông tin di động.
2.3. Các bộ mã chống nhiễu có khả năng sửa sai. 2.3.1. Bộ mã hệ thống nhị phân. 2.3.1. Bộ mã hệ thống nhị phân.
Mã hệ thống nhị phân là mã đều nhị phân có độ dài n trong đó tách ra k dấu mang tin gọi là các dấu thông tin, còn lại r = n-k dấu thừa không mang tin gọi là các dấu kiểm tra, kí hiệu (n,k).
Bộ mã hệ thống nhị phân có khả năng phát hiện sai và sửa sai. Số dấu sai mà bộ mã có thể phát hiện hoặc sửa sai phụ thuộc vào số lượng các tin cần mã hoá (2k = s, do đó k = log2s).
Vị trí các dấu thông tin và các dấu kiểm tra trong mỗi từ mã của bộ mã hệ thống nhị phân tách thành hai khối riêng biệt vì thế mã hệ thống nhị phân còn được xếp vào lớp các bộ mã khối tuyến tính.
Nếu ta kí hiệu xi là dấu (kí hiệu) thứ i trong từ mã, ta có thể biểu diễn các dấu của bộ mã hệ thống nhị phân như sau:
Phát hiện sai và sửa sai của bộ mã hệ thống nhị phân thực hiện theo các bước sau:
- Mang từ mã thu được tách ra các dấu mang tin và các dấu kiểm tra. - Từ các dấu mang tin và ma trận H(r,k) lập lại các dấu kiểm tra.
- So sánh các dấu kiểm tra lập được và các dấu kiểm tra trong từ mã thu được (so sánh từng cặp từng vị trí). Nếu có ít nhất một cặp khác nhau thì chứng tỏ từ mã thu được bị sai.
- Nếu chỉ có một cặp nào đó sai khác thì sai ở vị trí dấu kiểm tra và vị trí dấu sai chính là vị trí của cặp sai khác đó, lấy đảo của dấu sai sẽ được dấu đúng.
- nếu có hai hay nhiều cặp sai khác nhau thì sai xảy ra ở vị trí các dấu thông tin. Dấu sai là dấu thông tin có mặt đồng thời trong tất cả các cặp sai khác
x0x1x2 … xk-1xk … xn-1
đó.
- Để minh hoạ cho quá trình phát hiện sai và sửa sai trong bộ mã hệ thống nhị phân ta xét ví dụ sau: Bộ mã hệ thống nhị phân (7,4) có ma trận: ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ = 0 1 1 1 1 0 1 1 1 1 0 1 3 4 H( , ) .
Hỏi từ mã nhận được αi=1011111 đúng hay sai? Nếu sai thì sai ở dấu nào, hãy sửa cho dấu sai đó.
Bộ mã nhị phân (7,4) có độ dài n = 7, số dấu mang tin k = 4, số dấu kiểm tra r = n-k = 3.
Vị trí các dấu thông tin và dấu kiểm tra trong từ mã nhận được αi: 1 0 1 1 1 1 1
x0 x1 x2 x3 x4 x5 x6
Từ các dấu thông tin 1011 và ma trận đã cho ta lập các dấu kiểm tra: x4’= x0⊕x2⊕x3= 1⊕1⊕1=1. x5’= x0⊕x1⊕x3= 1⊕0⊕1=0. x6’= x0⊕x1⊕x2= 1⊕0⊕1=0. So sánh: x4’ = 1 = x4 = 1. x5’ = 0 ≠ x5 = 1. x6’ = 0 ≠ x6 = 1.
Có hai cặp dấu kiểm tra khác nhau. Vậy sai ở vị trí dấu thông tin. Vì dấu kiểm tra x4 đúng nên các dấu thông tin x0, x2, x3 đúng, còn dấu thông tin x1 có mặt đồng thời trong hai cặp khác nhau x5 và x6. Do đó sai xảy ra ở dấu thông tin x1.
Từ mã đúng sẽ là: 1 1 1 1 1 1 1
Dấu sai đã được sửa αi đúng=
Bộ mã hệ thống nhị phân (7,4) có khoảng cách mã tối thiểu d0 = 3 (là bộ mã vơi Dvơi > 0) có khả năng phát hiện được hai sai và sửa được một sai.
Nhận xét: Ưu điểm của mã hệ thống nhị phân:
- Chỉ cần nhớ ma trận kiểm tra tức là chỉ cần nhớ quy tắc lập mã ở bộ giải mã chứ không cần nhớ các bộ mã để so sánh. Do đó kết cấu bộ giải mã khá đơn giản (chỉ phải nhớ H(k,r) có k.r dấu).
- Chỉ cần so sánh r dấu kiểm tra đã phát hiện được sai chứ không cần so sánh n dấu nên tốc độ giải mã cao hơn.
2.3.2. Mã cyclic.
Mã cyclic là một loại mã hệ thống được áp dụng rất rộng rãi trong thực tế do kỹ thuật thực hiện mã hoá và giải mã rất đơn giản.
Để thuận tiện cho việc mô tả các mã cyclic người ta thường biểu diễn tổ hợp mã (véctơ mã) dưới dạng một đa thức có bậc (n-1). Các hệ số đa thức ứng với các dấu mã và chỉ nhận một trong hai giá trị “0” và “1”. Như vậy mỗi một tổ hợp mã sẽ ứng với một đa thức xác định.
Nếu ký hiệu một tổ hợp mã n dấu là (a0, a1, a2,… an-1) thì đa thức tương ứng với nó sẽ là:
f(x) = a0 + a1x + a2x2 + … + an-1xn-1 (2.7).
x ở đây chỉ là ẩn hình thức, nó chỉ có tác dụng để xác định vị trí của các dấu mã (tương tự như các véctơ cơ sở).
a. Biểu diễn mã cyclic.
- Định nghĩa 1: Mã cyclic là một mã hệ thống (n,k) có tính chất sau: Nếu vi=(a0, a1, …an-1) là một tổ hợp mã bất kỳ của bộ mã thì dịch chuyển vòng của vi cũng là một từ mã của bộ mã này.
Với cách biểu diễn véctơ mã bằng một đa thức có thể đem dịch chuyển vòng của véctơ vi là kết quả của việc nhân fi(x) với x theo mod (xn + 1):
x.fi(x) = a0.x + a1.x2 + … + an-2.xn-1 + an-1xn =
= (an-1 + a0.x + a1.x2 + … + an-2.xn-1) mod (xn + 1) ↔ ↔ vi’ = (an-1, a0, a1, …, an-2).
Để có thể thấy rõ hơn nữa cấu trức của mã xyclic ta sẽ đưa ra khái niệm đa thức sinh.
- Định nghĩa 2: Đa thức có bậc bé nhất trong số các đa thức ưúng với các tổ hợp mã của mã xyclic (trừ tổ hợp mã có mọi thành phần bằng không) được gọi là đa thức sinh của bộ mã. Kí hiệu g(x).
g(x) có một số tính chất sau:
* Thành phần tự do g0 luôn bằng 1:
g(x) = 1 + g1x + … + gr-1xr-1 + grxr.
Bậc của đa thức sinh xác định số dấu kiểm tra trong tổ hợp mã r = n-k. * g(x) là một nhân tử của nhị thức xn + 1.
Dựa vào khái niệm đa thức sinh ta có thể định nghĩa lại mã xyclic như sau: - Định nghĩa 3: Mã xyclic (n,k) là mã mà tất cả các tổ hợp mã của nó là tập các đa thức có bậc không lớn hơn (n-1) và chia hết cho đa thức sinh g(x).
Giống như đối với mã hệ thống, ta có thể xây dựng mã xyclic theo ma trận sinh G(n,k) và ma trận kiểm tra H(n,k):
⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ • • = −. ( ) ) ( . ) ( 1 ) , ( x g x x g x x g G k k n (2.8).
Vì bậc của các đa thức ở các hàng của G(n,k) đều khác nhau nên ta có thể coi đây là k tổ hợp mã độc lập tuyến tính sinh ra bộ mã.
Và ta có G(n,k).H(n,k)=0 (2.9). Nếu biểu diễn H(n,k) dưới dạng:
⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡