1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Thực hiện bộ giải mã VITERBI trên FPGA

131 1,1K 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 131
Dung lượng 3,15 MB

Nội dung

Thực hiện bộ giải mã VITERBI trên FPGA

Trang 1

TRƯỜ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 4

NHẬ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 5

NHẬ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 6

LỜ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 7

Giớ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 8

MỤ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 9

2.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 10

CHƯƠ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 11

LIỆ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 12

Hì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 13

LIỆ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 14

PHẦ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 16

1.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 17

khi 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 18

tí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 19

Về 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 20

mã 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 21

cá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 23

Vớ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 24

Hì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 25

Chuỗ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 26

phá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

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 27

Chuỗ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 28

Hì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 29

00 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 30

T=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 31

Từ 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 32

Cò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 33

Bả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 34

Bố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 35

T=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 36

T=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 38

Chú ý 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 39

Việ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 40

Bả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

Ngày đăng: 30/03/2014, 19:39

HÌNH ẢNH LIÊN QUAN

Hình 1.1:  Vị trí của mã hóa kênh truyền trong hệ thống thông tin số - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 1.1 Vị trí của mã hóa kênh truyền trong hệ thống thông tin số (Trang 15)
Hình 2.8:  Sơ đồ hình cây của bộ mã (2,1,3) - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 2.8 Sơ đồ hình cây của bộ mã (2,1,3) (Trang 29)
Hình 2.9: Sơ đồ hình lưới bộ mã chập (2,1,3) và bộ phát mã (7,5). - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 2.9 Sơ đồ hình lưới bộ mã chập (2,1,3) và bộ phát mã (7,5) (Trang 30)
Bảng 2.1:  Trạng thỏi ngừ vào và ngừ ra của bộ mó húa tốc độ ẵ - Thực hiện bộ giải mã VITERBI trên FPGA
Bảng 2.1 Trạng thỏi ngừ vào và ngừ ra của bộ mó húa tốc độ ẵ (Trang 33)
Hình 2.15:   Tín hiệu nhận có 1 bit sai tại t =2 - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 2.15 Tín hiệu nhận có 1 bit sai tại t =2 (Trang 35)
Bảng 2.4:  Bảng các trạng thái được lựa chọn khi truy hồi - Thực hiện bộ giải mã VITERBI trên FPGA
Bảng 2.4 Bảng các trạng thái được lựa chọn khi truy hồi (Trang 40)
Hình 2.22:  Bộ mã tốc độ 1/3 và K= (7,7,5) - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 2.22 Bộ mã tốc độ 1/3 và K= (7,7,5) (Trang 44)
Hình 2.27 Mô tả giải mã quyết định cứng với bộ mã parity - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 2.27 Mô tả giải mã quyết định cứng với bộ mã parity (Trang 54)
Hình 2.28  Mô tả giải mã quyết định mềm với bộ mã parity - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 2.28 Mô tả giải mã quyết định mềm với bộ mã parity (Trang 55)
Hình 3.2: Lưu đồ mô phỏng - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 3.2 Lưu đồ mô phỏng (Trang 59)
3.4  Hình ảnh về chương trình mô phỏng - Thực hiện bộ giải mã VITERBI trên FPGA
3.4 Hình ảnh về chương trình mô phỏng (Trang 61)
Hình 3.4:  Giao diện chương trình mô phỏng 1 - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 3.4 Giao diện chương trình mô phỏng 1 (Trang 62)
Hình 3.5:  Giao diện chương trình mô phỏng 2 - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 3.5 Giao diện chương trình mô phỏng 2 (Trang 62)
Hình 3.6:  Nhập bit ngẫu nhiên – Quyết định mềm - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 3.6 Nhập bit ngẫu nhiên – Quyết định mềm (Trang 63)
Hình 3.7:  BER của quyết định mềm - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 3.7 BER của quyết định mềm (Trang 63)
Hình 3.9:  BER của quyết định cứng - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 3.9 BER của quyết định cứng (Trang 64)
Hình 3.10: So sánh BER của cả quyết định cứng và mềm - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 3.10 So sánh BER của cả quyết định cứng và mềm (Trang 65)
Hình  4.1  KIT DE2 của Altera Một số tài nguyên trên Kit DE2: - Thực hiện bộ giải mã VITERBI trên FPGA
nh 4.1 KIT DE2 của Altera Một số tài nguyên trên Kit DE2: (Trang 67)
Hình 4.7:  Lưu đồ chi tiết giải thuật giải mã Viterbi trên Kit DE2 - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 4.7 Lưu đồ chi tiết giải thuật giải mã Viterbi trên Kit DE2 (Trang 79)
Hình 4.8:  Lưu đồ tính khoảng cách Hamming - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 4.8 Lưu đồ tính khoảng cách Hamming (Trang 80)
Hình 4.9:  Lưu đồ giải thuật tính khoảng cách Euclidean - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 4.9 Lưu đồ giải thuật tính khoảng cách Euclidean (Trang 81)
Bảng thông số tích lũy - Thực hiện bộ giải mã VITERBI trên FPGA
Bảng th ông số tích lũy (Trang 83)
Hình 4.11:  Lưu đồ khối ACS - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 4.11 Lưu đồ khối ACS (Trang 83)
Bảng trạng thái tiếp theo - Thực hiện bộ giải mã VITERBI trên FPGA
Bảng tr ạng thái tiếp theo (Trang 84)
Hình 4.20: Mô phỏng trên Matlab - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 4.20 Mô phỏng trên Matlab (Trang 88)
Hình ảnh thực tế trên Kit DE2 như sau: - Thực hiện bộ giải mã VITERBI trên FPGA
nh ảnh thực tế trên Kit DE2 như sau: (Trang 88)
Hình 4.22: Hình thực tế bộ kit  2 - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 4.22 Hình thực tế bộ kit 2 (Trang 89)
Hình 4.23: hình thực tế bộ kit 3 - Thực hiện bộ giải mã VITERBI trên FPGA
Hình 4.23 hình thực tế bộ kit 3 (Trang 89)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w