You are on page 1of 67

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

MÔ HÌNH HÓA VÀ MÔ PHỎNG

Trương Vũ Bằng Giang, Trần Xuân Nam

NHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA HÀ NỘI


Mục lục

Mục lục i

Danh sách hình vẽ vii

Danh sách bảng xii

Giới thiệu 1

1 Các khái niệm cơ bản 3


1.1 Mở đầu . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Vai trò của mô hình hoá và mô phỏng . . . . . . . . 4
1.3 Các trường hợp cần sử dụng phương pháp mô phỏng 5
1.3.1 Nghiên cứu trên hệ thống thực gặp khó khăn 5
1.3.2 Đánh giá độ nhạy của hệ thống . . . . . . . 6
1.3.3 Khi chưa có hệ thống thực . . . . . . . . . . 7
1.4 Các hướng phát triển của phương pháp mô phỏng . 7
1.5 Ngôn ngữ và công cụ mô phỏng . . . . . . . . . . . 8
1.6 Một số lỗi thường gặp trong mô phỏng . . . . . . . 9
1.6.1 Mức độ chi tiết chưa thỏa đáng . . . . . . . 9
1.6.2 Ngôn ngữ không phù hợp . . . . . . . . . . 10
1.6.3 Mô hình chưa được kiểm chứng . . . . . . . 10
1.6.4 Mô hình không chính xác . . . . . . . . . . 10
1.6.5 Xử lý điều kiện ban đầu không chính xác . . 11

i
ii MỤC LỤC

1.6.6 Thời gian mô phỏng quá ngắn . . . . . . . . 11


1.7 Một số nguyên nhân làm kết quả mô phỏng bị sai . 11
1.7.1 Dự trù thời gian không thích hợp . . . . . . 11
1.7.2 Mục tiêu khó có thể đạt được . . . . . . . . 12
1.7.3 Chưa có đủ các kỹ năng cần thiết . . . . . . 12
1.7.4 Mức độ tham gia của người sử dụng chưa đủ 13
1.7.5 Tài liệu không tồn tại hoặc đã lỗi thời . . . 13
1.7.6 Khả năng quản lý một chương trình phức tạp 14
1.7.7 Kết quả phức tạp và khó hiểu . . . . . . . . 14

2 Các mô hình và phương pháp mô phỏng 15


2.1 Xây dựng mô hình mô phỏng . . . . . . . . . . . . 15
2.2 Phân loại các mô hình mô phỏng . . . . . . . . . . 16
2.3 Các phương pháp mô phỏng . . . . . . . . . . . . . 18
2.4 Mô phỏng Monte-Carlo trong truyền thông số . . . 20
2.5 Mô phỏng băng thông và mô phỏng băng gốc . . . 27

3 Phương pháp luận mô phỏng 31


3.1 Mở đầu . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2 Xác định bài toán . . . . . . . . . . . . . . . . . . . 32
3.2.1 Định nghĩa đối tượng nghiên cứu . . . . . . 33
3.2.2 Liệt kê các vấn đề đặc biệt cần chú ý . . . . 34
3.2.3 Xác định giới hạn và miền nghiên cứu . . . 35
3.2.4 Xác định độ chi tiết và trừu tượng thích hợp 36
3.2.5 Xác định tính cần thiết của mô hình mô phỏng 37
3.2.6 Ước lượng các tài nguyên cần thiết . . . . . 37
3.2.7 Thực hiện phân tích chi phí-lợi nhuận . . . . 37
3.2.8 Lập biểu đồ kế hoạch cho dự án . . . . . . . 38
3.2.9 Lập báo cáo đề xuất . . . . . . . . . . . . . 39
3.3 Thiết kế nghiên cứu . . . . . . . . . . . . . . . . . . 39
3.3.1 Ước lượng vòng đời mô hình . . . . . . . . . 40
3.3.2 Liệt kê những giả định . . . . . . . . . . . . 41
3.3.3 Ước tính số mô hình cần thiết . . . . . . . . 41
MỤC LỤC iii

3.3.4 Xác định yêu cầu về hình họa . . . . . . . . 42


3.3.5 Lựa chọn công cụ . . . . . . . . . . . . . . . 42
3.3.6 Xác định mức độ dữ liệu sẵn có và dữ liệu cần 42
3.3.7 Xác định yêu cầu về nhân lực . . . . . . . . 43
3.3.8 Xác định nhóm người dùng . . . . . . . . . 44
3.3.9 Xác định các nội dung chuyển giao . . . . . 44
3.3.10 Xác định các ưu tiên trong nghiên cứu . . . 45
3.3.11 Thiết lập các mốc thời gian quan trọng . . . 45
3.3.12 Lập bảng các tiêu chí kỹ thuật của dự án . . 46
3.4 Thiết kế mô hình khái niệm . . . . . . . . . . . . . 46
3.4.1 Quyết định tính liên tục, rời rạc, hoặc kết hợp 47
3.4.2 Xác định các thành phần định hướng hệ thống 47
3.4.3 Xác định các thực thể biểu diễn hệ thống . . 48
3.4.4 Xác định mức độ chi tiết mô tả hệ thống . . 48
3.4.5 Xác định mức độ yêu cầu về đồ họa . . . . . 49
3.4.6 Xác định phương thức truyền tải các kết quả 49
3.5 Thiết lập đầu vào, giả định và định nghĩa quá trình 49
3.5.1 Xác định nguyên lý hoạt động của hệ thống 50
3.5.2 Mô tả các ràng buộc của hệ thống . . . . . . 51
3.5.3 Mô tả quá trình chi tiết . . . . . . . . . . . 51
3.5.4 Thu nhận các đặc tính kỹ thuật khi vận hành 51
3.5.5 Liệt kê tất cả các giả định . . . . . . . . . . 51
3.5.6 Phân tích dữ liệu đầu vào . . . . . . . . . . 52
3.5.7 Định rõ các thông số thời gian chạy . . . . . 52
3.5.8 Lập bảng chi tiết các tiêu chí kỹ thuật . . . 52
3.5.9 Xác thực mô hình khái niệm . . . . . . . . . 52
3.6 Dịch và liên kết, kiểm chứng và xác thực mô hình . 53
3.7 Thử nghiệm và thiết kế mô hình thực nghiệm . . . 54
3.8 Lập báo cáo và trình bày kết quả . . . . . . . . . . 55
3.8.1 Sách dự án . . . . . . . . . . . . . . . . . . 56
3.8.2 Tài liệu về đầu vào, đầu ra, mã chương trình 56
3.8.3 Các đặc tính kỹ thuật của dự án . . . . . . 57
3.8.4 Sách hướng dẫn sử dụng . . . . . . . . . . . 57
iv MỤC LỤC

3.8.5 Sổ bảo hành . . . . . . . . . . . . . . . . . . 58


3.8.6 Thảo luận và giải thích về kết quả mô phỏng 58
3.8.7 Đề xuất các hướng nghiên cứu tiếp theo . . 58
3.8.8 Báo cáo và giới thiệu cuối cùng của dự án . 59
3.9 Định nghĩa vòng đời của mô hình . . . . . . . . . . 60
3.9.1 Xây dựng giao diện thân thiện với người dùng 60
3.9.2 Xác định mô hình và trách nhiệm đào tạo . 61
3.9.3 Thiết lập toàn vẹn dữ liệu và các bước thu thập 61
3.9.4 Thực hiện xác thực dữ liệu hiện trường . . . 61

4 Mô phỏng với Matlab Communication Toolbox 63


4.1 Giới thiệu về Matlab . . . . . . . . . . . . . . . . . 63
4.2 Giới thiệu Communications Toolbox . . . . . . . . . 65
4.3 Khai thác các phần tử của hệ thống truyền thông . 66
4.4 Mô phỏng một hệ thống truyền thông . . . . . . . . 88
4.5 Một số bài tập . . . . . . . . . . . . . . . . . . . . 98
4.5.1 Bài tập 4.1 . . . . . . . . . . . . . . . . . . 98
4.5.2 Bài tập 4.2 . . . . . . . . . . . . . . . . . . 98
4.5.3 Bài tập 4.3 . . . . . . . . . . . . . . . . . . 98

5 Mô phỏng với Simulink 99


5.1 Giới thiệu về Simulink trong MATLAB . . . . . . . 99
5.2 Các khối cơ bản . . . . . . . . . . . . . . . . . . . . 100
5.2.1 Các khối cơ bản thường dùng . . . . . . . . 100
5.2.2 Nhiệm vụ và chức năng các khối cơ bản . . 101
5.2.3 Một số ví dụ . . . . . . . . . . . . . . . . . 105
5.3 Thư viện các khối liên tục . . . . . . . . . . . . . . 108
5.3.1 Khối đạo hàm . . . . . . . . . . . . . . . . . 108
5.3.2 Khối hàm truyền đạt . . . . . . . . . . . . . 110
5.3.3 Khối điểm không - điểm cực . . . . . . . . . 111
5.4 Một số bài tập và hướng dẫn giải . . . . . . . . . . 114
5.4.1 Bài tập . . . . . . . . . . . . . . . . . . . . 114
5.4.2 Hướng dẫn giải . . . . . . . . . . . . . . . . 115
MỤC LỤC v

5.5 Thư viện các khối phát và hiển thị . . . . . . . . . 118


5.5.1 Thư viện các khối phát . . . . . . . . . . . . 118
5.5.1.1 Khối hằng số . . . . . . . . . . . . 118
5.5.1.2 Khối phát tín hiệu . . . . . . . . . 118
5.5.1.3 Khối phát xung . . . . . . . . . . . 121
5.5.1.4 Khối tạo sóng sin . . . . . . . . . . 121
5.5.1.5 Khối nhảy bậc . . . . . . . . . . . 123
5.5.2 Thư viện các khối hiển thị . . . . . . . . . . 124
5.5.2.1 Khối hiển thị dạng sóng . . . . . . 124
5.5.2.2 Khối hiển thị số liệu . . . . . . . . 125
5.6 Một số bài tập . . . . . . . . . . . . . . . . . . . . 127
5.6.1 Bài tập 5.3 . . . . . . . . . . . . . . . . . . 127
5.6.2 Bài tập 5.4 . . . . . . . . . . . . . . . . . . 129
5.6.3 Bài tập 5.5 . . . . . . . . . . . . . . . . . . 130
5.6.4 Bài tập 5.6 . . . . . . . . . . . . . . . . . . 131
5.6.5 Bài tập 5.7 . . . . . . . . . . . . . . . . . . 133

6 Mô phỏng với Opnet 135


6.1 Giới thiệu OPNET . . . . . . . . . . . . . . . . . . 135
6.2 Môi trường làm việc . . . . . . . . . . . . . . . . . 138
6.3 Mô phỏng với OPNET IT Guru . . . . . . . . . . . 140
6.4 Trình tự mô phỏng OPNET . . . . . . . . . . . . . 141
6.5 Ví dụ mô phỏng một mạng Intranet đơn giản . . . 145
6.6 Một số lưu ý . . . . . . . . . . . . . . . . . . . . . . 158
6.7 Một số bài tập . . . . . . . . . . . . . . . . . . . . 159
6.7.1 Bài tập 6.1 . . . . . . . . . . . . . . . . . . 159
6.7.2 Bài tập 6.2 . . . . . . . . . . . . . . . . . . 159
6.7.3 Bài tập 6.3 . . . . . . . . . . . . . . . . . . 160

7 Mô phỏng với Ansoft Designer 161


7.1 Giới thiệu về công cụ Ansoft Designer . . . . . . . . 161
7.2 Một số ví dụ ứng dụng . . . . . . . . . . . . . . . . 162
7.2.1 Thiết kế một mạch lọc thông thấp Chebyshev 162
vi MỤC LỤC

7.2.2 Thiết kế mạch dải λ/4 phối hợp trở kháng . 168
7.3 Một số bài tập . . . . . . . . . . . . . . . . . . . . 184
7.3.1 Bài tập 7.1 . . . . . . . . . . . . . . . . . . 184
7.3.2 Bài tập 7.2 . . . . . . . . . . . . . . . . . . 185

Tài liệu tham khảo 187


Danh sách hình vẽ

2.1 Lược đồ xây dựng mô hình mô phỏng. . . . . . . . . . 15


2.2 Quan hệ sai số-thời gian chạy-độ phức tạp của mô hình. 16
2.3 Phân loại các mô hình mô phỏng. . . . . . . . . . . . . 17
2.4 Mô hình mô phỏng Monte-Carlo. . . . . . . . . . . . . 21
2.5 Biểu diễn phương pháp mô phỏng Monte-Carlo. . . . . 22

3.1 Biểu đồ Gantt . . . . . . . . . . . . . . . . . . . . . . . 38

4.1 Sơ đồ khối hệ thống mô phỏng. . . . . . . . . . . . . . 68


4.2 Chuỗi bit phát ngẫu nhiên: trường hợp 40 bit đầu tiên. 70
4.3 Chuỗi thập phân biến đổi từ chuỗi bit ngẫu nhiên. . . . 71
4.4 Sơ đồ chòm sao tín hiệu thu/phát. . . . . . . . . . . . 74
4.5 Sơ đồ chòm sao tín hiệu phát sử dụng ánh xạ tự nhiên. 78
4.6 Sơ đồ chòm sao tín hiệu phát sử dụng ánh xạ Gray. . . 79
4.7 Đáp ứng xung của bộ lọc Cosine nâng. . . . . . . . . . 81
4.8 Sơ đồ mẫu mắt của tín hiệu. . . . . . . . . . . . . . . . 82
4.9 Đồ thị tán xạ tín hiệu trước (·) và sau khi lọc (×). . . 83
4.10 Sơ đồ bộ mã hóa tỉ lệ 2/3. . . . . . . . . . . . . . . . . 85
4.11 Giao diện BERTool. . . . . . . . . . . . . . . . . . . . . 92
4.12 Kết quả mô phỏng. . . . . . . . . . . . . . . . . . . . . 93
4.13 Nhập các giá trị cho tính toán BER lý thuyết. . . . . . 93
4.14 So sánh kết quả BER lý thuyết và mô phỏng. . . . . . 94

vii
viii DANH SÁCH HÌNH VẼ

4.15 Phẩm chất BER theo các bậc điều chế khác nhau. . . . 98

5.1 Các khối cơ bản thường dùng. . . . . . . . . . . . . . . 100


