Tải bản đầy đủ (.pdf) (20 trang)

Đồ án thực hiện bộ giải mã viterbi trên FPGA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (717.57 KB, 20 trang )

<<

BỘ GIÁO DỤC VÀ ĐÀO TẠO

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

Đề tài:

THỰC HIỆN BỘ GIẢI MÃ VITERBI
TRÊN FPGA

GVHD:
SVTH:
MSSV:
SVTH:
MSSV:

ThS. Lê Minh Thành
KS. Đặng Phƣớc Hải Trang
Huỳnh Minh Khả
06117029
Lê Duy
06117010

Thành phố Hồ Chí Minh, tháng 1 năm 2011




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

Trang i

LỜI CẢM ƠN

Cuốn đồ án tốt nghiệp đã hoàn thành đúng thời gian quy
định và đạt được kết quả như mong đợi. Để đạt được kết
quả đó, trước hết nhóm thực hiện muốn gửi lời biết ơn đến
các bậc cha mẹ đã khổ công sinh thành dưỡng dục để tạo
nên những thành viên của nhóm ngày hôm nay. Bên cạnh
đó, không thể không kể đến sự tận tình giúp đỡ của các
thầy cô trong bộ môn Điện tử -Viễn thông cũng như các
thầy cô trong khoa Điện- Điện tử, các thầy cô đã hết mực
giúp đỡ nhóm trong suốt quá trình học tập tại trường,
không chỉ giáo dục nhóm về kiến thức mà còn chỉ bảo
những kỹ năng sống cần thiết để nhóm có thể đứng vững
trong cuộc sống tự lập sau khi ra trường. Đặc biệt, nhóm
thực hiện đề tài xin chân thành cảm ơn thầy Lê Minh
Thành và thầy Đặng Phước Hải Trang là những giảng viên
đã trực tiếp hướng dẫn nhóm trong quá trình thực hiện đề
tài. Các thầy đã tận tình giúp đỡ nhóm trong quá trình học
tập tại trường và thể hiện sự quan tâm với việc đảm nhận
hướng dẫn nhóm thực hiện đề tài tốt nghiệp.
Một lần nữa nhóm thực hiện xin chân thành biết ơn các
bậc cha mẹ và chân thành cảm ơn quý thầy cô đã tận tình
giúp đỡ nhóm trong quá trình học tập tại trường.
TP HCM. Ngày 1 tháng 1 năm 2011

Nhóm thực hiện đề tài

Phần A: Giới thiệu


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

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

Trang ii

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập - Tự do - Hạnh phúc


QUYẾT ĐỊNH GIAO ĐỀ TÀI
Họ và tên sinh viên:
Ngành:
Tên đề tài:

Huỳnh Minh Khả
MSSV: 06117029
Lê Duy
MSSV: 06117010
Công Nghệ Điện tử - Viễn thông
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:
o
o
o
o

Tổng quan về hệ thống thông tin số.
Mã hóa chập và thuật toán giải mã Viterbi.
Mô phỏng thuật toán giải mã Viterbi trên Matlab.
Xây dựng thuật toán giải mã Viterbi trên KIT DE2.

3) Các bản vẽ:
.......................................................................................................................
.......................................................................................................................
4) Giáo viên hướng dẫn:

ThS. Lê Minh Thành
KS. Đặng Phước Hải Trang

5) Ngày giao nhiệm vụ:

....../....../2010

6) Ngày hoàn thành nhiệm vụ:


....../....../2011

Giáo viên hướng dẫn

Ngày ........ tháng....năm 20….
Chủ nhiệm bộ môn

Phần A: Giới thiệu


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

Trang iii

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

Phần A: Giới thiệu


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

Trang iv

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


Phần A: Giới thiệu


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

Trang v

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:
 Chương 1: Tổng quan về hệ thống thông tin số

Phần A: Giới thiệu


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

Trang vi

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.
 Chương 2: Thuật toán Viterbi
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ã.
 Chương 3: Xây dựng thuật giải Viterbi dùng Matlab
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
 Chương 4: Xây dựng thuật giải Viterbi trên kit DE2

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


