Thuật toán Viterbi quyết định cứng

Một phần của tài liệu đồ án thực hiện bộ giải mã viterbi trên fpga (Trang 44 - 48)

Đố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 2.24 trình bày cấu trúc hệ thống

Hình 2.24: 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à

0(1), (2),..., ( ), (1), (2),..., ( ),0 0 1 1 1 l m 1(1),..., l m 1( )

Và chuỗi được mã hóa là

0(1), (2),..., ( ), (1), (2),..., ( ),0 0 1 1 1 l m1(1),..., l m1( )

c cc c n c c c n c  c  n (2.8.2) Trong đó L là chiều dài của chuỗi tin ngõ vào và m là chiều dài lớn nhất của các thanh ghi dịch. Yêu cầu phải thêm vào đuôi của chuỗi mã hóa với m bit zero để cho bộ mã hóa tích chập trở về trạng thái tất cả zero. Yêu cầu bộ mã hóa phải bắt đầu và kết thúc tại trạng thái tất cả zero. Các chỉ số bên dưới là chỉ số thời gian và các chỉ 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ự.

1 1 (1) (2) ( ) (1) (2) ( ) (1) ( ) 1 1 1 , ,..., , , ,..., , ,..., l m l m n n n o o o r r r r r r r r r          (2.8.3) Và 1 1 (1) (2) ( ) (1) (2) ( ) (1) ( ) 1 1 1 , ,..., , , ,..., , ,..., l m l m n n n o o o y y y y y y y y  y   (2.8.4)

Đố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,

  1       (1) (1) (2) (2) ( ) ( ) 0 | | | .... | L m n n i i i i i i i p r y p r y p r y p r y          (2.8.5)   1   ( ) ( ) 0 1 | | L m n j j i i i j p r y p r y              (2.8.6)

Biểu thức này được gọi là hàm có khả năng xảy ra của y với r nhận được. Việc ước đoán P(r/y) lớn nhất cũng là logP(r/y) lớn nhất bởi vì các hàm logarit là các hàm tăng đều. Vì vậy, một hàm log của khả năng xảy ra có thể được định nghĩa log log(/),   1 ( ) ( ) 0 1 log ( | ) log | l m n j j i i i j p r y p r y              (2.8.7)

Vì thao tác trên các tổng dễ dàng hơn thao tác trên các hàm log nên một metric bit được định nghĩa như sau:

 ( ) ( )  ( ) ( ) | log | j j j j i i i i M r yap r yb   (2.8.8)

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ị a 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 2.25 trình bày một BSC

Hình 2.25: Kiểu kênh hệ thống nhị phân, trong đó p là xác suất chéo Đối với BSC a 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:

(2.8.9) Và

(2.8.10)

Kết quả metric bit là

[ ] (2.8.11) Từ kiểu BSC, rõ ràng chỉ lấy giá trị p và 1-p. Bảng 2.8 trình bày kết quả metric bit

Bảng 2.8: Các giá trị metric bit thông thường

Bit nhận

Bit nhận

Bit được giải mã

0 1

Bit được giải mã

1 0

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

(j)

= 0 và bit nhận được ri(j) = 0 thì ước lượng M(yi(j) | ri(j)) = 0. Tuy nhiên, nếu bit được giải mã yi

(j)

= 0 và bit nhận được ri(j) = 1 thì ước lượng M(yi

(j)

| ri (j)

) = 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ật toá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:

(2.8.13) Kết quả metric bit cách 2 là

[ ] (2.8.14) Bảng 2.9: Các giá trị metric bit cách 2

Bit nhận

Bit nhận

Bit được giải mã

1 0

Bit được giải mã

0 1

Đố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à:

∑ (∑ )

(2.8.15)

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:

∑ (2.8.16)

Và metric đường thành phần được định nghĩa như sau:

∑ (2.8.17)

Do đó:

∑ ∑ (2.8.18)

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(Sk,t).

1. (a) khởi tạo t = 0

(b) khởi tạo V(S0,0) = 0 và tất cả các V khác V(Sk,t) = +oo 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

∑ (2.8.19) Metric này được tính từ khoảng cách Hamming

Một phần của tài liệu đồ án thực hiện bộ giải mã viterbi trên fpga (Trang 44 - 48)

Tải bản đầy đủ (PDF)

(124 trang)