5.2 Tính vC (t) của mạch điện. . . . . . . . . . . . . . . . . 101
5.3 Sơ đồ nguyên lý cho phương trình (5.6) . . . . . . . . . 103
5.4 Sơ đồ các khối trong Simulink cho phương trình (5.6). 103
5.5 Dạng sóng của vC (t). . . . . . . . . . . . . . . . . . . . 104
5.6 Sơ đồ khối tích phân trong Simulink. . . . . . . . . . . 104
5.7 Function Block Parameters cho khối tích phân liên tục. 105
5.8 Mạch điện cho Ví dụ 5.1. . . . . . . . . . . . . . . . . . 106
5.9 Mô hình cho Ví dụ 5.1. . . . . . . . . . . . . . . . . . . 106
5.10 Dạng sóng lối ra của Ví dụ 5.1. . . . . . . . . . . . . . 107
5.11 Mô hình cho Ví dụ 5.2. . . . . . . . . . . . . . . . . . . 107
5.12 Thư viện các khối liên tục. . . . . . . . . . . . . . . . . 108
5.13 Sơ đồ khối đạo hàm - Derivative. . . . . . . . . . . . . 109
5.14 Mô hình cho Ví dụ 5.3. . . . . . . . . . . . . . . . . . . 109
5.15 Dạng sóng đầu vào và đầu ra trong Ví dụ 5.3. . . . . . 109
5.16 Sơ đồ khối hàm truyền đạt - Transfer Fcn. . . . . . . . 110
5.17 Mạch điện cho Ví dụ 5.4. . . . . . . . . . . . . . . . . . 111
5.18 Mô hình cho Ví dụ 5.4. . . . . . . . . . . . . . . . . . . 111
5.19 Sơ đồ khối điểm không - điểm cực - Zero-Pole. . . . . . 112
5.20 Khối điểm không - điểm cực - Zero-Pole dạng biến. . . 113
5.21 Khối điểm không - điểm cực - Zero-Pole dạng véc-tơ. . 113
5.22 Mô hình cho Ví dụ 5.5. . . . . . . . . . . . . . . . . . . 113
5.23 Dạng sóng đầu vào và đầu ra của Ví dụ 5.5. . . . . . . 114
5.24 Mạch điện cho Bài tập 5.1. . . . . . . . . . . . . . . . . 114
5.25 Mạch điện cho Bài tập 5.2. . . . . . . . . . . . . . . . . 115
5.26 Mô hình cho Bài tập 5.1. . . . . . . . . . . . . . . . . . 116
5.27 Dạng sóng lối ra của Bài tập 5.1. . . . . . . . . . . . . 116
5.28 Mạch điện tương ứng trong miền s của Bài tập 5.2. . . 117
5.29 Mô hình cho Bài tập 5.2. . . . . . . . . . . . . . . . . . 117
5.30 Dạng sóng lối ra của Bài tập 5.2. . . . . . . . . . . . . 117
5.31 Các khối phát. . . . . . . . . . . . . . . . . . . . . . . 119
DANH SÁCH HÌNH VẼ ix

5.32 Khối phát tín hiệu. . . . . . . . . . . . . . . . . . . . . 119


5.33 Mô hình cho Ví dụ 5.6. . . . . . . . . . . . . . . . . . . 120
5.34 Các dạng sóng của Ví dụ 5.6. . . . . . . . . . . . . . . 120
5.35 Khối phát xung - Pulse Generator. . . . . . . . . . . . 121
5.36 Mô hình cho Ví dụ 5.7. . . . . . . . . . . . . . . . . . . 121
5.37 Dạng sóng của Ví dụ 5.7. . . . . . . . . . . . . . . . . 122
5.38 Khối tạo sóng sin - Sine Wave. . . . . . . . . . . . . . 122
5.39 Mô hình cho Ví dụ 5.8. . . . . . . . . . . . . . . . . . . 123
5.40 Dạng sóng của Ví dụ 5.8. . . . . . . . . . . . . . . . . 123
5.41 Khối nhảy bậc - Step. . . . . . . . . . . . . . . . . . . 124
5.42 Mô hình cho Ví dụ 5.9. . . . . . . . . . . . . . . . . . . 124
5.43 Dạng sóng của Ví dụ 5.9. . . . . . . . . . . . . . . . . 125
5.44 Khối hiển thị dạng sóng - Floating Scope. . . . . . . . 125
5.45 Cách dùng khối hiển thị dạng sóng - Floating Scope. . 126
5.46 Khối hiển thị số liệu - Display. . . . . . . . . . . . . . . 126
5.47 Mô hình cho Ví dụ 5.10. . . . . . . . . . . . . . . . . . 127
5.48 Mô hình cho Bài tập 5.3. . . . . . . . . . . . . . . . . . 128
5.49 Kết quả mô phỏng Bài tập 5.3. . . . . . . . . . . . . . 128
5.50 Mô hình cho Bài tập 5.4. . . . . . . . . . . . . . . . . . 129
5.51 Dạng sóng của Bài tập 5.4. . . . . . . . . . . . . . . . 130
5.52 Mô hình cho Bài tập 5.5. . . . . . . . . . . . . . . . . . 131
5.53 Dạng sóng của Bài tập 5.5. . . . . . . . . . . . . . . . 131
5.54 Mô hình cho Bài tập 5.6. . . . . . . . . . . . . . . . . . 132
5.55 Dạng sóng của Bài tập 5.6. . . . . . . . . . . . . . . . 132
5.56 Mô hình cho Bài tập 5.7. . . . . . . . . . . . . . . . . . 134
5.57 Dạng sóng của Bài tập 5.7. . . . . . . . . . . . . . . . 134

6.1 Giao diện khởi tạo của OPNET IT Guru. . . . . . . . 137


6.2 Môi trường làm việc của OPNET IT Guru. . . . . . . . 138
6.3 Thanh công cụ của OPNET IT Guru. . . . . . . . . . 139
6.4 Trình tự mô phỏng trong OPNET. . . . . . . . . . . . 142
6.5 Mô hình mạng với các thành phần cần thiết lập . . . . 146
6.6 Môi trường khởi tạo ban đầu. . . . . . . . . . . . . . . 148
x DANH SÁCH HÌNH VẼ

6.7 Thiết lập các tham số với Switch trung tâm của Cisco. 149
6.8 Kết nối Ethernet server với mạng. . . . . . . . . . . . . 150
6.9 Cài đặt các đối tượng định nghĩa lưu lượng. . . . . . . 151
6.10 Lựa chọn tải server làm Individual Statisics. . . . . . . 152
6.11 Lựa chọn tải trễ Ethernet làm Global Statistics. . . . . 152
6.12 Thiết lập thời gian và chạy mô phỏng. . . . . . . . . . 153
6.13 Xem kết quả mô phỏng Server Load (bit/s). . . . . . . 154
6.14 Xem kết quả mô phỏng Etherner Delay (s). . . . . . . 155
6.15 Xem kết quả mô phỏng Etherner Delay (s). . . . . . . 156
6.16 Chạy mô phỏng cho ngữ cảnh 2. . . . . . . . . . . . . . 157
6.17 Chọn so sánh kết quả Server Load. . . . . . . . . . . . 158
6.18 Chọn so sánh kết quả Ethernet Delay. . . . . . . . . . 158
6.19 Tổng hợp kết quả mô phỏng của cả hai ngữ cảnh. . . . 159

7.1 Menu View mở các cửa sổ cần thiết. . . . . . . . . . . 163


7.2 Chọn “Insert Filter Design” trong menu "Project". . . 163
7.3 Đánh dấu chọn các linh kiện. . . . . . . . . . . . . . . 164
7.4 Chọn giá trị các linh kiện. . . . . . . . . . . . . . . . . 165
7.5 Sơ đồ mạch lọc. . . . . . . . . . . . . . . . . . . . . . . 167
7.6 Sơ đồ "series inductor version" và kết quả mô phỏng. . 168
7.7 Sơ đồ "parallel capacitor version" và kết quả mô phỏng. 168
7.8 Bảng các bản mạch nền. . . . . . . . . . . . . . . . . . 169
7.9 Cửa sổ "Circuit Editor" và thanh công cụ. . . . . . . . 170
7.10 Biểu tượng "Interface Port". . . . . . . . . . . . . . . . 171
7.11 Chọn “Microwave Port”. . . . . . . . . . . . . . . . . . 171
7.12 Chuyển sang thẻ “Components”. . . . . . . . . . . . . . 172
7.13 Mở mục “Lumped” và “Resistors”. . . . . . . . . . . . . 172
7.14 Nối đất (Ground). . . . . . . . . . . . . . . . . . . . . 173
7.15 Chọn đường truyền mạch dải trong "Transmission Lines".174
7.16 Nối dây với "Microwave Port" và điện trở. . . . . . . . 174
7.17 Nhấp vào “TRL” để mở “Microstrip-Calculator”. . . . . 175
7.18 Tính toán đường truyền mạch dải. . . . . . . . . . . . 176
7.19 Tính toán hiển thị cạnh đường mạch dải. . . . . . . . . 176
DANH SÁCH HÌNH VẼ xi

7.20 Chọn Analysis để thiết lập mô phỏng. . . . . . . . . . 177


7.21 Cửa sổ "Analysis". . . . . . . . . . . . . . . . . . . . . 178
7.22 Cửa số "Linear Network Anlysis". . . . . . . . . . . . . 178
7.23 Thiết lập các thông số quét. . . . . . . . . . . . . . . . 179
7.24 Phân tích mạch với "Analysis" và báo cáo với "Report". 180
7.25 Lựa chọn tham số vẽ đồ thị. . . . . . . . . . . . . . . . 181
7.26 Đồ thị biểu diễn S11 . . . . . . . . . . . . . . . . . . . . 182
7.27 Đánh dấu các điểm đặc biệt (S11 cực tiểu). . . . . . . . 182
7.28 Lựa chọn biểu diễn giản đồ Smith. . . . . . . . . . . . 183
7.29 Biểu diễn kết quả trên giản đồ Smith. . . . . . . . . . 183
Danh sách bảng

3.1 Bảng các tiêu chí kỹ thuật của dự án . . . . . . . . . . 35


3.2 Nội dung đề xuất cho dự án mô phỏng . . . . . . . . . 39
3.3 Nội dung bản báo cáo kết thúc dự án mô phỏng . . . . 59

4.1 Các chức năng chính của Communications Toolbox . . 67


4.2 Các hàm sử dụng trong Ví dụ 1 . . . . . . . . . . . . . 68

xii
Giới thiệu

Cuốn giáo trình này được xây dựng với mục tiêu chính là cung
cấp một tài liệu tiếng Việt phục vụ cho môn học "Mô hình hóa và
mô phỏng", một môn học bắt buộc trong Khung chương trình đào
tạo cử nhân ngành Công nghệ Kỹ thuật Điện tử - Truyền thông,
Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội.
Nội dung của giáo trình ngoài việc cung cấp các kiến thức cơ
bản còn là các kiến thức về ứng dụng mô phỏng trong thực tiễn
với các bước cơ bản trong giải quyết các bài toán mô phỏng cụ thể.
Một số công cụ mô phỏng đang được dùng trong thực hành môn
học cũng được chọn lọc để trình bày trong giáo trình này.
Cấu trúc của giáo trình gồm bảy chương:
Phần 1: Các kiến thức cơ sở, gồm có:
Chương 1. Mở đầu: cung cấp một số khái niệm cơ bản nhất về
mô hình hóa và mô phỏng;
Chương 2. Các mô hình và phương pháp mô phỏng: phân loại
các mô hình và phương pháp mô phỏng;
Chương 3. Phương pháp luận mô phỏng: trình bày các bước cần
thực hiện trong việc áp dụng phương pháp mô phỏng để giải các
bài toán trên thực tế (dự án mô phỏng).
Phần 2: Một số công cụ mô phỏng phổ biến, gồm có:
Chương 4. Mô phỏng với Matlab Communication Toolbox: giới
thiệu và ứng dụng Matlab Communication Toolbox trong mô phỏng;

1
2 GIỚI THIỆU

Chương 5. Mô phỏng với Simulink: giới thiệu và ứng dụng


Simulink trong mô phỏng;
Chương 6. Mô phỏng với Opnet: giới thiệu và ứng dụng Opnet
trong mô phỏng mạng truyền thông;
Chương 7. Mô phỏng với Ansoft Designer: giới thiệu và ứng dụng
Ansoft Designer trong thiết kế và mô phỏng mạch và hệ thống cao
tần;
Trong bảy chương sách nói trên, tác giả Trương Vũ Bằng Giang
là chủ biên cuốn sách và đồng thời biên soạn các chương: 1, 3, 5 và
7. Tác giả Trần Xuân Nam biên soạn các chương: 2, 4 và 6.
Ngoài việc phục vụ cho sinh viên ngành Công nghệ Điện tử -
Viễn thông tại Trường Đại học Công nghệ, Đại học Quốc gia Hà
Nội, cuốn sách này cũng có thể là tài liệu tham khảo cho sinh viên,
học viên các ngành kỹ thuật khác.
Nhóm tác giả chân thành cảm ơn ThS. Nguyễn Tiến Hòa,
Trường Đại học Bách Khoa Hà Nội đã hỗ trợ việc chuẩn bị các
chương trình cho các bài tập Simulink ở Chương 5. Cảm ơn PGS.
TS. Nguyễn Văn Đức, Trường Đại học Bách Khoa Hà Nội; PGS.
TS. Trần Xuân Tú, TS. Nguyễn Nam Hoàng, Trường Đại học Công
nghệ; TS. Lê Nhật Thăng, Học viện Công nghệ Bưu chính Viễn
thông đã đọc bản thảo cuốn sách và đóng góp các ý kiến quý báu
để các tác giả hoàn thành cuốn sách này.
Mặc dù cũng đã đầu tư thời gian thích hợp nhưng chắc chắn
không tránh khỏi các thiếu sót. Nhóm tác giả mong muốn nhận
được ý kiến góp ý cả về nội dung lẫn hình thức từ bạn bè, đồng
nghiệp cùng sinh viên để cuốn giáo trình này được hoàn thiện hơn.

Hà Nội, ngày 12 tháng 12 năm 2012


Thay mặt nhóm tác giả
Trương Vũ Bằng Giang
Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội
Chương 2

Các mô hình và phương pháp


mô phỏng