Chương 5: Kết luận
Đánh giá kết quả thực hiện của đồ án và đưa ra phương hướng phát triển
của đề tài trong tương lai.

TP HCM. Ngày … tháng … năm 2011
Nhóm thực hiện đề tài

Phần A: Giới thiệu


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

Trang vii

MỤC LỤC
Trang
TRANG BÌA ........................................................................................................
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
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ................................................. iv
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:

NỘI DUNG...................................................................................... 13

CHƢƠNG 1: TỔNG QUAN HỆ THỐNG THÔNG TIN SỐ ........................ 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 ..................................................... 14
1.2.1 Khái niệm....................................................................................... 14
1.2.2 Phân loại mã hóa kênh .................................................................... 15
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: THUẬT TOÁN GIẢI MÃ VITERBI....................................... 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
Phần A: Giới thiệu



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

Trang viii

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 ................................................ 48
2.8.2.1 Thuật toán Viterbi quyết định mềm (phương pháp 1) .............. 48
2.8.2.2 Thuật toán Viterbi quyết định mềm (phương pháp 2) .............. 49
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
................................................................................................................. 51
2.9

Xác suất lỗi .......................................................................................... 54

2.10

Ưu nhược điểm của thuật toán giải mã Viterbi .................................... 54

2.10.1 Ưu điểm ....................................................................................... 54
2.10.2 Nhược điểm.................................................................................. 55
CHƢƠNG 3: MÔ PHỎNG THUẬT TOÁN VITERBI TRÊN MATLAB ... 56
3.1

Giới thiệu ............................................................................................. 56

3.2 Sơ đồ khối hệ thống............................................................................... 56
3.3 Lưu đồ mô phỏng .................................................................................. 57
3.3.1 Khối tạo bit ngõ vào ....................................................................... 57

3.3.2 Khối mã hóa ................................................................................... 58
3.3.3 Khối cộng nhiễu Gausse trắng ........................................................ 58
3.3.4 Khối giải mã ................................................................................... 58
3.3.5 Tính toán và vẽ BER ...................................................................... 59
3.4 Hình ảnh về chương trình mô phỏng ...................................................... 59
CHƢƠNG 4: XÂY DỰNG THUẬT TOÁN VITERBI TRÊN KIT DE2 ...... 65
4.1 Giới thiệu sơ lược KIT DE2 và phần mềm Quartus ............................... 65
4.1.1 KIT DE2 của Altera ........................................................................ 65
4.1.1.1 Tổng quan kit DE2 ................................................................... 65
4.1.1.2 Sử dụng nút nhấn và Switch .................................................... 67
4.1.1.3 Sử dụng LCD ........................................................................... 68
4.1.2 Phần mềm lập trình Quatus II ........................................................ 68
4.2 Giải quyết vấn đề .................................................................................. 69
4.2.1 Giải mã viterbi quyết định cứng ...................................................... 69
4.2.2 Giải mã viterbi quyết định mềm ...................................................... 73
4.3 Lưu dồ thuật toán lập trình ..................................................................... 75
4.4

Kết quả ................................................................................................. 82

Phần A: Giới thiệu


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

Trang ix

CHƢƠNG 5: KẾT LUẬN ............................................................................... 88
5.1 Tổng kết nhận xét ................................................................................... 88
5.2 Tồn tại và hướng phát triển của đề tài ..................................................... 88

PHẦN C: PHỤ LỤC VÀ TÀI LIỆU THAM KHẢO ........................................ 90
I. Phụ lục ..................................................................................................... 91
1. Hướng dẫn sử dụng kit DE2 để mô phỏng ............................................ 91
2. Tài nguyên sử dụng trên Kit DE2 ......................................................... 91
3. Mã nguồn Matlab ............................................................................... 93
4. Mã nguồn VHDL .............................................................................. 105
II. Tài liệu tham khảo ................................................................................ 123

