Tải bản đầy đủ (.doc) (49 trang)

BÁO CÁO XỬ LÝ TÍN HIỆU SỐ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (453.77 KB, 49 trang )

CHƯƠNG 1: Vai trò của mã hóa trong hệ thống thông tin.
Mục tiêu của chương này là tóm tắt một số kiến thức cần thiết của lý thuyết
thông tin và giới thiệu nguyên tắc cơ bản của mã hóa chống nhiễu nói chung, để
làm cơ sở tìm hiểu về mã xoắn mà ta nghiên cứu trong đồ án này.

1.1. Cấu trúc hệ thống thông tin số
Các hệ thống thông tin số đều có một cấu trúc chung và sự hiểu biết của cấu
trúc này là hữu ích trong việc tìm hiểu các hệ thống mã hóa và điều chế. Cấu trúc
đơn giản nhất gồm máy phát Tx, kênh và máy thu Rx được biểu diễn như ở hình
1.1 và có thể được chia chi tiết hơn nữa. Ta có một nguồn thông tin số sinh ra các
số nhị phân, nghĩa là đầu ra của nó là chuỗi các số 0 và 1. Sau nguồn tin là bộ mã
hóa nguồn, bộ mã hóa kênh và bộ điều chế.

Tx

Kênh
Rx
thông tin
Hình 1.1: Cấu trúc đơn giản của hệ thống thông tin số
Hệ thống thông tin số hiện đại có sơ đồ khối đơn giản được minh họa như trên
Hình 1.2. Nguồn tin có thể là tương tự hoặc số được truyền qua toàn bộ hệ thống
tới máy thu tin. Nếu nguồn tin là tín hiệu tương tự thì chúng phải qua bộ biến đổi
A/D trong bộ mã hóa nguồn để chuyển thành tín hiệu số. Nếu nguồn tin là số
(thường là ở dạng bit nhị phân) thì không cần quá trình này. Trong nguồn tin số
có thể có các bit dư không cần thiết và nhiệm vụ của bộ mã hóa nguồn là loại bỏ
các bit dư này hay còn gọi là nén dữ liệu.

Nguồn Tin

Mã Nguồn
Tx



Mã Kênh

Điều Chế
Kªnh

th«ng tin

Rx

1
H×nh 1.1: CÊu tróc ®¬n gi¶n cña hÖ thèng th«ng tin sè

Kênh


Tin Tức
Khôi Phục

Giải Mã
Giải Mã
Giải Điều
Nguồn
Kênh
Chế
Hình 1.2: Mô hình hệ thống thông tin số.
Chức năng của các khối:
Khối mã nguồn và giải mã nguồn tín hiệu, thực hiện nén và giải nén tin
nhằm giảm tốc độ bít để giảm phổ chiếm của tín hiệu.
Khối Mã kênh và giải mã kênh nhằm chống nhiễu và các tác động xấu khác

của đường truyền dẫn.
Dữ liệu sau khi bị nén được đưa tới bộ mã kênh, ngược lại với khối mã nguồn,
khối mã kênh thực hiện thêm các bit dư cần thiết và kết hợp với khối giải mã
kênh ở đầu thu để phát hiện và sửa lỗi do tác động của kênh truyền. Dựa vào các
bit dư, đầu thu có thể phát hiện bít tin sai và yêu cầu tự động phát lại (ARQ) hoặc
tự động sửa sai (FEC).
Bộ điều chế và giải điều chế có chức năng biến đổi chuỗi bít tin thành các
chuỗi dạng sóng (các symbol) phù hợp với kênh truyền bởi vì kênh truyền trên
thực tế là kênh dạng sóng không thể truyền trực tiếp tín hiệu số. Dưới tác động
của kênh truyền, chuỗi đầu ra của bộ giải điều chế có thể không giống hệt như
đầu vào của bộ điều chế, nhiệm vụ của bộ giải mã kênh là dựa vào các bít tin dư
đã thêm vào đầu phát để giải mã thành chuỗi tin có tỷ lệ lỗi nhỏ nhất.
Trong nhiều hệ thống, khối mã kênh được kết hợp với khối điều chế thành một
khối được gọi là mã hóa dạng sóng. Các dạng tiêu biểu của chúng là: MPSK,
QPSK, QAM, TCM… với mục đích tăng hiệu quả sử dụng phổ băng tần. Mô
hình kết hợp như vậy thường có dạng như sau:

c

X
Mã Kênh

Kênh truyền
PYX(Y/X)
2

Y

c
Giải mã kênh



Nguồn tin

Tin tức
Khôi phục
Hình 2.4 Mô hình kênh kết hợp

Trên đây là mô hình của hệ thống kết hợp khối điều chế và giải điều chế thành
một khối gọi là mô hình kênh kết hợp gồm đầu vào, đầu ra rời rạc theo thời gian,
xác suất chuyển dịch liên quan giữa đầu vào và đầu ra. Thực tế các xác suất
chuyển dịch này có thể thay đổi, tương quan với nhau theo thời gian và kênh có
đặc tính như vậy ta gọi là kênh có nhớ. Ví dụ điển hình của kênh có nhớ chính là
kênh thông tin di động . Do sự phức tạp của các bộ mã, trong phạm vi nghiên cứu
của đề tài này chỉ xét mô hình kênh là kênh tạp trắng cộng tính (AWGN) hạn chế
công suất phát có băng thông vô hạn (kênh lý tưởng). Đầu ra của kênh được ký
hiệu là biến Y là đầu vào X cộng với tạp âm nhiệt n: Y=X+n trong đó n là biến
ngẫu nhiên có phân bố Gauss, phương sai σ², kỳ vọng bằng 0. Khi đó, nếu biến
ngẫu nhiên X có phân bố Gauss, phương sai σ², kỳ vọng bằng x thì đầu ra kênh Y
cũng là biến ngẫu nhiên Gauss, phương sai σ², kỳ vọng bằng x với hàm mật độ
Mã Kênh
phổ xác suất là: Mã