2.1 Xây dựng mô hình mô phỏng


Công đoạn đầu tiên trong việc phát triển một chương trình mô
phỏng của một hệ thống là thiết kế mô hình mô phỏng của hệ
thống đó. Mô hình thường được biểu diễn ở dạng toán học mô tả
mối quan hệ vào/ra của hệ thống. Nghệ thuật của mô hình hóa là
phát triển mô hình hoạt động có chứa đầy đủ các tính năng cần
thiết nhưng lại không quá phức tạp để có thể thực hiện được bằng
các máy tính thông dụng. Yêu cầu này đòi hỏi phải có sự cân đối
giữa tính chính xác, độ phức tạp và yêu cầu tính toán của mô hình.

PhÇn M« h×nh M« h×nh


cøng gi¶i tÝch m« pháng

Hình 2.1: Lược đồ xây dựng mô hình mô phỏng.

15
16 CHƯƠNG 2. CÁC MÔ HÌNH VÀ PHƯƠNG PHÁP MÔ PHỎNG

Đối với một quá trình mô phỏng, thông thường có hai mô hình
được xây dựng: mô hình giải tích (phân tích) và mô hình mô phỏng
như biểu diễn trên Hình 2.1. Cả hai mô hình này đều mô tả tính
trừu tượng của hệ thống. Mô hình giải tích (phân tích) thường biểu
diễn ở dạng công thức toán học hay các hệ phương trình xác định
mối quan hệ vào/ra của hệ thống. Các công thức và các phương
trình này thường mô tả một phần hệ thống, và có độ chính xác trong
một phạm vi nào đó. Mô hình mô phỏng trên máy tính thường là
một tập hợp của các thuật toán để giải các phương trình trong mô
hình giải tích (phân tích). Các phương pháp số được sử dụng để
thực hiện công việc này.

Cao Thêi gian m« pháng Dµi


Sai sè vs §é phøc t¹p vs §é phøc t¹p

Thêi gian m« pháng


Sai sè m« h×nh

Vïng ho¹t ®éng


thùc tÕ

ThÊp Ng¾n
ThÊp §é phøc t¹p M« h×nh Cao

Hình 2.2: Quan hệ sai số-thời gian chạy-độ phức tạp của mô hình.

Mối quan hệ giữa sai số mô hình, độ phức tạp và thời gian mô


phỏng được biểu diễn ở Hình 2.2. Chúng ta có thể thấy rằng một
mô hình có độ phức tạp thấp có sai số mô hình hóa lớn, nhưng lại
yêu cầu thời gian chạy mô phỏng ngắn. Ngược lại, mô hình có độ
phức tạp lớn có sai số nhỏ nhưng lại yêu cầu thời gian mô phỏng
dài.

2.2 Phân loại các mô hình mô phỏng


Mô hình mô phỏng có thể được phân loại theo nhiều cách khác
nhau như mô tả trên Hình 2.3. Mô hình mô phỏng có thể phân loại
2.2. PHÂN LOẠI CÁC MÔ HÌNH MÔ PHỎNG 17

thành hai loại:

• Mô hình mô phỏng xác định (Deterministic model).

• Mô hình mô phỏng ngẫu nhiên (Stochastic model).

Liên tục theo thời gian


Mô phỏng Monte -Carlo

Rời rạc theo thời gian


Mô hình ngẫu nhiên

Mô hình xác định

Hình 2.3: Phân loại các mô hình mô phỏng.

Một mô hình mô phỏng được xem là xác định nếu nó không


chứa các biến ngẫu nhiên. Vì vậy, một tập hợp các giá trị cho trước
ở các đầu vào sẽ cho một tập kết quả duy nhất ở đầu ra. Các mô
hình mô phỏng xác định thường gặp trong trường hợp mô phỏng
các mạch điện được thiết kế sử dụng một chương trình thiết kế, ví
dụ SPICE. Do mạch điện cố định và tín hiệu đầu vào là xác định
nên mỗi lần chạy mô phỏng sẽ cho cùng một kết quả. Trong trường
hợp này mô phỏng thực hiện trên các mô hình xác định được sử
dụng để tiết kiệm thời gian và tránh các lỗi toán học do phải thực
hiện các phép toán dài và nhàm chán.
Ngược lại, mô hình mô phỏng ngẫu nhiên có chứa một hay nhiều
biến ngẫu nhiên. Ví dụ, mô phỏng một hệ thống truyền dẫn vô tuyến
trong đó kênh truyền có đặc tính ngẫu nhiên. Đối với mô hình này,
mặc dù với cùng một tập giá trị đầu vào xác định thì mô hình vẫn
cho các kết quả khác nhau sau mỗi lần mô phỏng. Đối với trường
18 CHƯƠNG 2. CÁC MÔ HÌNH VÀ PHƯƠNG PHÁP MÔ PHỎNG

hợp này, để đánh giá phẩm chất hệ thống cần thực hiện mô phỏng
nhiều lần và lấy giá trị trung bình.
Chúng ta cũng có thể phân loại các mô hình mô phỏng thành:

• Mô hình mô phỏng tĩnh (Static model).

• Mô hình mô phỏng động (Dynamic model).

Mô hình mô phỏng tĩnh biểu diễn hệ thống tại một thời điểm
cụ thể hay một mô hình trong đó thời gian không phải là tham số
đáng quan tâm. Trong khi đó mô hình mô phỏng động biểu diễn
các hệ thống khi chúng biến đổi theo thời gian.
Ngoài ra, nếu mô hình thay đổi liên tục và đều chúng ta có mô
hình mô phỏng liên tục. Ngược lại nếu mô hình biến đổi theo các
bước gia tăng thì mô hình trở thành mô hình mô phỏng rời rạc.
Mô hình rời rạc tương tự như một bộ phim trong đó các khung ảnh
được biến đổi với tốc độ nhanh (30 khung/s) làm cho người xem
có cảm giác chuyển động. Tuy nhiên, trong một vở kịch biểu diễn
trực tiếp thì các cảnh diễn là liên tục. Tương tự như trường hợp
làm phim, chúng ta thường phát triển các mô hình mô phỏng rời
rạc để biểu diễn các tình huống liên tục.

2.3 Các phương pháp mô phỏng


Có hai loại mô phỏng cơ bản: mô phỏng xác định và mô phỏng
ngẫu nhiên. Mô phỏng xác định thường gặp trong trường hợp mô
phỏng các mạch điện được thiết kế sử dụng một chương trình thiết
kế, ví dụ như SPICE. Chương trình này được sử dụng để tạo ra
một mạch điện và cấp dòng đầu vào. Chương trình mô phỏng tạo
ra dòng điện chạy ở các nhánh của mạch điện và điện áp qua từng
phần tử. Điện áp và dòng điện thường được biểu diễn bởi các dạng
sóng. Khoảng thời gian mong muốn của các dạng sóng này được
xác định trước khi chạy mô phỏng. Do mạch điện là cố định và tín
hiệu đầu vào là xác định nên mỗi lần chạy mô phỏng sẽ cho cùng
2.3. CÁC PHƯƠNG PHÁP MÔ PHỎNG 19

một kết quả. Trong trường hợp này, mô phỏng được sử dụng để
tiết kiệm thời gian và tránh các lỗi toán học do phải thực hiện các
phép toán dài và nhàm chán.
Nếu giả thiết đầu vào của hệ thống là một dạng sóng ngẫu
nhiên, nói chính xác là nếu đầu vào hệ thống là một hàm mẫu của
một quá trình ngẫu nhiên, thì một cách tương đương có thể coi trở
kháng của điện trở là một biến ngẫu nhiên xác định bởi một hàm
mật độ xác suất xác định. Kết quả của mô phỏng này sẽ không còn
là một dạng sóng xác định và các mẫu của dạng sóng này sẽ tạo
nên một tập hợp của các biến ngẫu nhiên. Các mô phỏng trong đó
xuất hiện các giá trị ngẫu nhiên được gọi là các mô phỏng ngẫu
nhiên.
Để lấy ví dụ, chúng ta giả thiết điện áp qua một phần tử mạch
điện được ký hiệu là e(t) và mô phỏng được sử dụng để tạo ra e(t)
trong khoảng thời gian 1ms, tức là e(0, 01). Trong mô phỏng xác
định thì e(0, 01) không đổi và chúng ta có kết quả như nhau sau
mỗi lần mô phỏng.
Một ví dụ khác là hệ thống truyền dẫn số trong đó tín hiệu
thu bao gồm tín hiệu phát cộng tạp âm ngẫu nhiên. Giả thiết rằng
nhiệm vụ của chúng ta là tính xác suất lỗi dấu tại đầu ra máy thu.
Từ lý thuyết truyền dẫn chúng ta biết rằng đối với truyền dẫn tín
hiệu BPSK (Khóa dịch pha nhị phân - Binary Phase Shift Key-
ing) qua kênh AWGN (Nhiễu Gauss trắng cộng - Additive White
Gaussian Noise), thì xác suất lỗi dấu là

 
2Eb
PE = Q (2.1)
N0

trong đó, Eb là năng lượng dấu, N0 là mật độ phổ công suất tạp
âm một phía và Q(x) là hàm Q Gauss được định nghĩa bởi

 ∞  2
1 y
Q(x) = exp − (2.2)
2π x 2
20 CHƯƠNG 2. CÁC MÔ HÌNH VÀ PHƯƠNG PHÁP MÔ PHỎNG

Để ý rằng PE là một số chứ không phải một biến ngẫu nhiên,


mặc dù tạp âm ngẫu nhiên xuất hiện ở đầu vào máy thu. Số PE là
một giá trị trung bình sau một số lần thử vô hạn, trong đó mỗi lần
thử bao gồm việc gửi một số dấu số đi qua hệ thống và quan sát kết
quả đầu ra. Tất nhiên là kết quả có thể là chính xác hoặc là một lỗi
ở đầu ra. Đối với các quá trình Ergodic (dừng), chúng ta có thể xác
định xác suất lỗi bằng hai cách. Chúng ta có thể xem một bit được
truyền và tính PE như là trung bình tập hợp (ensemble average),
trong đó chúng ta có một tập hợp (ensemble) của các dạng sóng
tạp âm có cùng tính chất thống kê. Một cách khác là chúng ta có
thể xác định PE như là trung bình thời gian bằng cách truyền vô
hạn các dấu nhị phân và sử dụng hàm mẫu đơn của tạp âm. Điểm
mấu chốt là chúng ta tính PE dựa trên một số vô hạn các dấu nhị
phân phát đi. Nếu thay vì xác định PE dựa trên một số vô hạn
các dấu phát, chúng ta ước lượng PE dựa trên một số vô hạn các
dấu phát, ước lượng PE sử dụng một số hữu hạn các dấu nhị phân
phát, ta sẽ tìm được rằng ước lượng của PE thực tế là một biến
ngẫu nhiên do mỗi hàm mẫu có khoảng hữu hạn sẽ tạo nên một giá
trị khác nhau (mong muốn là không nhiều lắm) cho xác suất lỗi.
Điều này sẽ được trình bày ở phần sau khi xem xét phương pháp
Monte-Carlo.

2.4 Mô phỏng Monte-Carlo trong truyền


thông số
Mô phỏng Monte-Carlo là một phương pháp mô phỏng ngẫu
nhiên được sử dụng để đánh giá sự lặp lại chất lượng của một mô
hình xác định sử dụng các tập biến đầu vào ngẫu nhiên. Phương
pháp mô phỏng Monte-Carlo được bắt nguồn từ trò chơi may rủi
được các casino tạo ra bằng các bộ tạo số ngẫu nhiên cơ khí. Tên
gọi Monte-Carlo được lấy từ tên gọi của thành phố quê hương nổi
tiếng của các sòng bạc Monte-Carlo. Kỹ thuật Monte-Carlo về bản
2.4. MÔ PHỎNG MONTE-CARLO TRONG TRUYỀN THÔNG SỐ 21

chất là phương pháp mô phỏng một thí nghiệm ngẫu nhiên sử dụng
các công cụ nhân tạo, tức là không yêu cầu phải lặp lại thí nghiệm
vật lý hoàn toàn.
Trong truyền thông số, mô phỏng đòi hỏi phải tạo ra các mẫu
có các dạng sóng khác nhau, xử lý các mẫu tín hiệu này qua các
mô hình với các khối chức năng trong hệ thống, và ước lượng phẩm
chất hệ thống từ các mẫu tín hiệu đầu ra tại các điểm trong mô
hình. Trường hợp phổ biến trong truyền thông số là sử dụng mô
phỏng Monte-Carlo để ước lượng tỉ số lỗi bit (BER).

u(t)
HÖ thèng y(t)
v(t)
truyÒn dÉn
w(t)

Hình 2.4: Mô hình mô phỏng Monte-Carlo.

Giả thiết chúng ta có mô hình một hệ thống truyền dẫn được


mô tả bởi các tín hiệu đầu vào u(t), v(t), và w(t) là các quá trình
ngẫu nhiên. Mục tiêu của chúng ta là đi tìm các đặc tính thống
kê của y(t) hay giá trị kỳ vọng của một hàm G{y(t)} nào đó của
y(t). Nếu chúng ta giải bài toán này bằng cách giả lập hệ thống
trong đó tất cả các dạng sóng biến đổi theo thời gian, chúng ta sẽ
có một mô phỏng "thuần" Monte-Carlo. Điều này hàm ý việc tạo
ra các mẫu của tất cả các quá trình đầu vào, cho các mô hình của
các khối chức năng trong hệ thống làm việc với các mẫu đầu vào
này, rồi quan sát các dạng sóng đầu ra. Trong trường hợp lý tưởng,
mô phỏng Monte-Carlo tương ứng với hệ thống thực trong phạm
vi giới hạn của các giả thiết mô hình hóa và phép tính xấp xỉ. Giá
trị kỳ vọng E[G{y(t)}] được ước lượng từ mô phỏng Monte-Carlo
theo công thức sau:

