You are on page 1of 45

Chương 5

MÃ HÓA KÊNH

❖ Các phương pháp điều khiển lỗi:


⮚ Tăng công suất phát
⮚ Sử dụng kỹ thuật phân tập tránh lỗi chùm do fading
⮚ Truyền song công (kiểm tra echo)
⮚ Yêu cầu lặp lại tự động - ARQ (Automatic Repeat reQuest)
⮚ Mã hóa sửa lỗi không phản hồi - FECC (Forward Error Correction Coding)
Chương 5
MÃ HÓA KÊNH
Nội dung:
• Phân biệt hệ thống FEC và hệ thống ARQ
• Một số khái niệm cơ bản về mã hóa
• Một số mã hóa phát hiện lỗi và sửa lỗi đơn giản
- Mã lặp
- Mã kiểm tra chẵn lẻ
• Mã khối tuyến tính
• Mã tích chập
• Bài tập
2
Chương 5
MÃ HÓA KÊNH
5.1 Phân biệt hệ thống FEC và hệ thống ARQ:
⮚ dựa trên cách thức xử lý của máy thu khi có lỗi xảy ra
5.1.1 Hệ thống ARQ (Automatic Repeat Request )
⮚ Phát hiện lỗi và yêu cầu truyền lại, không thực hiện việc tự sửa lỗi.
⮚ Hệ thống ARQ yêu cầu phải có đường truyền ngược và cần ít bit kiểm tra.

⮚ Áp dụng: * Mạng máy tính


* Các hệ thống không yêu cầu độ trễ nhỏ.
⮚ Các mã sử dụng: mã lặp, mã kiểm tra chẵn lẻ, mã CRC, vv…
3
Chương 5
MÃ HÓA KÊNH

4
Chương 5
MÃ HÓA KÊNH

5
Chương 5
MÃ HÓA KÊNH
5.1 Phân biệt hệ thống FEC và hệ thống ARQ (tt):
⮚ Hệ thống ARQ có ba dạng cơ bản: (SV xem lại trong môn học Truyền Số
Liệu)
Cơ chế ARQ dừng và chờ (Stop and Wait ARQ)
Cơ chế ARQ quay ngược N từ mã (Go back N ARQ)
Cơ chế ARQ lựa chọn việc lặp lại (Selective repeat ARQ)
5.1.2 Hệ thống FEC (Forward Error Correction)
⮚ Phát hiện lỗi và thực hiện việc tự sửa lỗi, không yêu cầu truyền lại.

⮚ Áp dụng: * Hệ thống đơn công


* Hệ thống truyền khoảng cách xa và độ trễ là vấn đề quan trọng.
⮚ Các loại mã : mã Hamming, mã tích chập, mã Turbo,vv…
6
Chương 5
MÃ HÓA KÊNH
5.2 Một số khái niệm cơ bản về mã hóa:
❖ Trọng số Hamming của một từ mã [w(X)]: số thành phần khác zero trong từ
mã.
Ví dụ: Từ mã X = 101 => w(X) = 2.
❖ Khoảng cách Hamming giữa hai từ mã X, Y [d(X,Y)]: số vị trí các phần tử
khác nhau giữa hai từ mã.
Ví dụ: X = 1010; Y = 1110 => d(X,Y) = 1
❖ Khoảng cách cực tiểu của một tập mã [dmin]: khoảng cách Hamming nhỏ
nhất giữa hai từ mã bất kỳ thuộc tập mã.
Ví dụ: Cho bộ mã X gồm 4 từ mã :
X1 = 1011; X2 = 1100; X3 = 1110; X4 = 0010 => dmin = 1
❖ Mã tuyến tính: cộng modulo 2 của bất kỳ 2 từ mã nào cũng là một từ mã hợp
lệ.
❖ Mã có tính hệ thống: từ mã được chia thành 2 phần
bit thông tin và bit kiểm tra.

7
Chương 5
MÃ HÓA KÊNH
5.3 Một số mã phát hiện lỗi và sửa lỗi đơn giản:
❖ Xét một khối n bit, giả sử lỗi xảy ra ngẫu nhiên, độc lập thống kê. Khi xác
suất sai một bit là α thì xác suất sai i bit trong n bit là:

5.3.1 Mã lặp (Repetition Code):