PY/X(y/x) =

(1.1)

lưới

khối




Mã không
1.2. tuyến
Bộ mã
tínhhóa kênh tuyến tính
1.2.1 Mục đích của bộ mã hóa kênh

Mã tuyến tính

không
Mục đích của bộ mã hóa kênh là đưa khả năng sửa lỗi vào các bít tínMã
hiệu

( mã xoắn)

Tuyến tính

đầu ra bộ mã hóa nguồn để chống lại các lỗi do kênh gây ra. Để đạt được điều
này, một vài lượng thông tin dư cần được thêm vào đầu ra của bộ mã hóa nguồn.
Mã cyclic

Trên đầu ra của nguồn các bít kiểm tra được thêm vào các dãy bít dữ liệu có độ
dài bằng nhau, được gọi là bản tin. Bằng cách này lượng dư thêm vào bản tin là

3


điều khiển được và phía thu biết được cấu trúc của lượng dư này. Đây là sự khác

biệt với độ dư của thông tin gốc là không điều khiển được. Tùy theo cách đưa
thêm các bít kiểm tra vào chuỗi dữ liệu, kỹ thuật mã có thể được phân thành mã
khối và mã lưới như ở hình 1.4. Cả hai kỹ thuật này đều có thể xem như việc ánh
xạ từ một không gian của các dãy các ký tự rời rạc đầu vào được gọi là các bản
tin (Message), tới một không gian của các dãy các ký tự rời rạc đầu ra được gọi là
các từ mã (code-word).

Hình 1.4: Phân loại các kỹ thuật mã hóa kênh
Chúng ta xem một ví dụ đơn giản với lênh nhị phân đối xứng (BSC) và mã
lặp (3,1) biểu diễn trên hình 1.5.

Hình 1.5: BSC và mã lặp (3,1)

4


Lưu đồ truyền dẫn là một lưu đồ truyền dẫn tổng hợp trên kênh có các lỗi
truyền dẫn xảy ra với xác suất p. Bộ mã hóa kênh có kênh thêm vào 2 bít kiểm
tra để nhận biết symbol nguồn, và kết quả là 3 bít của từ mã được phát lần lượt
trên kênh từng bít một. Chúng ta có thể xem việc truyền dẫn như là việc sử dụng
kênh BSC trên hình 1.5 liên tục ba lần. Nếu (0,1,0) là ba bít đầu ra của 3 lần sử
dụng BSC. Ta quyết định là 3 bít (0,0,0) được phát. Và nếu 0 đúng là bít nguồn
được phát đi thì chúng ta sẽ sửa được một lỗi trên kênh truyền ở vị trí thứ 2. Như
vậy với mỗi bít đầu vào, bộ mã hóa của chúng ta cho ba bít và đầu ra của kênh
BSC dựa trên luật đa số để sửa một lỗi trên kênh một cách đơn giản. Ta có thể mô
tả việc giải mã sử dụng hình lập phương được biểu diễn như trên hình 1.6. Trong
ví dụ trình bày ở trên ta có khả năng sửa lỗi trên kênh truyền t=1 tương ứng với
khoảng cách Hamming cực tiểu giữa các dừ mã d Hmin chính là số cạnh ít nhất nối
giữa hai điểm 000 và 111 của hình lập phương.


Hình 1.6: Việc giải mã như các điểm trên hình lập phương
Việc phát hiện lỗi cũng là một vấn đề quan trọng trong mã hóa kênh. Chúng
ta có thể yêu cầu qua một kênh hồi tiếp để truyền lại từ mã phát hiện có lỗi. trong
ví dụ, nếu có thêm một lỗi nữa thì có thể nhận được (0,1,1) khi (0,0,0) được phát.
5


Nhưng không có khả năng phát hiện mẫu lỗi này do bộ giải mã quyết định (1,1,1)
như một từ mã được phát. Rõ ràng một lỗi đơn luôn có thể được phát hiện. Trong
trường hợp tổng quát [ dHmin/2] lỗi truyền luôn có thể được phát hiện, và với ví dụ
trên thì chỉ có một lỗi phát hiện được, ở đây [x] là phần nguyên nhỏ hơn hoặc
bằng x. Tuy nhiên nếu ta sử dụng 1→(1,1,1,1) và 0→(0,0,0,0) ta có dHmin=4 và do đó 2
lỗi được phát hiện nhưng cũng chỉ có thể sửa được một lỗi. Chú ý ở đây 4 bít
phát ra chỉ mang một bít thông tin và ta nói rằng tốc độ mã là 1/4. Và mã đơn
giản hơn có tốc độ 1/3 có khả năng phát hiện được lỗi nhỏ hơn so với mã tốc độ
1/4 vừa nêu. Với mã hóa thông thường, mã tốc độ 1/3 được phát bởi sử dụng
kênh BSC 3 lần cho mỗi bít thông tin. Để thực hiện điều này trong thực tế cần
tăng tốc độ của symbol phát lên 3 lần. Điều này sẽ làm tăng dải thông yêu cầu
của kênh truyền.