1 
N
E[Ĝ{(y(t)}] = G{y(k)} (2.3)
N k=1
22 CHƯƠNG 2. CÁC MÔ HÌNH VÀ PHƯƠNG PHÁP MÔ PHỎNG

trong đó, dấu mũ biểu diễn giá trị ước lượng và N là số mẫu sử
dụng mô phỏng.

Hình 2.5: Biểu diễn phương pháp mô phỏng Monte-Carlo.

Trong trường hợp mô hình mô phỏng hệ thống truyền dẫn số


điển hình, sơ đồ mô tả việc thực hiện mô phỏng Monte-Carlo để
ước lượng tỉ lệ lỗi bit BER hay tỉ lệ lỗi dấu SER được biểu diễn
ở Hình 2.5. Mô phỏng Monte-Carlo được tiến hành theo các bước
sau đây:

• Tạo các mẫu của chuỗi bit đầu vào b(k), k = 1, 2, ..., N, và các
mẫu tạp âm z(k), k = 1, 2, ..., N.

• Xử lý các mẫu này qua mô hình các khối chức năng của hệ
thống cần mô phỏng và tạo một chuỗi đầu ra b̃(k).

• Ước lượng tỉ số lỗi theo công thức sau:

1 
N
P̂e = G{b̃(k)} (2.4)
N k=1
2.4. MÔ PHỎNG MONTE-CARLO TRONG TRUYỀN THÔNG SỐ 23

trong đó, G{b̃(k)} = 1 nếu b̃(k) = b(k) và G(y(k)) = 0 nếu


˜
b̃(k) = b(k), tức là G{d(k)} là hàm tính lỗi.

Độ chính xác của các ước lượng thu được từ mô phỏng Monte-
Carlo sẽ phụ thuộc vào thủ tục ước lượng sử dụng, kích thước mẫu
N, khả năng tái tạo chính xác các mẫu đầu vào, và các giả thiết
mô hình hóa và phép tính xấp xỉ.

Quan hệ giữa tính chính xác và số lượng mẫu

Để đánh giá phẩm chất của một hệ thống truyền thông số, mô
phỏng Monte-Carlo thường được sử dụng để ước lượng tỉ số BER.
Như đã thảo luận ở các phần trên, để có ước lượng chính xác của
BER, chúng ta cần tăng số lượng bit gửi đi N đến vô cùng (∞).
Tuy nhiên, việc tăng số lượng bit gửi đi đồng nghĩa với thời gian
chạy mô phỏng sẽ lâu hơn. Vì vậy, để có được sự thỏa hiệp giữa
độ chính xác của kết quả mô phỏng và thời gian chạy mô phỏng,
chúng ta mong muốn tìm được số lượng bit cần gửi đi N tương ứng
với giá trị BER mong muốn có độ chính xác cho phép. Chúng ta sẽ
nghiên cứu tìm ra số bit N này thông qua trường hợp dưới đây.
Xét một hệ thống truyền dẫn đơn giản chịu ảnh hưởng của tạp
âm. Giả thiết tín hiệu s phát đi là một hằng số và tạp âm z là một
biến ngẫu nhiên Gauss với giá trị trung bình bằng 0, phương sai
σz2 = 1. Do tạp âm z là ngẫu nhiên nên tín hiệu thu được

y =s+z (2.5)

là một biến ngẫu nhiên. Để đơn giản ta xét trường hợp s > 0, tương
đương với trường hợp gửi đi một bit thông tin ở mức điện áp cao.
Chúng ta có thể dễ dàng nhận thấy y cũng là một biến ngẫu nhiên
Gauss với giá trị trung bình s và phương sai σy2 = 1.
Giả thiết là chúng ta cần sử dụng mô phỏng Monte-Carlo để
ước lượng xác suất thu được y < 0 khi phát đi một tín hiệu s > 0
24 CHƯƠNG 2. CÁC MÔ HÌNH VÀ PHƯƠNG PHÁP MÔ PHỎNG

cho trước, tức là chúng ta cần ước lượng xác suất

P (s) = P (y < 0|s). (2.6)

Trường hợp này tương tự như khi chúng ta gửi đi một tín hiệu
s = +1, nhưng do ảnh hưởng của tạp âm Gauss z trên kênh truyền
nên máy thu nhận được một mẫu tín hiệu y < 0. Để ước lượng tín
hiệu phát s, máy thu sử dụng phương pháp tách tín hiệu hợp lẽ cực
đại (maximum likelihood) thực hiện phép quyết định theo ngưỡng
tại giá trị bằng 0 (tức là quyết định s = +1 nếu y > 0 và s = −1
nếu y < 0) và cho ta kết quả s = −1. Trường hợp này xảy ra một
lỗi tách tín hiệu và xác suất P (s) = P (y < 0|s) chính là xác suất
thu lỗi của hệ thống.
Để ước lượng được xác suất lỗi P (s), chúng ta sử dụng máy
tính để tạo ra một chuỗi các biến Gauss ngẫu nhiên, có kỳ vọng
bằng 0 và phương sai bằng 1, độc lập thống kê và có phân bố giống
nhau, zk , k = 1, 2, ..., N. Cộng zk với s, chúng ta có một chuỗi N
biến ngẫu nhiên

yk = s + zk , k = 1, 2, ..., N. (2.7)

Từ các biến ngẫu nhiên tạo ra bằng máy tính này, chúng ta
mong muốn ước lượng xác suất một biến ngẫu nhiên Gauss, với kỳ
vọng s > 0 và phương sai đơn vị, nhỏ hơn 0, tức là ước lượng xác
suất yk < 0. Để thu được ước lượng xác suất, chúng ta làm phép
kiểm tra xem yk < 0 và định nghĩa một biến ngẫu nhiên mới xk có
quan hệ với yk như sau:

⎨0, nếu y ≥ 0
k
xk = (2.8)
⎩1, nếu yk < 0

Có thể nhận thấy rằng xk chính là biến biểu diễn lỗi, và ước
lượng của xác suất P (y < 0|s) có thể biểu diễn như sau:

1 
N
P̂ (s) = xk (2.9)
N k=1
2.4. MÔ PHỎNG MONTE-CARLO TRONG TRUYỀN THÔNG SỐ 25

Nói cách khác, ước lượng P̂ (s) đơn giản là số các biến ngẫu
nhiên yk , k = 1, 2, ..., N nhỏ hơn 0 chia cho tổng số N biến ngẫu
nhiên.
Do ước lượng P̂ (s) là một hàm số của các biến ngẫu nhiên
xk , k = 1, 2, ..., N, nên nó cũng là một biến ngẫu nhiên. Để có được
ước lượng của xác suất lỗi P̂ (s) gần với giá trị của xác suất lỗi
P (s), chúng ta mong muốn E[P̂ (s)] = P (s) và σP̂ (s)  P (s).
Chúng ta bắt đầu bằng việc xét giá trị kỳ vọng của P̂ (s)
1 
N
E[P̂ (s)] = E[xk ] (2.10)
N k=1
Nhưng do
E[xk ] = 0 · P (yk > 0) + 1 · P (yk < 0) (2.11)
nên
1 
N
E[P̂ (s)] = P (yk < 0) (2.12)
N k=1

1 
N
= P (s) = P (s) (2.13)
N k=1

Điều này chứng tỏ rằng giá trị kỳ vọng của ước lượng P̂ (s) đúng
bằng giá trị thật P (s).
Tiếp theo, chúng ta đi tính phương sai của ước lượng P̂ (s).
Phương sai của P̂ (s) được định nghĩa như sau:
2
σP2 (s) = E P̂ (s) − E[P̂ (s)] (2.14)

= E P̂ 2 (s) − P 2 (s) (2.15)

Tuy nhiên,
 
1 
N N
2
E[P̂ (s)] = E xk x (2.16)
N2
k=1 =1

1  1  
N N N
2
= 2 E[xk ] + 2 E[xk x ]. (2.17)
N k=1 N k=1 =1,=k
26 CHƯƠNG 2. CÁC MÔ HÌNH VÀ PHƯƠNG PHÁP MÔ PHỎNG

Để ý rằng chúng ta có

E[x2k ] = 0 · P (yk ≥ 0) + 1 · P (yk < 0) = P (s) (2.18)

E[xk x ] = E[xk ]E[x ] = P 2(s) (2.19)

do xk và x độc lập với nhau. Thay (2.18) và (2.19) vào (2.17),


chúng ta thu được phương sai của ước lượng như sau:
1 N(N − 1) 2
E[P̂ 2 (s)] = P (s) + P (s) (2.20)
N N2
1
= P (s)[1 + (N − 1)P (s)] (2.21)
N
Như vậy, chúng ta có phương sai của P̂ (s)
1
σP̂2 (s) =P (s)[1 + (N − 1)P (s)] − P 2 (s) (2.22)
N
1
= P (s)[1 − P (s)] (2.23)
N
Như đã đề cập ở phần trên, khi ước lượng P (s) dựa vào mô
phỏng, chúng ta mong muốn độ lệch chuẩn σP (s) càng nhỏ so với
P (s) càng tốt. Tức là
 1/2
1
σP (s) = P (s)[1 − P (s)]  P (s) (2.24)
N

hay, một cách tương đương,

σP2 (s)  P 2(s)

tức là
1
P (s)[1 − P (s)]  P 2 (s). (2.25)
N
Vì vậy
1 − P (s) 1
N = − 1. (2.26)
P (s) P (s)
2.5. MÔ PHỎNG BĂNG THÔNG VÀ MÔ PHỎNG BĂNG GỐC 27

Do xác suất lỗi thường rất nhỏ hơn 1 nên 1/P (s)  1 và chúng ta

1
N . (2.27)
P (s)
Như vậy, để thu được ước lượng của xác suất lỗi P̂ (s) chính xác
so với P (s), chúng ta cần chọn N  1/P (s). Ví dụ, với P (s) = 10−3 ,
thì yêu cầu N  1000. Để ý rằng xác suất lỗi P (s) = 10−3 có nghĩa
là khi chúng ta gửi đi N = 103 bit thì trung bình sẽ có một bit
lỗi. Nếu chúng ta chọn N = 104 thì trung bình sẽ có 10 bit lỗi, và
tương tự khi tăng số bit N. Thực tế, theo kinh nghiệm cho thấy
kết quả mô phỏng có thể chấp nhận được khi chúng ta đếm được
100 bit lỗi trở lên, và vì vậy, số lượng mẫu nhỏ nhất để thu được
ước lượng tin cậy của P (s) cần thỏa mãn [8]
10
N> (2.28)
P (s)
khi P (s)  1. Điều kiện này thường đủ để ước lượng xác suất lỗi
của một hệ thống truyền dẫn số chịu ảnh hưởng của tạp âm cộng
và nhiễu khác.

2.5 Mô phỏng băng thông và mô phỏng


băng gốc
Một trong các yêu cầu để mô phỏng các hệ thống truyền thông,
là cần phải tạo ra dạng sóng của tín hiệu mong muốn giống như
hệ thống cần nghiên cứu. Các tín hiệu truyền đi thường là các tín
hiệu điều chế cao tần được xử lý ở các hệ thống băng thông. Tuy
nhiên, do máy tính chỉ có khả năng xử lý các giá trị biểu diễn các
mẫu tín hiệu rời rạc nên bước đầu tiên trong quá trình tạo lập mô
hình mô phỏng là cần biểu diễn chính xác dạng sóng tín hiệu bằng
máy tính thông qua biến đổi tương tự-số.
Thao tác đầu tiên trong biến đổi tương tự-số được biết đến rộng
rãi là lấy mẫu. Từ định lý lấy mẫu của Nyquist, chúng ta biết rằng
28 CHƯƠNG 2. CÁC MÔ HÌNH VÀ PHƯƠNG PHÁP MÔ PHỎNG

một tín hiệu liên tục có thể biểu diễn duy nhất bởi một mô hình
rời rạc chỉ khi tần số lấy mẫu lớn hơn hoặc bằng hai lần thành
phần tần số lớn nhất trong phổ tần tín hiệu. Đối với tín hiệu băng
gốc, giả thiết thành phần tần số lớn nhất fmax , thì tần số lấy mẫu
fs ≥ 2fmax . Đối với tín hiệu băng thông có phổ tần tín hiệu nằm
trong dải fc − B/2 ≤ f ≤ fc + B/2 thì thành phần tần số lớn nhất
là fc + B/2. Dựa theo định lý lấy mẫu băng thông [6] thì tần số lấy
mẫu không cần phải thỏa mãn điều kiện fs ≥ 2fc + B, mà chỉ cần
thỏa mãn điều kiện
2fmax 2fc + B
fs ≥ = , (2.29)
m m
trong đó  
fmax
m= (2.30)
B
với m là kết quả của phép tính fmax /B lấy làm tròn xuống [6]. Điều
này có nghĩa là 2B ≤ fs ≤ 4B và trong trường hợp f0  B thì
fs ≈ 2B, tuy nhiên không nhỏ hơn 2B.
Trên cơ sở mô hình tín hiệu rời rạc cho tín hiệu băng gốc và
tín hiệu băng thông có thể thực hiện tương ứng các mô phỏng băng
gốc và mô phỏng băng thông. Tuy nhiên, biểu diễn của tín hiệu
sử dụng các mẫu của dạng sóng băng thông thường phức tạp hơn
các tín hiệu băng gốc [9]. Vì vậy, tín hiệu và hệ thống băng thông
thường được biểu diễn ở dạng băng gốc tương đương trong mô
phỏng. Phương pháp biểu diễn tín hiệu băng thông về dạng băng
gốc tương đương được gọi là phương pháp đường bao phức. Ý tưởng
của phương pháp này là với một tín hiệu điều chế sóng mang x(t)
ở dạng
x(t) = r(t) cos[2πfc t + φ(t)] (2.31)
trong đó, r(t) là điều chế biên độ, φ(t) là điều chế pha của tín hiệu,
còn fc là tần số sóng mang, chúng ta có thể viết lại thành
 
x(t) = r(t)ej(2πfc +φ(t))
 
= r(t)ejφ(t) ej2πfc (2.32)
2.5. MÔ PHỎNG BĂNG THÔNG VÀ MÔ PHỎNG BĂNG GỐC 29

trong đó [·] biểu diễn phép tính lấy phần thực của thành phần
phức bên trong dấu ngoặc. Để ý rằng thành phần tín hiệu

x̃(t) = r(t)ejφ(t) (2.33)

chứa tất cả các thông tin và là tín hiệu băng gốc. Tín hiệu x̃(t)
thường được gọi là biên độ phức hay tín hiệu băng gốc tương đương
của tín hiệu băng thông. Trong mô phỏng tín hiệu băng gốc tương
đương ở công thức (2.33) thay thế cho tín hiệu băng thông công
thức (2.31). Việc mô hình hóa tín hiệu băng thông ở dạng băng gốc
tương đương thường liên quan đến biến đổi Hilbert. Việc tính toán
biến đổi Hilbert trong miền tần số thường dễ dàng hơn trong miền
thời gian. Tuy nhiên, trong thực tế với phần lớn tín hiệu băng thông
điều chế biên độ hoặc pha có băng thông hữu hạn và có fc  B. Vì
vậy, để mô hình hóa tín hiệu cho mô phỏng, tín hiệu băng gốc tương
đương cho các tín hiệu điều chế này có thể nhận được bằng cách
ánh xạ thành phần đồng pha (inphase) của tín hiệu băng thông trở
thành phần thực và thành phần trực giao (quadrature) trở thành
phần ảo của biên độ phức. Tức là

x̃(t) = r(t)ejφ(t) = xI (t) + jxQ (t) (2.34)

trong đó

xI (t) = r(t) cos φ(t) (2.35)

là thành phần đồng pha, còn

xQ (t) = r(t) sin φ(t) (2.36)

là thành phần trực giao.


Chương 4

Mô phỏng với Matlab


Communication Toolbox

4.1 Giới thiệu về Matlab


MATLAB là từ viết tắt của Matrix Laboratory với ý nghĩa đây là
phần mềm ứng dụng cho tính toán ma trận. Thực chất, MATLAB
là một gói phần mềm dùng cho tính toán kỹ thuật có tích hợp các
công cụ tính toán, trực quan hóa, và lập trình. Môi trường làm việc
của MATLAB dễ sử dụng và gần gũi với biểu diễn toán học của
các phép toán. Các ứng dụng điển hình của MATLAB bao gồm:

• Tính toán toán học;

• Phát triển thuật toán;

• Thu thập dữ liệu;

• Mô hình hóa, mô phỏng và tạo mẫu;

• Phân tích, khai thác và trực giác hóa dữ liệu;

• Đồ họa khoa học và kỹ thuật;

63
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
64

• Phát triển ứng dụng bao gồm cả việc phát triển giao diện
người sử dụng.

MATLAB là một hệ thống tương tác trong đó phần tử dữ liệu cơ sở


là một mảng không cần định trước kích thước. Điều này cho phép
giải quyết được nhiều vấn đề tính toán, đặc biệt là các vấn đề gắn
với các phép toán ma trận hay véc-tơ, mà chỉ tiêu tốn một phần
thời gian cần thiết để viết các chương trình sử dụng các ngôn ngữ
không tương tác vô hướng (scalar) như C hay FORTRAN.
Hệ thống MATLAB bao gồm năm phần chính:

• Môi trường phát triển (Development Environment).


Đây là một tập hợp các công cụ và phương tiện hỗ trợ người
dùng sử dụng các hàm và tệp có sẵn của MATLAB. Nhiều
công cụ là các giao diện đồ họa người dùng (GUI: Graphical
User Interface). Các công cụ này bao gồm màn hình MATLAB
(MATLAB Desktop), cửa sổ lệnh (Command Window), lịch
sử lệnh (Command History), trình soạn thảo và gỡ rối (Editor
and Debugger), trình duyệt (Browser) để xem trợ giúp, không
gian làm việc (Workspace), các tệp, và đường dẫn tìm kiếm
(Search Path).

• Thư viện hàm toán học (Mathematical Function Li-


brary). Đây là một tập hợp các thuật toán tính toán trải
rộng từ các hàm cơ sở như cộng, trừ, sin, cos, các phép tính
số học phức, tới các hàm phức tạp hơn như đảo ma trận, tính
giá trị riêng (eigenvalue) của ma trận, các hàm Bessel, và các
phép biến đổi nhanh.

• Ngôn ngữ MATLAB (MATLAB Language). Đây là


ngôn ngữ tính toán ma trận/mảng bậc cao với các khai báo
luồng điều khiển, các hàm số, các cấu trúc dữ liệu, vào/ra,
các đặc điểm lập trình hướng đối tượng. Nó cho phép viết
cả các chương trình gọn nhẹ hay các chương trình ứng dụng
phức tạp.
4.2. GIỚI THIỆU COMMUNICATIONS TOOLBOX 65

• Đồ họa (Graphics.) MATLAB có nhiều phương tiện hiển


thị véc-tơ và ma trận ở dạng đồ thị, cũng như sửa đổi và in
các đồ thị này. Nó bao gồm các hàm bậc cao để trực giác
hóa các dữ liệu hai và ba chiều, xử lý ảnh, hoạt hình, và biểu
diễn đồ họa. Nó cũng bao gồm cả các hàm bậc thấp cho phép
tùy biến hóa đồ họa cũng như xây dựng các giao diện đồ họa
hoàn chỉnh cho các ứng dụng MATLAB của người sử dụng.

• Giao diện chương trình ứng dụng MATLAB (MAT-


LAB Application Program Interface - API). Đây là
một thư viện cho phép viết các chương trình C và Fortran
tương tác với MATLAB. Nó có cả các phương tiện để gọi các
thường trình (routine) từ MATLAB, dùng MATLAB như là
động cơ tính toán để đọc và viết các tệp MAT.
MATLAB cung cấp một họ các giải pháp theo từng ứng dụng,
được gọi là hộp công cụ (toolbox). Hộp công cụ MATLAB bao gồm
một tập hợp đầy đủ các hàm MATLAB ở dạng tệp "m" (m-file)
dùng để mở rộng môi trường MATLAB cho việc giải quyết các loại
vấn đề cụ thể. Các ví dụ về phạm vi ứng dụng của các hộp công
cụ MATLAB là xử lý tín hiệu, hệ thống điều khiển, mạng nơ-ron,
fuzzy logic, wavelet, mô phỏng, và nhiều ứng dụng khác.

4.2 Giới thiệu Communications Toolbox


Communications Toolbox mở rộng môi trường tính toán của Matlab
với các hàm, công cụ vẽ và giao diện người dùng để khai thác, thiết
kế, phân tích và mô phỏng các thuật toán ở lớp vật lý của các hệ
thống truyền thông. Toolbox này cho phép người dùng có thể tạo ra
các thuật toán mô phỏng các hệ thống vô tuyến và hữu tuyến. Các
ví dụ minh họa được trích từ hướng dẫn sử dụng Communications
Toolbox phiên bản R2009b của Matlab. Để tìm hiểu thêm các chức
năng mô phỏng khác, người đọc có thể sử dụng thêm các ví dụ
trong thư viện.
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
66

Các tính năng chính của Communications Toolbox bao gồm:

• Các hàm phục vụ cho việc thiết kế lớp vật lý các tuyến truyền
thông như mã nguồn, mã hóa kênh, xáo trộn, điều chế, các
mô hình kênh và san bằng tín hiệu.

• Các công cụ vẽ đồ thị mẫu mắt, chòm sao tín hiệu để trực
giác hóa các tín hiệu truyền thông.

• Giao diện đồ họa người sử dụng phục vụ cho việc so sánh tỉ


lệ lỗi bit của hệ thống mô phỏng với một số kết quả giải tích
đã được chứng minh.

• Các kiểu dữ liệu trường Galois phục vụ cho xây dựng các
thuật toán truyền thông.

Communications Toolbox thực hiện một loạt các nhiệm vụ liên


quan đến truyền thông. Nhiều chức năng trong toolbox thực hiện
các tính toán gắn với một phần tử cụ thể trong một hệ thống truyền
thông như giải điều chế hay san bằng. Một số hàm khác được thiết
kế phục vụ cho trực giác hóa hay phân tích kết quả.
Các nhóm chức năng thực hiện bởi Communications Toolbox sẽ
được trình bày trong các phần dưới đây.

4.3 Khai thác các phần tử của hệ thống


truyền thông
Trong phần này sẽ giới thiệu một số ví dụ cho phép khai thác
Communications Toolbox để biểu diễn và mô phỏng một số thành
phần điển hình trong các hệ thống truyền thông.

Ví dụ 1. Mô phỏng một hệ thống truyền thông số đơn giản

Ví dụ này trình bày phương pháp thực hiện mô phỏng một hệ thống
truyền thông số đơn giản bao gồm các thành phần sau: một bộ điều
4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THÔNG67

Bảng 4.1: Các chức năng chính của Communications Toolbox

Signal Source Nguồn tín hiệu ngẫu nhiên. Cho phép tạo các
dạng tín hiệu ngẫu nhiên khác nhau.
Source Coding Các hàm thực hiện các chức năng lượng tử
hóa, nén và các loại mã hóa nguồn khác.
Error Control Mã hóa sửa lỗi khối và mã chập
Coding
Interleaving & Xáo trộn theo khối hoặc chập
Deinterleaving
Analog Các bộ điều chế và giải điều chế băng thông
Modulation như điều chế pha, biên độ, tần số
& Demodulation
Digital Các bộ điều chế và giải điều chế số băng gốc
Modulation
& Demodulation
Pulse shaping Cho phép thực hiện lấy mẫu quá hạn và tạo
dạng tín hiệu
Filters Bộ lọc cosine nâng và Hilbert
Channels Các mô hình kênh cho tín hiệu thực, phức và
nhị phân
Equalizers Các bộ san bằng MLSE và san bằng thích nghi
Performance Đánh giá hiệu năng
Evaluation
GUI Giao diện đồ họa người dùng
Galois Field Xử lý các phần tử của các trường hữu hạn bậc
chẵn
Galois Field Xử lý các phần tử của các trường hữu hạn bậc
of Odd lẻ
Characteristic
Utilities Các chức năng liên quan khác

chế băng gốc, kênh, và giải điều chế. Chương trình mô phỏng sẽ
thực hiện tính tỉ lệ lỗi bit (BER) của hệ thống, và hiển thị các tín
hiệu phát và thu trên sơ đồ chòm sao tín hiệu.
Sơ đồ khối của hệ thống cần mô phỏng kèm theo các hàm của
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
68

scatterplot

randint modulate demodulate

Điều chế
Nguồn nhị Giải điều
băng gốc Đích
phân chế QAM
QAM

Tạp âm awgn
AWGM

So sánh
&
tính BER

biterr

Hình 4.1: Sơ đồ khối hệ thống mô phỏng.

MATLAB sẽ sử dụng được chỉ ra ở Hình 4.1. Để thực hiện mô


phỏng hệ thống trên, chúng ta sẽ sử dụng các hàm có sẵn trong
Communications Toolbox như liệt kê ở Bảng 4.2.

Bảng 4.2: Các hàm sử dụng trong Ví dụ 1

Nhiệm vụ Hàm
Tạo dòng bit nhị phân ngẫu nhiên randint
Điều chế sử dụng 16-QAM modulate
sử dụng
modem.qammod
Tạo tạp âm Gauss trắng awgn
Tạo đồ thị tán xạ scatterplot
Giải điều chế sử dụng 16-QAM modulate
sử dụng
modem.qamdemod
Tính BER hệ thống bitterr
4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THÔNG69

Bước 1. Tạo luồng dữ liệu nhị phân ngẫu nhiên

Luồng dữ liệu sẽ được biểu diễn ở dạng véc-tơ hay ma trận. Trong
trường hợp này, chúng ta sẽ tạo ra chuỗi nhị phân {0, 1} ở dạng
véc-tơ cột với chiều dài dữ liệu bất kỳ, ví dụ 30.000 bit (n = 3e4),
sử dụng câu lệnh x=randint(n,1). Để quan sát chuỗi bit tạo ra
bằng hình vẽ, có thể sử dụng câu lệnh stem.
Để khởi tạo tham số mô phỏng, chúng ta định nghĩa các tham
số sẽ được sử dụng bao gồm bậc điều chế M=16, số bit được điều
chế trong một ký hiệu (symbol) k = log2(M), số mẫu được lấy
trong một ký hiệu nsamp = 1 biểu diễn quá trình lấy mẫu tới hạn
(critical sampling), và định nghĩa modem sẽ được sử dụng để điều
chế là QAM: hMod = modem.qammod(M).

%% Setup
% Define parameters.
M = 16; % Size of signal constellation
k = log2(M); % Number of bits per symbol
n = 3e4; % Number of bits to process
nsamp = 1; % Oversampling rate
hMod = modem.qammod(M); % Create a 16-QAM modulator

%% Signal Source
% Create a binary data stream as a column vector.
x = randint(n,1); % Random binary data stream

% Plot first 40 bits in a stem plot.


stem(x(1:40),’filled’);
title(’Random Bits’);
xlabel(’Bit Index’); ylabel(’Binary Value’);

Kết thúc tập hợp câu lệnh trên thu được biểu diễn chuỗi bit nhị
phân phát như ở Hình 4.2, trong đó trục hoành biểu diễn số thứ tự
của các bit còn trục tung biểu diễn giá trị của bit.
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
70

Random Bits
1

0.9

0.8

0.7

0.6
Binary Value

0.5

0.4

0.3

0.2

0.1

0
0 5 10 15 20 25 30 35 40
Bit Index

Hình 4.2: Chuỗi bit phát ngẫu nhiên: trường hợp 40 bit đầu tiên.

Bước 2. Chuẩn bị điều chế

Trong ví dụ này sẽ sử dụng điều chế 16-QAM. Để thực hiện điều


chế QAM cần sử dụng đối tượng là một bộ điều chế QAM được
định nghĩa bởi câu lệnh: modem.qammod(M), với M là bậc điều chế.
Do đầu vào của các bộ điều chế của Matlab nhận các giá trị thập
phân từ 0 đến (M-1) nên cần phải chuyển các bit thành các số thập
phân (binary-to-decimal) nhờ câu lệnh bi2de. Câu lệnh này nhận
tổ hợp 4 bit và cho ra một số thập phân tương ứng. Để làm điều này,
chúng ta thực hiện chuyển véc-tơ cột nhị phân thành một ma trận
với k = log2M cột và n/k hàng. Thao tác này được thực hiện như
sau: reshape(x, n/k, k). Để chuyển các tổ hợp k bit thành một
số thập phân, sử dụng câu lệnh: xsym = bi2de(reshape(x, n/k,
k), ’left-msb’), với ’left-msb’ là tùy chọn của hàm bi2de cho
phép nhận biết bit cao nhất là bit bên trái. Để quan sát các số
nguyên được tạo ra có thể sử dụng câu lệnh stem giống ở trên. Tập
hợp đầy đủ của đoạn mã lệnh là:

%% Bit-to-Symbol Mapping
% Convert the bits in x into k-bit symbols.
4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THÔNG71

xsym = bi2de(reshape(x,k,length(x)/k).’,’left-msb’);
%% Stem Plot of Symbols
% Plot first 10 symbols in a stem plot.
figure; % Create new figure window.
stem(xsym(1:10));
title(’Random Symbols’);
xlabel(’Symbol Index’); ylabel(’Integer Value’);

Random Symbols
14

12

10
Integer Value

0
1 2 3 4 5 6 7 8 9 10
Symbol Index

Hình 4.3: Chuỗi thập phân biến đổi từ chuỗi bit ngẫu nhiên.

Trong tập câu lệnh trên, câu lệnh figure nhằm tạo ra một cửa
sổ hình vẽ mới để kết quả biểu diễn mới không đè lên kết quả cũ.
Các số thập phân được tạo ra từ chuỗi bit ngẫu nhiên được biểu
diễn trên Hình 4.3.

Bước 3. Điều chế dữ liệu sử dụng 16-QAM

Để thực hiện điều chế 16-QAM cần thực hiện khởi tạo bộ MODEM
điều chế nhờ câu lệnh modem.qammod(M), sau đó gọi hàm điều chế
để tiến hành điều chế, tức là:

y = modulate(modem.qammod(M), xsym)
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
72

Kết quả đầu ra bộ điều chế y là một véc-tơ cột chứa các ký hiệu
phức thuộc chòm sao tín hiệu 16-QAM. Để quan sát chòm sao tín
hiệu sau khi điều chế, có thể sử dụng câu lệnh scatterplot.

Bước 4. Tạo ảnh hưởng của kênh truyền

Trong ví dụ này, giả thiết kênh truyền chỉ chịu ảnh hưởng của
tạp âm Gauss trắng cộng tính (AWGN: Additive White Gaussian
Noise). Do nhiệm vụ của mô phỏng truyền dẫn tín hiệu số thường
là để quan sát chất lượng tín hiệu thu theo hàm của Eb /N0 nên
cần phải tạo được tạp âm có mức độ ảnh hưởng tương ứng. Để tạo
được tạp âm AWGN có thể sử dụng hàm awgn như ví dụ sau:

%% Transmitted Signal
ytx = y;
%% Channel
% Send signal over an AWGN channel.
EbNo = 10; % In dB
snr = EbNo + 10*log10(k) - 10*log10(nsamp);
ynoisy = awgn(ytx,snr,’measured’);
%% Received Signal
yrx = ynoisy;

Do tín hiệu truyền trên kênh truyền là các ký hiệu phức chịu
ảnh hưởng của tạp âm nên trong trường hợp này cần tạo ra tạp âm
theo tỷ số công suất tín hiệu trên công suất tạp âm (SNR). Tỷ số
này được xác định như sau:

SNR = EbN0 + 10*log10(k) – 10*log10(nsamp);

trong đó EbN0 là tỷ số Eb /N0 tính theo đơn vị dB, k là số bit trong


một ký hiệu, còn nsamp là tỷ lệ lấy mẫu quá hạn (oversampling)
và bằng 1 trong ví dụ này. Để đưa ảnh hưởng của tạp âm vào tín
hiệu phát y, sử dụng câu lệnh sau:
4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THÔNG73

ynoisy = awgn(ytx, SNR, ’measured’);

tùy chọn ’measured’ của hàm awgn cho phép tự tính công suất tín
hiệu ytx để đặt ảnh hưởng của tạp âm tương ứng với tỉ số SNR.
Tín hiệu thu được tại máy thu chính là ynoisy, hay nói cách khác
yrx = ynoisy.

Bước 5. Phân tích đồ thị chòm sao

Để vẽ chòm sao của tín hiệu, sử dụng hàm scatterplot. Trong ví


dụ này, ta sử dụng scatterplot cho cả tín hiệu phát và tín hiệu
thu để quan sát ảnh hưởng của tạp âm đối với tín hiệu phát và so
sánh hai tín hiệu này với nhau:

%% Scatter Plot
% Create scatter plot of noisy signal and transmitted
% signal on the same axes.
h = scatterplot(yrx(1:nsamp*5e3),nsamp,0,’g.’);
hold on;
scatterplot(ytx(1:5e3),1,0,’k*’,h);
title(’Received Signal’);
legend(’Received Signal’,’Signal Constellation’);
axis([-5 5 -5 5]); % Set axis ranges.
hold off;

Câu lệnh h = scatterplot(yrx(1:nsamp*5e3),nsamp,0,’g.’) thực


hiện vẽ chòm sao của tín hiệu thu được trước khi giải điều chế, còn
câu lệnh scatterplot(ytx(1:5e3),1,0,’k*’,h) vẽ chòm sao tín
hiệu của tín hiệu phát trên cùng hình vẽ để tiện so sánh. Kết quả
thu được được minh họa trên Hình 4.4. Từ hình vẽ có thể thấy các
điểm tín hiệu thu (màu xanh lá cây) bị tán xạ xung quanh điểm
tín hiệu phát (màu đen) do ảnh hưởng của các mẫu tạp âm. Mức
độ tán xạ của tín hiệu thu phụ thuộc vào phương sai của tạp âm.
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
74

Received Signal
5
Received Signal
Signal Constellation
4

1
Quadrature

−1

−2

−3

−4

−5
−5 −4 −3 −2 −1 0 1 2 3 4 5
In−Phase

Hình 4.4: Sơ đồ chòm sao tín hiệu thu/phát.

Bước 6. Giải điều chế tín hiệu 16-QAM

Để thực hiện giải điều chế tín hiệu 16-QAM chỉ cần áp dụng hàm
demodulate vào tín hiệu thu sử dụng đối tượng: modem.qamdemod,
cụ thể là

%% Demodulation
% Demodulate signal using 16-QAM.
zsym = demodulate(modem.qamdemod(M),yrx);

Đầu ra của MODEM là chuỗi số thập phân tương ứng với chuỗi đã
phát đi bên phát.

Bước 7. Chuyển các giá trị thập phân về tín hiệu nhị phân

Để tái tạo lại chuỗi bit nhị phân đã phát từ véc-tơ các số nguyên
(decimal- to-binary), sử dụng hàm de2bi để chuyển đổi một số
nguyên thành tổ hợp 4 bit tương ứng, mỗi tổ hợp tương ứng với
một hàng của ma trận sau z=de2bi(zsym, ’left-msb’). Sau đó,
sử dụng hàm reshape để chuyển ma trận nhị phân thành véc-tơ
4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THÔNG75

nhị phân: z = reshape (z.’, numel(z), 1), trong đó nemel là


hàm xác định số phần tử của z (number of elements). Chi tiết tập
hợp các lệnh này như sau:

%% Symbol-to-Bit Mapping
% Undo the bit-to-symbol mapping performed earlier.
z = de2bi(zsym,’left-msb’); % Convert integers to bits.
% Convert z from a matrix to a vector.
z = reshape(z.’,numel(z),1);

Bước 8. Tính toán tỷ lệ BER

Để tính toán tỷ lệ BER giữa chuỗi bit phát x và chuỗi bit thu được
z, sử dụng hàm: biterr như sau

%% BER Computation
% Compare x and z to obtain the number of errors and
% the bit error rate.
[number_of_errors,bit_error_rate] = biterr(x,z)

Kết quả cho biết số lỗi xảy ra trong chuỗi bit nhận được: number-of-error
và tỉ lệ lỗi bit bit-error-rate. Các số liệu thống kê này sẽ được
hiển thị trên cửa sổ câu lệnh của MATLAB. Kết quả thực tế có thể
khác chút ít do ví dụ sử dụng các số ngẫu nhiên.

number_of_errors =

71

bit_error_rate =

0.0024
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
76

Ví dụ này có sẵn trong phần demo của Matlab với tên gọi
commdoc_const. Để xem lại toàn bộ ví dụ này sử dụng câu lệnh
sau từ cửa sổ câu lệnh:
edit commdoc_const

Ví dụ 2. Biểu diễn quá trình ánh xạ lên chòm sao tín hiệu

Ví dụ 1 ở trên đã có biểu diễn tín hiệu trên sơ đồ chòm sao tín hiệu
(signal constellation). Tuy nhiên, việc mô tả quá trình ánh xạ một
số nguyên trong dải từ 0 đến M-1 chưa được rõ ràng. Ví dụ này sẽ
trình bày phương pháp hiển thị các điểm tín hiệu của sơ đồ điều
chế 16-QAM tương ứng với các số nguyên kèm theo đánh dấu chú
giải các điểm tín hiệu.

Bước 1. Tìm tất cả các điểm tín hiệu thuộc chòm sao tín hiệu
16-QAM

Để làm việc với chòm sao tín hiệu của một bộ điều chế sử dụng
tính chất “Constellation” của một đối tượng MODEM điều chế như
modem.qammod cho trường hợp điều chế QAM. Đối tượng được tạo
ra h=modem.qammod(M) sẽ chứa đầy đủ các điểm tín hiệu và các
thông tin liên quan. Để thực hiện khởi tạo một đối tượng MODEM
điều chế và thu thập các tính chất liên quan đến chòm sao tín hiệu
như vec-tơ ánh xạ mapping và vec-tơ chứa các điểm tín hiệu pt,
thực hiện các câu lệnh mẫu sau đây

M = 16; % Number of points in constellation


h=modem.qammod(M); % Modulator object
mapping=h.SymbolMapping; % Symbol mapping vector
pt = h.Constellation; % Vector of all points in constellation

Bước 2. Vẽ sơ đồ chòm sao tín hiệu

Để thực hiện vẽ sơ đồ chòm sao tín hiệu, chúng ta sử dụng câu lệnh
scatterplot đối với vec-tơ pt
4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THÔNG77

% Plot the constellation.


scatterplot(pt);

Bước 3. Bổ sung chú thích cho các điểm ánh xạ

Để chú thích hình vẽ biểu diễn mối quan hệ giữa mapping và pt, sử
dụng hàm text để thay thế một số hiển thị bên cạnh điểm chòm
sao thành tổ hợp các bit nhị phân. Tọa độ của điểm đặt chú thích
được lựa chọn gần với các giá trị của phần thực và phần ảo của
điểm tín hiệu, nhưng được đặt lệch một chút để tránh chồng lấn
lên điểm tín hiệu. Để có được tổ hợp bit nhị phân tương ứng với
điểm ánh xạ, sử dụng hàm dec2bin để tạo ra một xâu các ký tự số
phục vụ cho câu lệnh text. Kết quả thu được sơ đồ chòm sao tín
hiệu như ở Hình 4.5.

% Include text annotations that number the points.


text(real(pt)+0.1,imag(pt),dec2bin(mapping));
axis([-4 4 -4 4]); % Change axis so all labels fit in plot.

Bước 4. Chuyển đổi từ ánh xạ tự nhiên sang ánh xạ Gray

Quan sát Hình 4.5 chúng ta có thể thấy hai điểm tín hiệu kế nhau
0001 và 0010 khác nhau hai bit. Điều này cho thấy đối tượng
MODEM tạo ra modem.qammod không sử dụng phương pháp ánh
xạ (mã hóa) Gray. Trong thực tế, các hệ thống truyền thông đều
sử dụng ánh xạ Gray sao cho các điểm tín hiệu kề nhau chỉ khác
biệt một bit. Ánh xạ Gray cho phép nâng cao chất lượng truyền
dẫn tín hiệu. Ví dụ, trên kênh pha-đinh Rayleigh, ánh xạ Gray cho
phép thu được BER tốt hơn so với ánh xạ tự nhiên khoảng 0,5dB.
Để nhận được ánh xạ Gray, cần đưa vào tùy chọn ’Gray’ khi định
nghĩa đối tượng modem.qammod như sau:

%% Modified Plot, With Gray Coding


M = 16; % Number of points in constellation
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
78

Scatter plot
4

3 0000 0100 1000 1100

1 0001 0101 1001 1101


Quadrature

−1 0010 0110 1010 1110

−2

−3 0011 0111 1011 1111

−4
−4 −2 0 2 4
In−Phase

Hình 4.5: Sơ đồ chòm sao tín hiệu phát sử dụng ánh xạ tự nhiên.

h = modem.qammod(’M’,M,’SymbolOrder’,’Gray’); % Modulator object


mapping = h.SymbolMapping; % Symbol mapping vector
pt = h.Constellation; % Vector of all points in constellation

scatterplot(pt); % Plot the constellation.

% Include text annotations that number the points.


text(real(pt)+0.1,imag(pt),dec2bin(mapping));
axis([-4 4 -4 4]); % Change axis so all labels fit in plot.
Kết quả chúng ta thu được chòm sao tín hiệu biểu diễn ánh xạ
Gray như ở Hình 4.6. Có thể nhận thấy từ hình vẽ rõ ràng là các
điểm tín hiệu kề nhau chỉ khác nhau một bit.

Ví dụ 3. Sử dụng bộ lọc Cosine nâng

Trong ví dụ sau đây sẽ biểu diễn phương pháp sử dụng bộ lọc căn
bậc hai cosine nâng ở phía phát và phía thu nhằm tạo dạng tín
4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THÔNG79

Scatter plot
4

3 0000 0100 1100 1000

1 0001 0101 1101 1001


Quadrature

−1 0011 0111 1111 1011

−2

−3 0010 0110 1110 1010

−4
−4 −2 0 2 4
In−Phase

Hình 4.6: Sơ đồ chòm sao tín hiệu phát sử dụng ánh xạ Gray.

hiệu để khống chế phổ của tín hiệu.


Để thực hiện chức năng này, Communications Toolbox có hai
hàm rcosine để thiết kế bộ lọc căn bậc hai cosine nâng và rcosflt
để lọc phối hợp tín hiệu thu. Người dùng cũng có thể sử dụng hàm
rcosflt để thực hiện cả hai chức năng. Người dùng có thể xem
thêm hướng dẫn nhờ câu lệnh rcosdemo.
Để thực hiện điều chế 16-QAM có sử dụng ánh xạ Gray, cần
định nghĩa modem điều chế và giải điều chế với các tham số như
sau:

hMod = modem.qammod(M);
hMod.imputType = ‘Bit’;
hMod.symbolOrder = ‘Gray’;
hDemod = modem.qamdemod(hMod)

Dựa trên các định nghĩa cho hai MODEM điều chế hMod và giải
điều chế hDemod này có thể thực hiện điều chế sử dụng câu lệnh
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
80

sau: y = modulate (hMod, x) cho điều chế và z = demodulate


(hDemod, yRx) cho giải điều chế. Các bước thực hiện được tiến
hành như sau

Bước 1. Định nghĩa tham số

So với ví dụ 1 thay định nghĩa tỉ lệ lấy mẫu quá hạn (oversampling


rate), nsamp thành 4 như sau

nsamp = 4; % Oversampling rate

Đồng thời, định nghĩa các tham số chính của bộ lọc bằng cách
bổ sung thêm các câu lệnh sau vào sau phần điều chế và tạo tín
hiệu phát.

%% Filter Definition
% Define filter-related parameters.
filtorder = 40; % Filter order
delay = filtorder/(nsamp*2); % Group delay (# of input samples)
rolloff = 0.25; % Rolloff factor of filter

Có thể thấy bộ lọc sử dụng có bậc bằng 40, trễ nhóm bằng 5
và hệ số uốn lọc bằng 0,25.

Bước 2. Tạo bộ lọc cosine nâng căn bậc hai

Để thiết kế bộ lọc cosine sử dụng hàm rcosine với các tham số đã


định nghĩa và để vẽ đáp ứng xung của nó, sử dụng câu lệnh vẽ đáp
ứng xung impz

% Create a square root raised cosine filter.


rrcfilter = rcosine(1,nsamp,’fir/sqrt’,rolloff,delay);
% Plot impulse response.
figure;
impz(rrcfilter,1);

Kết quả được minh họa ở Hình 4.7.


4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THÔNG81

Impulse Response
0.6

0.5

0.4
Amplitude

0.3

0.2

0.1

−0.1
0 5 10 15 20 25 30 35 40
n (samples)

Hình 4.7: Đáp ứng xung của bộ lọc Cosine nâng.

Bước 3. Tạo dạng tín hiệu điều chế

Để lọc tín hiệu điều chế, sử dụng bộ lọc cosine nâng nhờ hàm
rcosflt và để xem sơ đồ mẫu mắt tín hiệu sử dụng hàm eyediagram
như ở các câu lệnh sau

%% Transmitted Signal
% Upsample and apply square root raised cosine filter.
ytx = rcosflt(y,1,nsamp,’filter’,rrcfilter);

% Create eye diagram for part of filtered signal.


eyediagram(ytx(1:2000),nsamp*2);

Câu lệnh rcosflt tự động lấy mẫu lên (upsample) đối với tín
hiệu điều chế y với hệ số nsamp và chèn thêm 0 vào tín hiệu đã lấy
mẫu lên để làm sạch bộ lọc ở phần cuối trước khi thực hiện lọc. Sử
dụng câu lệnh eyediagram cho phép tạo ra một sơ đồ mẫu mắt của
một phần (2000 mẫu) của tín hiệu không có tạp âm đã được lọc.
Hình 4.8 biểu diễn sơ đồ mẫu mắt của tín hiệu cho hai thành phần
đồng pha (In-phase) và vuông pha (Quadrature). Có thể nhận thấy
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
82

tín hiệu chịu ảnh hưởng lớn của nhiễu liên ký tự (ISI) do bộ lọc chỉ
là căn bậc hai cosine nâng, không phải là bộ lọc cosine nâng đầy
đủ.

Eye Diagram for In−Phase Signal


3

1
Amplitude

−1

−2

−3
−0.5 0 0.5
Time

Eye Diagram for Quadrature Signal


3

1
Amplitude

−1

−2

−3
−0.5 0 0.5
Time

Hình 4.8: Sơ đồ mẫu mắt của tín hiệu.

Bước 4. Lọc tín hiệu thu

Để lọc tín hiệu thu, chúng ta cũng sử dụng một bộ lọc căn bậc hai
cosine nâng giống bên phát, sau đó lấy mẫu xuống (downsample)
kết quả với hệ số nsamp. Câu lệnh mẫu thực hiện như sau:

%% Received Signal
% Filter received signal using square root raised cosine filter.
yrx = rcosflt(ynoisy,1,nsamp,’Fs/filter’,rrcfilter);
4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THÔNG83

yrx = downsample(yrx,nsamp); % Downsample.


yrx = yrx(2*delay+1:end-2*delay); % Account for delay.

Câu lệnh cuối cùng loại bỏ 2*delay ký hiệu đầu tiên và 2*delay
ký hiệu cuối cùng ở trong tín hiệu đã lấy mẫu xuống do chúng đại
diện cho thành phần trễ tích lũy của hai thao tác lọc. Nhờ vậy, tín
hiện đầu vào bộ giải điều chế yrx và tín hiệu đầu ra bộ điều chế y
có cùng kích thước để tính tỉ lệ lỗi sau này.

Bước 5. Điều chỉnh đồ thị tán xạ

Để thấy được hiệu quả của bộ lọc thu, có thể điều chỉnh để vẽ hai
đồ thị tán xạ trên cùng một hình vẽ. Để làm được điều này, thực
hiện các câu lệnh sau.

Received Signal, Before and After Filtering


5
Before Filtering
4 After Filtering

1
Quadrature

−1

−2

−3

−4

−5
−5 0 5
In−Phase

Hình 4.9: Đồ thị tán xạ tín hiệu trước (·) và sau khi lọc (×).

%% Scatter Plot
% Create scatter plot of received signal before and
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
84

% after filtering.
h = scatterplot(sqrt(nsamp)*ynoisy(1:nsamp*5e3),nsamp,0,’g.’);
hold on;
scatterplot(yrx(1:5e3),1,0,’kx’,h);
title(’Received Signal, Before and After Filtering’);
legend(’Before Filtering’,’After Filtering’);
axis([-5 5 -5 5]); % Set axis ranges.

Để ý rằng để bù lại công suất thay đổi do thao tác lọc, câu lệnh vẽ
đồ thị tán xạ đầu tiên đã điều chỉnh ynoisy bởi một hệ số tương
ứng với hệ số lấy mẫu quá hạn sqrt(nsamp). Kết quả được minh
họa ở Hình 4.9. Có thể thấy rõ hiệu quả lọc cho phép giảm tán xạ
của tín hiệu rất nhiều.

Ví dụ 4. Sử dụng mã chập để mã hóa và giải mã

Ví dụ này sẽ mô tả phương pháp sử dụng mã chập (connvolutional


code) để thực hiện mã hóa và giải mã khi biết độ dài ràng buộc
(constraint length) và đa thức sinh. Communications Toolbox hỗ
trợ mã chập bằng hai hàm convenc để mã hóa và vitdec để giải mã
bằng thuật toán Viterbi. Để định nghĩa lưới mã Communications
Toolbox sử dụng hàm poly2trellis.

Bước 1. Tăng số ký hiệu phát

Do mã chập cải thiện phẩm chất BER, nên tỉ lệ lỗi sẽ nhỏ. Vì vậy,
để thu được tỉ lệ lỗi tin cậy cần phải tăng số ký hiệu phát. Trong
phần Setup, thay định nghĩa số bit bằng câu lệnh sau:

n = 5e5; % Number of bits to process

Bước 2. Mã hóa dữ liệu nhị phân

Để mã hóa dữ liệu nhị phân trước khi ánh xạ thành các số nguyên
phục vụ cho điều chế, bổ sung thêm các câu lệnh sau vào sau phần
4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THÔNG85

Signal Source và trước phần Bit-to-Symbol Mapping của ví dụ


trước.

%% Encoder
% Define a convolutional coding trellis and use it
% to encode the binary data.
t = poly2trellis([5 4],[23 35 0; 0 5 13]); % Trellis
code = convenc(x,t); % Encode.
coderate = 2/3;

Câu lệnh poly2trellis định nghĩa lưới mã (trellis) biểu diễn mã


chập hàm convenc sử dụng để mã hóa véc-tơ dữ liệu nhị phân x.
Câu lệnh poly2trellis sử dụng hai đối số là độ dài ràng buộc
(constraint length) và đa thức sinh (generator polynomials). Sơ đồ
trên Hình 4.10 biểu diễn một bộ mã hóa chập có tỉ lệ mã 2/3.

Đầu ra 1
+

Đầu vào 1
1 0 0 1 1
z-1 z-1 z-1 z-1
1 1 1 0 1

+
Đầu ra 2
Đầu vào 2 0 1 0 1
z-1 z-1 z-1
1 0 1 1

Đầu ra 3
+

Hình 4.10: Sơ đồ bộ mã hóa tỉ lệ 2/3.

Độ dài ràng buộc (constraint length) là một véc-tơ có chiều dài


bằng 2 do bộ mã hóa có hai đầu vào. Các phần tử của véc-tơ này
cho biết số bit được lưu lại trong mỗi thanh ghi dịch, bao gồm cả
các bit đầu vào hiện thời. Từ hình vẽ có thể đếm được số ô nhớ ở
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
86

trong mỗi thanh ghi dịch cộng với một bit hiện thời nên chiều dài
ràng buộc là [5 4].
Để xác định tham số bộ tạo mã theo ma trận 2 hàng 3 cột chứa
các số cơ số 8 (bát phân), sử dụng phần tử ở hàng thứ i và cột thứ
j để chỉ thị ảnh hưởng của đầu vào thứ i tới đầu ra thứ j. Ví dụ,
để tính phần tử ở hàng thứ hai và cột thứ 3, phần tử ngoài cùng
bên trái và hai phần tử ngoài cùng bên phải ở thanh ghi dịch thứ
2 được đưa đến bộ cộng, tạo nên đầu ra thứ 3. Thông tin này được
được biểu diễn ở dạng số nhị phân là 1011, tương đương với số 13
bát phân. Như vậy, ma trận tạo mã được biểu diễn đầy đủ như sau
[23 35 0; 0 5 13].

Bước 3. Thực hiện ánh xạ Bit-to-Symbol cho tín hiệu đã mã


hóa

Ở bước này, chúng ta thực hiện chuyển các bit đã được mã hóa
thành các ký hiệu. Thao tác này được thực hiện bằng cách thay
xsym ở ví dụ trước bằng câu lệnh sau:

% B. Do ordinary binary-to-decimal mapping.


xsym = bi2de(reshape(code,k,length(code)/k).’,’left-msb’);

Tham số k bằng 4 chính là số bit trong 1 ký hiệu điều chế


16-QAM.

Bước 4. Tính toán lại tỉ số SNR có tính đến tỉ lệ mã hóa

Do tín hiệu đã được mã hóa nên tỉ số SNR sẽ phụ thuộc vào tỉ lệ


mã hóa. Trong ví dụ trước một ký hiệu có chứa k bit dữ liệu. Tuy
nhiên, bây giờ mỗi ký hiệu sẽ tương ứng với k*coderate bit thông
tin. Cụ thể hơn, ba ký hiệu 16-QAM chứa 12 bit mã. Do sử dụng
mã hóa với tỉ lệ coderate=2/3 nên trong một 16-QAM ký hiệu chỉ
chứa 12*2/3 bit thông tin. Tức là, tỉ số bit thông tin với ký hiệu
là 8/3 = 4*(2/3) = k*coderate. Vì vậy, cần thay đổi định nghĩa
về tỉ lệ SNR như sau:
4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THÔNG87

snr = EbNo + 10*log10(k*coderate)-10*log10(nsamp);

Bước 5. Giải mã chập

Để thực hiện giải mã chập trước khi tính tỉ lệ lỗi BER, bổ sung
thêm các câu lệnh sau phần Symbol-to-Bit Mapping và trước BER
Computation.

%% Decoder
% Decode the convolutional code.
tb = 16; % Traceback length for decoding
z = vitdec(z,t,tb,’cont’,’hard’); % Decode.

Hai tùy chọn của hàm giải mã Viterbi vitdec là ’hard’ để thực
hiện quyết định cứng và ’cont’ để yêu cầu bộ giải mã sử dụng chế
độ liên tục để bù cho trễ giải mã như mô tả ở bước sau.

Bước 6. Bù trễ khi tính BER

Ở chế độ giải mã liên tục, bộ giải mã Viterbi gây nên một lượng
trễ với độ lớn tính theo đơn vị bit bằng độ dài traceback, tb, nhân
với số luồng đầu vào bộ mã hóa. Với mã có tốc độ 2/3, bộ mã hóa
có hai đầu vào nên độ trễ tính được là 2*tb bit.
Vì vậy, 2*tb bit đầu tiên trong véc-tơ giải mã, z, đều bằng 0.
Khi tính tỉ lệ lỗi BER cần phải loại bỏ 2*tb bit đầu tiên ở z và
2*tb bit cuối cùng ở véc-tơ gốc, x. Nếu không thực hiện bù trễ, tỉ
lệ BER tính được sẽ không có ý nghĩa vì hai vec-tơ không tương
ứng với nhau. Vì vậy, thay phần BER Computation bằng các câu
lệnh sau đây:

%% BER Computation
% Compare x and z to obtain the number of errors and
% the bit error rate. Take the decoding delay into account.
decdelay = 2*tb; % Decoder delay, in bits
[number_of_errors,bit_error_rate] = ...
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
88

biterr(x(1:end-decdelay),z(decdelay+1:end))

4.4 Mô phỏng một hệ thống truyền thông


Trong trường hợp muốn mô phỏng một hệ thống truyền thông cần
phải sử dụng một hoặc một vài giải pháp sau đây:

• Tạo vòng lặp theo một tập các giá trị của một tham số xác
định như Eb/No, kích thước tập tín hiệu (alphabet size) hoặc
tốc độ lấy mẫu quá hạn để quan sát ảnh hưởng của các tham
số trong hệ thống.

• Xử lý dữ liệu ở các tập nhỏ hơn thay cho một tập lớn hơn
nhằm đáp ứng yêu cầu về bộ nhớ.

• Xác định lượng dữ liệu cần xử lý để có được kết quả tin cậy
thay cho việc phỏng đoán ban đầu.

Các phương pháp trình bày dưới đây cung cấp các ví dụ để
cho phép người dùng có thể thực hiện mô phỏng của một hệ thống
truyền thông mong muốn.

Sử dụng công cụ BERTool để chạy mô phỏng


BERTool là công cụ có sẵn trong Matlab ở dạng giao diện GUI. Sử
dụng công cụ BERTool cho phép có thể thực hiện một loạt các bài
toán mô phỏng như trình bày ở các ví dụ sau đây.

Ví dụ 1. Vẽ tỉ lệ BER theo Eb/No

Trong ví dụ này, chúng ta sử dụng ví dụ điều chế tín hiệu ngẫu nhiên
ở phần trước để tính BER cho các giá trị Eb/No trong khoảng từ
0 đến 7 dB. Vẽ BER theo Eb/No sử dụng thang lô-ga-rít cho trục
tung.
4.4. MÔ PHỎNG MỘT HỆ THỐNG TRUYỀN THÔNG 89

Trong trường hợp này, BERTool cho phép thực hiện một loạt
các mô phỏng với các giá trị Eb/No khác nhau, thu thập kết quả
và vẽ đồ thị. Người dùng cần tự xây dựng phần lõi của mô phỏng.
Trong phần này, chúng ta sẽ tận dụng ví dụ về điều chế tín hiệu
ngẫu nhiên và sửa đổi làm lõi cho chương trình như một ví dụ về
chương trình lõi. Để mở ví dụ điều chế ngẫu nhiên và template của
BERTool sử dụng các câu lệnh sau đây:

edit commdoc_gray
edit bertooltemplate

Các bước tiến hành cụ thể như sau

Bước 1. Lưu template vào thư mục người dùng mong muốn

Tại cửa sổ edit của bertooltemplate, di chuyển đến thư mục mong
muốn và save bertooltemplate thành tệp có tên my_commdoc_bertool.
Thay dòng đầu của my_commdoc_bertool để định nghĩa lại hàm

[ber, numBits] = my_commdoc_bertool (EbNo, maxNumErrs, maxNumBits)

Bước 2. Copy các mã thiết lập vào template

Trong ví dụ này thay đoạn mã

% --- Set up parameters. ---


% --- INSERT YOUR CODE HERE.

bằng đoạn mã sau copy từ ví dụ comdoc_gray.m

% Setup
% Define parameters.
M = 16; % Size of signal constellation
k = log2(M); % Number of bits per symbol
n = 1000; % Number of bits to process
nsamp = 1; % Oversampling rate
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
90

Để giảm thời gian mô phỏng, n đã được giảm xuống còn 1000.


Tại vùng Eb/No nhỏ, không cần xử lý nhiều ký hiệu để có được
BER chính xác. Tại vùng Eb/No lớn, cấu trúc vòng lặp (loop) ở tệp
template kích hoạt mô phỏng chạy cho đến khi tính được ít nhất
100 sự kiện lỗi.

Bước 3. Sao chép mã mô phỏng vào template

Ở trong my_commdoc_bertool thay đoạn mã

% --- Proceed with simulation.


% --- Be sure to update totErr and numBits.
% --- INSERT YOUR CODE HERE.

bằng phần còn lại (đoạn mã sau phần Setup) của toàn bộ mã ở
ví dụ comdoc_gray.m. Ngoài ra bổ sung dấu ";" ở cuối dòng lệnh
cuối cùng (biterr) để ngăn hiển thị kết quả trong quá trình mô
phỏng.

Bước 4. Cập nhật số numBit và bitErr

Bổ sung đoạn mã sau đây vào sau đoạn mã đã được dán trước đó
và ngay trước câu lệnh end ở template

%% Update totErr and numBits.


totErr = totErr + number_of_errors;
numBits = numBits + n;

Hai câu lệnh này cho phép hàm bám theo số bit đã xử lý và số lỗi
phát hiện được.

Bước 5. Đóng các đồ thị trước đó

Chạy một tập hợp các vòng lặp sẽ tạo nên một số lượng lớn các đồ
thị. Ví dụ này biểu diễn thao tác cho phép tắt các đồ thị một cách
đơn giản. Ở tệp my_commdoc_bertool, loại bỏ các dòng lệnh sử
4.4. MÔ PHỎNG MỘT HỆ THỐNG TRUYỀN THÔNG 91

dụng các hàm như: stem, title, x label, y label, figure,


scatterplot, hold, legend, axis.

Bước 6. Bỏ qua câu lệnh gán giá trị cho EbNo

Khi BERTool kích hoạt function mô phỏng, nó sẽ xác định một giá
trị EbNo. Hàm my_commdoc_bertool không cho phép gán trực tiếp
EbNo. Vì vậy, cần loại bỏ hoặc ngăn thực hiện câu lệnh bằng câu
lệnh sau (trong phần Channel)

% EbNo = 10; % In dB % COMMENT OUT FOR BERTOOL

Bước 7. Lưu lại function mô phỏng

Đến đây kết thúc phần soạn thảo hàm mô phỏng my_commdoc_bertool,
cần lưu tệp lại để BERTool có thể sử dụng sau này.

Bước 8. Mở BERTool và nhập tham số

Để mở BERTool bằng câu lệnh

bertool

Ở trong cửa sổ câu lệnh của Matlab. Ấn chọn tab Monte-Carlo và


nhập các tham số như sau:
Các tham số này yêu cầu BERTool chạy hàm mô phỏng my_commdoc_bertool
cho từng giá trị của EbNo ở véc-tơ 2:10, tức là [2 3 4 .... 8 9
10]. Mỗi lần mô phỏng chạy, nó tiếp tục xử lý dữ liệu đã tách được
cho đến khi đếm được 100 lỗi hoặc đã xử lý 1e8 bit, tùy theo giá
trị nào đến trước.

Bước 9. Sử dụng BERTool để mô phỏng và vẽ đồ thị

Bấm vào nút Run ở BERTool. BERTool bắt đầu thực hiện một loạt
các mô phỏng và cuối cùng sẽ đưa ra kết quả ở dạng đồ thị như
dưới đây. Để kiểm tra kết quả mô phỏng với các giá trị lý thuyết,
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
92

Hình 4.11: Giao diện BERTool.

sử dụng lại BERTool. Lần này, sử dụng tab Theoretical để vẽ lại


các kết quả BER lý thuyết trong cùng một cửa sổ với kết quả mô
phỏng ở trên tuân theo các bước sau đây:

i) Ở giao diện BERTool, bấm vào tab Theoretical và nhập vào


các tham số như ở Hình 4.13. Các tham số yêu cầu BERTool
tính BER lý thuyết cho 16-QAM qua kênh AWGN cho các
giá trị EbNo ở véc-tơ 2:10.

ii) Bấm vào phím Plot. Đồ thị tạo ra một đường cong liền nét
cho các giá trị BER lý thuyết và vẽ các dấu * cho kết quả
mô phỏng trước đó (Hình 4.14). Có thể thấy các giá trị mô
phỏng gần sát với đường lý thuyết. Để ý là mã mô phỏng
trong trường hợp này có sử dụng ánh xạ Gray. Các kết quả lý
thuyết giả thiết sử dụng ánh xạ Gray lên chòm sao tín hiệu.
4.4. MÔ PHỎNG MỘT HỆ THỐNG TRUYỀN THÔNG 93