⮚ Mỗi bit được biểu diễn bằng từ mã gồm n bit giống nhau
Ví dụ: Mã lặp 3: bit 1 => 111; bit 0 => 000
⮚ Với hệ thống ARQ:
• Khi thu được từ mã khác 111 hay 000 => phát hiện lỗi xảy ra => yêu cầu
truyền lại.
• Xác suất không phát hiện được lỗi: P(3,3) = α3.
⮚ Với hệ thống FEC: giả sử dùng luật đa số để sửa lỗi (VD: 001=>0; 101=>1)
• Khi thu được từ mã khác 111 hay 000 => phát hiện lỗi xảy ra => sửa lỗi.
• Xác suất giải mã sai: P(2,3) + P(3,3) = 3α2 - 2α3
8
Chương 5
MÃ HÓA KÊNH
5.3 Một số mã phát hiện lỗi và sửa lỗi đơn giản (tt):
5.3.2 Mã kiểm tra chẵn lẻ ( Parity Check Code):
⮚ Từ mã n bit gồm (n-1) bit tin tức và 1 bit kiểm tra
⮚ Bit kiểm tra được chọn tùy vào kiểm tra chẵn hay kiểm tra lẻ.
• Mã kiểm tra chẵn: chèn bit sao cho (Σ bit 1) là chẵn
• Mã kiểm tra lẻ: chèn bit sao cho (Σ bit 1) là lẻ
⮚ Chỉ phát hiện lỗi, không sửa được lỗi
⮚ Khi số bit lỗi là chẳn => không phát hiện được.
Xác suất không phát hiện được lỗi là:

⮚ Đơn giản, thích lợp trong môi trường ít nhiễu.

9
Chương 5
MÃ HÓA KÊNH
Chương 5
MÃ HÓA KÊNH
5.4 Mã khối tuyến tính (Linear Block Code):
⮚ Dữ liệu nhị phân được chia thành từng khối k bit.
⮚ Bộ mã hóa khối sẽ ánh xạ khối k bit tin tức thành khối n bit (từ mã mã hóa X)
⮚ Tập hợp 2k từ mã khác nhau có chiều dài n tạo lập nên bộ mã khối (n,k).
⮚ Tốc độ mã hóa:

11
Chương 5
MÃ HÓA KÊNH

5.4 Mã khối tuyến tính (Linear Block Code):


5.4.1 Quá trình mã hóa:
⮚ Giả sử vector M chứa k bit tin tức: M = [m1,m2,m3,…,mk]
và vector C chứa q = n – k bit kiểm tra: C = [c1,c2,c3,…,cq]
=> Vector từ mã của mã khối tuyến tính (n,k) là:
X = [M | C] = [m1,m2,…,mk|c1,c2,…,cq]
⮚ Quy luật tạo từ mã mã hóa X:

trong đó: G là ma trận sinh có cấu trúc như sau:

với: Ikxk: là ma trận đơn vị và ma trận P như sau:


12
Chương 5
MÃ HÓA KÊNH
5.4.1 Quá trình mã hóa (tt):
⮚ Xác định giá trị các bit kiểm tra:

❖ Mã Hamming:
⮚ Mã Hamming là mã khối tuyến tính với: số bit kiểm tra q ≥ 3 và:
chiều dài từ mã: n = 2q -1; k = n-q
⮚ Tốc độ mã:

⮚Ví dụ mã Hamming (7,4); (15,11); vv…


13
Chương 5
MÃ HÓA KÊNH
5.4.1 Quá trình mã hóa (tt):
❖ Sơ đồ mạch mã hóa:
⮚ Mỗi khối các bit tin tức đưa vào khối phát cũng được tải vào thanh ghi dịch.
⮚ Các giá trị trong thanh ghi dịch này được kết nối đến các cổng EX-OR để tạo
các bit kiểm tra.
⮚ Sau khi các bit tin được đưa ra ngoài, khóa K chuyển, đưa các bit kiểm tra ra.
⮚ Một bộ đệm ngõ vào sẽ giữ
khối các bit tin tức kế tiếp trong
khi các bit kiểm tra được dịch
ra ngoài.
⮚ Quá trình này tiếp tục
được lặp lại cho khối các
bit tin tức kế tiếp.

14
Chương 5
MÃ HÓA KÊNH
5.4.1 Quá trình mã hóa (tt):
Ví dụ: Quá trình mã hóa với mã Hamming (7,4). Cho ma trận:
a. Vẽ mạch mã hóa.
b. Giả sử khối tin tức cần truyền đi 0111. Xác định từ mã mã hóa X?
Lời giải:
a. Mạch mã hóa như hình bên
b. Vector từ mã:
X = [m1,m2,m3,m4,c1,c2,c3]
với:

