Bộ giải mã của mã xoắn thường dùng thuật toán Viterbi, nó dùng một bộ giải mã lưới nhằm thu được các trạng thái ước lượng của bộ mã hóa. Thuật toán Viterbi làm việc bởi việc loại bỏ các đường đi có xác suất thấp qua bộ lưới mắt cáo ở mỗi
điểm nút, và giữ lại đường đi với khả năng lớn nhất. Các đường đi này được thể
hiện bởi một quyết định cứng trong chuỗi truyền. Bộ giải mã Viterbi ước lượng chuỗi có khả năng lớn nhất .
Quyết định cứng trong cách này, ở một thời điểm sớm hơn trong quá trình giải mã, thể hiện sự suy hao của thông tin. Thường thì quyết định mềm tỏ ra ưu
điểm hơn để thu được một xác suất chính xác. Bộ giải mã Turbo dựa vào thông tin truyền của những bit truyền đơn lẻ từ một tầng giải mã này đến tầng kế tiếp. Bộ
chèn của chuỗi thông tin nhận giữa các bộ giải mã giới hạn tính hữu dụng của các chuỗi ước lượng khả năng cực đại. Vì vậy, một thuật toán được yêu cầu có thểđưa ra quyết định mềm ở ngõ ra nhằm ước lượng khả năng cực đại theo từng bit. Bộ giải mã có khả năng chấp nhận quyết định ngõ vào mềm từ lần lặp trước của quá trình giải mã. Một chu trình như vậy gọi là SISO (Soft Input-Soft Output). Berrou và Glaviex dùng hai bộ giải mã này trong mỗi tầng của bộ giải mã Turbo. Các bộ giải mã dùng thuật toán SISO được đề xướng bởi Bahl, Cocke, Jelinek và Raviv.
Thuật toán của Bahl liên qua đến thuật toán MAP (Maximum A Posteriori) và thu được quyết định giải mã mềm từng bit một bằng cách đưa ra 2 đường của một lưới giải mã, ngược lại là chỉ một đường trong trường hợp thuật toán Viterbi [3]. Một đường là đường lên, đường còn lại là đường xuống. Được thể hiện như ở
hình 3.5. m=0..(M-1) thể hiện các trạng thái của mỗi bộ giải mã (SISO1 hoặc SISO2). Trong đó, tổng số trạng thái M=2K-1 và K là chiều dài của mỗi thành phần
CBHD:TS Hoàng Thu Hà 63 HVTH: Nguyễn Quang Anh
mã hóa RSC1 và RSC2. αk(m),βk(m) là các trạng thái xác suất trong đó thành phần mã hóa trong trạng thái m ở thời điểm k, lần lược trong hướng lên và xuống .
Hình 3.10 : Thuật toán Viterbi mô tả bởi Bahl.[22, tr.27]