Hình 4.12: Kết quả mô phỏng.

Hình 4.13: Nhập các giá trị cho tính toán BER lý thuyết.

Để tiếp tục khai thác BERTool có thể đánh dấu vào ô Fit để hợp
một đường cong với các kết quả mô phỏng, hoặc đặt Confidence
Level bằng một giá trị tính toán số để bổ sung thêm các khoảng
tin cậy (confidence interval: là khoảng có xác suất cao) ở đồ thị.
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
94

Hình 4.14: So sánh kết quả BER lý thuyết và mô phỏng.

Để ý ở đoạn vòng lặp với các chú thích sau đây:

% Simulate until number of errors exceeds maxNumErrs


% or number of bits processed exceeds maxNumBits.

Cấu trúc vòng lặp có ý nghĩa là thực hiện mô phỏng xử lý một số


dữ liệu, tích lũy các lỗi bit, và sau đó quyết định xem có tiếp tục
lặp lại quá trình xử lý với tập dữ liệu khác không. Ưu điểm của
giải pháp này là người dùng không cần ước lượng số lượng dữ liệu
cần xử lý trước để đạt được ước lượng BER tin cậy. Điều này có
ích khi chuỗi các mô phỏng trải ra trên một phạm vi Eb/No lớn do
mô phỏng ở các giá trị cao của Eb/No yêu cầu xử lý nhiều dữ liệu
hơn để đảm bảo cùng mức độ tin cậy của BER ước lượng được. Ưu
điểm khác của giải pháp này là có thể hạn chế được vấn đề bộ nhớ
do xử lý một tập dữ liệu quá lớn.
Tuy nhiên, có thể có phức tạp từ việc chia tập dữ liệu lớn thành
một chuỗi các tập dữ liệu nhỏ hơn khi xử lý theo vòng lặp có thể cần
4.4. MÔ PHỎNG MỘT HỆ THỐNG TRUYỀN THÔNG 95