Khi M = [0,1,1,1] => c0 = 0; c1 = 1; c2 = 0


Vậy, vector từ mã X: X = [0,1,1,1,0,1,0]
=> từ mã mã hóa: 0111010
15
Chương 5
MÃ HÓA KÊNH
5.4.2 Quá trình giải mã:
⮚ Sử dụng phương pháp giải mã syndrome
⮚ Gọi Y là vector từ mã thu được khi vector từ mã phát đi là X.
Lúc đó: Y = X + E, với E = [e1,e2,e3,…,en]: vector lỗi.
❖ Quá trình phát hiện lỗi:
⮚ Định nghĩa Hqxn là ma trận kiểm tra: H = [PT|Iqxq]
Lúc đó: XHT = [0,0,…,0].
⮚ Tính giá trị syndrome S1xq: S = YHT
⮚ Sử dụng tính chất: XHT = [0,0,…,0]. Suy ra:
• Nếu S = [0,0,…,0]: máy thu không phát hiện được lỗi (không có lỗi xảy ra
hay lỗi xảy ra mà không phát hiện được)
• Nếu S ≠ [0,0,…,0]: máy thu phát hiện được lỗi
=> Bộ giải mã trong hệ thống ARQ ( chỉ phát hiện lỗi ) chỉ là bộ tính toán giá trị
syndrome.
16
Chương 5
MÃ HÓA KÊNH
7.4.2 Quá trình giải mã (tt):
❖ Quá trình phát hiện lỗi và sửa lỗi:
⮚Tính giá trị syndrome: S = YHT = (E+X)HT = EHT + XHT = EHT
� Giá trị syndrome chỉ phụ thuộc vào các vector mẫu lỗi E mà không phụ thuộc
vào vector từ mã phát đi X.
⮚ Vì E có kích thước 1xn => có 2n vector mẫu lỗi khác nhau.
S có kích thước 1xq => có 2q giá trị syndrome khác nhau.
⮚ Chọn 2q-1 mẫu lỗi thường xảy ra nhất. Lập bảng quan hệ giữa E và S.
⮚ Từ đó, ta có quá trình giải mã như sau:
• Phía thu xây dựng ma trận kiểm tra H dựa trên ma trận P đã biết.
• Lập bảng quan hệ giữa S và E.
• Khi nhận được từ mã Y, máy thu tính giá trị syndrome: Y = XHT
• Dựa vào giá trị của S, tra bảng quan hệ S – E, tìm được vector E.
• Tính X’ = X + E => từ mã thu được X’ => dữ liệu thu được M’.
17
Chương 5
MÃ HÓA KÊNH
7.4.2 Quá trình giải mã (tt):
❖ Sơ đồ mạch giải mã syndrome:
❖ Đánh giá khả năng sửa lỗi:
⮚ Với từ mã n bit:
Cn1 : mẫu lỗi đơn
Cn2 : mẫu lỗi kép
……..
Cnt : mẫu lỗi t bit
=> Muốn mạch giải mã có khả năng
sửa mẫu lỗi sai đến t bit thì phải chọn n và q thỏa điều kiện sau:

Ví dụ: muốn sửa lỗi đơn thì phải chọn n và q thỏa: 2q-1≥n

18
Chương 5
MÃ HÓA KÊNH
5.4.2 Quá trình giải mã (tt):
❖ Giải mã syndrome cho mã Hamming (7,4):
⮚ Với mã Hamming: n = 2q -1 => mã Hamming chỉ sửa được các mẫu lỗi đơn.
⮚ Xây dựng quan hệ S – E:
• Giả sử lỗi xảy ra ở bit thứ j trong từ mã => vector mẫu lỗi E có ej=1; ei ≠ j=
0
• Mặc khác, ta có: S = EHT = (HT)j => giá trị của S giống với hàng thứ j của
HT
• Suy ra cách xây dựng bảng quan hệ S – E.
Ví dụ: (Tiếp ví dụ phần giải mã, dữ liệu cần truyền đi: M = 0111)
Quá trình mã hóa với mã Hamming (7,4). Cho ma trận:
a. Lập bảng quan hệ S – E.
b. Thực hiện quá trình giải mã syndrome khi từ mã thu được là:
i/ Y = 0111010; ii/ Y = 0101010
iii/ Y = 0110110 19
Chương 5
MÃ HÓA KÊNH
5.4.2 Quá trình giải mã (tt):
Lời giải:
❖ Mã Hamming(7,4): n = 7; k = 4; q = 3
a. Từ ma trận P, ta xây dựng ma trận HT:
⮚ Giá trị của S giống với hàng thứ j của
ma trận HT khi lỗi xảy ra ở vị trí j.
Do vậy, ta có bảng sau: S E
0 0 0 0000000
1 0 1 1000000
1 1 1 0100000
1 1 0 0010000
0 1 1 0001000
1 0 0 0000100
0 1 0 0000010
0 0 1 0000001 20
Chương 5
MÃ HÓA KÊNH

