Thiết kế modul mã hoá và giải mã mã chập
Trang 1LỜI MỞ ĐẦU
Mã hoá và giải mã đã xuất hiện từ rất sớm đặc biệt là trong quân sự Các yêucầu với một loại mã là phải có tính bảo mật cao, khả năng phát hiện và sửa lỗi trongqua trình truyền Để tìm ra được một loại mã thực sự hiệu quả là không đơn giản.Trong các loại mã mã chập ra đời từ những năm 1955 cùng thời với nhiều loại mã như
mã vòng, mã BCH Mã chập là loại mã có khả năng khôi phục dữ liệu rất tốt, song khimới ra đời do chưa tìm được giải thuật giải mã khả thi nên ít được quan tâm Mãi đếnnăm 1967 Viterbi đã đưa ra một giải thuật giải mã tối ưu gọi là giải thuật Viterbi Vớigiải thuật Viterbi cùng với sự tiến bộ KHKT với công nghệ sản xuất các mạch tổ hợp
cỡ lớn và sự phát triển của công nghệ sản xuất bộ nhớ, mã chập ngày càng được ứngdụng rộng rãi trong công nghệ viễn thông
Mặc dù đã xuất hiện từ rất lâu song mã hoá vẫn là một môn học khá mới Vớimong muốn tạo một bộ thí nghiệm về mã hoá và giải mã phục vụ cho việc học tập, đề
tài : nghiên cứu “ Thiết Kế Modul Mã hoá và Giải mã Mã Chập“ Nội dung của đề
tài là nghiên cứu và hiện thực thuật toán mã hoá mã chập và giải thuật giải mã củaViterbi
Mặc dù có nhiều cố gắng, nhưng do kiến thức hạn chế và thời gian thực hiện đềtài không nhiều nên đề tài vẫn còn nhiều hạn chế và sai sót Em rất mong nhận được sựđánh giá nhận xét của các thầy giáo và các bạn
Nhân đây em muốn nói lời cảm ơn sâu sắc tới các thầy giáo trong khoa đặc biệt
là thầy giáo hướng dẫn Ths Nguyễn Phương Lâm đã nhiệt tình quan tâm và giúp đỡ emhoàn thành đồ án Đồng thời em cũng muốn gửi lời cảm ơn tới gia đình và các bạn đãđộng viên, giúp đỡ em trong quá trình hoàn thành đồ án tốt nghiệp
Hải Phòng, ngày 9 tháng 12 năm 2008
Sinh viên : Vũ Xuân Hiệp
Trang 2Chương I TỔNG QUAN VỀ MÃ HOÁ I.1 CÁC KHÁI NIỆM CƠ BẢN VỀ MÃ HOÁ
I.1.1.Định nghĩa mã hoá
Mã hoá nguồn tin X theo bộ mã M là phép ánh xạ 1:1 biến đổi một tin xi Xthành một tổ hợp các kí hiệu của bộ mã M
Nguồn X = {x1,x2,x3, ,xn}
Bộ mã M = {m1,m2, ,mk}
Trong đó k là cơ số của bộ mã Nếu k=2 là mã nhị phân, k=10 là mã thập phân,k=8 là mã bát phân
Một tin xi được mã hoá thành xi mr1mr2 mrL
Trong đó L là số kí hiệu của bộ mã dùng để biểu diễn xi , đồng thời L cũng là độdài của từ mã
Chiều dài từ mã là số kí hiệu của bộ mã dùng để mã hoá cho từ mã đó Ví dụ: từ
mã 10101110 được mã hoá bằng 8 kí hiệu của bộ mã nhị phân nên có chiều dài là 8
Trang 3Ví dụ: có 2 từ mã x1 = 01011011, x2 = 10101110
Quãng cách mã d(x1,x2) = 2
Quãng cách của một bộ mã được dịnh nghĩa là quãng cách mã tối thiểu của 2 từ mã bất
kì của bộ mã
I.2.MỤC ĐÍCH MÃ HOÁ VÀ CÁC ĐIỀU KIỆN KHI LẬP MÃ
Một số mục đích mà việc mã hoá nhằm tới ;
- Phối hợp nguồn tin và nơi nhận tin
- Tăng hiệu suất thông tin
- Tăng độ tin cậy truyền tin
- Bảo mật thông tin
Khi thiết lập một mã nào đơ ta cần tuân theo một số điều kiện sau:
a)Điều kiện chung.
Đảm vảo tính đơn trị, nghĩa là khi nhận được một dãy tín hiệu thì phải tách rađược thành từng từ mã một và phép tách này phải duy nhất
b) Điều kiện riêng.
Đối với phương pháp xây dựng mã thống kê tối ưu (mã nén) thì phải làm saocho độ dài trung bình của mã là nhỏ nhất, còn đối với mã có thể phát hiện và sửa sai thìphải cho phép phát hiện và sửa được lỗi càng nhiều càng tốt
I.3.CÁC CÁCH PHÂN LOẠI MÃ
Có nhiều cách để phân loại mã, dưới đây là một số phương pháp tiêu biểu [1]:
I.3.1 Phân loại theo trọng lượng của từ mã.
- Mã có trọng lượng không đổi
- Mã có trọng lượng thay đổi
I.3.2 Phân loại theo chiều dài của từ mã.
- Mã có chiều dài không đổi
- Mã có chiều dài thay đổi
Trang 4I.3.3 Phân loại theo hiệu suất thông tin
- Mã tối ưu
- Mã chưa tối ưu
I.3.4 Phân loại theo độ tin cậy
-Mã có khả năng phát hiện và sửa sai
-Mã không có khả năng phát hiện và sửa sai
I.3.5 Phân loại theo cơ số của bộ mã
Có thể xây dựng bộ mã với cơ số bất kì, trong đó mã nhị phân là phổ biến nhất
I.3.6 Phân loại theo các cột số trong từ m ã
- Mã có trọng số: Thứ tự các cột số có ảnh hưởng đến nội dung từ mã
- Mã khôg có trọng số: Thứ tự các cột số không ảnh hưởng đến nội dung từ mã
I.3.7 Phân loại theo mục đích sử dụng m ã
- Mã số
- Mã kí tự
I.3.8 Phân loại theo quãng cách mã giữa hai từ mã kế cận
- d const : mã vòng
- d = const : mã Gray, mã Johnson
I.3.8 Phân loại theo cách tạo mã.
Trong việc truyền tin có hai loại mã được sử dụng phổ biến là mã khối (BlockCode) và mã chập (Convolutional Code)
a) Mã khối
Bộ mã hoá của mã khối sẽ chia dòng thông tin thành những khối tin có k bit.Mỗi tin được biẻu diễn thành một khối k thành phần nhị phân u = {u1,u2, ,uk}, u đượcgọi là vector thông tin Có tổng cộng 2k vector thông tin khác nhau Bộ mã hoá sẽchuyển vector thông tin u thành một bộ n thành phần v = {v1,v2, ,vn}, v được gọi là từmã.Như vậy ứng với 2kvector thông tin sẽ có 2k từ mã khác nhau Tập hợp có 2k từ mã
Trang 5Gọi R = k/n là tỉ số mã R chính là số bít thông tin đưa vào bộ giải mã trên số bítđược truyền Do n bít ra chỉ phụ thuộc vào k bit thông tin vào nên bộ mã hoá và giải
mã không có nhớ và có thể thực hiện được bằng mạch logic tổ hợp
b) Mã chập
Bộ mã hoá của mã chập giống như bộ mã hoá của mã khối, cũng nhận k bítthông tin u và tạo thành từ mã v là những khối n bít Nhưng n bít của từ mã v khôngchỉ phụ thuộc vào k bít thông tin mà còn phụ thuộc vào m bít thông tin trước đó Do đó
bộ mã hoá có bộ nhớ m bít Tập hợp dòng mã hoá n bit tạo bởi k bít thông tin và m bítnhớ được gọi là mã chập (n,k,m) Tỉ số R=k/n được gọi là tốc độ lập mã Do tính cónhớ của mã chập nên nó phải được thực hiện bằng mạch dãy
Trang 6CHƯƠNG II MÃ HOÁ VÀ GIẢI MÃ MÃ CHẬP
Các bít thông tin được đưa lần lượt vào thanh ghi dịch, các bít mã hoá được tạobởi các bộ cộng modul 2 giữa bít vào và các bít lưu trong thanh ghi dịch Đường nốigiữa bộ cộng modul 2 và các bít trong thanh ghi dịch được cho bởi các đa thức sinh
II.1.2.Các tham số của bộ mã hoá mã chập
Một bộ mã hoá mã chập thường được xác định thông qua các tham số (n,k,m).trong đó :
n: số bít ra tại tại một thời điểm
Trang 7Tốc độ lập mã:
k r n
Độ dài ràng buộc (Constrain Lenght) K Đây là một thông số rất quan trọng của
bộ mã chập Với bộ tạo mã, độ dài ràng buộc xác định có bao nhiêu bít tại các thờiđiểm trước có ảnh hưởng đến bít hiện tại Với bộ giải mã, độ dài ràng buộc xác địnhkhi nào có thể quyết định được bít giải mã Trong mã chập, độ dài ràng buộc càng lớnthì khả năng sửa lỗi càng tốt Độ dài ràng buộc được tính theo biểu thức:
K = m+1Ứng với tốc độ lập mã r=1/2 ta có một số đa thức sinh [3]:
4 1 + D + D3
1 + D + D2 + D3
0x0B0x0F
5 1 + D3+ D4
1 + D + D2 + D4
0x190x17
6 1 + D2+ D4+ D5
1 + D + D2 + D3 + D5
0x350x2F
7 1 + D2+ D3+ D5+ D6
1 + D + D2 + D3 + D6
0x6D0x4F
8 1 + D2+ D5+ D6+ D7
1 + D + D2 + D3 + D4 + D7
0XE50x9F
9 1 + D2+ D3+ D4+ D8
1 + D + D2+ D3 + D5 + D7 + D8
Trang 8Với bộ mã hoá trong hình 2.1 ta có thể xác định các tham số: n = 3 , k = 2 , m = 3 Tốc
độ mã r = 2/3 Độ dài ràng buộc K = 4
II.2 CÁC PHƯƠNG PHÁP BIỂU DIỄN MÃ CHẬP
Bộ mã của mã chập có thể được biểu diễn bằng các phương pháp sau:
- Đồ hình trạng thái (state Diagram)
- Đồ hình cây (Tree Diagram)
- Đồ hình đồ hình lưới (Trellis Diagram)
Ví dụ ta có sơ đồ bộ mã hoá như sau:
Hình vẽ 2.2 Sơ đồ bộ mã hoá mã chập (2,1,2)
II.2.1 Đồ hình trạng thái
Đồ hình trạng thái của mã (2,1,2) cho trong hình 2.1 được biểu diễn như hình
vẽ dưới Các kí hiệu trong mỗi vòng tròn biểu diễn trạng thái hiện thời của thanh ghidịch, tại mỗi thời điểm bộ mã hoá sẽ ở một trong số các trạng thái đó Các đường nốibiểu diễn sự chuyển đổi trạng thái khi có một bít vào Các kí hiệu ghi trên các đườngnối biểu diễn bít vào/ các bít ra của bộ mã hoá, ví dụ: kí hiệu 0/10 ghi trên đường nối
từ trạng thái 10 đến trạng thái 01 nghĩa là khi có bít 0 vào bộ mã hoá và trạng tháithanh ghi dịch là 10 thì trạng thái của thanh ghi dịch sẽ chuyển sang 01 và cặp bít sau
Trang 9Hình 2.3a.Đồ hình trạng thái của bộ mã (2,1,2)Thông thường, bộ mã hoá sẽ bắt đầu từ trạng thái 0 Lấy 1 ví dụ, khi dãy bít vào
bộ mã hoá là x = { 1011} (với trạng thái đầu của thanh ghi dịch là 0) thì dãy chuyểnđổi trạng thái là s = {00,10,01,10,11} và dãy bít sau mã hoá là c = {11,10,00,01} Hìnhdưới biểu diễn sự chuyển đổi trạng thái của bộ mã hoá với dãy bít vào cho trên (đường
Trang 10Hình 2.4 Đồ hình cây của bộ mã hoá (2,1,2)Trong đồ hình cây, các đường nét liền biểu diễn nhánh khi có bít vào là 0, cácđương nét đứt biểu diễn nhành khi có bít 1 vào Và các bít sau mã hoá được biểu diễn ởtrên mỗi nhánh cây Với một chuỗi bít vào sẽ xác định một đường đi nhất định từ tráisang phải trên đồ hình Ví dụ với chuỗi bít vào x = {1011} (với trạng thái đầu củathanh ghi dịch là 0) Ta sẽ thực hiện việc dịch chuyển trên đồ hình như sau: đầu tiêntại nhánh 1 ta đi xuống, cặp bít mã hoá là 11 và trạng thái thanh ghi dịch l à 10 Tiếptheo ta thu được bít 0, do đó ta tiếp tục đi lên , cặp bít mã hoá là 10 và trạng thái thanhghi dịch là 01 Bít thu được tiếp theo là 1, ta đi xuống, cặp bít mã hoá là 00 và trạngthái thanh ghi dịch là 10 Cuối cùng ta thu được bít 1, ta đi xuống, cặp bít mã hoá là 00
và trạng thái thanh ghi dịch l à 10 Cuối cùng chuỗi thông tin ra là: c = {11,10,00,00}
II.2.3 Đồ hình lưới
Đồ hình lưới phức tạp hơn các dạng đồ hình khác, tuy nhiên nó lại được sử dụng
Trang 11trục x là trục thời gian tăng dần, và trục y biểu diễn các trạng thái của bộ mã hoá Mỗikhi thu được một bít ta sẽ dịch chuyển đến một trạng thái mới theo chiều tăng dần củatrục thời gian Đồ hình lưới dưới đây biểu diễn cho bộ tạo mã trên hình 2.1 với 4 bitvào
Hình 2.5.a Đồ hình lưới của bộ tạo mã (2,1,2)Các kí hiệu trên các đường nối có dạng (x/c), ví dụ (1/01) nghĩa là sự chuyểntrạng thái đó khi có bít vào là 1 và cặp bít ra bộ mã hoá là 01
Việc tạo các bít mã hoá sử dụng đồ hình lưới rất đơn giản Tại mỗi thời điểm khi
có bít vào là 0 ta sẽ đi lên đến thời điểm tiếp, và khi thu được bít 1 ta sẽ đi xuống đếnthời điểm tiếp Giả sử có chuỗi bít vào x = {1011} ta có sự chuyển đổi trạng thái nhưtrong hình dưới Các đường nét đậm biểu diễn sự chuyển đổi trạng thái khi có bít vào
Hình 2.5.b.Đồ hình lưới của bộ tạo mã (2,1,2) với chuỗi bít vào 1011
Trang 12II.3 CÁC PHƯƠNG PHÁP GIẢI MÃ MÃ CHẬP
Có một số phương pháp giải mã mã chập, chúng được gộp lại thành 2 phươngpháp chính:
- Giải mã theo từng chuỗi (Sequential Decoding) dựa vào giải thuật của Fano
- Giải mã dựa vào kết quả so sánh sự giống nhau giữa các từ mã (MaximmumLikely-hood Decoding), dựa vào giả thuật của Viterbi
Cả 2 phương pháp trên đều có chung 1 ý tưởng, được trình bày qua ví dụ sau:Giả sử ta gửi 3 bít qua bộ mã hoá với tốc độ mã ½, ta sẽ thu được 6 bít Sau khitruyền đi, tại phía thu ta thu được 6 bít nhưng ta chưa biết 6 bít đó có bị lỗi hay không.Nếu các bít thu được có lỗi ta sẽ nhận được tổ hợp của 6 bít Ta biết rằng với sự hoán
vị của 3 bít đầu vào bộ mã hoá ta sẽ được 8 khả năng của chuỗi đầu ra và mỗi mộttrong số đó lại có một bản đồ mã riêng (đường đi trong đồ hình lưới) Nhiệm vụ của bộgiải mã là phải xác định chuỗi nào đã được gửi đi
Giả sử ta thu được chuỗi 111100, bây giờ ta sẽ so sánh chuỗi thu được với cácchuỗi có thể được tạo ra bởi bộ mã hoá khi có 3 bit vào và xác định xem chúng khácnhau bao nhiêu bit (chính là khoảng cách Hamming giữa các từ mã)
Trang 13Ta thấy rằng từ mã thu được không thuộc từ mã nào trong bảng trên Ta sẽxác định từ mã đúng như thế nào? Ta có 2 cách :
- Ta sẽ chọn 1 từ mã trong bảng trên có khoảng cách Hamming nhỏ nhất, hoặc
- Ta sẽ tìm tính tương quan giữa các từ mã có thể thu được với từ mã thu được
và chọn ra từ mã có tính tương quan lớn nhất là từ mã đúng
Trong thủ tục thứ nhất ta gọi là thủ tục giải mã quyết định cứng (hard decisiondecoding ), thủ tục thứ hai ta gọi là thủ tục giải mã quyết định mềm (soft decisiondecoding ) Nhưng nếu chỉ dựa vào số bít khác nhau (khoảng cách hamming) giữachuỗi thu được và chuỗi dự đoán ta cũng chưa thể có câu trả lời chính xác ngay từ mãnào là từ mã đúng, vì trong bảng trên ta thấy có đến 2 chuỗi có cùng khoảng cáchHamming là 1 Hơn nữa khi độ dài chuỗi bít tăng thì số lượng phép tính sẽ tăng rất lớn
vì thế phương pháp này sẽ không hiệu quả trong thực tế Ta cần có 1 phương phápkhác hiệu quả hơn và cho kết qủa chính xác hơn
Nếu ta thu được bản tin có độ dài s , số khả năng của chuỗi thu đúng là 2s Làmthế nào để xác định được bản tin đúng mà không cần phải kiểm tra 2s khả năng, đóchính là ý tưởng của thuật toán giải mã
II.3.1.Giải mã theo từng chuỗi (Sequential Decoding)
Đây là 1 trong những phương pháp giải mã chập Phương pháp này được đềxuất lần đầu bởi Wozencraft và được tối ưu bởi Fano
Phương pháp giải mã theo chuỗi được mô tả rõ nhất thông qua phương pháploại suy Tại mỗi thời điểm ta có nhiều nút để lựa chọn, và mỗi hướng triển khai sẽ cómột giới hạn (Landmark) Nhưng khi chọn một hướng ta lại thường khó nhận ra giớihạn của nó nên nhiều khi ta đã đi sai hướng Mỗi khi nhận thấy đã đi sai hướng ta sẽquay trở lại điểm (nút) mà tại đó ta nhận thấy giới hạn và lặp lại qui trình trên đến khitìm thấy hướng đi đúng Số lần lặp lại tuỳ thuộc vào độ chính xác của mỗi hướng điđược chọn Trong trường hợp số lỗi trong chuỗi thu ít, giải thuật này sẽ nhanh chóngcho ra chuỗi từ mã đúng Ta dễ dàng nhận thấy được nhược điểm của phương pháp này
Trang 14là “làm thế nào để biết được giới hạn ?” Tuy nhiên đây lại là phương pháp khả thi tạithời điểm đó.
II.3.2 Thuật toán giải mã Viterbi (VA)
Thuật toán Viterbi giải mã mã chập dựa vào sự giống nhau nhất giữa các chuỗi(Maximum Likely-hood) Theo phương pháp n ày ta sẽ giới hạn số đường dẫn tại từngthời điểm Nguyên tắc để giới hạn số lựa chọn là :
- Các lỗi xuất hiện không có chu kì, và xác suất lỗi nhỏ
- Xác suất xuất hiện các lỗi cụm nhỏ hơn nhiều so với các lỗi đơn, các lỗi phân
được chọn gọi là Survivors path (đường dẫn còn lại).
Ta thấy với giải thuật Viterbi sẽ có một khoảng thời gian trễ để tạo ma trận cácđường dẫn, và cũng cần có một bộ nhớ khá lớn_điều n ày khó có thể đáp ứng được vàonhững năm 1967 khi m à Viterbi đưa giả giải thuật này Tuy nhiên điều đó sẽ tạo thuậntiện cho việc nhận ra ‘giới hạn’ của mỗi đường dẫn và thực hiện lại tại nút đó Do cónhững hạn chế về mặt kĩ thuật nh ư đã kể trên mà vào thời điểm đó giải thuật giải m ãcủa Viterbi khó có thể triển khai trên thực tế
Trang 15CHƯƠNG III THUẬT TOÁN GIẢI MÃ VITERBI
III 1 CƠ SỞ TOÁN HỌC CỦA GIẢI THUẬT VITERBI
III.1.1.Thuật toán giải mã Viterbi quyết định cứng (Hard_Decison Viterbi Algorithm-HDVA)
Với mã hoá mã chập, dòng bít vào là x sẽ cho chuỗi thông tin ra l à c Chuỗi bít c
sẽ được phát đi qua kênh thông tin có nhiễu và khi đến phía giải mã sẽ thu được chuỗi
trong số những chuỗi giải mã có thể có Hình vẽ sau sẽ mô tả kiến trúc của hệ thống :
Hình 3.1.1 Sơ đồ hệ thống truyền tin sử dụng m ã chập
Với tốc độ mã r, số đầu vào bộ mã hoá tại một thời điểm là k bít, và đầu ra là nbít song song, chu ỗi bít vào sẽ được kí hiệu như sau:x={x0(1),x0(2), ,x0(k),x1(1), ,x1(k), ,xL+m-1(1), ,xL+m-1(k)} , chuỗi bít ra bộ mã hoá là:c={c0(1),c0(2), ,c0(n),c1(1), ,c1(n), ,cL+m-1(1), ,cL+m-1(n)}
Trang 16trong đó L là độ dài chuỗi bít vào, m là độ dài lớn nhất của thanh ghi dịch Các chỉ sốdưới chỉ các điểm thời gian, các chỉ số tr ên chỉ số thứ tự của các bít vào- ra tại thờiđiểm đó.
Với điều kiện đầu là có m bít ở cuối chuỗi bít vào để đưa bộ mã hoá về trạngthái toàn 0, điều đó cho phép bộ mã hoá bắt đầu và kêt thúc đều ở trạng thái 0 chuỗithu được được mô tả như sau:
r={r0(1),r0(2), ,r0(n),r1(1), ,r1(n), ,rL+m-1(1), ,rL+m-1(n)} và chuỗi sau giải mã là:
y={y0(1),y0(2), ,y0(n),y1(1), ,y1(n), ,yL+m-1(1), ,yL+m-1(n)}
Trong giải thuật ML, thuật toán Viterbi sẽ lựa chọn y sao cho xác suất p(r|y) lớn
nhất Giả sử kêng không có nhớ, và nhiễu tác động độc lập với các bít khác nhau Theo
lí thuyết xác suất, xác suất của sự kiện độc lập sẽ b ằng tích của các sự kiện, do đó :
1 (1) (1) (2) (2) ( ) ( )
Biểu thức trên gọi là hàm Likelihood giữa chuỗi y với điều kiện thu được chuỗi
r Việc đánh giá giá trị lớn nhất của p(r|y) t ương đương với việc đánh giá giá trị l ớn
nhất của log(p(r|y) ), bởi v ì logarit là hàm đơn điệu tăng, do đó hàm Likelihood cònđược định nghĩa như sau:
Trang 17Hình 3.1.2 Mô hình kênh BSCVới kênh BSC giá trị a,b được chọn theo 2 cách khác nhau Thôn g thường a,b đượcchọn như sau:
1log log(1 )
Ma trận bít cho ta biết giá trị (trọng số) của bít thu được và bít sau khi giải mã
Ví dụ, nếu bít giải mã là yi(j) = 0 và bít thu được là ri(j) = 0 thì giá trị sẽ là
j i
r
Bít thu vào
( ) 1
j i
y
Trang 18do đó ma trận trên còn gọi là ma trận khoảng cách Hamming Thuật toán Viterbi s ẽ lựa
chọn chuỗi mã y trong đồ hình lưới với giá trị nhỏ nhất/khoảng cách Hamming quan h ệ với chuỗi thu được r.
Trong trường hợp khác a, b được định nghĩa như sau:
1log(1 ) log
bảng sau cho thấy ma trận bit theo cách chọn này:
Khi đó thuật toán Viterbi sẽ lựa chọn chuỗi y trong đồ hình lưới sao cho có giá trị khoảng cách Hamming lớn nhất với chuỗi r thu được.
Từ ma trận bit giá trị của đường dẫn của ma trận được định nghĩa như sau:
j i
r
Bít thu vào
( ) 1
j i
y
Trang 19i i i
gọi là Survivor Path (đường dẫn còn lại) và các nhánh còn lại là Nonsurvivor Path Survivor Path sẽ được lưu trong khi Nonsurvivor Path sẽ bị loại bỏ trong đồ hình
lưới Thuật toán Viterbi sẽ chọn các nhánh riêng rẽ về phía bên trái (theo chiều tăng
của trục thời gian), kết thúc của thuật toán sẽ là ML Path (đường đi đúng) Đi ngược lại trong ML Path ta sẽ được chuỗi giải mã.
Tóm lại thuật toán giải mã Viterbi quyết định cứng (HDVA) thực hiện như sau:
Gọi Sk,t trong đồ hình lưới là trạng thái Sk tại thời điểm t Mỗi trạng thái trong
đồ hình lưới được gán một giá trị là V(Sk,t)
1.- Khởi tạo t = 0
- Khởi tạo V(S0,0) = 0 và các trạng thái khác V(Sk,t) = +
2.- Gán t = t +1
- Tính giá trị nhánh cục bộ cho tất cả các nhánh đi từ trạng thái Sk tại thời
điểm t đang xét Đầu tiên ta tìm nhánh ma tr ận thứ t ( ) ( )
Trang 20được tính như với khoảng cách Hamming ( ) ( )
1
j j
t t j
4.Lưu giá trị “tốt nhất” của nhánh cục bộ đó, nó là 1 trong số các bít Survivor
5 Nếu t<L+m-1, quay trở lại bước 2
Kết quả của thuật toán Viterbi là toàn bộ đường đi giữa các trạng thái trong đồ hìnhlưới tương ứng với từ mã đúng nhất
III.1.2.Thuật toán giải mã Viterbi quyết định mềm (Soft_Decison Viterbi
- Phương pháp 1: ta sử dụng ma trận khoảng cách Euclidean (SDVA1)
- Phương pháp 2: ta sử dụng ma trận Correlation (tương quan)(SDVA2) a)Thuật toán giải mã Viterbi quyết định mềm_ phương pháp 1 (SDVA1)
Vởi thuật toán giải mã quyết định mềm ta không cần xác định rõ từng bít thuvào là 0 hay 1, mà ta thu vào từng khối nhiều bit (hữu hạn hoặc vô hạn) Ý tưởng của
thuật toán là, chuỗi thu vào r có nhiều bít (vô hạn) sẽ được đưa trực tiếp vào giải mã.
Phương pháp này c ũng giống với thuật toán giải mã quyết định cứng, nhưng nó sử
Trang 21Gọi Sk,t là 1 nút trong đồ hình lưới tương ứng với trạng thái Sk tại thời điểm t.Tại mỗi nút trong đồ hình lưới ta sẽ xác định 1 giá trị V(Sk,t)
4.Lưu giá trị “tốt nhất” của nhánh cục bộ đó, nó là 1 trong số các bít survivor
5 Nếu t<L+m-1, quay trở lại bước 2
b) Thuật toán giải mã Viterbi quyết định mềm_ phương pháp 2 ( SDVA2)
Thuật toán SDVA2 được trình bày dưới đây Hàm Likelihood được tính bằnghàm mật độ phân bố xác suất Gaussian : ( ) ( ) ( ( ) ( ) ) /2 0
0
1( j | j ) r i j y i j E b N
Trong đó: Eb là năng lượng thu được trên các bít của từ mã
N0 là mật độ phổ của nhiễu đơn biên
Bít thu được là biến ngẫu nhiên Gaussian với giá trị trung bình ( )j
i b
y E và N0/2 Lấylog của hàm Likelihood được :
Trang 22( ) ( ) 2 1
y = 1
1 ( ) ( )
M r y r y
Thuật toán SDVA2 được mô tả như sau:
Gọi Sk,t là 1 nút trong đồ hình lưới tương ứng với trạng thái Sk tại thời điểm t.Tại mỗi nút trong đồ hình lưới ta sẽ xác định 1 giá trị V(Sk,t)
M r y M r y
Nó được tính từ công thức V S( k t,1) M r y( |i i)
Trang 233.-Gán giá trị V(Sk,t) bằng giá trị nhánh cục bộ “tốt nhất” khi đi từ trạng thái Sktại thời điểm t Thông thường giá trị “tốt nhất” của nhánh cục bộ là nhánh có giá trị nhỏnhất.
4.Lưu giá trị “tốt nhất” của nhánh cục bộ đó, nó là 1 trong số các bít survivor
5 Nếu t<L+m-1, quay trở lại bước 2
Một cách mô tả dễ hiểu nhất thuật toán giải mã Viterbi là sử dụng đồ hình lưới
Đồ hình lưới dưới đây cho ví dụ với sơ đồ mã hoá (2,1,2) cho trong hình 2.2, với bảntin vào có độ dài 15 bít:
Hình 3.2.1 Đồ hình lưới của bộ mã hoá (2,1,2) với 17 thời điểm
Trang 24Bốn trạng thái có thể của bộ m ã hoá được biểu diễn theo chiều dọc Các cộtcho ta các trạng thái có thể của bộ m ã hoá Cột đầu cho thấy trạng thái khởi đầu của bộ
mã hoá, các cột tiếp theo biểu diễn trạng thái của bộ m ã hoá tại các thời điểm t Trongbản tin dài 15 bít ta cần thêm 2 bít để đưa bộ mã hoá trở về trạng thái đầu (flushingbit), dó đó bản tin đang xét sẽ có 17 b ít Trong đồ hình trên các đường nét liền biểudiễn sự chuyển đổi trạng thái khi có bít v ào là bít 1, các đường nét liền biểu diễn sựchuyển đổi trạng thái khi có bít v ào là bít 0
Bảng chuyển đổi trạng thái d ưới đây sẽ cho thấy sự t ương ứng giữa các đườngnối trên đồ hình lưới :
Bít vào / trạng thái tiếp theo
Trạng thái hiện tại
Bảng 3.2.1.Bảng trạng thái của bộ mã hoá trong hình 2.1
Trong bảng trên các dấu x chỉ ra rằng không có sự chuyển đổi trạng thái tương ứng
Ta luôn chú ý rằng tại thời điểm ban đầu, trạng thái khởi tạo của bộ mã hoá
là 0, cuối cùng có thêm 2 bít flushing để đưa bộ mã hoá về trạng thái đầu
Với bộ mã hoá trên ta giả sử chuỗi bít vào là x = {010111001010001002 } ,theo trên chuỗi mã ra là : c = {00 11 10 00 01 10 01 11 11 10 00 10 11 00 11 10 112 },haibít cuối là các bít flushing Biểu đồ dưới đây cho thấy sự chuyển đổi trạng thái trong đồ
Trang 25Hình 3.2.2.Đường dẫn trong đồ hình lưới với chuỗi bít vào xCác bít vào và bít mã hoá được cho bên dưới của biểu đồ.
Bảng dưới đây sẽ cho thấy cặp b ít mã hoá khi có bit vào t ại một trạng thái của
bộ mã hoá:
Từ mã ra
Trạng thái hiện thời
Để thuận tiện hơn ta sử dụng đồ hình lưới tại 1 thời điểm như sau:
Hình 3.2.3 Đồ hình lưới tại một thời điểm
Trang 26Trong đó các kí hiệu ghi trên mỗi đường nối cho thấy các bít ra khi chuyển trạngthái Các đường nét liền cho thấy sự chuyển trạng thái khi có bít vào là bít 1 Cácđường nét đứt cho thấy sự chuyển trạng thái khi có bít vào là bít 0.
Bây giờ ta sẽ xem thuật toán Viterbi hoạt động như thế nào? Để cho đơngiản ta xét thuật toán giải mã quyết định cứng Giả sử ta thu được chuỗi bít với 2 bít lỗiđược đánh dấu trong biểu đồ dưới đây, sau khi giải mã ta sẽ thấy khả năng khôi phục
dữ liệu của mã chập
Các bít lỗi được đánh dấu x ở dưới
Tại mỗi thời điểm ta thu được 1 cặp bít, ta sẽ tạo ma trận chứa khoảng cáchHamming giữa từ mã thu được và các từ mã có thể tạo bởi bộ mã hoá tại thời điểm đó,
gọi là ma trận tích luỹ lỗi (accumulated error metric ).
Ta biết rằng bộ mã hoá có trạng thái ban đầu là 00, do đó nó chỉ có thể đi đến 2trạng thái là 00 (khi có bit 0 vào) hoặc 11 (khi có bit 1 vào) Khoảng cách Hammingđược tính bằng cách đếm số bít khác nhau giữa 2 từ mã (phép xor), trong trường hợpnày khoảng cách Hamming chỉ có thể là 0,1 hoặc 2 Khoảng cách Hamming tính tạimỗi thời điểm trên đường nối từ trạng thái trước đó đến trạng thái hiện tại gọi là mộtnhánh của ma trận Tại thời điểm ban đầu ta sẽ lưu giá trị tính được ở trên vào ô nhớ
tương ứng trong accumulated error metric, tại các thời điểm tiếp ta tính giá trị lỗi
tích luỹ bằng cách cộng giá trị lỗi tích luỹ tại thời điểm trước đó với nhánh hiện thời
Trang 27Tại thời điểm t = 1 ta thu được cặp bít 002 , và tại thời điểm này ta chỉ có thểthu được 1 trong 2 cặp bít 002 hoặc 112 Khoảng cách Hamming gi ữa 002 và 002 là 0,khoảng cách Hamming gi ữa 002 và 112 là 2 Do đó nhánh của ma trận với nhánh đi từ
002 đến
002 (bit vào là 0) là 0, và nhánh của ma trận với nhánh đi từ 002 đến 102 (bit vào
là 0) là 2 Do giá trị lỗi tích luỹ trước đó là 0 nên giá trị của ma trận accumulated error metric tại các trạng thái 00 và 10 bằng giá trị của nhánh ma trận Giá trị lỗi tích
luỹ tại 2 trạng thái còn lại chưa xác định Hình dưới cho thấy kết quả tính toán tại thờiđiểm t = 1:
Hình 3.2.4.a Đồ hình lưới tại thời điểm t =1
Ta thấy rằng đường nối trạng thái từ thời điểm t = 0 đến t =1 minh họa cho mốiquan hệ giữa các trạng thái ở thời điểm t = 0 v à t = 1 Thông tin này đư ợc biểu diễntrên hình vẽ, tại thời điểm t = 1 mối quan hệ đó đ ược biểu diễn bằng các con số Tacũng làm tương tự với các thời điểm tiếp, tại mỗi thời điểm ta sẽ l ưu các con số biểudiễn mối liên hệ giữa trạng thái hiện thời v à các trạng thái trước đó
Tại thời điểm t = 2 ta thu đ ược cặp bít 112 Các từ mã có thể thu được tàithời điểm này là 002 khi đi từ trạng thái 002 đến trạng thái 002, 112 khi đi từ trạng thái
002 đến trạng thái 102 , 102 khi đi từ trạng thái 102 đến trạng thái 012 , 012 khi đi từtrạng thái 102 đến trạng thái 112
Trang 28Trạng thái
trước
Trạng thái hiệnthời
Từ mã ra Từ mã thu
được
Khoảng cáchHamming
Ta sẽ xác định giá trị của các nhánh ma trận theo giá trị của nhánh trước đó
mà ta đi đến trạng thái hiện thời Tại thời điểm t = 1 ta đang ở 1 trong 2 trạng thái 002hoặc 102 giá trị lỗi tích luỹ tương ứng với mỗi trạng thái n ày là 0 và 2 Hình vẽ dướiđây minh họa cho kết qủa tính toán tại thời điểm t = 2 :
Hình 3.2.4.b Đồ hình lưới tại thời điểm t = 2
Từ hình vẽ ta thấy mối qua hệ giữa các trạng thái được biểu diễn rất rõ ràngqua đồ hình mắt cáo
Tại thời điểm t = 3, bây giớ đã phức tạp hơn trước một chút, từ mỗi trạngthái tại thời điểm t = 2 đều đi đến được 2 trạng thái khác Ta sẽ làm như sau, tại mỗitrạng thái ta so sánh giá trị lỗi tích luỹ tại nhánh đó và loại bỏ giá trị lớn hơn Nếu giátrị lỗi tích luỹ tại 2 nhánh khác nhau bằng nhau ta sẽ lưu lại Tại mỗi trạng thái nhánhđược giữ lại là nhánh có giá trị lỗi tích luỹ tại đó nhỏ nhất (survives) Nếu có 2 nhánh
Trang 29chọn nhánh có giá trị nhỏ hơn gọi là add-compare-select Hình vẽ dưới cho ta thấy kếtquả tính toán tại thời điểm t = 3 :
Hình 3.2.4.c Đồ hình lưới tại thời điểm t =3Đến đây ta cần chú ý rằng trong 3 cặp bít thu đ ược có 1 lỗi, và giá trị lỗi tíchluỹ là 1, có 2 trạng thái có cùng số lỗi như vậy, ta sẽ chọn ngẫu nhiên một nhánh, đồngthời lưu lại trạng thái 11 đã không chọn ta tiếp tục đi theo nhánh trên (trạng thái 01),nếu số lỗi tăng nhiều ta sẽ quay lại trạng thái 11 đã lưu
Tại thời điểm t = 4, ta cũng lăp lại các thao tác giống như trong thời điểm t
= 3 và thu được kết quả như hình vẽ sau :
Hình 3.2.4.d Đồ hình lưới tại thời điểm t =4
Chú ý rằng tại t = 4, đường đi (in đậm) trong đồ hình lưới chỉ ra các bít thực sự
đã phát đi (không có lỗi)
Ta xét tiếp tại thời điểm t = 5 Kết quả tính toán được cho trên hình vẽ sau :