phải thực hiện thao tác để đảm bảo tính liên tục của các tính toán
khi chuyển từ một vòng lặp sang vòng lặp khác. Ví dụ, tính liên tục
rất quan trọng khi mô phỏng có chứa giải mã chập, ghép xen/giải
ghép xen chập, điều chế pha liên tục, kênh pha-đinh, và san bằng.
Có thể xem thêm về đảm bảo tính liên tục qua các ví dụ: vitdec,
viterbisim, muxdeintrlv, mskdemod. Trường hợp chia tập dữ liệu
thành một chuỗi các tập dữ liệu nhỏ quá, mô phỏng phải gọi một
số lượng lớn các hàm nên có thể làm cho mô phỏng chạy chậm. Có
thể sử dụng công cụ Profiler trong Matlab để làm cho chương
trình chạy nhanh hơn.

Ví dụ 2. Thay đổi các tham số và thiết lập một tập các mô


phỏng

Một nhiệm vụ thường gặp trong phân tích một hệ thống truyền
thông là thay đổi một tham số, ngoài Eb/No để tìm đáp ứng của
hệ thống. Ví dụ sau đây đề cập đến vấn đề này. Nhiệm vụ là thay
đổi ví dụ điều chế tín hiệu ngẫu nhiên để tính BER cho các bậc
điều chế (M): 4, 8, 16, 32 và các giá trị Eb/No nguyên từ 0 đến
7. Với mỗi giá trị của M, vẽ BER theo hàm của EbNo sử dụng thang
lô-ga-rít cho trục tung.
Ví dụ trước đã trình bày một mô hình tính BER cho các giá trị
nhất định của M và Eb/No và thu thập một số tỉ lệ BER. Để đơn
giản, giải pháp này sử dụng cùng số lượng các bit cho mỗi giá trị
của M và Eb/No.
Để xem mã gốc chương trình điều chế tín hiệu ngẫu nhiên, sử
dụng câu lệnh sau ở cửa sổ câu lệnh:

edit commdoc_mod

Bước 1. Định nghĩa tập giá trị tham số

Ở đầu chương trình, định nghĩa một số biến số liệt kê tất cả các
giá trị của M và EbNo yêu cầu. Đồng thời phân bổ trước không gian
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
96

cho các thống kê lỗi tương ứng với mỗi tổ hợp M và EbNo

%% Ranges of Variables
Mvec = [4 8 16 32]; % Values of M to consider
EbNovec = [0:7]; % Values of EbNo to consider

%% Preallocate space for results.


number_of_errors = zeros(length(Mvec),length(EbNovec));
bit_error_rate = zeros(length(Mvec),length(EbNovec));

Bước 2. Lập một cấu trúc vòng lặp

Sau khi Mvec và EbNovec được định nghĩa và đã xác lập không gian
các thống kê, có thể tích hợp tất cả các câu lệnh còn lại vào trong
một vòng lặp như sau:

%% Simulation loops
for idxM = 1:length(Mvec)
for idxEbNo = 1:length(EbNovec)

% OTHER COMMANDS

end % End of loop over EbNo values


end % End of loop over M values

Bước 3. Thay đổi tham số

Thay định nghĩa M và EbNo như sau:

M = Mvec(idxM); % Size of signal constellation


EbNo = EbNovec(idxEbNo); % In dB