5.4.2 Quá trình giải mã (tt):


Lời giải:
❖ Mã Hamming(7,4): n = 7; k = 4; q = 3
b. Tìm dữ liệu thu:
Với Y = 0111010: (không có lỗi xảy ra)
⮚ Tính giá trị syndrome:
⮚ Tra bảng quan hệ S-E:
S =[0 0 0] => E = [0 0 0 0 0 0 0]
⮚ Suy ra:
X’ = Y + E = [0 1 1 1 0 1 0]
⮚ Suy ra dữ liệu:
M’ = [0 1 1 1]
=> chuỗi bit thu được 0111: đúng với dữ liệu phát vì không có lỗi xảy ra
21
Chương 5
MÃ HÓA KÊNH

Với Y = 0101010: (có lỗi đơn xảy ra)


⮚ Tính giá trị syndrome:
⮚ Tra bảng:
S =[1 1 0] => E = [0 0 1 0 0 0 0]
⮚ Suy ra: X’ = Y + E = [0 1 1 1 0 1 0]
⮚ Suy ra dữ liệu: M’ = [0 1 1 1]
=> chuỗi bit thu được 0111: chính xác, đã sửa được lỗi đơn.
Với Y = 0110110: (có lỗi kép xảy ra)
⮚ Tính giá trị syndrome:
⮚ Tra bảng: S =[1 1 1] => E = [0 1 0 0 0 0 0]
⮚ Suy ra: X’ = Y + E = [0 0 1 0 1 1 0]
⮚ Suy ra dữ liệu: M’ = [0 0 1 0]
=> chuỗi bit thu được 0010: không chính xác, không sửa được lỗi kép.
22
Chương 5
MÃ HÓA KÊNH
5.5 Mã tích chập (Convolutional Code):
⮚ Thực hiện việc mã hóa dòng dữ liệu một cách liên tục chứ không chia thành
khối như mã khối tuyến tính.
⮚ Giá trị các bit ngõ ra là sự kết hợp tuyến tính của bit vào hiện tại và các bit
vào trước đó đã được lưu trong thanh ghi => hệ có nhớ.

Dữ liệu vào Mã tích chập Dữ liệu mã hóa


m1,m2,m3,… (n,k,L) x1,x2,x3,…

Trong đó: k: số ngõ vào; n: số ngõ ra


L: số phần tử nhớ trong thanh ghi dịch;
Kc = L+1: chiều dài giới hạn của mã tích chập
⮚ Tốc độ mã:

⮚ Ký hiệu mã tích chập: (n,k,L) ví dụ: mã tích chập (3,2,1), (2,1,2),vv…


(R,Kc) ví dụ: mã tích chập (2/3, 2), (1/2,3),vv… 23
Chương 5
MÃ HÓA KÊNH
5.5 Mã tích chập (tt):
5.5.1 Quá trình mã hóa:
a. Sơ đồ mạch mã hóa tích chập:
❖ Sơ đồ tạo các bit mã hóa trong mã tích chập:
⮚ Giá trị bit ngõ ra:

trong đó: g = (g0,g1,…,gL): đa thức sinh


⮚ Nhận xét:
• xj: phụ thuộc vào giá trị bit
ngõ vào hiện tại mj và L bit trước đó đã lưu trong thanh ghi.
• Mỗi bit tin tức sẽ ảnh hưởng đến (L+1) bit ngõ ra khi nó được dịch trong
thanh ghi.

24
Chương 5
MÃ HÓA KÊNH
a. Sơ đồ mạch mã hóa tích chập (tt):
❖ Mạch mã hóa:
Xét mã tích chập (2,1,2) có các đa thức sinh:
g(1) = (1,1,1); g(2) = (1,0,1)
⮚ Giá trị các bit ngõ ra:
;

⮚ Chuỗi ngõ ra: x(1)1 x(2)1 x(1)2 x(2)2