1.2.2 Cơ sở của mã hóa kênh
Tại sao phải giám sát và điều khiển lỗi?
Ý tưởng cơ bản của lý thuyết thông tin mà thông tin số là chủ yếu, tương
đương tạo ra, phát đi và thu lại chọn một cách ngẫu nhiên các số nhị phân hay các
bít. Khi các bít được phát trên kênh thông tin hoặc lưu trữ trong bộ nhớ thì chúng
có thể bị lỗi do ISI hoặc nhiễu tạp… vv gây ra. Shanon đã chỉ ra rằng việc truyền
dẫn thông tin từ nguồn, qua kênh tới đích luôn luôn có thể được tách riêng để
nghiên cứu và thực hiện mà không mất tính tối ưu của nó, bao gồm hai phần:
Biễu diễn tín hiệu đầu ra của nguồn là một dãy các bít (mã hóa nguồn) và phát
các bít này độc lập ngẫu nhiên trên kênh (mã hóa kênh). Phần mã hóa kênh có thể

được thiết kế một cách độc lập với phần mã hóa nguồn, điều đó làm đơn giản cho
việc sử dụng cùng một kênh thông tin cho nhiều nguồn tin khác nhau.
Để trình bày lý thuyết mã hóa kênh của Shannon, mỗi kênh thông tin được
mô tả bằng các tham số: Ct là dung lượng của kênh và R t tốc độ truyền dữ liệu

6


được phát một cách tùy ý trên kênh nếu và chỉ nếu R tđều được đo bằng bít trên giây (b/s). Shannon đã chỉ ra rằng với một giá trị cụ thể
của tỷ số tín/tạp (SNR), giá trị này không quan trọng lắm miễn là nó đủ lớn và R t
không lớn hơn Ct, điều quan trọng là các bít thông tin được mã hóa như thế nào.
Các bít thông tin không nên phát từng bít một độc lập với các bít khác tại từng
thời điểm mà dãy bít thông tin nên được mã hóa để mỗi bít thông tin có liên quan
đến một vài bít khác cùng được phát trên kênh. Ý tưởng này là cơ sở ra đời lý
thuyết mã hóa. Mã hóa điều khiển lỗi có thể bảo vệ được nguồn dữ liệu số không
bị lỗi trong quá trình giải mã.
*Khi thực hiện mã hóa chúng ta được những lợi gì?
Khi sử dụng mã hóa sẽ rất lãng phí thông tin nếu chúng ta dùng quyết định
cứng (hard decision). Vì mỗi bít thông tin đều có liên quan đến các bít khác trên
kênh, bộ giải mã chỉ dựa vào giá trị của Z i (sử dụng dấu Zi) để chỉ ra symbol thu
được là bít nào. Một giải pháp thực tế hay được sử dụng đó là giải mã bằng quyết
định mềm (soft-decision). Đầu ra của bộ điều chế đưa đến bộ giải mã không được
lượng tử hóa trường hợp này được gọi là "giải mã quyết định mềm không lượng
tử hóa" (unquatized soft – decision decoding) hoặc đầu ra bộ điều chế được
lượng tử hóa thành Q mức với Q>2,trường hợp này gọi là "giải mã dùng quyết
định mềm". Lúc đó một dãy bít thông tin được khôi phục không như trước đây
quyết định từng bít một. Ví dụ quyết đinh mềm lượng tử hóa 3 bít, các giá trị của
Zi được chia thành 8 khoảng và có 7 mức ngưỡng, chúng ta sẽ nhận được một
kênh rời rạc không nhớ lượng tử hóa mềm với 8 mức. Ưu điểm của lượng tử hóa

Q mức (Q >2) so với trường hợp không lượng tử hóa (analog) đó là tất cả các
mạch có thể hoàn toàn thực hiện bằng các mạch số. Do đó nó là một dạng biểu
diễn gần giống với giải mã quyết định mềm không lượng tử hóa.
Shanon đã chỏ ra rằng, dung lượng của kênh không nhớ Gaussian với mật
độ phổ tạp âm hai phía No/2 và băng tần không giới hạn là:
7


