CHƯƠNG 3: GIẢI MÃ CHẬP DÙNG THUẬTTOÁN
3.2.1. Thuậttoán Viterbi với quyết định cứng trong giãi mã chập
Đối với mã tích chập, chuỗi ngõ vào được xoắn thành chuỗi mã hóa c. Chuỗi c được phát xuyên qua kênh nhiễu và chuỗi nhận được là chuỗi r. Thuật toán Viterbi là thuật ước đoán khả năng xảy ra lớn nhất (Maximum Likelihood- ML) cho ra chuỗi mã hóa được ước đoán y từ chuỗi nhận được r để cho chuỗi này đạt được xác xuất p(r/y) lớn nhất. Chuỗi y phải là một trong những chuỗi mã hóa cho phép và không thề là bất kì chuỗi tùy ỷ nào. Hình 3.20 trình bày cấu trúc hệ thống.
nhiễu
Hình 3.20. Hệ thống mã tích chập.
Đối với một mã tích chập có tốc độ r, các ngõ vào của bộ mã hóa k bit song song và các ngõ ra n bit song song tại mỗi bước. Chuỗi ngõ ra là:
X = x„(l), X„(2),x„(k), Xi(l), Xj(2), ...Xj(k), Xi+m_i(ỉ),xl+m_ì(k) (3.1)
Và chuỗi được mã hóa là:
c=c0(l), c0(2), ...,Co(n),Cj(l), Cj(2), ...,Cj(n), Ci+m.¡(l),cl+m.j(n) (3.2)
X Bọ mẩ hóa c Kénh r Bó giẩi mã y
số bên trên là bit chỉ ra khối k bit ngõ vào hay n bit ngõ ra riêng lẻ. Các chuỗi được ước đoán y và chuỗi nhận được r có thể được mô tả tương tự.
Đối với giải mã ML, thuật toán Viterbi chọn y để P(r/y) lớn nhất. Giả thiết kênh là không nhớ, và vì vậy quá trình nhiễu ảnh hưởng lên bit nhận được độc lập với quá trình nhiễu ảnh hưởng lên tất cả các bit khác. Từ lý thuyết xác suất (xác suất liên kết), xác suất của tập họp các sự kiện độc lập tương đương với tính xác suất của các sự kiện riêng lẻ. Vì vậy
L+m—l p(r\y) =n b(>ítlV'1))p('it2V'2))-p(r1("V‘”))] 1=0 -*.(!) ~(2) /o > '0 > •'••fl 0 fl 1 fl 1 f •„(n) „(1) „(2) r(n) „(1) 1 ' 'ỉ+m-l' 1r(n) J (3.3) bw,y„(2)... yto (1) •>y1 ' Sl+m-l’ 1 v(n) yl+m- -l] (3.4)
Trong đó a và b được chọn trước để cho metric bit là một số nguyên dương nhỏ nhất. Các giá trị ã và b được định nghĩa cho kênh hệ thống nhị phần (BSC) hay giải mã quyết định cứng. Hình 3.21 trình bày một BSC
Hình 3.21. Kiểu kênh hệ thống nhị phân, trong đó p là xác suất chéo
Đối với BSC ã và b có thể được chọn theo 2 cách phân biệt. Theo cách thông thường a và b được chọn như sau:
1
logp-log(l-p)
Và
b = — log(l — p) (3.9)
Kết quả metric bit là
M(ri0V}) = iwv-ềĩa-v) [l°sp{rhy^) - I°sí 1 - p)] (3.10)
Từ kiểu BSC, rõ ràng chỉ lấy giá trị p và 1-p. Bảng 3.8 trình bày kết quả metric bit.
Bit
nhận
(3.8)
a =
Bảng 3.7. Các giá trị metric bit thông thường. M(ri®|yi®
Bit nhận rf® = 0
Bit nhân n® = 1 Bit được giải mã
yi® = 0 0 1
Bit đươc giải mã
Metric bit này biểu diễn ước lượng của các bit giải mã và các bit nhận. Ví dụ nếu bit được giải mã yi® = 0 và bít nhận được ri® = 0 thì ước lượng M(yi®|ri®)=0. Tuy nhiên, nếu bit được giải mã yi® = 0 và bit nhận được ri® = 1 thì ước lượng Míy^Ịr^ = 1. Như vậy điều này liên quan đến khoảng cách Hamming và được biết như là metric của khoảng cách Hamming. Vì vậy, thuậttoán Viterbi chọn chuỗi mã y qua trellis có ước lượng/khoảng cách Hamming nhỏ nhất liên quan đến chuỗi nhận được r. Cách khác a và b có thể được chọn như sau: 1 log(l-p)-logp Và b = - log(p)
Ket quả metric bit cách 2 là:
M(rơ)|yơ)) = 1 [logp(r^\y^) - log(p)]
Đối với trường hợp này thuật toán Viterbi chọn chuỗi mã hóa y qua trellis có ước lượng/khoảng cách Hamming lớn nhất đối với chuỗi nhận được r. Hơn nữa, đối với một kênh tùy ý (không nhất thiết là BSC), các giá trị a và b được tìm theo nguyên tắc thử - và - sai để lấy metric bit có thể chấp nhận được.
Từ metric bit, metric đường được định nghĩa là:
M(r| y) = ssr1(ĩ.UM(nu )\y^)) (3.14) Và chỉ ra tổng ước lượng của việc ước đoán chuỗi bit nhận được r với chuỗi bit được mã hóa y trong sơ dồ trellis. Hơn nữa metric nhánh thứ K được định nghĩa như sau:
M(rk\yk) = Sỹ=1M(rkơ)|ykơ)) (3-15) Và metric đường thành phần được định nghĩa như sau:
Mk(r\y) = Yj=í^(.ri\yi) (3.16)
Do đó:
(3.11)
(3.12)
(3.13)
a =
Bảng 3.8. Các giá trị metric bit cách 2. M(ri(J)yi(J) Bit nhận
Ti0 = ci Bit nhânĩ®=í Bit đươc giải mã yiG) = ó
1 0
Bit đươc giải mã
M(r|y) = E?=oE?,1M(riU)|^')) (3.17) Metric nhánh thứ k chỉ ra việc ước lượng chọn một nhánh từ biểu đồ trellis. Metric đường thứ k chỉ ra việc ước lượng chọn một chuỗi bit được mã hóa từng phần y tới chỉ số thời gian k.
Thuật toán Viterbi sử dụng biểu đồ trellis để tính các metric đường. Mỗi trạng thái (nút) trong biểu đồ trellis được gán một giá trị gọi là metric đường thành phần. Metric đường từng phần được xác định từ trạng thái s = 0 tại thời điểm t = 0 đến một trạng thái đặc biệt s = k tại thời điểm t > 0. Tại mỗi trạng thái metric đường từng phần tốt nhất được chọn từ các đường kết thúc tại trạng thái đó. Metric đường từng phần tốt nhất, có thể là metric lớn nhất hay nhỏ nhất phụ thuộc vào a và b được chọn theo cách thông thường hay chọn lựa khác. Metric được chọn diễn tả bằng đường tồn tại (survivor) và các metric còn lại được diễn tả bằng đường không phù hợp (nonsurvivor). Các đường tồn tại được lưu lại trong khi các đường không phù hợp bị loại bỏ trong sơ đồ trellis. Thuật toán Viterbi chọn đường tồn tại đơn giản đi từ cuối của tiến trình giống như đường ML. Sau đó truy ngược theo đường ML trong biểu đồ trellis sẽ tìm được chuỗi giải mãML.
Thuật toán Viterbi quyết định cứng có thể được thực hiện như sau: Sk,t là trạng thái trong biểu đồ trellis tương ứng với trạng thái sk tại thời điểm t.
Mỗi trạng thái trong Trellis được gán một giá trị là V(Skt). 1. (a) khởi tạo t = 0
(b) khởi tạo V(so o) = 0 và tất cả các V khác V(Skjl) = +00
2. (a) lấy t = t+1
(b) Tính các metric đường từng phần cho tất cả đường đi đến trạng thái sk tại thời điểm t.
Đầu tiên, tìm metric nhánh thứ t
M(rt\yt) =ỵ]=1M(rtơ) ịyP)
Metric này được tính từ khoảng cách Hamming
(3.19)
Thứ hai, tính metric đường thành phần thứ t Mt(r|y) = i:í=iM(rt|yt)
Metric này được tính từ : V(S -i) + M(r I y)
3. a) Lấy V(Skjt) đến metric đường từng phần tốt nhất là trạng thái sk tại thời
điểm t. Thông thường, metric đường từng phần tốt nhất là metríc đường từng phần có giá trị nhỏ nhất
(b) Nếu có một nút TIE nằm trên metric đường từng phần tốt nhất, sau đó bất kì một metrỉc đường từng phần có thể được chọn.
4. Lưu trữ metrỉc đường từng phần và các và các đường ứạng thái cùng với bit tồn tại liên kết của nó.
5. Nếu t < L+m-1, trở về bước 2.
Kết quả của thuật toán Viterbi là một đường Trellis duy nhất tương ứng với từ mã ML.
Ví dụ: Biểu đồ chuyển tiếp trạng thái trình bày các bit tin và các bit mã hóa được ước đoán theo các nhánh (cần thiết cho quá trình giải mã). Việc giải mã chọn đường ML thông qua trellis như được trình bày trong hình 3.14. Metric đường từng phần (được lưu trữ) được chọn cho ví dụ này là khoảng cách Hamming lốn nhất và được ừình bày ừong hình cho mỗi nút. Các meừỉc đường từng phần đậm tương ứng với ML. Các đường tồn tại được biểu diễn bởi các đường liền nét đậm và các đường cạnh tranh được biểu diễn bởi các đường nét đứt.