❑ Dạng biểu diễn khác:
g(1) = (1,1,1) => g(1) (D) = 1+ D + D2
g(2) = (1,0,1) => g(2) (D) = 1 + D2
Ví dụ: Vẽ sơ đồ mã hóa theo 2 dạng
của mã tích chập (3,1,2) với:
g(1) = (1,0,1); g(2) = (1,0,1); g(3) = (1,1,1)
25
Chương 5
MÃ HÓA KÊNH
b. Các dạng biểu diễn của mã tích chập (tt):
❖ Sơ đồ lưới mã (Code Trellis) và giản đồ trạng thái (State Diagram):
⮚ Lập bảng chuyển trạng thái:
Giá trị ngõ
mj
vào
0 1
mj-2 mj-1

a:00 a/00 b/11 Giá trị ngõ


Trạng thái b:01 c/10 d/01 ra
hiện tại c:10 a/11 b/00
d:11 c/01 d/10 Trạng thái
kế

⮚ Sơ đồ lưới mã Giải đồ trạng thái

26
Chương 5
MÃ HÓA KÊNH
5.5.1 Quá trình mã hóa (tt):
c. Thực hiện việc mã hóa:
⮚ Xét mã tích chập (2,1,2). Giả sử chuỗi dữ liệu vào: 001101. Xác định chuỗi dữ
liệu ngõ ra ?
Bit đuôi
⮚ Quá trình mã hóa: thêm vào

Ngõ vào: 0 0 1 1 0 1 0 0
Trạng thái: a a a b d c b c a
Ngõ ra: 00 00 11 01 01 00 10 11

=> Chuỗi dữ liệu ngõ ra: 0000110101001011

27
Chương 5
MÃ HÓA KÊNH
5.5.2 Quá trình giải mã:
⮚ Sử dụng phương pháp giải mã Viterbi
⮚ Phương pháp giải mã Viterbi:
• Xác định dữ liệu dựa trên xác định đường mã tối ưu.
• Xác định đường mã được chọn = đường mã có chỉ số đo nhỏ nhất.
• Chỉ số đo của đường mã = tổng chỉ số đo của các nhánh thuộc đường mã.
• Chỉ số đo của mỗi nhánh = khoảng cách Hamming giữa ngõ ra trong sơ đồ
lưới mã với dữ liệu thu tương ứng.
⮚ Xét quá trình giải mã Viterbi cho mã tích chập (2,1,2)
• Phía phát cần truyền bản tin gồm 12 bits.
• Chuỗi dữ liệu thu được ở phía thu gồm 24 bits như sau:
Y = 110111000110001111101100
⮚ Quá trình thực hiện như sau:

39
Chương 5
MÃ HÓA KÊNH
5.5.2 Quá trình giải mã (tt):
⮚ Xây dựng lưới mã theo thời gian như sau:

⮚ Bắt đầu từ trạng thái a (có giá trị chạy (running metric) bằng 0), lần lượt tính
chỉ số đo (metric) của các nhánh có thể có dựa vào dữ liệu thu và sơ đồ lưới mã.

40
Chương 5
MÃ HÓA KÊNH
5.5.2 Quá trình giải mã (tt):
⮚ Tính chỉ số đo của từng nhánh dựa vào khoảng cách Hamming.
⮚ Tính giá trị chạy tại mỗi node bằng cách cộng giá trị chạy của node trước đó
với chỉ số đo của nhánh chuyển trạng trạng thái giữa hai node này

41
Chương 5
MÃ HÓA KÊNH

5.5.2 Quá trình giải mã (tt):


⮚ Lặp lại quá trình tính toán cho tất cả các chuyển trạng thái có thể có tại các
node.

42
Chương 5
MÃ HÓA KÊNH
5.5.2 Quá trình giải mã (tt):
⮚ Lặp lại quá trình tính toán như phần trước.
⮚ Khi có nhánh đến cùng một node, nhánh nào tạo ra giá trị chạy tại node đó lớn
hơn sẽ bị loại bỏ.

43
Chương 5
MÃ HÓA KÊNH
5.5.2 Quá trình giải mã (tt):
⮚ Quá trình được lặp lại cho đến khi hết dữ liệu.
⮚ Từ trạng thái cuối cùng (trạng thái a), đi ngược lại (từ phải sang trái) để xác
định đường mã còn tồn tại => đây là đường mã tối ưu.
⮚ Từ đường mã tối ưu, ta xác định được dữ liệu thu.
⮚ Ta thu được sơ đồ đầy đủ như sau:

⮚ Chuỗi dữ liệu thu được: 110111001000 44


Thank you

Further question?

You might also like