Tương tự thay phần BER Computation bằng các câu lệnh sau:

%% BER Computation
4.4. MÔ PHỎNG MỘT HỆ THỐNG TRUYỀN THÔNG 97

% Compare x and z to obtain the number of errors and


% the bit error rate.
[number_of_errors(idxM,idxEbNo),bit_error_rate(idxM,idxEbNo)] = ...
biterr(x,z);

Bước 4. Xóa các đồ thị trước đó

Loại bỏ các dòng lệnh có sử dụng: stem, title, x label, y


label, figure, scatterplot, hold, legend, axis.

Bước 5. Tạo đồ thị BER

Để thực hiện tạo các đồ thị BER liên tiếp nhau sau mỗi vòng lặp,
sử dụng các câu lệnh sau ngay trước khi kết thúc vòng lặp cho M.

%% Plot a Curve.
markerchoice = ’.xo*’;
plotsym = [markerchoice(idxM) ’-’]; % Plotting style for this curve
semilogy(EbNovec,bit_error_rate(idxM,:),plotsym); % Plot one curve.
drawnow; % Update the plot instead of waiting until the end.
hold on; % Make sure next iteration does not remove this curve.

Bổ sung thêm các câu lệnh sau khi kết thúc cả hai vòng lặp

%% Complete the plot.


title(’Performance of M-QAM for Varying M’);
xlabel(’EbNo (dB)’); ylabel(’BER’);
legend(’M = 4’,’M = 8’,’M = 16’,’M = 32’,...
’Location’,’SouthWest’);

Bước 6. Chạy chương trình

Sau khi chạy chương trình cho kết quả như hình vẽ sau.
CHƯƠNG 4. MÔ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX
98

Hình 4.15: Phẩm chất BER theo các bậc điều chế khác nhau.

4.5 Một số bài tập


4.5.1 Bài tập 4.1
Sử dụng hướng dẫn (Help) của Matlab, vào mục Communications
Toolbox, sau đó vào tiếp User Guide, vào Modulation để xem
phương pháp mô phỏng cho các loại điều chế khác nhau.

4.5.2 Bài tập 4.2


Sử dụng hướng dẫn tương tự ví dụ trên vào Channels để xem
phương pháp mô phỏng cho các loại kênh truyền khác nhau.

4.5.3 Bài tập 4.3


Sử dụng hướng dẫn tương tự ví dụ trên vào Equalizers để xem
phương pháp mô phỏng sử dụng các bộ san bằng kênh truyền.

You might also like