S
)
Ct ∞ = wlim
W
log
(1+
→∞
N 0W
S
bít/s
No ln 2

=

(1.2)

Trong đó W là độ rộng băng tần và S là công suất tín hiệu. Nếu chúng ta phát
K bít thông tin trong khoảng thời gian τ giây ( τ là bội của T) ta có:
Eb =


K


(1.3)

Vì tốc độ truyền dữ liệu Rt=K/ τ bít/s nên năng lượng trên một bít có thể được
viết:
S

Eb = R
t

(1.4)

Kết hợp (1.1)
và (1.3) ta được:
10-2


Ct
Eb
=
Rt
N 0 ln 2

Pb

(1.5)

BPSK
không mã


Theo lý thuyết mã hóa của Shannon, đối với hệ thống thông tin thực phải có
Rt < Ct ∞ . Do vậy
từ (1.5) ta có:
10-3
Eb
> ln 2 = 0,69 = −1,6dB
N0

(1.6)

10-4

Giải mã quyết
định cứng
0.4 dB

10-5

Giới hạn của
Shannon
-1,6 dB

10-6

-2

0

2


4

8
(dB)

6

8

10

12
Eb/N0


Hình 1.7. Giới hạn dung lượng và vùng tăng ích mã hóa
Đây là giới hạn Shannon cơ sở và được phát biểu như sau:
"Trong một hệ thống bất kỳ đảm bảo thông tin tin cậy trong sự có mặt của
nhiễu Gaussian thì tỷ số tín trên tạp âm Es/No không thể nhỏ hơn -1,6dB"
Mặt khác miễn là tỷ số E s/No không vượt quá giới hạn của Shannon (-1,6 dB),
thì theo lý thuyết mã hóa kênh của Shannon đảm bảo tồn tại một hệ thống (có lẽ
là rất phức tạp) để truyền dẫn thông tin tin cậy trên kênh.
Trong hình 1.7 chúng ta đã vẽ giới hạn cơ sở của Shannon (1.6) cùng với
đường cong tỷ lệ lỗi bít đối với BPSK không mã. Tại tỷ lệ lỗi bít 10 -5, băng tần vô
hạn với kênh Gauss yêu cầu tỷ số E b/No tối thiểu là 9,6dB. Do đó tại tỷ lệ lỗi bít
này chúng ta nhận được độ lợi mã hóa là 11,2dB.
Nếu chúng ta hạn chế với việc sử dụng quyết định cứng để truyền thông tin
tin cậy phải có
Eb
π

>
ln2 = 1.09 = 0,4 dB
N0
2

9

(1.7)


Theo dung lượng thì sử dụng quyết định mềm lợi hơn 2 dB so với dùng
quyết định cứng.
Mặc dù trong thực tế không thể nhận được độ lợi mã hóa 11,2 dB như theo
lý thuyết, song khả năng nhận được từ 2 đến 8 dB là hoàn toàn có thể.

1.3.

Giới thiệu về mã khối

Để đơn giản chúng ta sẽ chỉ xét với mã khối nhị phân. Ở mã khối, toàn bộ
dãy bít thông tin dài được chia thành các khối nhỏ, mỗi khối có độ dài K bít, các
khối này được gọi là các bản tin (message) và chúng được ký hiệu là u=u 0u1..uk-1.
Mã khối nhị phân B ký hiệu (N,K) là một tập M=2 K từ mã gồm N thành phần (Ntyple) v=v0v1…vN-1 được gọi là các từ mã (code-word), N gọi là độ dài khối và
R=

log M
= K/N
N

(1.8)


gọi là tốc độ mã hóa. Tốc độ truyền dữ liệu (bít/giây) nhận được bằng cách
nhân tốc độ mã (1.8) với symbol kênh được phát trong một giây (symbol/s) ta
có:
Rt =

R
T

(1.9)

Ví dụ: Tập B={000,011,101,110} là một mã (3,2) với 4 từ mã có tốc độ mã
hóa là R=2/3.
Bộ mã hóa đối với mã khối (N,K) là ánh xạ 1-1 từ tập M=2 K các bản tin tới
tập các từ mã B, như ở ví dụ 2.
Tốc độ mã R=K/N được đo bằng tỷ số giữa các bít thông tin trên các bít của
từ mã để biểu diễn thông tin. Phần dư 1-R = (N-K)/N được sử dụng để phát hiện
và sửa lỗi.
Giả sử rằng từ mã v tương ứng với bản tin u được gửi trên kênh BSC. Đầu
ra của kênh r=r0r1…rN-1 là dãy bít thu được là bộ giả mã chuyển.

10


Ví dụ:
u0u1

ν0 ν1 ν2

u0 u1


ν0v1v2

00

000

000

101

01

011

01

011

10

101

10

101

11

110


11

000

Từ mã thu được r (n-tuple) từ mã này có thể bị sai so với từ mã phát đi bởi
^

nhiễu tạp, ISI,... vv thành véc tơ u (K-typle) được gọi là bản tin ước lượng. Một
^

cách lý tưởng u sẽ hoàn toàn giống so với bản u đã gửi đi. Vì chỉ có sự tương
đương 1-1 giữa bản tin u và từ mã v, một cách tương đương chúng ta có thể xét từ
^

mã v tương ứng như là đầu ra bộ giải mã. Nếu từ mã v được phát, giải mã có lỗi
^
nếu và chỉ nếu v ≠ v. Ký hiệu PE là xác suất lỗi khối ta có:
^

PE = ∑ P(v ≠ v | r )P(r )

(1.10)

r

Trong đó r là từ mã thi được, P(r) hoàn toàn độc lập với nguyên tắc gải mã. Do
^

đó để giảm thiểu xác suất lỗi PE chúng ta phả làm cho P( v ≠ v | r ) nhỏ nhất với tất

^



^

cả r hoặc tương đương với việc làm cực đại hóa P( v | r ) = P( v = v | r ) với mọi r.
^

Do vậy để giải mã với xác suất lỗi khối P E nhỏ nhất thì ta phải chọn véc tơ u đầu
^

^

ra bộ giải mã tương ứng với v mà P(v/u) cực đại. Lúc đó v được lựa chọn
giống với từ mã gửi đi nhất ứng với r đã thu được. Bộ giải mã này được gọi là bộ
giải mã cực đại hóa xác suất hậu nghiệm. Sử dụng công thức xác suất của Bayes
ta có:
P(v | r) =

P (r | u ) P (u )
P(r )

11

(1.11)


Khi xác suất xuất hiện của các từ mã là bằng nhau và bộ giải mã lựa chọn từ
^


mã v với P(r | v)lớn nhất, bộ giải mã này được gọi là bộ giải mã tối ưu (ML). Tuy
nhiên trong từ mã ước lượng sai, có thể có một vài bít thông tin trong từ mã đó là
đúng. Vì vậy xác suất lỗi bít P b là đơn vị đo quan trọng nhất trong ứng dụng thực
tế. Nói chung Pb tính toán sẽ khó khăn hơn so với PE. Xác suất lỗi bít không chỉ
phụ thuộc vào mã đó tốt hay xấu mà còn phụ thuộc vào kênh truyền dẫn nữa
giống như xác suất lỗi khối PE và có thể sử dụng xác suất lỗi khối như một đơn vị
đo chỉ tiêu chất lượng.
Khoảng cách Hamming giữa hai từ mã r và v có độ dài N bít dH(r,v) được xác
định là số các vị trí mà trong đó các thành phần của chúng là khác nhau một cách
tương ứng.
Ví dụ: 10011 và 11000 dH=3
Khoảng cách Hamming là một đơn vị quan trọng trong lý thuyết mã hóa.
(i) dH(x, y) ≥ 0 dấu bằng xảy ra nếu và chỉ nếu x = y
(ii) dH (x, y) = dH(y, x) (đối xứng)
(iii) dH(x,y) ≤ dH(x, z)+dH(z, y) với mọi z
Trọng lượng Hamming của từ mã N-typle x = x0x1...xN-1 ký hiệu là ω H (x) , nó
được xác định là số các vị trí khác 0 của từ mã x.
Đối với kênh BSC một symbol phát được thu với xác suất lỗi chéo p. Do đó
^

với bộ giải mã tối ưu ta phải chọn ước lượng v của từ mã v với P(r/v) cực đại
nghĩa là:
^
max
v = arg v {P(r | v)}

(1.12)

Trong đó

P(r | v) = p

d H ( r ,v )

(1 − p )

N − d H ( r ,v )

Vì 0 < p < 1/2 đối kênh BSC nên ta có
12

 p 

= (1 − p) 
1 − p 
N

d H ( r ,v )

(1.13)


0<

p
<1
1− p

(1.14)


Do vậy làm cực đại hóa P(r | v) là tương đương với việc cực tiểu hóa dH(r, v).
Rõ rằng thấy giải mã tối ưu là tương ddowwng với việc giải mã theo cực tiểu
^

khoảng cách Hamming có nghĩa là lựa chọn bản tin ước lượng u ở đầu ra bộ giải
^

^

mã tương ứng với từ mã v là gần từ mã u đã phát đi với véc tơ r đã thu được.
Trong trường hợp tổng quát bộ giải mã phải so sánh r với tất cả M=2k=2RN từ
mã. Độ phức tạp của bộ giải mã tối ưu (ML) tăng theo hàm mũ với độ dài khối N.
Để dễ dàng trong phân tích và đơn giản trong thiết bị mã hóa và giải mã, chúng ta
chỉ xét các mã với cấu trúc tuyến tính.
Một mã tuyến tính nhị phân tốc độ R=K/N là một không gian con K chiều của
không gian véc tơ F2N. Mỗi một từ mã có thể được viết như một tổ hợp tuyến tính
của các véc tơ độc lập tuyến tính g1, g2, ..., gK, trong đó gi ∈ F 2N được gọi là cơ
sở của mã tuyến tính B, ta gọi ma trận G(K x N) có K hàng g1, g2, ..., gK có N
cột là ma trận sinh của B.
 g 11

g
G =  21
...

g
 K1

g 21
g 22

...
gK2

... g 1N
... g 2 N
... ...
... g KN









(1.15)

Lúc đó các bít thông tin u = u0u1...uK-1 được mã hóa thành từ mã v =v0v1...vN-1
theo nguyên tắc mã hóa tuyến tính v=u.G và G thường được gọi là ma trận mã
hóa.

1.4. Kết luận chương
Trong chương này, ta đã trình bày vấn đề cơ bản của lý thuyết thông tin và
mã hóa kênh. Cơ sở lý thuyết để thực hiện mã hóa kênh, vị trí của mã kênh trong
hệ thống thông tin số và phân loại mã kênh. Mã xoắn là 1 dạng mã khối, tuyến

13



tính nhưng do cấu trúc của mã xoắn có thể biểu diễn dưới dạng hình cây, giản đồ
lưới nên nó được phân loại vào kỹ thuật mã lưới. Chúng ta cũng được giới thiệu
sơ qua về mã xoắn và so sánh nó với mã khối, với các tham số độ dài ràng buộc
hoặc độ dài bộ nhớ của bộ mã hóa và tốc độ mã hóa, dùng chung cho cả mã khối
và mã xoắn. Trong trường hợp giá trị các tham số này như nhau, thì đánh giá
cách sơ bộ, độ phức tạp bộ mã hóa và bộ giải mã tối ưu là như nhau đối với mã
khối và mã xoắn. Trong chương sau chúng ta sẽ thấy rằng, với hai tham số này
như nhau thì mã xoắn có thể đạt được xác suất lỗi bít nhỏ hơn mã khối. Chúng ta
sẽ đi tìm hiểu cấu trúc bộ mã hóa và giải mã của bộ mã xoắn xem tại sao mã xoắn
có thể đạt được xác suất lỗi bít nhỏ hơn và xem ứng dụng thực tế của mã xoắn.
Những vấn đề này sẽ được trình bày ở chương 2.

14


CHƯƠNG 2: Cấu trúc của bộ mã hóa, giả mã và ứng dụng
của mã xoắn.
2.1. Giới thiệu và cấu trúc cơ bản.
Mã xoắn mặc dầu thường được xem như mã tuyến tính không khối trên
trường hữu hạn, nhưng có thể cải biên để xử lý chúng trên trường vô hạn. Chúng
ta sẽ xét lý trong chương sau và bây giờ chúng ta sẽ bắt đầu nghiên cứu bằng
việc giới thiệu một ví dụ mã xoắn nhị phân đơn giản tốc độ mã hóa R=1/2 như
hình (2.1). Các bít thông tin u = u0u1. . . không chia thành từng khối nhỏ như
trước đây, chúng bây giờ xem như một dãy bít dài vô hạn dịch chuyển trong
thanh ghi dich.

15
u0u1. . .

Bộ

v0(1)v1(1). . . chuyển
đổi
song
v0(2)v1(2). . . song –
nối
tiếp

v0(1)v0(2)v1(1)v1(2). .
.


Hình 2.1 Bộ mã hóa xoắn tốc độ R=1/2
Ở ví dụ này độ dài phần tử nhớ m=2. Hai dãy đầu ra v(1) = v (01) v 1(1) . . . và v(2) = v
( 2)
0

v 1( 2) . . . của bộ mã hóa được "xoắn" vào nhau tạo thành một dãy đầu ra duy nhất

v (01) v (02) v 1(1) v 1( 2) . . . và phát trên kênh. Thuật ngữ "xoắn" được sử dụng ở đây bởi vì
từ mã tạo ra có thể được xem như xoắn dãy thông tin u vào các dãy "đáp ứng
xung" (impluse respone) của mạch mã hóa. Hai dãy đáp ứng xung trong ví dụ này
thu được bằng cách cho dãy u=(1 0 0…) và quan sat hai dãy đầu ra.
Trường hợp tổng quát với mã tốc độ R= b/n( b < n), dãy thông tin
u=u0(1) u0(2). . . =u0(1) u0(2) . . . u0(b) u1(1) u1(2). . . u1(b)

(2.1)

được mã hóa thành từ mã
v = v0v1 . . . = v0(1)v0(2). . . v0(n)v1(1)v1(2) . . . v1(n) . . .


(2.2)

trong đó
vt = f(ut, ut-1, . . ., ut-m )

(2.3)

tham số m được gọi là độ dài ô nhớ của bộ mã hóa. Để thuận tiện viết nó dưới
dạng ma trận
vt = utG0 + ut-1G1 +. . . +ut-mGm

(2.4)

các ma trận Gi ở đây là ma trận nhị phân b x n với 0 ≤ i ≤ m .
Chúng ta có thể viết lại biểu thức mã hóa dãy mã như sau
v0v1. . . = (u0 u1. . . ) G

(2.5)

hoặc viết một cách ngắn gọn hơn
v=uG

(2.6)

với
16


 G0


G= 



G1
G0

...
G1
...

Gm
...
...

Gm




... 

(2.7)

Phần trống còn lại của ma trận bằng 0. Chúng ta gọi G là ma trận sinh của mã
xoắn và Gi là các ma trận con.
Hình 1.8 mô tả bộ mã hóa xoắn tổng quát (không hồi tiếp). Để biểu diễn mã
xoắn chúng ta sử dụng các lưu đồ dạng cây, lưới (trellis) và lưu đồ trạng thái
chúng ta sẽ xét kỹ trong chương sau. Bây giờ chúng ta sẽ xem xét so sánh giữa
mã khối và mã xoắn.

Trong một ý nghĩa hẹp, mã xoắn có thể xem như một lớp đặc biệt của mã khối
tuyến tính. Nhưng xuất phát từ quan điểm sáng tạo hơn chúng ta sẽ tìm cấu trúc
mã xoắn theo mã tuyến tính với các tính chất tốt hơn bao gồm việc giải mã dễ
dàng hơn và tăng được chỉ tiêu chất lượng.
Đầu tiên chúng ta xét một mã khối tuyến tính đặc biệt với ma trận sinh nhị
phân.

G=

 g 0 (1)








( 2)

g1
( 2)
g0

( 3)

g2
( 3)
g1
( 3)

g0

(K )

...
g2

g K −1
...
...

( 4)

g K −1

( K +1)

g K −1

( K + 2)

...
g0

( B − K +1)

...







...

(B) 
g K −1 
(2.8)

trong đó g(i)j = (g(i)j1 g(i)j2 ..... .. gjn (i) ) là véc tơ nhị phân n chiều và vùng để trống
trong ma trận có giá trị bằng 0. Ma trận sinh G mô tả một mã khối tuyến tính
(nB , B-K+1). Nói chung thực tế B >>K, một máy mã đơn giản sử dụng thanh
ghi dịch K tầng với n bộ cộng môđun 2 , các hệ số gjk(i) lựa chọn thay đổi theo
thời gian như đã chỉ ra ở hình 2.2. Thanh ghi dịch có thể xem như là nội dung của
chúng được dịch sang phải một tầng khi mỗi bít mới được đưa vào ở bên trái của
17


thanh ghi và thành phần ngoài cùng trong nội dung thanh ghi được đưa ra ngoài,
hoặc chúng như một đường giữ chậm số mà ở đó mỗi phần tử trễ lưu trữ một bít
giữa hai lần tới liên tiếp của các bít đầu vào.
Chúng ta cũng lưu ý rằng trong thanh ghi dịch hoặc đường giữ chậm số thì
sau bít thứ B-K+1 (bít cuối cùng) phải có K-1 bít 0 để xoá thanh ghi dịch và tạo
ra K-1 bít đầu ra thường được gọi là đuôi mã (điều này yêu cầu để kết thúc mã vì
mã xoắn có thể được xem như một mã khối với độ dài khối nB lớn tùy ý và với
K-1 bít 0 cuối cùng để xóa thanh ghi dịch của bộ mã hóa để cho khối tiếp theo).

g(i)01

g(i)02


g(i)0n

Hình 2.2

g(i)11

g(i)K-2,1

+

+

g(i)K-1,1

+

g(i)K-2,2

g(i)K-1,2

+

+

+

g(i)1n

g(i)K-2,n


g(i)K-1,n

+

+

g(i)12

+

Bộ mã hoá xoắn thay đổi theo thời gian tốc độ 1/n

Do vậy độ phức tạp của bộ mã hóa hoàn toàn độc lập với độ dài khối nB nó
chỉ phụ thuộc vào chiều dài thành ghi dịch và tốc độ mã hóa. K được gọi là độ dài
18


ràng buộc (constrainlength) của mã xoắn, nó mô tả sự phụ thuộc của một bít vào
số các bít khác.
Thuật ngữ "xoắn" (convolution) như đã nói, được sử dụng với lớp mã này
bởi vì dãy bít đầu ra v có thể được xem như “xoắn” dãy bít đầu vào u với dãy
sinh. Vì mã là tuyến tính nên ta có
v= u.G
theo (2.8)
i

vi =

∑u


g (i ) i −k

k
k = max(1,i − K +1)

i = 1, 2, ...

(2.9)

vi = ( vi1, vi2... vin) là véc tơ mã n chiều tạo ra ngay sau khi bít thứ i được đưa
vào bộ mã hóa. Lý do về mặt lý thuyết chúng ta mới quan tâm đến các mã xoắn
có hệ số của ma trận sinh thay đổi theo thời gian như vừa mới mô tả, còn hầu như
trong thực tế là bất biến theo thời gian. Đối với các mã hệ số ma trận không thay
đổi theo thời gian ta có thể xóa tất cả các chỉ số trong ma trận sinh G. Với kết quả
đó mỗi hàng trong ma trận hoàn toàn giống với hàng trước nhưng được dịch đi
sang bên phải n số hạng. Ví dụ với mã xoắn cố định độ dài ràng buộc K=3, tốc
độ 1/2 hình2.3a thì ma trận sinh có dạng:
1 1 1 0 1 1



1 1 1 0 1 1




1 1 1 0 1 1



1 1 1 0 1 1




...
...
...
...
...
...
...
...
G =

1 1 1 0 1 1




1 1 1 0 1 1


1 1 1 0 1 1


Tốc độ của lớp mã xoắn này là 1/n bít/symbol đầu ra. Chúng ta có thể mô tả
một cách dễ dàng các mã xoắn có tốc độ cao hơn b/n (b>1) lúc đó b bít cùng
19



được dịch chuyển song song trong thanh ghi bộ mã hóa một cách đồng thời. Với
b đầu vào có tổng số bK bít ảnh hưởng đến một bít đầu ra, do vậy bK bây giờ
được gọi là độ dài ràng buộc. Lúc đó ma trận sinh (2.8) biểu diễn mã tốc độ b/n
được viết lại bằng cách thay thế véc tơ n chiều gj(i) bởi ma trận con cỡ b x n. Một
bộ mã hóa xoắn cố định có thể được xem như máy trạng thái hữu hạn và cấu trúc
của nó có thể được mô tả với sự trợ giúp của các lưu đồ.

+

+
+
+

+

+
+

g0 =(1, 1)
g1 =(1, 0)
g2 =(1, 1)

g0 =
g1 =

(a) K = 3, r = 1/ 2

(b)


K= 2,

r= 2/3

1 0 0 1 


g0 = 0 1 0 `1


0 0 1 1 
0 0 0 1 


g1 =0 0 0 0
0 0 0 1
+

+

(b) K = 2 , r=3/4

20

Hình 2.3 Ví dụ một số bộ mã hoá xoắn cố định


00
00


a

a
11

b

00
10

c

00
11
10
01
11

a
b
c
d
a

Chúng ta bắt đầu với lưu đồ hình cây
2.4 của víb dụ đơn
11 (tree bdiagram) hình 00
01

d tả được cảc hai dãy

giản hình 2.3a. Trên lưu đồ hình cây này chúng ta01có thể mô
10
d
00
00
a đường
bít đầu vào và đầu ra của bộ mã hóa. Các bít đầu 00
vào đượca chỉ ra bởi các
11

b
c được chỉ ra dọc
liên tiếp trong lưu đồ trong khi đó các 10
bít đầu ra
nhánh
10 theo các
c
11
b
01
của cây. Đầu vào “0” được đặt
cho
nhánh
bên
trên
của
nhánh
d
11
10


0

01

00
1

c

d
01

d

00

a

a
11

b

10

c

10
11


b
01

d

00

a

11
10

c = 10

01

01
11
00
01
10
00
11
10

c

d= 11


21

b
c
d
a
b
c
d
a

b
c
d

10
01

a

00
01
d
10

b

d

00

11
10

b
c
d

01
11

11
01

b = 01

a

b
c
d
a

c

a= 00

11
00
01
10


Hình 2.4: Lưu đồ hình cây biễu diễn bộ mã hóa xoắn hình 2.3a


00
11

00

11

11

11
00
10

11
...

00

11

10
...

01

01

01

01
10

01

01

00

b=

01

c=

10

d=

11

10

01
01

01
10


a=

11

00

10

10

00

11

11
00

00

00

...

11

11

11


10

00

00

00

...

10

01
10

Hình 2.5: Lưu đồ dạng lưới biểu diễn bộ mã hóa ở ví dụ hình 2.3a

22


đôi và đầu vào “1” đặt cho nhánh dưới. Với máy mã ở ví dụ hình 2.3a dãy đầu
vào 0110 được chỉ ra trên lưu đồ, lên mức trên ở nhánh đầu tiên, xuống dưới
nhánh thứ 2, 3 và lại lên mức trên ở nhánh thứ 4, tạo ra dãy bít đầu ra
00,11,01,01.
Từ lưu đồ, thấy rõ ràng rằng sau ba nhánh đầu tiên cấu trúc của cây lại lặp
lại. Lý do nhận được điều này từ thực tế khảo sát bộ mã hóa. Khi bít đầu vào thứ
ba đưa vào bộ mã hóa thì bít đầu tiên ra khỏi phần từ giữ chậm ở bên phải ngoài
cùng và sau đó nó không còn ảnh hưởng gì đến các symbol đầu ra khác. Do vậy
dãy dữ liệu 100 xy ... và 100 xy tạo ra các bít mã hóa giống nhau sau nhánh thứ
ba, do đó cả hai nút gắn nhãn a trong lưu đồ có thể được chập lại với nhau. Điều

này dẫn tới việc quy sơ đồ hình cây (tree diagram) thành lưu đồ có dạng như hình
2.5 lưu đồ này được gọi là lưu đồ dạng lưới (trellis diagram). Lưu đồ này cũng có
cấu trúc giống như cây song không có các nhánh giống nhau như trước. Ở đây
quy ước các nhánh mã biểu diễn bít đầu vào “0” là đường liền nét, bít đầu vào
"1" là đường đứt nét. Chúng ta chú ý rằng vì sau B-K+1 bít đầu vào khối mã
được kết thúc bằng việc đưa K-1 bít 0 vào bộ mã hóa, nên lưới sẽ kết thúc tại nút
a như trong hình2.5.

10

Cuối cùng để hoàn tất việc biểu diễn mã ta xét lưu đồ trạng thái hình 2.6. Các
d = 11

trạng thái của lưu đồ được gắn nhãn tương ứng với các nút của lưu đồ dạng lưới.
Tuy nhiên vì các trạng01thái tương ứng (trong ví dụ hình 2.3a) chỉ là hai bít đầu
01
10
vào sau cùng đưa đến bộ mã hoá nên chúng ta có thể sử dụng các bít này để kí

hiệu các nút hoặc các trạng thái của lưu đồ. Với bộ mã hóa xoắn tốc độ 1/n quy
ước biểu
diễn các thái bằng K-1 bít sau cùng trong
b=
01

00
11

11
a= 00

23
00

c = 10


Hình 2.6: Lưu đồ trạng thái của bộ mã hoá hình 2.3a
thanh ghi dịch. Ta thấy rằng lưu đồ trạng thái có thể nhận được một cách trực
tiếp từ các tính chất máy trạng thái hữu hạn của bộ mã hoá. Ví dụ lưu đồ bốn
trạng thái có thể được sử dụng để biểu diễn một cách duy nhất mối quan hệ vàod = 11

110

ra của máy mã K=3, hai bít đầu vào trước đó dùng để biểu diễn các nút trong khi
đó các bít hiện tại được chỉ ra trên các nhánh chuyển tiếp.
Đối với mã xoắn tốc
bây giờ sẽ có 2b nhánh xuất
100độ b/n, trong lưu đồ hình cây 011
000

001

011

phát từ mỗi nút (gốc). Tuy nhiên do độ dài ràng buộc bằng K như trước đây đã
giới thiệu nên010
sau K nhánh đầu tiên các đường dẫn bắt đầu 100
lại hợp lại thành 2b
111


nhóm các nhánh. Cụ thể, tất cả các đường với b (K-1) bít dữ liệu như nhau sẽ hợp
001 2b(K-1) trạng thái, mỗi trạng thái có 2 b
lại cùng với nhau tạo thành một trellis
b= 01

c=

b

10

nhánh ra xuất phát từ nó và 2 nhánh đầu vào tới nó.Ví dụ máy mã tốc độ 2/3 có
111

101

lưu đồ trạng thái như hình 2.7.

110

101

a=

00

010

000


24

Hình 2.7 Lưu đồ trạng thái của bộ mã hoá hình 2.3b


Ta thấy rằng các lưu đồ dạng cây, lưới và lưu đồ thái biểu diễn mã xoắn khá
khác so với sự mô tả về mã khối trước đây. Để so sánh mã khối và mã xoắn
chúng ta sẽ so sánh như thế nào?
Trở lại phần giới thiệu mã xoắn đã nêu ở trên, thấy rằng các tham số bK (độ
dài ràng buộc hay độ dài bộ nhớ của bộ mã hoá), tốc độ mã hóa r=b/n là
dùng chung cho cả mã khối và mã xoắn. Trong cả hai trường hợp giá trị các
tham số này bằng nhau thì đánh giá một cách sơ bộ độ phức tạp của bộ mã hóa là
như nhau và cũng thấy ngay rằng độ phức tạp của bộ giải mã tối ưu khi cùng các
tham số này là giống nhau đối với cả mã khối và mã xoắn. Do vậy với mục đích
so sánh của chúng ta, thấy rằng với hai tham số bK và r này như nhau thì mã
xoắn có thể đạt được xác suất lỗi bít nhỏ hơn so với mã khối. Điều đó có được
nhờ khả năng giải mã sử dụng thuật toán viterbi mà chúng ta xét sau đây.
2.2. Bộ giải mã tối ưu cho mã xoắn và thuật toán viterbi
(Maximum likelihood decoder for convolutional codes - the viterbi algorithm)

25


×