Thực hiện bộ giải mã VITERBI trên FPGA
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ - VIỄN THÔNG
-
ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ ĐIỆN TỬ VIỄN THÔNG
Trang 3
QUYẾT ĐỊNH GIAO ĐỀ TÀI
Tên đề tài: Thực hiện bộ giải mã Viterbi trên FPGA
1) Cơ sở ban đầu:
Từ thực tiễn của việc thông tin di động và viễn thông ngày càng bùng nổ, cùng với sự đam mê trong lĩnh vực điện tử và viễn thông, nhóm thực hiện đề tài đã quyết định chọn nội dung đồ án tốt nghiệp là mô tả một thuật giải mã kênh truyền phổ biến là thuật giải Viterbi cho mã xoắn Đây có thể xem là một sự kết hợp tốt giữa kiến thức viễn thông và chuyên ngành điện tử
2) Nội dung các phần thuyết minh và tính toán:
3) Các bản vẽ:
KS Đặng Phước Hải Trang
Giáo viên hướng dẫn
Ngày tháng năm 20…
Chủ nhiệm bộ môn
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
Trang 4NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
TP Hồ Chí Minh, ngày tháng năm 2011 Giáo viên hướng dẫn
Trang 5NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
TP Hồ Chí Minh, ngày tháng năm 2011
Giáo viên phản biện
Trang 6LỜI NÓI ĐẦU
Cùng với sự phát triển của khoa học và công nghệ phục vụ cho cuộc sống của con người, công nghệ viễn thông trong những năm qua đã có những bước phát triển mạnh mẽ cung cấp ngày càng nhiều tiện ích cho con người
Thế kỷ 21 chứng kiến sự bùng nổ thông tin, trong đó thông tin di động đóng một vai trò rất quan trọng Nhu cầu trao đổi thông tin ngày càng tăng cả về số lượng, chất lượng và các loại hình dịch vụ kèm theo, điều này đòi hỏi phải tìm ra phương thức trao đổi thông tin mới ngày càng ưu việt và mang lại hiệu quả cao hơn Các công nghệ di động và viễn thông ngày một phát triển nhanh chóng để hướng tới mục đích tăng tốc độ cũng như chất lượng của các dịch vụ nhằm đáp ứng nhu cầu ngày càng cao của con người về các thiết bị không dây bỏ túi
Một trong những khâu quan trọng nhất của việc thông tin không dây đó là việc truyền và nhận tín hiệu Điều này cần thiết phải có một loại mã hóa dành riêng cho kênh truyền có khả năng sửa chữa sai sót của tín hiệu truyền đi do các tác động của môi trường Các hình thức được sử dụng để mã hóa kênh truyền trước đó đều có những khuyết điểm nhất định trong việc khôi phục dữ liệu bị sai sót trên đường truyền, thường chỉ có khả năng phát hiện lỗi và báo về bên phát để thực hiện truyền lại tin tức bị sai đó Điều này làm chậm quá trình truyền tin tức Bộ mã hóa dùng mã chập và thuật giải mã Viterbi là một chuẩn đang được ứng dụng rất rộng rãi trên toàn thế giới với nhiều ưu điểm vượt trội so với các hình thức trước đó, ngoài khả năng phát hiện lỗi tốt nhờ sự kiểm soát chặt chẽ tin tức truyền đi, nó còn có khả năng tự khôi phục các tin tức bị sai trong quá trình truyền trên kênh truyền Điều này giúp giảm thiểu tối đa thời gian truyền nhận tin tức, do đó tốc độ dữ liệu ngày một được nâng cao Tuy vẫn còn một số hạn chế nhất định trong việc khôi phục các đoạn tin tức sai hàng loạt, nhưng thuật toán Viterbi vẫn là sự lựa chọn ưu tiên và là nền tảng cho việc phát triển các hình thức mã hóa và giải mã tốt hơn nữa hiện tại và sau này
Vì những ưu điểm nổi bật và tính ứng dụng cao của thuật toán này trong hiện tại và tương lai của ngành viễn thông, nhóm thực hiện quyết định chọn đề tài là
“Thực hiện bộ giải mã Viterbi trên FPGA” Trong phạm vi của cuốn đồ án này, nhóm thực hiện đề tài sẽ giới thiệu khái quát về hai hình thức mã hóa và giải mã này và tiến hành mô phỏng thuật toán mã hóa và giải mã đó trên Matlab cũng như
mô tả phần cứng trên kit DE2 của Altera
Nội dung của đồ án sẽ bao gồm các vấn đề sau:
Trang 7Giới thiệu về vị trí vai trò của mã hóa kênh truyền trong hệ thống thông tin
số, so sánh hai hình thức mã hóa là mã khối và mã trellis
Khái niệm và phân tích mã chập, cách thức mã hóa sử dụng mã chập, cũng như cấu trúc của bộ mã hóa chập Giới thiêu thuật toán giải mã Viterbi, nguyên lý thực hiện giải mã và phân loại một số phương pháp giải mã
Tiến hành đi mô phỏng thuật toán mã hóa mã chập và thuật toán giải mã Viterbi Phân tích thuật toán
Mô phỏng thuật toán thực tế hơn trên kit DE2 với các led hiển thị dữ liệu từ
đó thấy được hiệu quả của thuật toán Viterbi, ứng dụng ngôn ngữ thiết kế phần cứng VHDL
Trang 8MỤC LỤC
Trang
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM 1
LỜI CẢM ƠN i
QUYẾT ĐỊNH GIAO ĐỀ TÀI ii
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN iii
LỜI NÓI ĐẦU v
MỤC LỤC vii
LIỆT KÊ HÌNH x
LIỆT KÊ BẢNG xii
PHẦN B 13
CHƯƠNG 1 14
1.1 Vị trí của mã hóa kênh trong hệ thống thông tin số 14
1.2 Khái niệm mã hóa kênh và phân loại 15
1.2.1 Khái niệm 15
1.2.2 Phân loại mã hóa kênh 16
1.3 Khái quát về mã khối và mã trellis 16
1.3.1 Mã khối 16
1.3.2 Mã trellis 17
CHƯƠNG 2 19
2.1 Khái niệm mã chập 19
2.2 Phân tích mã hóa dùng mã chập 19
2.3 Cấu trúc mã chập 23
2.4 Biểu diễn mã chập 27
2.5 Ưu nhược điểm của mã chập 30
2.5.1 Ưu điểm 30
2.5.2 Nhược điểm 30
2.6 Định nghĩa thuật toán Viterbi 30
2.7 Phân tích thuật giải Viterbi 31
2.8 Giải mã quyết định cứng và giải mã quyết định mềm 43
Trang 92.8.1 Thuật toán Viterbi quyết định cứng 43
2.8.2 Thuật toán Viterbi quyết định mềm 49
2.8.2.1 Thuật toán Viterbi quyết định mềm (phương pháp 1) 49
2.8.2.2 Thuật toán Viterbi quyết định mềm (phương pháp 2) 50
2.8.3 Ưu điểm của giải mã quyết định mềm so với giải mã quyết định cứng
52
2.9 Xác suất lỗi 55
2.10 Ưu nhược điểm của thuật toán giải mã Viterbi 56
2.10.1 Ưu điểm 56
2.10.2 Nhược điểm 56
CHƯƠNG 3 57
3.1 Giới thiệu 57
3.2 Sơ đồ khối hệ thống 57
3.3 Lưu đồ mô phỏng 58
3.3.1 Khối tạo bit ngõ vào 58
3.3.2 Khối mã hóa 59
3.3.3 Khối cộng nhiễu Gausse trắng 59
3.3.4 Khối giải mã 59
3.3.5 Tính toán và vẽ BER 60
3.4 Hình ảnh về chương trình mô phỏng 60
CHƯƠNG 4 66
4.1 Giới thiệu sơ lược KIT DE2 và phần mềm Quartus 66
4.1.1 KIT DE2 của Altera 66
4.1.1.1 Tổng quan kit DE2 66
4.1.1.2 Sử dụng nút nhấn và Switch 68
4.1.1.3 Sử dụng LCD 69
4.1.2 Phần mềm lập trình Quatus II 69
4.2 Giải quyết vấn đề 70
4.2.1 Giải mã viterbi quyết định cứng 70
4.2.2 Giải mã viterbi quyết định mềm 74
4.3 Lưu dồ thuật toán lập trình 76
4.4 Kết quả 83
Trang 10CHƯƠNG 5: KẾT LUẬN 89
5.1 Tổng kết nhận xét 89
5.2 Tồn tại và hướng phát triển của đề tài 89
PHẦN C 91
I Phụ lục 92
1 Hướng dẫn sử dụng kit DE2 để mô phỏng 92
2 Tài nguyên sử dụng trên Kit DE2 92
3 Mã nguồn Matlab 95
4 Mã nguồn VHDL 106
II Tài liệu tham khảo 130
Trang 11LIỆT KÊ HÌNH
Hình 1.1: Vị trí của mã hóa kênh truyền trong hệ thống thông tin số
Hình 1.2: Sự phân chia mã hóa kênh thành hai nhánh riêng biệt
Hình 2.14: Đường đi hoàn chỉnh khôi phục chính xác tín hiệu tại ngõ ra
Hình 2.15: Tín hiệu nhận có 2 bit sai tại t =2 và t = 11
Hình 2.16: Tại thời điểm t = 1
Hình 2.17: Tại thời điểm t = 2
Hình 2.18: Tại thời điểm t = 3
Hình 2.19: Tại thời điểm t = 4
Hình 2.20: Tại thời điểm t = 5
Hình 2.21: Tất cả dữ liệu đã được giải mã và sửa sai chính xác
Hình 2.22: Bộ mã tốc độ 1/3 và K= (7,7,5)
Hình 2.23: Giải mã quyết định cứng và mềm
Hình 2.24: Hệ thống mã tích chập
Hình 2.25: Kiểu kênh hệ thống nhị phân, trong đó p là xác suất chéo
Hình 2.26: Biểu diễn Viterbi theo ví dụ
Hình 2.27: Mô tả giải mã quyết định cứng với bộ mã parity
Hình 2.28: Mô tả giải mã quyết định mềm với bộ mã parity
Hình 3.1: Sơ đồ khối hệ thống
Hình 3.2: Lưu đồ mô phỏng
Hình 3.3: Giao diện khởi đầu chương trình mô phỏng
Hình 3.4: Giao diện chương trình mô phỏng 1
Hình 3.5: Giao diện chương trình mô phỏng 2
Hình 3.6: Nhập bit ngẫu nhiên – Quyết định mềm
Hình 3.7: BER của quyết định mềm
Trang 12Hình 3.8: Nhập bit ngẫu nhiên – Quyết định cứng
Hình 3.9: BER của quyết định cứng
Hình 3.10: So sánh BER của cả quyết định cứng và mềm
Hình 3.11: Tự nhập bit vào – Quyết định mềm
Hình 4.1: KIT DE2 của Altera
Hình 4.2: Sơ đồ khối KIT DE2
Hình 4.3: Chống dội phím nhấn
Hình 4.4: Tính toán metric nhánh và metric đường cho bộ giải mã Viterbi
Hình 4.5: Lưu đồ giải thuật chính của chương trình
Hình 4.6: Lưu đồ giải thuật bộ giải mã
Hình 4.7: Lưu đồ chi tiết giải thuật giải mã viterbi tren Kit DE2
Hình 4.8: Lưu đồ tính khoảng cách Hamming
Hình 4.9: Lưu đồ giải thuật tính khoảng cách Euclidean
Hình 4.10: Lưu đồ khối tính khoảng cách nhánh
Hình 4.11: Lưu đồ khối ACS
Hình 4.12: Lưu đồ khối truy hồi
Hình 4.13: Lưu đồ khối giải mã
Trang 13LIỆT KÊ BẢNG
Bảng 2.1: Trạng thái ngõ vào và ngõ ra của bộ mã hóa tốc độ ½
Bảng 2.2: Bảng ma trận tích lũy của cả 8 bit của bản tin
Bảng 2.3: Bảng lịch sử trạng thái (state history table)
Bảng 2.4: Bảng các trạng thái được lựa chọn khi truy hồi
Bảng 2.5: Bảng trạng thái kế tiếp (next state table)
Bảng 2.6: Bảng chứa các dữ liệu của bản tin gốc đã được khôi phục
Bảng 2.7: Ví dụ về punctured code
Bảng 2.8: Các giá trị metric bit thông thường
Bảng 2.9: Các giá trị metric bit cách 2
Bảng 2.10: Ví dụ với bộ mã parity
Bảng 2.11: Tính toán khoảng cách Hamming cho quyết định cứng
Bảng 2.12: Tính toán khoảng cách Euclidean cho quyết định mềm
Bảng 4.1: Thứ tự kết nối phím nhấn với các chân của FPGA
Bảng 4.2: Gán chân FPGA cho màn hình LCD
Bảng 4.3: Trạng thái hiện tại và trạng thái trước của nó
Bảng 4.4: Bảng trạng thái tiếp theo
Trang 14PHẦN B
NỘI DUNG
Trang 15
CHƯƠNG 1
TỔNG QUAN VỀ HỆ THỐNG THÔNG TIN SỐ
1.1 Vị trí của mã hóa kênh trong hệ thống thông tin số
Mã hóa kênh là một khâu rất quan trọng trong hệ thống thông tin số không dây cùng với mã hóa nguồn, ghép kênh, điều chế,… để tạo ra một tín hiệu phù hợp cho việc truyền dẫn vô tuyến và tín hiệu đó có khả năng điều khiển được sự sai bit và sửa các lỗi xảy ra nếu có để có thể khôi phục lại gần như nguyên dạng tín hiệu tin tức mà mình truyền đi
Hình 1.1: Vị trí của mã hóa kênh truyền trong hệ thống thông tin số
Mã hoá kênh: mục đích là làm giảm xác suất sai thông tin khi truyền qua kênh truyền
Việc giảm thiểu xác suất sai dựa việc phát hiện sai và sửa sai có thể dẫn đến việc giảm tỉ số tín hiệu trên nhiễu (SNR) cần thiết nhờ đó giảm được công suất, tiết kiệm năng lượng Việc sửa sai hữu hiệu cho tín hiệu SNR nhỏ sẽ thuận lợi cho việc bảo mật, trải phổ và tăng độ chính xác của thông tin nhận- mục đích quan trọng nhất của truyền thông
Trang 161.2 Khái niệm mã hóa kênh và phân loại
1.2.1 Khái niệm
Mã hóa kênh là việc đưa thêm các bit dư vào tín hiệu số theo một quy luật nào
đấy, nhằm giúp cho bên thu có thể phát hiện và thậm chí sửa được cả lỗi xảy ra trên kênh truyền
Một số hệ thống có thể khắc phục lỗi bằng cách gởi một yêu cầu cho bên phát gửi lại tín hiệu nếu phát hiện lỗi, đó là chế độ ARQ Nhưng việc này chỉ thích hợp cho các hệ thống truyền dẫn hữu tuyến và một số hệ thống vô tuyến không yêu cầu
vể thời gian trễ Thay vào đó, với các hệ thống thông tin không dây ngày nay, người
ta hay sử dụng một loại mã có thể phát hiện và khắc phục lỗi một cách tự động Việc này giảm thiểu thời gian trể so với các hệ thống yêu cầu truyền lại Bộ mã này thường được gọi là mã điều khiển lỗi (ECC), hay chính xác hơn là FEC
Mục đích của lý thuyết Mã hóa trên kênh truyền là tìm những mã có thể truyền
thông nhanh chóng, chứa đựng nhiều từ mã tự hợp lệ và có thể sửa lỗi hoặc ít nhất phát hiện các lỗi xảy ra Các mục đích trên không phụ thuộc vào nhau, và mỗi loại
mã có công dụng tối ưu cho một ứng dụng riêng biệt Những đặc tính mà mỗi loại
mã này cần còn tuỳ thuộc nhiều vào xác suất lỗi xảy ra trong quá trình truyền thông Đối với một đĩa CD thông thường, lỗi trong âm thanh xảy ra chủ yếu là do bụi
và những vết xước trên mặt đĩa Vì thế, các mã được lồng vào với nhau Dữ liệu được phân bổ trên toàn bộ mặt đĩa Tuy không được tốt cho lắm, song một mã tái diễn đơn giản có thể được dùng làm một ví dụ dễ hiểu Chẳng hạn, chúng ta lấy một khối số liệu bit (đại diện cho âm thanh) và truyền gửi chúng ba lần liền Bên máy thu, chúng ta kiểm tra cả ba phần lặp lại ở trên, từng bit từng bit một, rồi lấy cái nào
có số bầu cao nhất Điểm khác biệt ở đây là, chúng ta không chỉ truyền gửi các bit theo thứ tự Chúng ta lồng nó vào với nhau Khối dữ liệu này, trước tiên, được chia
ra làm 4 khối nhỏ Sau đó chúng ta gửi một bit ở khối đầu tiên, tiếp theo một bit ở khối thứ hai v.v tuần tự qua các khối Việc này được lặp đi lặp lại ba lần để phân bổ
số liệu ra trên bề mặt đĩa Trong ngữ cảnh của mã tái diễn đơn giản ở trên, việc làm này hình như không được hiệu quả cho lắm Song hiện nay có những mã có hiệu ứng cao, rất phù hợp với việc sửa lỗi xảy ra đột ngột do một vết xước hay một vết bụi, khi dùng kỹ thuật lồng số liệu nói trên
Mỗi mã thường chỉ thích hợp cho một ứng dụng nhất định Viễn thông trong vũ trụ bị giới hạn bởi nhiễu nhiệt trong thiết bị thu Hiện trạng này không xảy ra một cách đột phát bất thường, song xảy ra theo một chu trình tiếp diễn Tương tự như vậy, modem với dải tần hẹp bị hạn chế vì nhiễu âm tồn tại trong mạng lưới điện thoại Những nhiễu âm này có thể được biểu hiện rõ hơn bằng một mô hình tạp âm tiếp diễn Điện thoại di động hay có vấn đề do sự suy sóng nhanh chóng xảy ra Tần
số cao được dùng có thể gây ra sự suy sóng tín hiệu một cách nhanh chóng, ngay cả
Trang 17khi máy nhận chỉ dời chỗ vài phân Anh Một lần nữa, người ta hiện đã có một loại
mã hóa trên kênh truyền được thiết kế để đối đầu với tình trạng suy sóng
1.2.2 Phân loại mã hóa kênh
Lý thuyết mã hóa đại số được chia ra làm 2 loại mã chính
1 Mã khối
2 Mã trellis
Chúng phân tích ba đặc tính sau của mã (nói chung) là:
Hình 1.2: Sự phân chia mã hóa kênh thành hai nhánh riêng biệt
Trong mỗi loại mã lại được phân tách thành 2 nhánh nữa đó là mã tuyến tính và
mã không tuyến tính
Thường thì các mã không tuyến tính không được ứng dụng trong thực tế vì các nhược điểm của nó, nên ở đây chúng ta chỉ đề cập đến các mã tuyến tính
Trong phần tiếp theo chúng ta sẽ khái quát sơ lược về mã khối và mã trellis
1.3 Khái quát về mã khối và mã trellis
1.3.1 Mã khối
Mã khối tuyến tính mang tính năng tuyến tính, chẳng hạn tổng của hai từ mã nào đấy lại chính là một từ mã; và chúng được ứng dụng vào các bit của nguồn trên từng khối một; cái tên mã khối tuyến tính là vì vậy Có những khối mã bất tuyến
Trang 18tính, song khó mà chứng minh được rằng một mã nào đó là một mã tốt nếu mã ấy không có đặc tính này.
2 m, là số ký hiệu nguồn được dùng để mã hóa tức thời,
Có nhiều loại mã khối tuyến tính, như
vũ trụ, sử dụng những 24 chiều Nếu được dùng là mã nhị phân (thường thấy), các chiều ám chỉ đến chiều dài của từ mã như đã định nghĩa ở trên
1.3.2 Mã trellis
Mã trellis hay còn gọi là mã chập (kết hợp) được sử dụng trong các modem dải tần âm (V.32, V.17, V.34) và trong các điện thoại di động GSM, cũng như trong các thiết bị truyền thông của quân đội vũ trang và trong các thiết bị truyền thông với vệ tinh
Mục đích của việc tạo ra mã chập là nhằm làm cho tất cả các ký hiệu từ mã trở thành tổng trọng số của nhiều loại ký hiệu thông điệp trong nhập liệu Nó tương tự như toán kết hợp được dùng trong các hệ tuyến tính bất biến để dùng tìm xuất liệu của một hệ thống, khi chúng ta biết nhập liệu và các đáp ứng xung
Nói chung chúng ta tìm xuất liệu của bộ mã chập hệ thống, tức sự kết hợp của nhập liệu bit, đối chiếu với trạng thái của bộ mã hóa kết hợp, hoặc trạng thái của các thanh ghi
Trang 19Về cơ bản mà nói, mã chập không giúp thêm gì trong việc chống nhiễu hơn một
mã khối tương ứng Trong nhiều trường hợp, chúng nói chung cho chúng ta một phương pháp thực thi đơn giản hơn, hơn hẳn một mã khối có hiệu quả tương ứng
Bộ mã hóa thường là một mạch điện đơn giản, có một bộ nhớ, một vài biện pháp truyền thông tin phản hồi báo tình hình, thường là các cổng loại trừ XOR Bộ mã hóa có thể được thực thi trong phần mềm hay phần sụn
Thuật toán Viterbi là một thuật toán tối ưu nhất được dùng để giải mã các mã chập Hiện có những phương pháp giảm ước giúp vào việc giảm khối lượng tính toán phải làm Những phương pháp này phần lớn dựa vào việc tìm tuyến đường có khả năng xảy ra cao nhất Tuy không ngắn gọn, song trong môi trường nhiễu thấp hơn, người ta thường thấy chúng cho những kết quả khả quan Các bộ điều hành vi
xử lý hiện đại có khả năng thực hiện những thuật toán tìm giảm ước nói trên với tỷ
lệ trên 4000 từ mã trong một giây
Đề tài chủ yếu nghiên cứu về thuật toán giải mã Viterbi để thấy được ưu điểm của thuật toán trong việc giảm tối thiểu sai số khi mã hóa và giải mã tín hiệu Do
đó, trong các phần tiếp theo của đồ án, chúng ta chỉ tìm hiểu việc mã hóa tin tức dùng mã chập và giải mã dựa trên thuật toán Viterbi cũng như những ưu khuyết điểm của chúng Đồng thời ta tiến hành mô phỏng thuật toán trên Matlab và trên
Kit FPGA để kiểm chứng thực tế hơn Còn đối với các mã trellis còn lại thì ta sẽ
không phân tích trong phạm vi cuốn đồ án này
Trang 20mã thông qua các giải thuật khác nhau, trong đó nổi tiếng nhất là giải thuật Viterbi Tại sao gọi là mã chập vì cấu trúc mã hóa có thể biểu diễn dưới dạng phép tính chập giữa đa thức sinh mã và chuỗi tín hiệu được mã hóa.
Mã hóa chập và thuật toán giải mã Viterbi được sử dụng trong khoảng hơn một
tỉ điện thoại, có thể là lớn nhất trong các loại thuật toán được ứng dụng Tuy nhiên, hiện tại thì thuật toán xử lý viterbi được ứng dụng nhiều nhất trong các thiết bị âm thanh và hình ảnh kỹ thuật số Ngày nay, chúng còn được sử dụng trong các thiết bị bluetooth
Mục đích của mã hóa kênh truyền là nhằm tăng dung lượng kênh truyền, bằng cách cộng thêm vào tín hiệu những dữ liệu dư thừa được thiết kế một cách cẩn thận trước khi truyền lên kênh truyền Mã hóa chập và mã hóa khối là 2 dạng chính của
mã hóa kênh truyền Mã hóa chập thì dựa trên dữ liệu nối tiếp, 2 hoặc một vài bit được truyền một lúc, còn mã hóa khối thì dựa trên một khối dữ liệu lớn tương quan (đặc trưng là khoảng vài trăm bytes) Ví dụ, mã Redsolomon là một mã hóa khối
Sự khác nhau cơ bản giữa mã hóa khối và mã hóa chập là mã hóa khối là mã hóa không nhớ Cho một chuỗi dữ liệu K bit, thì ngõ ra của bộ mã hóa khối là một khối dữ liệu n bit duy nhất Mã hóa chập không kết nối các khối bit riêng vào trong một khối từ mã, thay vào đó nó sẽ chấp nhận một chuỗi bit liên tục và taọ thành một chuỗi ngõ ra Hiệu quả hay tốc độ dữ liệu của mã hóa chập được đánh giá bằng tỉ lệ của số bit ngõ vào k, và số bit ngõ ra n Trong mã hóa chập là có một vài bộ nhớ dùng để ghi nhớ dòng bit vào Thông tin này được sử dụng để mã hóa các bit tiếp theo
2.2 Phân tích mã hóa dùng mã chập
Mã chập là mã tuyến tính có ma trận sinh có cấu trúc sao cho phép mã hóa có thể xem như một phép lọc (hoặc lấy tổng chập) Mã chập được sử dụng rộng rãi trong thực tế Bởi mã hóa được xem như một tập hợp các bộ lọc số tuyến tính với dãy mã là các đầu ra của bộ lọc được ghép xen kẽ Các mã chập là các mã đầu tiên được xây dựng các thuật toán giải mã quyết định mềm hiệu quả
Mã khối từ các khối k dấu (hay ký hiệu) tạo ra các khối n dấu Với các mã chập (thường được xem là các mã dòng), bộ mã hóa hoạt động trên dòng liên tục
Trang 21các bit vào không được phân thành các khối tin rời rạc Tuy nhiên tốc độ mã
[ ] n
∈ k n được hiểu là cứ có k ngõ vào ở mỗi bước thời gian sẽ tạo ra n ngõ ra
Các phép tính số học sử dụng trong hình thức mã hóa này có thể được thực hiện trên một trường tùy ý nhưng thông thường vẫn là trên GF(2)
Ta biểu thị các dãy và các hàm truyền đạt như các chuỗi lũy thừa của biến x (đôi khi còn dùng ký hiệu D thay cho x) Dãy {…,m-2, m-1, m0, m1, m2, …} (với
e e
vậy cứ mỗi bít vào lại có hai bít mã hóa được đưa ra, kết quả là ta có một mã có tốc
Trang 22Ở đây dấu phẩy phân cách các cặp bít ra ứng với mỗi bít vào.
Ga (x) = [1+ x+ x 2 1 + x 2]
Ma trận truyền này không chỉ có dạng các đa thức, ta có thể thấy thông qua
ví dụ sau:
Ví dụ 2.2.1: Xét ma trận truyền của mã chập sau:
Vì có “1” ở cột đầu tiên nên dòng vào sẽ xuất hiện trực tiếp ở đầu ra đan xen, bởi vậy đây là một mã chập hệ thống Bộ mã hóa cho mã này được mô tả ở hình 2.2:
2
Trang 23Với dòng vào: m (x) = 1+ x + x 2 + x3+ x 4 + x8 các đầu ra C(1)
k và C(2)
k có dạng:
Một bộ mã hóa chỉ có các hàng đa thức trong ma trận truyền được gọi là bộ
mã hóa có đáp ứng xung hữu hạn Một bộ mã hóa có các hàm hữu tỷ trong ma trận truyền gọi là bộ mã hóa có đáp ứng xung vô hạn
Với mã có tốc độ k/n với k > 1 dãy tin tức đầu vào (ta coi như được tách ra
Trang 24Hình 2.3: Bộ mã hóa hệ thốngMột sơ đồ mã hóa khác có hiệu quả hơn được mô tả ở hình 2.4:
Từ các ví dụ trên ta có định nghĩa sau cho mã chập
Định nghĩa: Mã chập tốc độ R = k/n trên trường các chuỗi Laurent hữu tỷ
[ ]
F X trường F là ảnh của một ánh xạ tuyến tính đơn ánh của các
m (cũng ký hiệu là N), bộ mã có k bit ngõ vào và đầu ra bộ mã chập có n bit ngõ ra
(n hàm đại số tuyến tính hoặc n ngõ ra cộng modulo) Tốc độ mã là R = k/n, số ô nhớ của bộ ghi dịch là m×k và tham số L gọi là chiều dài ràng buộc (Constraint
length) của mã chập (với L=k(m-1))
Trang 25Chuỗi mã n bit
Các thông số k,n có phạm vi giới hạn trong khoảng giá trị từ 1 đến 8, thông số m trong khoảng từ 2 đến 10, và tốc độ mã R từ 1/8 đến 7/8 ngoại trừ các bộ mã hóa được sử dụng trong viễn thông vũ trụ có thể có tốc độ 1/100 hoặc thậm chí cao hơn.Trong một số tài liệu, khi nói đến mã chập, người ta còn đặc trưng cho bộ mã hóa chập bằng chiều dài ràng buộc K và tốc độ mã R Tốc độ mã, R=k/n, được hiểu
là tỉ số giữa số bit ngõ vào và số ký hiệu ngõ ra của bộ mã hóa Thông số chiều dài ràng buộc, K, cho biết “chiều dài” của bộ mã hóa mã chập, ví dụ, có bao nhiêu trạng thái k-bit có thể đưa đến mạch logic tổ hợp để tạo ra ký hiệu ngõ ra Trong nội dung
đề tài này, chúng tôi sử dụng bộ mã với bộ dữ liệu bao gồm chiều dài ràng buộc K
và tốc độ bộ mã R như đã đề cập ở trên
Khi thực hiện với mã chập trong các ứng dụng thông thường, người ta thường chỉ chọn số thanh ghi giới hạn, mỗi thanh ghi chỉ có 1 ô nhớ để đơn giản cho việc thiết kế mà vẫn đảm bảo tính năng mã hóa tốt Tương ứng với mỗi tốc độ mã hóa (các bộ mã đơn giản), người ta cũng đã thử nghiệm và chọn ra chỉ một số đa thức sinh cho hiệu quả mã hóa cao để sử dụng
Giả thiết, bộ mã chập làm việc với các chữ số nhị phân, thì tại mỗi lần dịch sẽ
có k bit thông tin đầu vào được dịch vào thanh ghi dịch thứ nhất và tương ứng có k bit thông tin trong thanh ghi dịch cuối cùng được đẩy ra ngoài mà không tham gia vào quá trình tạo chuỗi bit đầu ra Đầu ra nhận được chuỗi n bit mã từ n bộ cộng môđun-2 (xem hình 2.5) Như vậy, giá trị chuỗi đầu ra kênh không chỉ phụ thuộc vào k bit thông tin đầu vào hiện tại mà còn phụ thuộc vào (m-1)k bit trước
đó, và được gọi là mã chập (n,k,m)
Hình 2.5: Sơ đồ tổng quát bộ mã chập
Giả sử u là véctơ đầu vào, x là véctơ tương ứng được mã hoá, bây giờ chúng ta
mô tả cách tạo ra x từ u Để mô tả bộ mã hoá chúng ta phải biết sự kết nối giữa thanh ghi đầu vào vào đầu ra hình 2.5 Cách tiếp cận này có thể giúp chúng ta chỉ ra
sự tương tự và khác nhau cũng như là với mã khối Điều này có thể dẫn tới những
ký hiệu phức tạp và nhằm nhấn mạnh cấu trúc đại số của mã chập Điều đó làm giảm đi tính quan tâm cho mục đích giải mã của chúng ta Do vậy, chúng ta chỉ
Chuỗi thông tin
Trang 26phác hoạ tiếp cận này một cách sơ lược Sau đó, mô tả mã hoá sẽ được đưa ra với những quan điểm khác
trong thanh ghi ngõ vào với n ô của thanh ghi ngõ ra N ngõ vào của hàng đầu tiên
kết nối Do đó chúng ta có thể định nghĩa ma trận sinh của mã chập:
Và tất cả các các ngõ vào khác trong ma trận bằng 0 Do đó nếu ngõ vào là
Bộ mã chập là hệ thống nếu trong mỗi đoạn của n chữ số đuợc tạo, k số đầu là mẫu của các chữ số đầu vào tương ứng Nó có thể xác định rằng điều kiện này tương đương có các ma trận k×n theo sau
và
i = 2,3,….,NChúng ta xét một vài ví dụ minh hoạ sau đây:
Ví dụ 2.3.1: Xét mã (3,2,2) Bộ mã hoá được chỉ trong hình 2.6 Bây giờ mã được
định nghĩa thông qua 2 ma trận:
Bộ mã hoá là hệ thống, ma trận sinh được tạo ra:
Trang 27Chuỗi thông tin u = ( 11011011…) được mã hóa thành chuỗi mã
x = (111010100110…)
Hình 2.6: Bộ mã chập (3,2,2)
Như vậy ý nghĩa của ma trận sinh là nó chỉ ra phải sử dụng các hàm tương ứng nào
để tạo ra véc tơ dài n mỗi phần tử có một bộ cộng môđun-2, trên mỗi véc tơ có N×k tham số biểu diễn có hay không các kết nối từ các trạng thái của bộ ghi dịch tới bộ
≥1) có giá trị “1” thì đầu ra thứ j tương ứng trong bộ ghi dịch được kết nối tới bộ cộng môđun-2 thứ i và nếu có giá trị “0” thì đầu ra thứ j tương ứng trong bộ ghi dịch không được kết nối tới bộ cộng môđun-2 thứ i
Ví dụ 2.3.2: Cho bộ mã chập có số thanh ghi N = 3, số ô nhớ trong mỗi thanh ghi
dịch k = 1, chiều dài chuỗi đầu ra n = 3 tức là mã (3,1,3) và ma trận sinh của mã chập có dạng sau:
1 2
100
101 (4,5,7) 111
Trang 28Hình 2.7: Sơ đồ bộ mã chập với N=3, k=1, n=3
2.4 Biểu diễn mã chập
Có ba phương pháp để biểu diễn mã chập đó là: sơ đồ lưới, sơ đồ trạng thái, và
sơ đồ hình cây Để làm rõ phương pháp này ta tập trung phân tích dựa trên ví dụ hình 2.1 với bộ mã (2,1,3), đa thức sinh (7,5)
* Sơ đồ hình cây:
Từ ví dụ hình 2.1, giả thiết trạng thái ban đầu của các thanh ghi dịch trong bộ
mã đều là trạng thái “toàn 0” Nếu bit vào đầu tiên là bit “0” thì đầu ra ta nhận được chuỗi “00”, còn nếu bit vào đầu tiên là bit “1” thì đầu ra ta nhận được chuỗi “11” Nếu bit vào đầu tiên là bit “1” và bit vào tiếp theo là bit “0” thì chuỗi thứ nhất là
“11” và chuỗi thứ hai là chuỗi “10” Với cách mã hoá như vậy, ta có thể biểu diễn
mã chập theo sơ đồ có dạng hình cây (xem hình 2.8).Với hướng lên là hướng của bit 0 đi vào bộ mã, nhánh đi xuống biểu hiện cho bit 1 được dịch vào Từ sơ đồ hình cây ta có thể thực hiện mã hoá bằng cách dựa vào các bit đầu vào và thực hiện lần theo các nhánh của cây, ta sẽ nhận được tuyến mã, từ đó ta nhận được dãy các chuỗi đầu ra
Trang 2900 00
11
00
11 00
10
01 10
01
11
11 00 01 10
Hình 2.8: Sơ đồ hình cây của bộ mã (2,1,3)
cứ mỗi trạng thái 00, 01, 10, 11 đều có 2 nhánh đến từ các trạng thái trước đó tùy thuộc vào bit được dịch vào bộ mã là bit 0 hay bit 1 Với tính chất đó ta có thể biểu diễn mã chập bằng sơ đồ có dạng hình lưới gọn hơn, trong đó các đường liền nét được ký hiệu cho bit đầu vào là bit “1” và đường đứt nét được ký hiệu cho các bit đầu vào là bit “0” (xem hình 2.9) Ta thấy rằng từ sau tầng thứ hai hoạt động của lưới ổn định, tại mỗi nút có hai đường vào nút và hai đường ra khỏi nút Trong hai đường đi ra thì một ứng với bit đầu vào là bit “0” và đường còn lại ứng với bit đầu vào là bit “1”
Trang 30T=1 T=0
10 01
T=3
11 00
10
11 00
01 10 01
T=4
11 00
10
11 00
01 10 01
T=5
11 00
10
11 00
01 10 01
Hình 2.9: Sơ đồ hình lưới bộ mã chập (2,1,3) và bộ phát mã (7,5)
Trạng thái ban đầu toàn bằng “0”
*Sơ đồ trạng thái:
Sơ đồ trạng thái được thực hiện bằng cách đơn giản sơ đồ 4 trạng thái có thể
có của bộ mã (00, 01, 10 và 11) và trạng thái chuyển tiếp có thể được tạo ra từ trạng thái này chuyển sang trạng thái khác, quá trình chuyển tiếp có thể là:
Next State/output symbol, if
Kết quả ta thu được sơ đồ trạng thái trong hình 2.10 như sau:
Hình 2.10: Sơ đồ trạng thái của bộ mã chập (2,1,3)
Trang 31Từ sơ đồ trạng thái hình 2.10, các đường liền nét được ký hiệu cho bit đầu vào
là bit “0” và đường đứt nét được ký hiệu cho các bit đầu vào là bit “1” So với sơ đồ hình lưới và sơ đồ hình cây thì sơ đồ trạng thái là sơ đồ đơn giản nhất
2.5 Ưu nhược điểm của mã chập
2.5.1 Ưu điểm
Cũng như các mã sửa sai khác, mã chập cho phép chúng ta có thể sửa lại dữ liệu
đã bị sai lệch khi truyền qua kênh truyền để khôi phục chính xác tín hiệu gốc
Việc thực hiện mã hóa dùng mã chập tương đối đơn giản hơn các loại mã sửa sai khác mà chất lượng mã hóa lại tốt
Việc thực hiện mã hóa dùng mã chập có thể được thực hiện bằng phần cứng và phần mềm
Dựa trên hình thức mã hóa mã chập cùng thuật giải Viterbi cho nó, các bộ mã hóa sau này đều kế thừa những đặc tính ưu việt của nó
2.5.2 Nhược điểm
Việc mã hóa và giải mã liên quan đến mã chập chỉ giải quyết được các lỗi một bit còn đối với các kênh truyền xuất hiện nhiều bit liên tiếp thì thuật toán mã hóa và giải mã này sẽ không còn hoàn hảo nữa
Kênh truyền ở đây phải là kênh truyền ít nhiễu, vì nếu kênh truyền nhiễu quá lớn, mã hóa chập sẽ không còn tốt nữa Khi đó ta phải cần tới trải phổ tín hiệu để đưa tín hiệu xuống dưới mức nhiễu để giảm thiểu ảnh hưởng
2.6 Định nghĩa thuật toán Viterbi
Thuật toán Viterbi là một giải pháp được sử dụng phổ biến để giải mã chuỗi bit được mã hóa bởi bộ mã hóa tích chập Chi tiết của một bộ giải mã riêng phụ thuộc vào một bộ mã hóa tích chập tương ứng Thuật toán Viterbi không phải là một thuật toán đơn lẻ có thể dùng để giải mã những chuỗi bit mà được mã hóa bởi bất cứ một bộ mã hóa chập nào
Thuật toán Viterbi được khởi xướng bởi Andrew Viterbi năm 1967 như là một thuật toán giải mã cho mã chập qua các tuyến thông tin số có nhiễu Nó được sử dụng trong cả hai hệ thống CDMA và GSM, các modem số, vệ tinh, thông tin vũ trụ, và các hệ thống mạng cục bộ không dây Hiện nay còn được sử dụng phổ biến trong kỹ thuật nhận dạng giọng nói, nhận dạng từ mã, ngôn ngữ học máy tính Thuật toán giải mã Viterbi là một trong hai loại thuật toán giải mã được sử dụng với bộ mã hóa mã chập- một loại khác đó là giải mã tuần tự Ưu điểm của giải
mã tuần tự so với Viterbi là nó có thể hoạt động tốt với các mã chập có chiều dài ràng buộc lớn, nhưng nó lại có thời gian giải mã biến đổi
Trang 32Còn ưu điểm của thuật toán giải mã Viterbi là nó có thời gian giải mã ổn định Điều đó rất tốt cho việc thực thi bộ giải mã bằng phần cứng Nhưng mà yêu cầu về
sự tính toán của nó tăng theo hàm mũ như là một hàm của chiều dài ràng buộc, vì vậy, trong thực tế, người ta thường giới hạn chiều dài ràng buộc của nó K = 9 hoặc nhỏ hơn Stanford Telecom tạo ra một bộ giải mã Viterbi K = 9 hoạt động ở tốc độ đến 96 kbps, và một bộ giải mã với K = 7 hoạt động với tốc độ lên đến 45 Mbps Các kỹ thuật không dây nâng cao có thể tạo ra một bộ giải mã Viterbi với K = 9 hoạt động ở tốc độ lên đến 2 Mbps NTT tuyên bố rằng họ đã tạo được bộ giãi mã Viterbi hoạt động ở tốc độ 60 Mbps, nhưng tính khả thi của nó vẫn chưa được kiểm chứng
2.7 Phân tích thuật giải Viterbi
Chúng ta sẽ lấy ví dụ về mã chập có tốc độ mã là k/n = ½
Hình 2.11: Bộ mã chập tốc độ ½FF: thanh ghi dịch Tại mỗi xung clock, nội dung của thanh ghi dịch được dịch qua phải 1 bit Bit đầu tiên sẽ là ngõ vào, và bit cuối cùng sẽ là ngõ ra Một thanh ghi dịch có thể sẽ xem xét việc cộng trễ vào ngõ vào Các thanh ghi dịch có thể được hiểu như là bộ nhớ của bộ mã hóa Nó ghi nhớ những bit đầu của chuỗi
Thanh ghi dịch được khởi đầu với tất cả giá trị là 0
Thuật toán XOR: 1 1= 0; 1 0=1; 0 1=1; 0 0=0
Nếu chúng ta làm việc trên một chuỗi ngõ vào là 01011101, ngõ ra là 00 11
thái hữu hạn Mỗi một trạng thái được quy định bởi 2 bit nhị phân- trạng thái của 2 thanh ghi dịch Mỗi một sự chuyển trạng thái được quy định bởi w/v1v2 với w đại diện cho bit ngõ vào, và v1v2 là đại diện cho 2 bit ngõ ra, trong trường hợp này chúng ta luôn luôn có w = v1
Trang 33Bảng 2.1: Trạng thái ngõ vào và ngõ ra của bộ mã hóa tốc độ ½
Next State/output symbol, if
T=5 T=6 T=7 T=8 T=9 T=10 T=4
T=3 T=2 T=1
Trang 34Bốn trạng thái có thể của bộ mã hóa được mô tả như 4 hàng của những dấu chấm theo chiều ngang Có một cột của 4 chấm cho trạng thái khởi đầu của bộ mã hóa và một ở mỗi thời điểm của bản tin Các đường in đậm kết nối các điểm trong
sơ đồ biểu diễn cho sự chuyển trạng thái khi ngõ vào là một bit 1 Đường chấm chấm là biểu diễn cho sự chuyển trạng thái khi ngõ vào là bit 0 Ta có thể thấy rõ sự phù hợp giữa sơ đồ trellis và đồ hình trạng thái đã nói ở trên
Hình vẽ bên dưới cho ta thấy trạng thái trellis cho toàn bộ 8 bit ngõ vào Các bit ngõ vào bộ mã hóa và ký hiệu ngõ ra được thể hiện ở bên dưới của hình
T=5 T=6 T=7 T=8 T=9 T=10 T=4
T=3 T=2 T=1
State 00
State 01
State 10
State 11
Giờ chúng ta sẽ xem xét cách thức giải mã của thuật toán Viterbi Bây giờ chúng ta giả sử là chúng ta có một mẫu tin đã mã hóa (có thể có vài lỗi) và chúng ta muốn khôi phục lại tín hiệu gốc
Giả sử chúng ta nhận được mẫu tin đã mã hóa ở trên với 1 bit lỗi
Trang 35T=5 T=6 T=7 T=8 T=9 T=10 T=4
T=3 T=2 T=1
Hình 2.15: Tín hiệu nhận có 1 bit sai tại t =2
Ở mỗi thời điểm chúng ta nhận được 2 bit trong ký hiệu Chúng ta sẽ tính toán thông số metric để đo “khoảng cách” giữa những gì mà chúng ta nhận được với tất
cả các cặp bit ký hiệu kênh truyền có thể mà chúng ta có thể nhận được Đi từ thời điểm t=0 đến t=1, chỉ có 2 trạng thái mà chúng ta có thể nhận được là 00 và 11 Đó
là bởi vì chúng ta biết được bộ mã hóa tích chập bắt đầu với trạng thái tất cả đều là
0 và cho 1 bit vào là 0 hay 1 thì chỉ có 2 trạng thái mà chúng ta có thể đi đến và 2 ngõ ra của bộ mã hóa Những ngõ ra này có trạng thái là 00 và 11
Thông số metric mà chúng ta sẽ sử dụng là khoảng cách Hamming giữa cặp bit của ký hiệu nhận được và cặp bit có thể của kênh truyền Khoảng cách Hamming được tính một cách đơn giản bằng cách đếm có bao nhiêu bit khác giữa cặp bit nhận được từ kênh truyền và cặp bit so sánh Kết quả chỉ có thể là 0, 1, 2 Giá trị của khoảng cách Hamming (hay thông số metric) mà chúng ta tính toán ở mỗi khoảng thời gian cho đường dẫn của trạng thái tại thời điểm trước và trạng thái hiện tại được gọi là metric nhánh (branch metric) Ở thời điểm đầu tiên, chúng ta sẽ lưu những kết quả này như là “thông số metric tích lũy”, được liên kết đến các trạng thái Ở thời điểm thứ 2, thông số metric tích lũy sẽ được tính toán bằng cách cộng thêm thông số metric tích lũy trước đó vào metric nhánh hiện tại
Ở thời điểm t=1, ta nhận được 2 bit “00” Chỉ có một cặp ký hiệu kênh truyền
mà chúng ta có khả năng nhận được là “00” và “11” Khoảng cách Hamming giữa
“00” và “00” là bằng 0 Khoảng cách Hamming giữa “00” và “11” là 2 Do đó, giá trị thông số metric nhánh cho nhánh ứng với sự chuyển trạng thái từ “00” đến “00”
là 0 và cho nhánh từ “00” đến “10” là 2 Khi mà thông số metric tích lũy trước đó là
0 thì thông số metric tổng sẽ chính bằng thông số metric của nhánh vừa xét Tương
tự ta tính được thông số metric cho 2 trạng thái kia Hình bên dưới minh họa kết quả tại thời điểm t= 1
Trang 36T=1 T=0
State 00 State 01 State 10
State 11 ENC IN = ENC OUT =
0 00 RECEIVED = 00
Accum ulated Error Metric =
0
2
00 11
Hình 2.16: Tại thời điểm t = 1Điều gì sẽ xảy ra ở thời điểm t=2, chúng ta nhận được một cặp kí hiệu kênh truyền là “11”, trong khi đó cặp ký hiệu kênh truyền mà chúng ta có thể nhận được
là “00” nếu chuyển từ trạng thái “00” sang trạng thái “00” và “11” khi chuyển từ trạng thái “00” đến trạng thái “10”, “10” khi chuyển từ trạng thái “10” đến trạng thái “01”, “01” khi chuyển từ trạng thái “10” đến trạng thái “11” Khoảng cách Hamming giữa 00 và 11 là 2, giữa 11 và 11 là 0, giữa 01 hoặc 10 với 11 là 1 Chúng ta cộng các thông số metric ở mỗi nhánh lại với nhau ở thời điểm t=1 thì trạng thái chỉ có thể là 00 hoặc 10, thông số metric tích lũy sẽ được cộng vào là 0 hoặc là 2 một cách tương ứng Hình bên dưới thể hiện sự tính toán thông số metric tích lũy ở thời điểm t=2
T=1 T=0
State 00
State 01
State 10
State 11 ENC IN = ENC OUT =
0 00 RECEIVED = 00
Accumulated Error Metric =
11 00
Hình 2.17: Tại thời điểm t = 2
Đó là tất cả sự tính toán cho thời điểm t=2 Đường nét đậm là metric nhánh được lựa chọn vì theo các nhánh đó, thông số metric là nhỏ nhất Giờ chúng ta sẽ tính thông số metric tích lũy cho mỗi trạng thái tại thời điểm t=3
Giờ chúng ta hãy nhìn vào hình minh họa cho thời điểm t=3 Chúng ta sẽ gặp phải một ít phức tạp hơn ở đây, tại mỗi trạng thái trong 4 trạng thái tại t=3 sẽ có 2
Trang 37đường đến từ 4 trạng thái của thời điểm t=2 Chúng ta sẽ xoay sở thế nào? Câu trả lời là, chúng ta sẽ tính toán thông số metric tích lũy liên quan của mỗi nhánh, và chúng ta sẽ bỏ đi giá trị metric lớn hơn, tức là sẽ loại bỏ nhánh đó đi Nếu cặp thông
số metric ở mỗi trạng thái là bằng nhau thì chúng ta sẽ giữ lại cả 2 trạng thái Chúng
ta sẽ kế thừa những tính toán đã thực hiện ở thời điểm t=2 Thuật toán cộng thông
số metric tích lũy trước đó vào nhánh mới, so sánh kết quả và chọn thông số metric nhỏ hơn (nhỏ nhất) để tiếp tục dùng cho thời điểm kế tiếp, được gọi là thuật toán cộng-so sánh-chọn Hình bên dưới cho thấy kết quả của việc xử lý tại thời điểm t=3
T=1 T=0
Accumulated Error Metric = 00
11
T=2
1 11 11
11 00
11 00
10
11
00
01 10 01
2+0 , 3+2 : 2 0+1 , 3+1 : 1 2+2 , 3+0 : 3
Hình 2.18: Tại thời điểm t = 3Chú ý là cặp ký hiệu kênh truyền thứ 3 mà chúng ta nhận được sẽ có một lỗi Thông số metric nhỏ nhất hiện tại là 1
Chúng ta hãy xem điều gì xảy ra ở thời điểm t=4 Tiến trình xử lý cũng giống như ở thời điểm t=3 Kết quả xem ở hình bên dưới
T=1 T=0
Accumulated Error Metric = 00
11
T=2
1 11 11
11 00
11 00
10
11
00
01 10 01
3+2 , 1+0 : 1 2+1 , 1+1 : 2
3+0 , 1+2 : 3
T=4
1 00 00
11 00
10
11
00
01 10 01
Hình 2.19: Tại thời điểm t = 4
Trang 38Chú ý là ở thời điểm t=4, đường trellis của tin tức thực sự truyền đi được xác định bằng đường in đậm, với thông số metric tích lũy là nhỏ nhất Hãy xem xét ở thời điểm t=5:
T=1 T=0
11 00
10
01
T=3
0 10 11
11 00
10
11
00
01 10 01
T=4
1 00 00
11 00
10
11
00
01 10 01
Accumulated Error Metric =
1+0 , 2+2 : 1 3+1 , 2+1 : 3 1+2 , 2+0 : 2
3+1 , 2+1 : 3
T=5
1 01 01
11 00
10
11
00
01 10 01
Hình 2.20: Tại thời điểm t = 5
Ở thời điểm t=10, sơ đồ trellis sẽ như thế này, các nhánh ko được chọn đã được
bỏ đi:
T=4 T=3 T=2 T=1
Hình 2.21: Tất cả dữ liệu đã được giải mã và sửa sai chính xác
Kết quả ở đây cho thấy chúng ta đã giải mã đúng chuỗi dữ liệu gốc Nếu chúng
ta nhìn lại con đường để chúng ta tìm ra dữ liệu gốc là bằng cách so sánh dữ liệu nhận được với dữ liệu so sánh của bộ giải mã có được từ bảng trạng thái Điều này cho thấy chúng ta đang sử dụng thuật toán giải mã dựa trên sự giống nhau lớn nhất
Trang 39Việc xử lý giải mã bắt đầu với xây dựng một thông số metric tích lũy cho một số cặp ký hiệu kênh truyền nhận được, và lưu giữ trạng thái ở mỗi thời điểm t mà thông số metric là nhỏ nhất Một khi thông tin này được dựng lên thì bộ giải mã viterbi sẵn sàng để khôi phục lại chuỗi bit đã đưa vào bộ mã hóa chập, khi mẫu tin được mã hóa để truyền đi Điều này đạt được bằng những bước sau:
số trạng thái của trạng thái đó
o Sử dụng lặp lại cho những bước kế tiếp mãi cho đến khi bắt đầu của trellis đạt được: dựa vào bảng ghi nhớ trạng thái cho trạng thái được chọn, chọn một trạng thái mới được liệt kê trong bảng ghi nhớ trạng thái khi chuyển từ trạng thái trước đến trạng thái đó Lưu số trạng thái của mỗi trạng thái được chọn Bước này được gọi là truy hồi (traceback)
o Chúng ta làm việc tiếp với danh sách những trạng thái được chọn đã được lưu trong bước xử lý trước đó Chúng ta tra xem bit ngõ vào nào phù hợp với
sự truyền dẫn từ mỗi trạng thái trước đến trạng thái kế tiếp Đây là bit mà phải được mã hóa bằng mã tích chập
Bảng sau cho chúng ta thấy ma trận tích lũy của đầy đủ 8 bit (cộng với 2 bit phụ thêm) của bản tin ở mỗi thời điểm t:
Bảng 4.2: Bảng ma trận tích lũy của cả 8 bit của bản tin
Chú ý rằng ở ví dụ về bộ giải mã Viterbi ngõ vào quyết định cứng này, thông
số metric tích lũy nhỏ nhất ở trạng thái cuối chỉ ra được có bao nhiêu lỗi ký hiệu kênh truyền xảy ra
Bảng lịch sử trạng thái bên dưới cho thấy trạng thái tồn tại trước đó cho mỗi trạng thái tại thời điểm t:
Trang 40Bảng 2.3: Bảng lịch sử trạng thái
Bảng sau cho thấy trạng thái được lựa chọn khi truy hồi đường dẫn từ bảng trạng thái tồn tại ở trên:
Bảng 2.4: Bảng các trạng thái được lựa chọn khi truy hồi
Sử dụng bảng ta thấy được sự chuyển đổi trạng thái đến các ngõ vào gây ra chúng, giờ chúng ta đã có thể tạo lại bản tin gốc Bảng này rất giống với ví dụ của chúng ta
ở bộ mã hóa chập tốc độ ½ và K= 3
Bảng 2.5: Bảng trạng thái kế tiếp