Phần A: Giới thiệu


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

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.1: Bộ mã hóa cho mã chập tốc độ R  1/ 2
Hình 2.2: Bộ mã hóa hệ thống với R  1/ 2
Hình 2.3: Bộ mã hóa hệ thống
Hình 2.4: Sơ đồ bộ mã hóa hệ thống R  2 / 3 có phần cứng đơn giản
Hình 2.5: Sơ đồ tổng quát bộ mã chập
Hình 2.6: Bộ mã chập (3,2,2)
Hình 2.7: Sơ đồ bộ mã chập với N=3, k=1, n=3
Hình 2.8: Sơ đồ hình cây bộ mã (2,1,3)
Hình 2.9: Sơ đồ hình lưới bộ mã chập (2,1,3).
Hình 2.10: Sơ đồ trạng thái của bộ mã chập (2,1,3).
Hình 2.11: Bộ mã chập tốc độ ½
Hình 2.12: Đồ hình trạng thái của mã chập ½
Hình 2.13: Các nhánh trong bộ mã hóa
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

Phần A: Giới thiệu

Trang x


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

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ã
Hình 4.14: Kết quả mô phỏng 1
Hình 4.15: Kết quả mô phỏng 2
Hình 4.16: Kết quả mô phỏng 3
Hình 4.17: Kết quả mô phỏng 4
Hình 4.18: Kết quả mô phỏng 5
Hình 4.19: Kết quả mô phỏng 6
Hình 4.20: Mô phỏng trên Matlab
Hình 4.21: Hình thực tế bộ kit 1
Hình 4.22: Hình thực tế bộ kit 2
Hình 4.23: Hình thực tế bộ kit 3

Phần A: Giới thiệu

Trang xi



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

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

Phần A: Giới thiệu

Trang xii


PHẦN B

NỘI DUNG



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

Trang 14

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.
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.
Chương 1: Tổng quan về hệ thống thông tin số



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

Trang 15

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

Chương 1: Tổng quan về hệ thống thông tin số


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

Trang 16

2. Mã trellis.
Chúng phân tích ba đặc tính sau của mã (nói chung) là:


Chiều dài của mã.



Tổng số các từ mã hợp lệ.




Khoảng cách Hamming tối thiểu giữa hai từ mã hợp 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
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.
Bất cứ mã khối tuyến tính nào cũng được đại diện là (n,m,dmin), trong đó
1. n, là chiều dài của từ mã, trong ký hiệu,
2. m, là số ký hiệu nguồn được dùng để mã hóa tức thời,
Chương 1: Tổng quan về hệ thống thông tin số


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

Trang 17

3. dmin, là khoảng cách hamming tối thiểu của mã.
Có nhiều loại mã khối tuyến tính, như

1. Mã vòng (Mã Hamming là một bộ phận nhỏ của mã tuần hoàn).
2. Mã chẵn lẻ.
3. Mã Reed-Solomon.
4. Mã BCH.
5. Mã Reed-Muller.
6. Mã hoàn hảo.
Mã khối được gắn liền với bài toán “đóng gói đồng xu” là bài toán gây một số
chú ý trong nhiều năm qua. Trên bề diện hai chiều, chúng ta có thể hình dung được
vấn đề một cách dễ dàng. Lấy một nắm đồng xu, để nằm trên mặt bàn, rồi dồn
chúng lại gần với nhau. Kết quả cho chúng ta một mẫu hình lục giác tương tự như
hình tổ ong. Các mã khối còn dựa vào nhiều chiều khác nữa, không dễ gì mà hình
dung được. Mã Golay có hiệu ứng cao, dùng trong truyền thông qua khoảng không
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.
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
Chương 1: Tổng quan về hệ thống thông tin số


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

Trang 18

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.

Chương 1: Tổng quan về hệ thống thông tin số


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

Trang 19


CHƢƠNG 2

THUẬT GIẢI MÃ VITERBI
2.1 Khái niệm mã chập
Mã chập là một kỹ thuật mã hóa sửa sai. Mã chập thuộc họ mã lưới (mã hóa
theo Trellis) và được xây dựng dựa trên một đa thức sinh hoặc một sơ đồ chuyển
trạng thái (trellis mã) đặc trưng. Quá trình giải mã của mã chập phải dựa vào trellis
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
Chương 2: Thuật giải mã Viterbi



×