Professional Documents
Culture Documents
Mo PHNG H THNG Truyn Thong PDF
Mo PHNG H THNG Truyn Thong PDF
BÀI GIẢNG
HÀ NỘI 07-2014
i
LỜI MỞ ĐẦU
Trong sự phát triển nhanh chóng các hệ thống viễn thông cùng với sự phát triển mạnh
mẽ của các hệ thống máy tính, ngày nay mô phỏng đã trở thành một công cụ không thể thiếu
trong quá trình nghiên cứu phát triển hệ thống cũng như trong quá trình thiết kế và triển khai
hệ thống. Do vậy cuốn bài giảng “Mô phỏng hệ thống truyền thông” được viết nhằm cung
cấp cho sinh viên những kiến thức bổ ích liên quan đến môn học. Tài liệu gồm 6 chương với
các nội dung cơ bản như sau:
Chương 1: Trình bày tổng quan về kỹ thuật mô phỏng bao gồm phương pháp luận,
các vấn đề về mô hình hóa và vai trò của mô phỏng trong thiết kế hệ thống.
Chương 2: Giới thiệu về MATLAB giúp sinh viên nắm được vấn đề cơ bản trong việc
sử dụng MATLAB làm công cụ tính toán trong kỹ thuật nói chung và trong mô phỏng
hệ thống truyền thông ở các chương sau.
Chương 3: Giới thiệu về Simulink, một công cụ trong MATLAB được sử dụng để mô
phỏng dựa trên mô hình hay sơ đồ khối, thuận tiện cho việc mô phỏng hệ thống.
Chương 4: Mô phỏng quá trình thu phát tín hiệu bao gồm các vấn đề cơ bản về tín
hiệu trong mô phỏng, mô phỏng các quá trình cơ bản thực hiện tại bộ phát và bộ thu
trong một hệ thống truyền thông.
Chương 5: Mô phỏng kênh thông tin bao gồm phương pháp thực hiện để mô phỏng
các kênh cơ bản nói chung đến các kênh thông tin cụ thể như kênh hữu tuyến và kênh
vô tuyến.
Chương 6: Ước tính tham số và hiệu năng hệ thống giúp sinh viên nắm được các vấn
đề cơ bản về ước tính trong thống kê, đặc biệt là trong đánh giá hiệu năng hệ thống.
Chúng tôi hy vọng rằng cuốn bài giảng sẽ là tài liệu tham khảo hữu ích cho sinh viên
chuyên ngành viễn thông và những người quan tâm. Tuy nhiên để giúp sinh viên nắm bắt
những vấn đề cơ bản nhất của kỹ thuật mô phỏng hệ thống truyền thông đòi hỏi người học
phải có những kiến thức tổng hợp của các môn học cơ sở khác mà không phải thuộc mục tiêu
và nội dung chính của môn học này. Đây cũng là phiên bản đầu tiên được viết trong thời gian
ngắn do vậy sẽ không tránh khỏi những sai sót. Chúng tôi rất mong nhận được ý kiến đóng
góp của các quí thầy cô, các bạn sinh viên và những người quan tâm để hoàn thiện hơn cuốn
tài liệu này.
Tác giả
TS. Nguyễn Đức Nhân
ii
MỤC LỤC
iii
2.2.6 Các hoạt động I/O 43
2.3 Thao tác ma trận và vectơ 44
2.4 Lập trình trong MATLAB 47
2.4.1 Các thủ tục MATLAB 47
2.4.2 Các hàm con MATLAB 49
2.4.3 Cấu trúc ngôn ngữ MATLAB 50
2.4.4 Hàm eval 54
2.4.5 Điều khiển hàm 55
2.5 MATLAB Editor và Debugger 56
2.5.1 Các chức năng Editor 56
2.5.2 Các chức năng Debugger 57
2.6 Một số phương pháp số sử dụng MATLAB 58
2.6.1 Phương pháp tìm nghiệm 58
2.6.2 Phương pháp tích phân 59
2.6.3 Phương pháp giải phương trình vi phân 61
2.7 Tổng kết chương 68
Câu hỏi/bài tập chương 2 69
Chương 3 Giới thiệu về Simulink 72
3.1 Giới thiệu chung 72
3.2 Nguyên lý hoạt động của Simulink 73
3.2.1 Xây dựng sơ đồ khối Simulink 73
3.2.2 Tham số hóa các khối Simulink 74
3.2.3 Mô phỏng bằng Simulink 76
3.3 Giải phương trình vi phân bằng Simulink 77
3.4 Đơn giản hóa hệ thống Simulink 81
3.5 Tương tác với MATLAB 83
3.5.1 Truyền các biến giữa Simulink và MATLAB 83
3.5.2 Lặp lại các mô phỏng Simulink trong MATLAB 83
3.5.3 Truyền các biến thông qua các biến toàn cục 85
3.6 Tổng kết chương 85
iv
Câu hỏi/bài tập chương 3 86
Chương 4 Mô phỏng tín hiệu và quá trình thu phát 87
4.1 Giới thiệu 87
4.1.1 Mô hình mô phỏng tín hiệu băng gốc và thông dải 88
4.1.2 Quá trình lấy mẫu và nội suy 91
4.1.3 Khai triển Fourier 96
4.2 Mô phỏng nguồn tín hiệu 98
4.2.1 Nguồn tín hiệu tương tự 98
4.2.2 Nguồn tín hiệu số 100
4.2.3 Nguồn tín hiệu ngẫu nhiên 101
4.3 Mã hóa 106
4.3.1 Mã hóa nguồn 106
4.3.2 Mã đường truyền 109
4.3.3 Mã hóa kênh 113
4.4 Điều chế và giải điều chế 116
4.4.1 Điều chế tín hiệu tương tự 116
4.4.2 Điều chế tín hiệu số 119
4.4.3 Quá trình thu và giải điều chế 122
4.5 Quá trình lọc 127
4.5.1 Lọc tạo dạng phổ 127
4.5.2 Lọc tạo dạng xung 129
4.5.3 Các bộ lọc phối hợp 132
4.6 Quá trình đồng bộ 136
4.6.1 Quá trình đồng bộ trong mô phỏng 136
4.6.2 Mô phỏng mạch vòng khóa pha (PLL) 140
4.7 Tổng kết chương 142
Chương 5 Mô phỏng kênh thông tin 145
5.1 Giới thiệu chung 145
5.2 Mô hình kênh AWGN 148
5.3 Các mô hình kênh thông tin cụ thể 152
v
5.3.1 Kênh hữu tuyến và ống dẫn sóng 152
5.3.2 Kênh vô tuyến 153
5.3.3 Kênh pha đinh đa đường 157
5.3.4 Kênh rời rạc 162
5.4 Tổng kết chương 168
Câu hỏi/bài tập chương 5 168
Chương 6 Ước tính các tham số và đánh giá hiệu năng 170
6.1 Ước tính các tham số 170
6.1.1 Ước tính mức sóng trung bình 170
6.1.2 Ước tính công suất trung bình 171
6.1.3 Ước tính phổ 172
6.2 Ước tính tỉ số SNR 174
6.3 Đánh giá hiệu năng hệ thống 176
6.3.1 Phương pháp Monte-Carlo 177
6.3.2 Phương pháp bán giải tích 182
6.3.3 Các phương pháp khác 183
6.3.4 Một số ví dụ mô phỏng hệ thống viễn thông 184
6.4 Tổng kết chương 187
Câu hỏi/bài tập chương 6 187
Tài liệu tham khảo 188
Phụ lục A 189
vi
DANH SÁCH THUẬT NGỮ VIẾT TẮT
vii
Multiplexing số trực giao
P
PCM Pulse Code Modulation Điều chế xung mã
PET Performance Evaluation Technique Kỹ thuật ước tính hiệu năng
PLL Phase Locked Loop Mạch vòng khóa pha
PM Phase Modulation Điều chế pha
PSD Power Spectral Density Mật độ phổ công suất
PSK Phase Shift Keying Khóa dịch pha
Q
QA Quasi-Analytical Bán giải tích
QAM Quadrature Amplitude Modulation Điều chế biên độ cầu phương
QPSK Quadrature Phase Shift Keying Khóa dịch pha cầu phương
R
RNG Random Number Generator Bộ tạo số ngẫu nhiên
RZ Return-to-Zero Trở về không
S
SER Symbol Error Rate Tốc độ lỗi ký hiệu
SNR Signal to Noise Ratio Tỉ số tín hiệu trên nhiễu
SSB Single Side Band Điều chế đơn biên
T
TDL Tributary Delay Line Đường trễ nhánh
V
VSB Vestigial Side Band Điều chế rớt biên
viii
Chương 1 Tổng quan về kỹ thuật mô phỏng
Mô phỏng ngày này có mặt trong nhiều lĩnh vực khoa học kỹ thuật đặc biệt
trong thiết kế hệ thống truyền thông. Nội dung chương này sẽ trình bày những vấn
đề tổng quan và cơ bản nhất trong kỹ thuật mô phỏng nói chung và trong mô phỏng
hệ thống truyền thông nói riêng.
1
thống và chúng rất hữu ích trong các giai đoạn đầu của quá trình thiết kế cho việc
khám phá không gian thiết kế mở rộng. Tuy nhiên ngoại trừ các trường hợp quá đơn
giản và lý tưởng hóa thì nó rất khó để đánh giá hiệu năng của các hệ thống truyền
thông phức tạp chỉ bằng các kỹ thuật giải tích với độ chính xác cần cho quá trình
thiết kế chi tiết hơn.
Đánh giá hiệu năng dựa trên các phép đo kiểm thu được từ các mẫu thiết kế
thử phần cứng tất nhiên là một phương pháp chính xác và đáng tin cậy, hữu ích
trong các giai đoạn sau của thiết kế khi các lựa chọn thiết kế được giới hạn trong
một tập nhỏ. Tiếp cận này nhìn chung là rất tốn kém và mất nhiều thời gian và
không linh hoạt. Nó rõ ràng là không khả thi để sử dụng tiếp cận này trong giai
đoạn đầu chu trình thiết kế khi số lượng các lựa chọn thiết kế lớn.
Băng tiếp cận dựa trên mô phỏng để đánh giá hiệu năng, các hệ thống có thể
được mô hình hóa gần như ở bất kỳ mức chi tiết mong muốn nào và không gian
thiết kế có thể được khai thác cụ thể và chi tiết hơn bằng các tiếp cận dựa trên công
thức hoặc đo kiểm. Dựa trên mô phỏng ta cũng có thể kết hợp các mô hình thực
nghiệm và toán học một cách dễ dàng và kết hợp các đặc tính đo được của các linh
kiện và các tín hiệu thực vào trong phân tích và thiết kế. Các dạng sóng được mô
phỏng cũng có thể được sử dụng như là tín hiệu đo thử cho việc kiểm tra chức năng
hoạt động của phần cứng.
Thực sự, một tiếp cận dựa trên mô phỏng có thể được sử dụng để tạo ra một
môi trường chế tạo mẫu thử nhanh chóng cho việc phân tích và thiết kế các hệ thống
xử lý tín hiệu và truyền thông, một môi trường trong đó các mô hình phần mềm có
thể được kết hợp với dữ liệu phần cứng và các tín hiệu thực để tạo ra các mẫu thiết
kế không lỗi tiết kiệm chi phí và thời gian.
Nhược điểm cơ bản của tiếp cận mô phỏng là tải tính toán lớn cái có thể
được giảm thiểu bằng sự lựa chọn cẩn thận các kỹ thuật mô hình hóa và mô phỏng.
2
- Ánh xạ một bài toán đã cho thành một mô hình mô phỏng, đâycũng là
bước quan trọng nhất của bài toán mô phỏng. Bước này có thể được xem
là bước mô hình hóa để chuyển một mô hình vật lý thực thành mô hình
toán học.
- Phân giải bài toán tổng thể thành một tập các bài toán nhỏ hơn. Việc phân
chia này cũng là cách để đơn giản hóa bài toán xây dựng đảm bảo tính
khả thi trong tính toán.
- Lựa chọn một tập các kỹ thuật phù hợp về mô hình hóa, mô phỏng và ước
tính và áp dụng chúng để giải các bài toán con đã được phân chia. Các kỹ
thuật giải được sử dụng để tính toán tìm nghiệm thông qua hệ thống máy
tính.
- Kết hợp các kết quả của các bài toán con để cung cấp nghiệm cho bài
toán tổng thể xác định ban đầu.
Một hệ thống truyền thông thực tế nhìn chung quá phức tạp để có thể mô tả
và mô phỏng nó một cách toàn bộ. Do vậy nó rất cần thiết để đơn giản hóa một số
mặt của bài toán mô phỏng giúp dễ dàng hơn cho việc tính toán. Ngoài việc phân
chia bài toán tổng thể thành các bài toán nhỏ hơn, thì việc chuyển từ bài toán lớn
hơn thành dạng đơn giản hơn được xem như là thực hiện thí nghiệm có điều kiện là
cũng cần thiết. Xét dạng sóng đầu ra Vt của một hệ thống tại thời điểm rời rạc t theo
dạng Vt = g(), trong đó g là hàm truyền của hệ thống và = (z1, z2, …, zK) là tập
các quá trình đầu vào (rời rạc thời gian). Chức năng của một mô phỏng nói chung là
để tạo ra một chuỗi giá trị {Vt} đối với t = kTs, k = 1, 2,…, với Ts là chu kỳ lấy
mẫu. Chuỗi này sẽ được xử lý theo kiểu để thu được đại lượng hiệu năng hoặc
thông tin phù hợp khác. Một thí nghiệm có điều kiện sẽ tạo ra Vt = g(’) trong đó
’ = (z1, …, zk, zk+1 = k+1, …, zK = K). Đó là k quá trình đầu tiên được mô phỏng
trong khi các quá trình còn lại được duy trì tại các giá trị cố định để tạo ra thí
nghiệm đơn giản hơn. Các giá trị này có thể được đặt bằng 0 tương đương với việc
bỏ qua các quá trình này. Một dạng điều kiện khác là đơn giản hóa bản thân hệ
thống. Sự đơn giản hóa này có thể bao gồm một sự mô tả một hoạt động với độ
phức tạp được rút gọn hoặc bỏ quả hoàn toàn một hoặc nhiều hoạt động. Kết hợp
đặt điều kiện lên hệ thống và lên các quá trình đầu vào, hệ thống được đơn giản hóa
bởi g’, thí nghiệm mô phỏng được mô tả bởi Vt = g’(’). Mục đích cuối cùng của
quá trình đơn giản hóa là đảm bảo khả năng tính toán trong quá trình mô phỏng.
3
Tuy nhiên quá trình này được thực hiện bằng các phép gần đúng cũng có nghĩa rằng
có sự sai lệch giữa mô hình và hệ thống thực tế.
Hình 1-1 (a) Thiết bị vật lý và các mô hình, (b) Các ảnh hưởng độ phức tạp của mô hình.
Có hai kiểu mô hình mà ta cần xem xét: mô hình giải tích và mô hình mô
phỏng và cả hai đều là sự trừu tượng của một linh kiện hay hệ thống vật lý như cho
thấy trong hình 1-1a. Linh kiện vật lý có thể là một phần tử mạch như một điện trở
hoặc một phân hệ như một mạch vòng khóa pha, mà nó cũng có thể là một hệ thống
truyền thông. Bước đầu tiên và cũng là quan trọng nhất trong quá trình mô hình hóa
là nhận ra được các thuộc tính và các đặc tính hoạt động của thiết bị vật lý được mô
tả trong mô hình. Các mô hình giải tích điển hình thuộc các dạng phương trình hoặc
hệ phương trình xác định quan hệ đầu vào – đầu ra của thiết bị vật lý. Các phương
trình này chỉ là sự mô tả một phần của thiết bị được mô hình hóa vì chỉ một số mặt
xác định của thiết bị được mô hình hóa. Thêm nữa các phương trình định nghĩa thiết
bị thường chỉ chính xác trên một dải giới hạn các tham số (điện áp, dòng, tần số).
Mô hình mô phỏng luôn là một tập các giải thuật thực hiện tính toán nghiệm số của
các phương trình định nghĩa mô hình giải tích. Các kỹ thuật phân tích số và xử lý
tín hiệu số là những công cụ được sử dụng để phát triển các giải thuật này. Các mô
hình có các mức trừu tượng khác nhau và tăng lên khi dịch chuyển từ thiết bị vật lý
tới mô hình giải tích và cuối cùng là mô hình mô phỏng. Sự tăng mức trừu tượng là
kết quả của các giả định và các gần đúng được đưa ra khi đi từ thiết bị vật lý lên mô
hình giải tích và mô hình mô phỏng.
Một vấn đề cần lưu ý trong bài toán mô phỏng là sử ảnh hưởng của mức độ
phức tạp của mô hình. Các mô hình đơn giản cho phép thực hiện nhanh hơn các mô
hình phức tạp hơn. Tuy nhiên các mô hình đơn giản có thể không mô tả một cách
đày đủ các thuộc tính quan trọng của thiết bị do đó mô phỏng có thể thu được kết
quả có sai số lớn. Như vậy có sự bù trừ giữa độ chính xác của mô hình và thời gian
4
chạy mô phỏng như cho thấy trong hình 1-1b. Một mô phỏng trong thực tế được
thiết kế tốt đảm bảo vùng hoạt động tối ưu cung cấp độ chính xác và tốc độ thực
hiện hợp lý. Tuy nhiên tùy thuộc vào mục đích mô phỏng mà trong một số trường
hợp đòi hỏi mức độ chính xác cao, nói cách khác mức độ phức tạp mô hình phải đủ
để đáp ứng yêu cầu, do vậy thời gian chay mô phỏng lâu là khó tránh khỏi.
Hình 1-2 Các lĩnh vực ảnh hưởng lên nghiên cứu mô phỏng các hệ thống truyền thông
Các khái niệm về lý thuyết hệ thống tuyến tính cho ta các kỹ thuật để xác
định các quan hệ vào/ ra của hệ thống tuyến tính, cho phép trình bày mô hình hệ
5
thống trong miền thời gian ở dạng hàm đáp ứng xung kim hệ thống và miền tần số ở
dạng hàm truyền đạt hệ thống cũng như việc xây dựng nền tảng cho nhiều vấn đề.
Hiển nhiên, kiến thức lý thuyết truyền thông là rất quan trọng. Cấu trúc hệ
thống, đặc tính hoạt động của các phân hệ (bộ giải điều chế, bộ cân bằng, chi tiết
hóa các mô hình kênh…) phải được hiểu rõ trước khi triển khai mô phỏng. Khi sử
dụng mô phỏng để xác định các giá trị của tham số hệ thống, cần phải lưu ý đến dải
giá trị của nó có ý nghĩa thực tế trước khi triển khai mô phỏng. Cần phải có những
hiểu biết sâu sắc về đặc tính hệ thống để đảm bảo hoạt động mô phỏng chính xác và
kết quả hợp lý.
Các công cụ của xử lý tín hiệu số (DSP) được dùng để triển khai các giải
thuật, từ đó xây dựng mô hình mô phỏng hệ thống truyền thông. Mô hình mô phỏng
này thường bao gồm một số phép lấy xấp xỉ rời rạc của các phần tử hệ thống liên
tục, do vậy cần có kiến thức về xử lý tín hiệu số để hiểu và đánh giá bản chất của
các phép lấy xấp xỉ này. Thực tế, mỗi khối chức năng trong mô hình mô phỏng là
một hoạt động DSP, vì vậy các công cụ của DSP cho ta các kỹ thuật thực hiện mô
phỏng.
Giải tích số có quan hệ chặt chẽ với DSP, nhưng được đề cập tách biệt vì nó
là phần kiến thức cũ hơn. Nhiều kỹ thuật kinh điển như phân tích số, nội suy đa
thức, kỹ thuật fit đồ thị đều có nguồn gốc trong giải tích số.
Các khái niệm về xác suất cũng là nền tảng căn bản cho mô phỏng. Việc
đánh giá hiệu năng hệ thống truyền thông thường được biểu diễn trong các thuật
ngữ xác suất. Ví dụ khi đề cập xác suất lỗi bit hay xác suất lỗi ký hiệu trong hệ
thống truyền thông số; khi xét bài toán đồng bộ, ta quan tâm xác suất lỗi pha vượt
quá một mức cho trước. Lý thuyết xác suất cơ bản cho ta khái niệm về biến ngẫu
nhiên và hàm mật độ xác suất. Kiến thức về hàm mật độ xác suất cho phép tính toán
các đại lượng như đã đề cập phần trên. Kết quả của mô phỏng thường là một biến
ngẫu nhiên và phương sai của biến ngẫu nhiên đó là một đại lượng đo độ chính xác
thống kê của mô phỏng.
Trong nhiều trường hợp, các dạng sóng tín hiệu và tạp âm được xử lý bởi mô
phỏng được coi là các hàm mẫu của một quá trình ngẫu nhiên. Sự phát triển các
thuật toán để tạo dạng sóng có các thuộc tính thống kê phù hợp sẽ đòi hỏi kiến thức
quá trình ngẫu nhiên cơ bản. Lý thuyết quá trình ngẫu nhiên cho ta các công cụ để
mô tả các quá trình này trong miền thời gian (hàm tự tương quan), và trong miền tần
6
số (mật đổ phổ công suất). Nhiều ứng dụng khác của lý thuyết quá trình ngẫu nhiên
cũng sẽ được đề cập trong nội dung bài giảng.
Một vài khái niệm cơ bản về lý thuyết số cung cấp các công cụ để triển khai
các bộ tạo số ngẫu nhiên. Các bộ tạo số ngẫu nhiên này là các khối cơ bản của bộ
tạo dạng sóng để biểu diễn các chuỗi số, dạng sóng tạp âm, pha đinh tín hiệu, nhiễu
ngẫu nhiên.
Khái niệm cơ bản về khoa học máy tính cũng sẽ có ích trong mô phỏng. Ví
dụ như độ dài từ mã, định dạng từ mã được dùng để biểu diễn các mẫu tín hiệu sẽ
ảnh hưởng đến tính chính xác của mô phỏng. Việc chọn ngôn ngữ lập trình cũng
quan trọng khi triển khai các bộ mô phỏng thương mại. Bộ nhớ khả dụng, tổ chức
bộ nhớ sẽ ảnh hưởng cách thức dữ liệu và các lệnh được chuyển qua giữa các phần
tử của mô phỏng. Các yêu cầu và năng lực về đồ họa sẽ xác định dạng sóng được
hiển thị như thế nào và sẽ ảnh hưởng quá trình truyền tải mã chương trình mô
phỏng từ máy tính này đến máy tính khác.
Các công cụ và khái niệm về lý thuyết ước tính cho phép định lượng tính
hiệu quả của kết quả mô phỏng. Như đã đề cập, kết quả mô phỏng ngẫu nhiên là
một biến ngẫu nhiên. Mỗi khi thực hiện mô phỏng sẽ tạo ra một giá trị của biến
ngẫu nhiên đó và biến ngẫu nhiên này tạo thành bộ ước tính cho đại lượng cần được
ước tính. Một cách tổng quát, lý thuyết ước tính cho ta các công cụ giải tích cần
thiết để đánh giá mức độ khả tin của các kết quả mô phỏng.
7
Hình 1-3 Cấu trúc phân cấp trong mô phỏng
Một loạt các kỹ thuật mô phỏng khác nhau được sử dụng để đánh giá hiệu
năng của các lớp khác nhau. Tại mức mạng, luồng các gói và các bản tin trên mạng
được mô phỏng bằng việc sử dụng một bộ mô phỏng các sự kiện rời rạc và các đại
lượng hiệu năng như thông lượng mạng, thời gian đáp ứng và hiệu suất sử dụng tài
nguyên được ước tính như là một hàm của các tham số mạng như tốc độ xử lý, kích
cỡ bộ đệm tại nút mạng và dung lượng tuyến. Các mô phỏng mạng được sử dụng để
thiết lập các đặc tính cho các bộ xử lý, các giao thức và các tuyến truyền dẫn.
Các hệ thống truyền thông giải quyết việc truyền dẫn các dạng sóng mang
thông tin trên các kiểu kênh thông tin khác nhau (không gian tự do, cáp đồng, sợi
quang,,..). Đối với các hệ thống truyền dẫn số, hiệu năng của tuyến thông tin được
đo theo đặc tính lỗi bít, và hiệu năng tốc độ lỗi thường được ước tính bằng kỹ thuật
mô phỏng dạng sóng qua mô hình của các khối chức năng. Khác với mô phỏng
mạng được sử dụng để thiết lập các đặc tính của tuyến, thì mô phỏng mức hệ thống
được sử dụng để kiểm tra rằng thiết kế tuyến đáp ứng được các đặc tính này. Các
tham số thu được từ mô phỏng mức hệ thống được chuyển sang cho bộ mô phỏng
mức mạng để kiểm tra hiệu năng mạng.
Lớp dưới cùng trong hình 1-3 liên quan đến hoạt động của các thành phần
như các bộ lọc và các bộ cân bằng sử dụng hoặc công nghệ tương tự hoặc công
nghệ số. Các bộ mô phỏng mạch như Spice hoặc bộ mô phỏng số như HDL
(Hardware Description Language) được sử dụng để mô phỏng, kiểm tra chức năng
8
hoạt động và đặc tính của các thành phần linh kiện. Mô phỏng mức hệ thống thiết
lập các đặc tính cho việc thực thi hoàn tất và mô phỏng ở mức mạch thực thi được
sử dụng để cung cấp các mô hình đặc tính (ví dụ: hàm truyền đạt của một bộ lọc)
cho mức hệ thống.
Trong phạm vi giới hạn nội dung, bài giảng này sẽ tập trung vào mô phỏng
hệ thống truyền thông sử dụng kỹ thuật mô phỏng dạng sóng.
Nhìn chung về bản chất để mô hình càng chính xác thì mức độ mô tả nó càng
chi tiết. Sự mô tả hệ thống được phân chia theo mức độ chi tiết khác nhau. Cách mô
tả hệ thống một cách trực quan thường được thực hiện thông qua một sơ đồ khối.
Mỗi khối trong sơ đồ có thể được triển khai và được mô tả bởi một sơ đồ các khối
con khác kết nối với nhau trong bản thân khối đó. Quá trình này có thể tiếp tục được
thực hiện cho đến khi không thể rút gọn xuống thành các khối con được nữa. Kết
quả của việc khai triển sơ đồ khối có thể được biểu diễn trực quan qua sơ đồ dạng
cây với các nhánh liên tiếp đặc trưng cho các mức độ chi tiết tăng dần lên như cho
thấy trong hình 1-4. Cấu trúc này cũng cho thấy tính phân cấp trong việc thực thi
phần mềm và cho cả việc quản lý mức độ phức tạp của mô hình hóa. Cây phân cấp
tăng dần theo dạng lộn ngược với phía trên là các mô hình mức cao và đi dần xuống
là các mô hình mức thấp. Mức độ chi tiết sẽ tăng dần từ trên xuống dưới. Một mô
hình mức thấp được xem như là một phần được phân chia ra từ mô hình mức cao
hơn bao hàm một sự mô tả sát hơn với mức vật lý.
9
Hình 1-5 Mô tả mô hình hóa phân cấp hệ thống truyền thông.
Sự phân cấp có thể được minh chứng rõ như mô tả hệ thống truyền thông cho
trong hình 1-5. Nó cũng cho thấy rõ rằng mức độ phức tạp tồn tại cả hai chiều: theo
mức phân cấp (chiều dọc) và tại mỗi mức (chiều ngang). Mức trên cùng được xem
là mức hệ thống gồm các khối chức năng thực hiện một xử lý xác định trong hệ
thống. Mỗi khối chức năng ở mức hệ thống cũng có thể được mô tả chi tiết hơn ở
mức dưới gọi là mức phân hệ. Quá trình phân chia chi tiết có thể tiếp tục xuống
mức các thành phần linh kiện. Tương ứng với cấu trúc phân cấp này bài toán mô
hình hóa cũng được phân chia thành ba kiểu mô hình hóa đó là: mô hình hóa hệ
thống, mô hình hóa các thành phần linh kiện và mô hình hóa quá trình.
10
dụng một tập con các khối tại mức đó. Đây là dạng rút gọn mức độ phức tạp thường
được sử dụng ở mức mô hình hóa hệ thống, điều này muốn nói rằng một số các
phân hệ có thể được bỏ qua khỏi mô phỏng hoặc được mô tả theo kiểu đơn giản
hóa. Ví dụ trong một số trường hợp mô phỏng hệ thống như mô tả trong hình 1-5
các khối mã hóa nguồn thực hiện chuyển đổi tín hiệu tương tự sang số (ADC) có thể
được bỏ qua mà sử dụng luôn nguồn tín hiệu số đầu vào.
Như vậy nói chung điều đáng mong muốn là mô phỏng sơ đồ khối được rút
gọn nhiều nhất có thể từ quan điểm tính toán hiệu quả và việc rút gọn như vậy có
thể hoàn toàn chấp nhận được trong nhiều trường hợp. Nói cách khác mức độ gần
đúng trong một số trường hợp mô phỏng là không thể tránh khỏi.
12
hưởng của bất kỳ thành phần thiết bị nào có thể được dự đoán chỉ bằng một số tham
số quan trọng được lựa chọn tốt. Mặc dù đặc tính của một linh kiện thành phần có
thể biến đổi bất kỳ trong cấu trúc chi tiết của nó thậm chí sau khi các tham số đã nói
trước được thiết lập, thì những biến đổi này cần gây ra sự thay đổi tương đối nhỏ về
hiệu năng vì các tham số chính đã được lựa chọn để cố định các đặc tính cần thiết
của linh kiện. Do đó nếu các tham số này được lựa chọn như là các yếu tố điều
khiển cho thiết kế phần cứng và nhắm chúng thành các thông số kỹ thuật thì một hệ
thống giả định có thể được tổng hợp để gắn với các thông số này, và hiệu năng của
một hệ thống được hiện thực hóa được gần đúng hoặc được giới hạn tốt bởi hiệu
năng của mô hình phần mềm của hệ thống giả định.
13
thức giải tích với mô phỏng không nhiễu để thu được các ước tính BER rất hiệu quả
nhanh hơn nhiều phương pháp MC. Sự kết hợp giữa kiến thức giải tich và kỹ thuật
mô phỏng được gọi là kỹ thuật bán giải tích (QA). Ngoài kỹ thuật QA, một số kỹ
thuật ước tính khác cũng được áp dụng để giảm thời gian chạy mô phỏng như kỹ
thuật lấy mẫu quan trọng (IS) và kỹ thuật ngoại suy đuôi phân bố. Việc lựa chọn
PET phù hợp cũng sẽ phụ thuộc vào nhiều yếu tố liên quan đến tính chất hệ thống
được mô phỏng.
14
phỏng không chính xác hoàn toàn với đặc tính của hệ thống thực. Lí do sơ đồ khối
mô phỏng có thể không phải là bản sao chính xác hệ thống thực là để cắt giảm mức
độ phức tạp từ đó giảm thời gian chạy mô phỏng. Tuy nhiên sự rút gọn sơ đồ khối
cần lưu ý để không tác động nhiều đến tính chân thực của mô hình.
Một tình huống khác khi kết hợp cấu hình có thể không chính xác hoàn toàn
là sự loại bỏ khỏi sơ đồ khối mô phỏng các thành phần đóng góp nhỏ đến méo dạng.
Ví dụ như ta không mô hình hóa ăng-ten trong một mô phỏng vì một ăng-ten
thường có độ rộng băng tần tương đối rộng so với tín hiệu đi vào. Tương tự, trong
các ứng dụng thông tin vệ tinh bầu khí quyển thường bị bỏ qua như một phần tử
méo dạng vì đặc tính hàm truyền thường (nhưng không phải luôn) trong suốt với tín
hiệu. Do vậy điều quan trọng trong mô hình hóa hệ thống là cần xác định đúng các
thành phần quan trọng và loại bỏ những thành phần ảnh hưởng ít đến hiệu năng để
giảm mức độ phức tạp, tuy nhiên sẽ có sai số trong kết quả và cần đảm bảo mức sai
số là không đáng kể.
15
nhau. Đó chính là lí do tại sao sự thẩm định bản thân mô hình tại các mức mô hình
hóa khác nhau phải được thực hiện trong quá trình mô phỏng.
16
dụng đảm bảo sao chép sát nhất có thể với quá trình thực để sai số sinh ra là nhỏ
nhất để đảm bảo độ tin cậy.
1.5.4 Sai số xử lý
Các sai số xử lý là vì bản chất của mô phỏng và giới hạn bộ nhớ, tốc độ và
độ chính xác của máy tính.
Trước hết ta thấy việc sử dụng đặc trưng rời rạc về thời gian cho các dạng
sóng liên tục hoặc mô tả của các bộ lọc sẽ dẫn tới sai số chồng phổ. Tuy nhiên sai
số này có thể được tính và được giới hạn ở mức nhỏ theo mong muốn. Về cơ bản
trách nhiệm của người dùng mô phỏng là đảm bảo tốc độ lấy mẫu phù hợp để giảm
sai số gây ra đến mức nhỏ nhất.
Một vấn đề giới hạn nữa gây ra sai số có thể thấy khi mô phỏng quá trình lọc
sử dụng phương pháp bất biến xung kim do phải rút gọn đáp ứng xung của bộ lọc.
Điều này sẽ thấy rõ ràng đối với bộ lọc IIR. Có một sự bù trừ giữa độ lớn sai số, độ
dài đáp ứng xung được rút gọn và tải tính toán. Do đó cần lưu ý để sai số nằm ở
mức nhỏ chấp nhận được bằng việc tính toán phần năng lượng bị bỏ qua trong đáp
ứng xung chỉ nên nhỏ ở mức 1-2%.
Một số kiểu sai số xử lý khác cũng cần lưu ý trong mô phỏng như việc sử
dụng mô hình tương đương băng gốc cho các quá trình thông dải hay giới hạn tốc
độ của máy tính khi chạy mô phỏng Monte-Carlo không đảm bảo đủ lâu. Do vậy
ngoài mô hình hóa thì quá trình xử lý tính toán trong mô phỏng cũng cần xem xét
để tránh các lỗi nghiêm trọng có thể xảy ra trong kết quả đầu ra.
17
Hình 1-7 Phương pháp luận thiết kế hệ thống truyền thông và vai trò của mô phỏng.
Quá trình thiết kế một hệ thống truyền thông phức tạp được thực hiện từ
“trên xuống”, ngược lại thực thi phần cứng thường từ “dưới lên”. Theo đó, trong
thiết kế hệ thống ta bắt đầu tại mức hệ thống (mức trừu tượng cao nhất) và bắt đầu
triển khai chi tiết thiết kế từ mức hệ thống, xuống mức hệ thống con và cuối cùng là
mức thành phần linh kiện. Tại mức dưới cùng chi tiết của các bộ phận thiết bị được
nhận dạng. Trong khi xây dựng một hệ thống các thành phần linh kiện được chế tạo
trước, sau đó lắp ráp thành các hệ thống con và cuối cùng toàn bộ hệ thống được
xây dựng từ các hệ thống con. Triển khai mô phỏng đi theo cách tiếp cận từ trên
xuống với bắt đầu bằng việc mô phỏng mức hệ thống có mức trừu tượng cao tăng
dần mức độ chi tiết và các mô phỏng các hệ thống con và các thành phần.
Quá trình thiết kế hệ thống sẽ trải qua các giai đoạn khác nhau và ở mỗi giai
đoạn mô phỏng đều đóng một vai trò nhất định.
Quá trình thiết kế một hệ thống truyền thông bắt đầu bằng việc trình bày,
phân tích các yêu cầu người dùng và hiệu năng mong muốn gồm: thông lượng, tỷ số
lỗi, xác suất ngừng hoạt động, hạn chế băng thông, công suất, trọng lượng, phức
tạp/chi phí, kênh truyền trên đó hệ thống hoạt động, và tuổi thọ trung bình của hệ
thống. Trên cơ sở những yêu cầu của người dùng, “kỹ sư hệ thống” xuất phát từ
khái niệm ban đầu về hệ thống như: sơ đồ điều chế, kỹ thuật mã hóa, cân bằng nếu
cần. Tập giá trị tham số gọi là các chỉ tiêu kỹ thuật mức A như các mức công suất,
băng thông, chỉ số điều chế cũng được thiết lập trong giai đoạn khởi đầu của quá
18
trình thiết kế. Mục đích toàn diện tại điểm này là: (i) xác định cấu hình hệ thống; (ii)
các giá trị của tham số cần để đáp ứng các mục tiêu hiệu năng và thỏa mãn những
ràng buộc thiết kế. Hiệu năng hệ thống là một hàm của SNR (tương đương Eb/No)
và méo tổng gây ra bởi tất cả các thành phần trong tuyến truyền thông. SNR được
thiết lập thông qua một quá trình gọi là dự trữ tuyến là phần tính toán công suất xem
xét các yếu tố như: công suất phát, hệ số khuyếch đại ăng ten, suy hao đường
truyền, khuyếch đại công suất, hệ số nhiễu của bộ khuyếch đại và bộ lọc. Trong khi
dự trữ tuyến không phải là đại lượng quan tâm chính trong mô phỏng, nhưng nó
thiết lập một dải các giá trị SNR hoặc Eb/No trên đó mô phỏng được thực hiện để
ước tính hiệu năng.
Người thiết kế hệ thống bắt đầu bằng cấu hình của hệ thống, các chỉ tiêu kỹ
thuật mức A và độ dự trữ tuyến ban đầu. Dự trữ tuyến thường được biểu diễn ở
dạng bảng tính và dòng cuối cùng trong dự trữ tuyến là Eb/N0 thực tại điểm tới hạn
trong hệ thống sau khi tất cả các tổn hao thực thi được tính đến. “Điểm tới hạn” này
thường là đầu vào bộ thu. Dự trữ tuyến được gọi là “kín” hay “cân bằng” nếu tuyến
có Eb/N0 đủ lớn với hệ số dự phòng an toàn để tạo ra hiệu năng hệ thống chấp nhận
được. Tại điểm này trong quá trình thiết kế, số đo hiệu năng được tính toán từ các
công thức xấp xỉ và chưa được mô phỏng. Vì tất cả những tổn hao thực thi đã được
tính đến trong Eb/N0 thực nên có thể tính BER theo công thức cho hệ thống lý
tưởng. Nếu độ dự trữ tuyến không kín hay không cân bằng thì khi đó các chỉ tiêu kỹ
thuật mức A, các tổn hao thực thi và thậm chí cấu hình hệ thống được thay đổi và
độ dự trữ tuyến được tính toán lại. Ví dụ băng thông của bộ lọc có thể thay đổi, kích
thước ăng ten có thể tăng lên và đặc tính kỹ thuật hệ số tạp âm của bộ khuyếch đại
có thể được làm thấp đi. Quá trình này sẽ tiếp tục cho đến khi độ dự trữ tuyến được
cân bằng với hệ số dự trữ thích hợp.
Trên cơ sở cấu hình hệ thống ban đầu, các đặc tính kỹ thuật mức A và độ dự
trữ tuyến, khi này được coi là kín, cho phép xây dựng một mô hình mô phỏng để
kiểm tra độ dự trữ tuyến và tinh chỉnh thiết kế. Có thể ước tính chính xác các phép
đo hiệu năng và kiểm tra suy thoái hiệu năng do thực thi không lý tưởng thông qua
các mô phỏng chi tiết. Nếu những phân bổ trong độ dự trữ tuyến được kiểm tra
thông qua mô phỏng và độ dự trữ tuyến vẫn được kín thì quá trình thiết kế chuyển
sang giai đoạn kế tiếp mà ở đó chứa thiết kế chi tiết, thực thi các hệ thống con và
các thành phần. Nếu độ dự trữ tuyến không kín thì một số phân bổ méo, cấu hình hệ
thống và đặc tính kỹ thuật mức A có thể bị thay đổi. Quá trình lặp cho đến khi độ
19
dự trữ tuyến cân bằng cung cấp các đặc tính kỹ thuật cho phát triển phần cứng (và
phần mềm).
Thiết kế một hệ thống truyền thông mới sẽ luôn chứa một số thuật toán xử lý
tín hiệu mới và các công nghệ phần cứng (phần mềm) mới. Bất kỳ công nghệ mới
luôn có rủi ro hoặc tính không chắc chắn về hiệu năng. Nếu công nghệ mới được
đưa vào một phần tử quan trọng của một hệ thống thì trước hết thành phần đó phải
được xây dựng và kiểm tra trong các điều kiện thực tế nhằm kiểm tra hiệu năng và
giảm thiểu rủi ro. Vì chỉ vài thành phần then chốt được xây dựng tại giai đoạn đầu
của tiến trình thiết kế nên không thể kiểm tra toàn bộ hệ thống phần cứng. Trong
tình huống này, mô phỏng tạo ra môi trường kiểm tra tuyệt vời và sử dụng mô
phỏng ít tốn kém hơn nhiều so với chế tạo mẫu thử phần cứng. Tất cả các thành
phần và tín hiệu được mô phỏng với các đặc tính đo được của thành phần được đưa
vào trong mô hình mô phỏng. Ví dụ, nếu thành phần sẽ được kiểm tra là bộ khuyếch
đại mới, thì các đặc tính hàm truyền đạt AM-AM và AM-PM của nó được đo và các
đặc tính này được đưa vào mô hình phi tuyến cho bộ khuyếch đại đó. Sau đó mô
phỏng toàn bộ hệ thống để kiểm tra hiệu năng và độ dự trữ tuyến. Nếu độ dự trữ
tuyến kín thì việc phát triển phần cứng tiếp tục cho thành phần quan trọng tiếp theo.
Nếu không thì thiết kế lại thành phần, xây dựng lại và kiểm tra lại hoặc độ dự trữ
tuyến được sửa đổi để tính đến suy thoái phụ gây ra do thành phần (ngoài những gì
đã được phân bổ trong độ dự trữ tuyến cho thành phần đó). Quy trình này được lặp
lại đối với các thành phần then chốt khác.
Như thủ tục đã được mô tả, chế tạo nguyên mẫu phần cứng của toàn bộ hệ
thống bắt đầu xuất hiện cùng với mô hình mô phỏng kèm theo. Mô hình mô phỏng
bây giờ bao gồm các đặc tính đo được cho hầu hết các thành phần trong mô hình.
Nhiều số đo hiệu năng cho toàn hệ thống có thể được thực hiện trên nguyên mẫu
phần cứng này. Các mô phỏng song song cũng được thực hiện. Các đặc tính hiệu
năng đo được có thể so sánh với các kết quả mô phỏng và ngược lại. Các mô phỏng
cung cấp những điểm chuần để kiểm tra và kết quả kiểm tra sẽ kiểm định mô
phỏng. Kết quả cuối cùng của quá trình thiết kế này là một nguyên mẫu hoàn chỉnh
của hệ thống, cho ta cơ sở để triển khai phiên bản sản phẩm của hệ thống. Ngoài ra,
mô hình mô phỏng được kiểm định có thể được sử dụng để dự đoán tuổi thọ với độ
tin cậy cao.
Trong khi quy trình trên dẫn đến thiết kế đảm bảo mức hiệu năng cho trước
khi triển khai hệ thống thì một yêu cầu quan trọng nữa phải được đáp ứng cho hầu
hết các hệ thống, là hiệu năng tuổi thọ. Nhiều hệ thống truyền thông như vệ tinh, hệ
20
thống cáp biển được mong đợi phải có tuổi thọ dài (thường khoảng 10 năm hoặc
hơn), trong khoảng thời gian này hiệu năng phải được đảm bảo. Tất nhiên, không
thể kiểm tra vòng đời thực tế dựa trên nguyên mẫu phần cứng. Trong khi các thủ tục
kiểm tra vòng đời tăng tốc đã được phát triển, thực tế thường dùng mô phỏng như
giải pháp bổ sung để kiểm tra vòng đời tăng tốc. Các dự đoán hiệu năng tuổi thọ
dùng mô phỏng được thực hiện bằng sử dụng các mô hình già hóa cho các thành
phần chính của hệ thống. Nếu ta có mô hình mô phỏng đã được kiểm chuẩn cho
toàn bộ hệ thống tại lúc bắt đầu vòng đời và cũng có những mô hình đặc tính tốt của
các thành phần như hàm thời gian thì các mô hình già hóa có thể được thay thế
trong mô hình bắt đầu vòng đời để đạt được các số đo hiệu năng tuổi thọ cho hệ
thống. Nếu hiệu năng dự đoán tuổi thọ là thỏa đáng và dự trữ tuyến cuối đời là kín
với hệ số dự phòng thỏa đáng thì việc thiết kế và thực thi hệ thống là hoàn thiện.
Ngược lại quá trình phải lặp lại cho đến khi đạt được hội tụ.
Tóm tắt các bước then chốt trong trình tự thiết kế và vai trò của mô phỏng
trong thiết kế các hệ thống truyền thông được minh họa ở hình 1-7.
21
Chương 2 Giới thiệu về MATLAB
Chương này giới thiệu một công cụ tính toán trong kỹ thuật đó là MATLAB.
Ngoài những nội dung về cấu trúc cơ bản của MATLAB giúp sinh viên biết cách sử
dụng cho tính toán, chương này cũng còn cung cấp một số phương pháp số và vận
dụng MATLAB để giải một số bài toán hay gặp trong kỹ thuật.
22
MATLAB cũng là một ngôn ngữ dịch cho phép các lệnh được thực hiện trực
tiếp và cho ra kết quả ngay, đây cũng là đặc điểm thuận tiện của MATLAB so với
các ngôn ngữ lập trình khác. Để hỗ trợ các phép tính toán dạng biểu tượng giống
như các chương trình MAPLE hay MATHEMATICA, một bộ công cụ symbolic
cũng đã được bổ sung trong MATLAB kể từ phiên bản 7.0.
Ví dụ:
>> x = 2.5
x =
2.5000
Định nghĩa một vector và một ma trận được thực hiện với các giá trị của các
phần tử cho trong ngoặc vuông [ ]. Các giá trị của các phần tử ở trên cùng một hàng
được cách bởi dấu cách (space) hoặc bởi dấu phẩy (,), còn giữa các hàng sẽ được
phân biệt bằng dấu chấm phẩy (;).
Ví dụ: Tạo một vector hàng và kết quả
>> v = [1 5 -3]
v =
1 5 -3
m =
23
3.0000 1.0000 + 2.0000i 2.0000
4.0000 0 -5.0000
Chú ý ma trận m chứa một phần tử là số phức. Các số phức có thể được định
nghĩa theo cách đặc trưng đại số sử dụng kí hiệu i và j làm số ảo. Nếu không có tên
biến được đặt thì MATLAB tự gán tên ans (answer) cho kết quả như ví dụ sau:
>> [2 3 4; 3 -1 0]
ans =
Quản lý biến: Tất cả các biến được định nghĩa sẽ được lưu giữ trong
workspace của MATLAB để kiểm tra trạng thái của biến ở bất cứ lúc nào. Lệnh
who sẽ trả về các tên biến được lưu giữ và lệnh whos cung cấp các thông tin bổ
sung về các biến.
>> who
m v x
>> whos
v 1x3 24 double
x 1x1 8 double
Cửa sổ workspace cũng cho đầy đủ các thông tin về các biến được lưu giữ
như trong hình 2-2. Bằng việc kích đúp vào một biến trong cửa sổ này sẽ mở ra một
cửa sổ variable editor và hiển thị các nội dung của các biến theo kiểu bảng tính
Excel như cho thấy trong hình 2-3. Nhiều biến có thể được mở đồng thời cùng lúc,
khi đó một thanh công cụ được mở ra để cho sự lựa chọn biến. Kích thước của ma
trận, định dạng và các gí trị của các phần tử trong ma trận có thể được thay đổi
trong variable editor. Điều này sẽ rất hữu ích đối với các ma trận kích thước lớn.
24
Hình 2-2 Giao diện cửa sổ workspace
Hình 2-3 Giao diện và mô tả của một ma trận trong variable editor.
Một số các biến không cần sử dụng nữa, cách dễ dàng nhất để xóa chúng là
sử dụng lệnh clear như ví dụ sau:
>> clear m x
Để xóa toàn bổ các biến có thể sử dụng lệnh clear hoặc clear all. Các hoạt
động này cũng có thể thực hiện qua cửa sổ workspace.
Xử lý các biến: Với cấu trúc cơ bản là một ma trận, các phần tử trong một
biến MATLAB có thể được thay đổi bằng việc trỏ tới vị trí phần tử đó trong ma trận
qua ngoặc đơn (n,m) với n là chỉ số hàng và m là chỉ số cột như ví dụ sau:
>> m(1,3) = 1
25
m =
4.0000 0 -5.0000
Việc truy xuất giá trị các phần tử trong ma trận cũng được thực hiện theo
cách tương tự.
>> a = m(1,:)
a =
Một ma trận hay một vector có thể được mở rộng bằng việc bổ sung thêm
các phần tử hoặc thu hẹp bằng việc loại bỏ các phần tử. Quá trình mở rộng bằng
cách thêm hàng như ví dụ sau:
>> m = [m; 1 2 3]
m =
4.0000 0 -5.0000
Việc bổ sung thêm cột cũng được thực hiện theo cách tương tự:
>> m = [m, [1; 2; 3]]
m =
v =
>> m = [m, v]
m =
26
4.0000 0 -5.0000 2.0000
Các hoạt động xóa bớt hàng hoặc cột trong một ma trận được thực hiện bằng
việc gán hàng hoặc cột cần xóa bằng một vector trống [ ]. Hàng hoặc cột cần xóa
được lựa chọn qua chỉ số của ma trận.
Ví dụ xóa cột 2 trong ma trận m:
>> m(:,2)= []
m =
3 1 1
4 -5 2
1 3 3
m =
4 -5 2
1 3 3
Ở đây dấu hai chấm (:) có nghĩa là lấy giá trị của tất cả các hàng hoặc cột tùy
thuộc vị trí của dấu trong chỉ số ma trận.
Đối với các ma trận hoặc vector có kích cỡ lớn, kết quả đầu ra tại cửa sổ lệnh
thường gây sự bất tiện. Để chặn việc hiển thị kết quả đầu ra trên cửa sổ lệnh ta có
thể dùng dấu chấm phấy (;) tại cuối câu lệnh trước khi thực hiện. Ví dụ định nghĩa
một vector kích cỡ lớn gồm các số từ 1 đến 5000 với khoảng cách 2 đơn vị.
>> vt = 0:2:5000;
Lệnh trên thực hiện tạo ra một dải giá trị có thể được thực hiện theo cú pháp
tổng quát sau: tên_biến = a:del:b với a, b là các giá trị đầu và cuối của dải giá
trị và del là giá trị cỡ bước thay đổi. Dấu ; cuối câu lệnh sẽ chặn việc hiển thị kết
quả trên cửa sổ lệnh, nếu không sử dụng dấu này kết quả có thể được hiển thị lần
lượt trên cửa sổ bằng lệnh more on hoặc tắt chức năng này bằng lệnh more off.
27
Các phép tính ma trận: Vì cấu trúc dữ liệu cơ bản của MATLAB là ma trận
nên các hoạt động số học được xem như là các phép tính ma trận. Do đó mà các quy
tắc tính toán trong ma trận cần phải được tuân thủ. Ví dụ phép nhân 2 ma trận phải
đảm bảo số cột ma trận trước bằng số hàng của ma trận sau. Nếu điều kiện không
được thỏa mãn phép tính không thực hiện được và sẽ báo lỗi. Một ngoại lệ với quy
tắc xảy ra chỉ nếu một trong các biến là vô hướng hoặc một ma trận 1x1.
>> M = [1 2 3; 4 -1 2] % Tạo ma trận M 2x3
M =
1 2 3
4 -1 2
N =
1 2 -1
4 -1 1
2 0 1
V =
15 0 4
4 9 -3
Các phép tính theo từng phần tử: Bên cạnh các phép tính ma trận, trong
nhiều trường hợp có nhu cầu thực hiện các phép tính đại số tương ứng cho từng
phần tử. Các phép tính theo từng phần tử được xem như các phép tính trường hay
mảng trong MATLAB được thực hiện bằng việc su dụng dấu chấm (.) trước toán tử
thực hiện. Tuy nhiên hoạt động toán học đối với hai ma trận theo từng phần tử đòi
hỏi hai ma trận có kích thước giồng nhau.
>> M = [1 2 3; 4 -1 2] % Tạo ma trận M 2x3
M =
1 2 3
4 -1 2
28
>> N = [1 -1 0; 2 1 -1] % Tạo ma trận N 2x3
N =
1 -1 0
2 1 -1
ans =
1 -2 0
8 -1 -2
Các phép tính chia: Dấu chia có ý nghĩa đặc biệt. Trong MATLAB có sự
phân biệt giữa chia phải / và chia trái \. Để hiểu rõ sự khác biệt xét trường hợp các
ma trận vuông, phép chia hai ma trận X = A/B có thể xem như là X = A.B-1 nếu ma
trận đảo B-1 tồn tại. Đối với phép chia trái X = A\B có thể xem như là X = A-1.B nếu
A-1 tồn tại.
>> A = [2 1; 1 1] % Tạo ma trận A 2x2
A =
2 1
1 1
B =
-1 1
1 1
Ainv =
1 -1
-1 2
Binv =
-0.5000 0.5000
0.5000 0.5000
29
>> X1 = A/B % Phép chia phải
X1 =
-0.5000 1.5000
0 1.0000
X2 =
-0.5000 1.5000
0 1.0000
Y1 =
-2.0000 -0.0000
3.0000 1.0000
Y2 =
-2 0
3 1
Một trong những phép chia có thể áp dụng để tìm nghiệm cho bài toán hệ
phương trình đại số tuyến tính trong kỹ thuật Ax b , nghiệm được xác định qua
phép chia trái x A \ b
>> A = [2 1; 1 1] % Tạo ma trận hệ số A
A =
2 1
1 1
b =
x =
1.0000
0.0000
30
>> A*x % Kiểm chứng lại
ans =
2.0000
1.0000
A =
1 -3
0 0
B =
0 5
0 1
res =
0 1
0 0
Ma trận kết quả res chỉ chứa các giá trị 1 và 0, giá trị 1 tương ứng với các
thành phần của hai ma trận cùng 0, nếu không sẽ là 0. Ngoài toán tử & còn có các
toán tử logic khác: OR (|), NOT (~) và XOR (xor).
Các toán tử quan hệ hay so sánh cũng làm việc theo kiểu tương tự toán tử
logic. Ví dụ về kiểm tra liệu các thành phần ma trận A lớn hơn các thành phần ma
trận B tương ứng:
>> comp = A>B % Hoạt động so sánh lớn hơn
comp =
1 0
0 0
31
Như vậy chỉ những phần tử nào thỏa mãn điều kiện sẽ trả về kết quả logic 1
(true), nếu không thỏa mãn sẽ trả về kết quả logic 0 (false). Các toán tử quan hệ
khác bao gồm và (theo cú pháp MATLAB sẽ là >= và <=), nhỏ hơn (<), bằng
nhau (==) và không bằng nhau (~=).
Để biết được hết tất cả các toán tử cơ bản trong MATLAB có thể sử dụng
lệnh trợ giúp trong cửa sổ lệnh help ops. Sau khi thực hiện một danh sách các
toán tử MATLAB sẽ được liệt kê.
Việc sử dụng các toán tử quan hệ và logic có nhiều ý nghĩa trong mô phỏng.
Ví dụ bài toán lựa chọn các thành phần từ một vector có giá trị lớn hơn 2:
>> vect = [-2, 3, 0, 4, 5, 19, 22, 17, 1] % Tạo vector
vect =
-2 3 0 4 5 19 22 17 1
compvect =
2 2 2 2 2 2 2 2 2
comp =
0 1 0 1 1 1 1 1 0
>> res = vect(comp) % Chọn lọc các giá trị thỏa mãn điều kiện
res =
3 4 5 19 22 17
Nguyên tắc chung các vector và ma trận kết nối bởi các toán tử quan hệ phải
có cùng kích thước. Trong trường hợp so sánh chỉ với một giá trị, lệnh thực hiện có
thể đơn giản hơn:
>> comp = vect>2
comp =
0 1 0 1 1 1 1 1 0
Các trường logic không chỉ sinh ra từ kết quả hoạt động so sánh mà có thể
cũng được định nghĩa trực tiếp theo cách sau:
% Tạo biến trực tiếp
logiField1 =
32
1 1 0 1 0 1
numField =
1 1 0 1 0 1
logiField2 =
1 1 0 1 0 1
t =
0 1 2 3 4 5
>> s = sin(t)
s =
Kết quả trả về của hàm cũng cùng kích thước với tham số biến đầu vào. Ý
nghĩa của việc tính toán các hàm toán học dạng vector hoặc ma trận trong
MATLAB thấy rõ trong các mô phỏng lớn khi cho phép thay thế dạng vòng lặp
trong lập trình ở các ngôn ngữ khác. Ví dụ trong C++, thực hiện chuỗi tính toán trên
đòi hỏi phải thực hiện bởi vòng lặp sau:
double s[6];
for(i=0; i<6; i++)
s[i] = sin(i);
Để biết thông tin về cách sử dụng các hàm một cách trực tiếp, có thể sử dụng
lệnh trợ giúp: help <tên_hàm>. Ví du:
>> help sin
33
SIN Sine of argument in radians.
SIN(X) is the sine of the elements of X.
Overloaded methods:
codistributed/sin
Bên cạnh các hàm toán cơ bản, các hàm toán đặc biệt cần thiết cho việc tính
toán trong kỹ thuật cũng có thể được liệt kê bằng việc sử dụng lệnh help specfun và
help matfun.
Một số ví dụ sau cho thấy việc sử dụng một số hàm cơ bản trong MATLAB.
Ví dụ xác định biên độ và pha theo radian và theo độ của một vector số phức, đây là
bài toán hay gặp trong việc xác định hàm truyền đạt của các hệ thống tuyến tính.
>> cnum = [1+j, j, 2*j, 3+j, 2-2*j, -j]% Tạo vector số phức
cnum =
Columns 1 through 4
Columns 5 through 6
magn =
phase =
deg =
Một ví dụ khác chuyển đổi các giá trị tín hiệu đo ở dạng điện áp sang dạng
dB bởi hàm 20. log10 U với U là tín hiệu đo.
34
>> meas = [25.5 16.3 18.0;...% Tạo ma trận giá trị đo điện áp
meas =
dBmeas =
Trong ví dụ trên khi một lệnh MATLAB quá dài mà muốn viết tiếp ở dòng
tiếp theo thì có thể sử dụng dấu ba chấm (…) tại cuối mỗi dòng.
Một sự khảo sát tất cả các hàm đồ họa có thể thu được bằng lệnh help
graph2d, help graph3d và help graphics trong cửa sổ lệnh.
Đồ thị hai chiều: Hàm đồ họa sử dụng nhiều nhất và quan trọng nhất là hàm
plot. Để biết cách sử dụng hàm và cung cấp thêm thông tin, sử dụng lệnh trợ giúp
help plot. Đồ thị của một hàm được vẽ dựa trên nguyên tắc nối các điểm được
đặc trưng bởi cặp giá trị (x,y) lại với nhau. Do vậy hai vector được yêu cầu để vẽ
một đồ thị. Vector đầu tiên đặc trưng cho vector giá trị trục x và vector thứ hai đặc
trưng cho vector giá trị trục y. Các vector do đó phải có cùng kích thước.
Ví dụ vẽ đồ thị hàm sine:
>> t = (0:1:5);
>> s = sin(t);
>> plot(t,s)
35
Kết quả được cho thấy trong hình 2-4 với các thuộc tính ở chế độ mặc định
như đường mầu xanh và liền nét. Các thuộc tính đồ thị có thể thay đổi theo ý muốn
như ví dụ:
>> plot(t,s,'k*') % Vẽ đồ thị dạng điểm sao mầu đen
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2 0.2
0 0
-0.2 -0.2
-0.4 -0.4
-0.6 -0.6
-0.8 -0.8
-1 -1
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Nhiều hàm đồ thị cũng có thể được vẽ đồng thời hoặc bằng cách viết mỗi cặp
vector x,y sau cặp khác trong danh sách tham số, hoặc khi cùng vector x được sử
dụng thì có thể kết hợp các vector y thành một ma trận tương ứng. Ví dụ vẽ ba hàm
đồ thị khác nhau trên cùng một hình:
>> t = (0:0.01:2);
Kết quả được cho thấy trong hình 2-5. Các thuộc tính của từng đồ thị có thể thay đổi
theo ý muốn theo lệnh sau và kết quả thu được như hình 2-5:
>> plot(t,sinfct,'k-', t, cosfct, 'b--', t, expfct, 'm.')
36
2 2
1.5 1.5
1 1
0.5 0.5
0 0
-0.5 -0.5
-1 -1
-1.5 -1.5
-2 -2
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Bên cạnh hàm plot được sử dụng thường xuyên, MATLAB còn có một số
hàm vẽ đồ thị 2D khác. Trong xử lý tín hiệu hàm stem thường được sử dụng để đặc
trưng cho tính rời rạc của tín hiệu. Hình 2-6 cho thấy kết quả sử dụng hàm stem qua
ví dụ dưới đây:
>> t=(0:0.05:2);
>> cosfct=2*cos(2*pi*t);
>> stem(t,cosfct)
>> box
1.5
0.5
-0.5
-1
-1.5
-2
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Một hàm phù hợp để hiển thị các tín hiệu rời rác là hàm stairs vẽ tín hiệu ở
dạng bậc thang. Hình 2-7 cho thấy kết quả sử dụng hàm stairs qua lệnh sau:
37
>> stairs(t,cosfct)
1.5
0.5
-0.5
-1
-1.5
-2
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
MATLAB cũng cung cấp một số hàm để bổ sung thêm các chức năng biểu
diễn đồ thị của hình như đánh nhãn các trục bằng các hàm xlabel, ylabel và
title, kẻ lưới hình bằng hàm grid, thay đổi định cỡ truc bằng hàm axis. Chuỗi
lệnh MATLAB sau cho ví dụ về sử dụng các hàm bổ sung này và kết quả cho thấy
trong hình 2-8 và 2-9.
>> t=(0:0.05:2);
>> cosfct=2*cos(2*pi*t);
>> plot(t,cosfct)
>> plot(t,cosfct)
>> axis([0, 0.5, 0, 2]) % biểu diễn trong khoảng [0, 0.5],
38
A cosine voltage with frequency 1 Hz
2
1.5
Amplitude / V 0.5
0 zero crossing
-0.5
-1
-1.5
-2
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
time / s
1.8
1.6
1.4
1.2
Amplitude / V
0.8
0.6
0.4
0.2
0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
time / s
Bên cạnh xử lý đồ thị bằng các hàm kể trên, một cách khác thuận tiện để xử
lý và thay đổi các thuộc tính của đồ thị là vào menu Edit – Figure
Properties, khi đó một cửa sổ Property Editor mở ra như một thanh công cụ
cho phép thay đổi các thuộc tính tùy theo đối tượng (trục, đường, hình) được lựa
chọn. Một cách mở cửa sổ Property Editor khác là lựa chọn đối tượng và kích
đúp bằng chuột trái.
Đồ thị ba chiều: Có một số hàm vẽ đồ thị ba chiều hay được sử dụng là hàm
mesh, surf và contour. Trong vẽ ba chiều mỗi điểm trên đồ thị được đặc trưng
bởi 3 giá trị (x,y,z), thông thường giá trị z được tính dựa trên cặp giá trị (x,y) bởi
39
một hàm xác định. Do vậy để vẽ được đầy đủ mặt ba chiều của một hàm cần phải
tạo ra tổ hợp các điểm lưới trên mặt phẳng (x,y) trước khi tính z.
0.6
0.4
0.2
-0.2
2
3
2
0 1
0
-2 -1
-2
y-axis -3
x-axis
Ví dụ vẽ đồ thị hàm f ( x, y) sinx 2 y 2 e 0.2x y2 trong dải giá trị mặt (x,y)
2
[-3, 3]x[-3, 3] sử dụng hàm mesh hoặc surf. Chuỗi lệnh thực hiện như sau:
>> x=(-3:0.1:3); % Tạo dải giá trị theo chiều x
>> f=sin(X.^2+Y.^2).*exp(-0.2*(X.^2+Y.^2));
>> mxf = max(max(f)); % xác định giá trị cực đại của hàm
>> mif = min(min(f)); % xác định giá trị cực tiểu của hàm
>> axis([-3,3,-3,3,mif,mxf])% hiệu chỉnh các trục
>> ylabel('y-axis');
40
>> figure % mở hình mới
>> ylabel('y-axis');
0.6
0.4
0.2
-0.2
2
3
2
0 1
0
-2 -1
-2
y-axis -3
x-axis
0.6
0.4
0.2
-0.2
2
3
2
0 1
0
-2 -1
-2
y-axis -3
x-axis
41
Một hàm hay sử dụng để vẽ các đường đẳng mức trong không gian ba chiều
là hàm contour3. Hình 2-12 cho thấy đồ thị contour sau khi thực hiện các lệnh
sau:
>> contour3(x,y,f,30) % vẽ bằng hàm contour3
>> ylabel('y-axis');
Các đồ thị con (Subplots): Bên cạnh khả năng vẽ các đồ thị trong các cửa
sổ khác nhau thì MATLAB cũng có thể vẽ nhiều đồ thị trong cùng một cửa sổ đơn.
Chức năng này có thể được thực hiện bằng sử dụng lệnh subplot.
>> plot(t,abs(f))
>> plot(t,angle(f))
25
20
15
10
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
-2
-4
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Hình 2-13 Ví dụ vẽ nhiều đồ thị phân chia trên cùng một hình bằng hàm subplot
42
Ở đây lệnh subplot thiết lập các trục đồ thị ở vị trí thích hợp, các tham số
của lệnh subplot xác định bao nhiêu đồ thị được vẽ theo chiều dọc (số đầu tiên) và
chiều ngang (số thứ hai). Số thứ ba xác định đồ thị thứ mấy sẽ được thực hiện theo
chiều từ trên xuống dưới và từ trái qua phải.
Ngoài vẽ nhiều đồ thị cùng lúc như cho thấy trong sử dụng hàm plot, chức
năng vẽ nhiều đồ thị đè lên nhau trong hình có thể được bật tắt qua sử dụng lệnh
hold on và hold off.
% Lưu các biến x và y vào tệp với đường dẫn xác định theo
Lệnh load đọc dữ liệu lưu ở tệp để đưa vào workspace theo cú pháp cơ bản
sau:
>> load <tên_file> % Đọc tất cả các biến lưu trong tệp
Bên cạnh định dạng tệp .mat, các định dạng khác ví dụ như ASCII cũng có
thể được lưu sử dụng lệnh save hoặc được đọc sử dụng lệnh load. Để biết thêm
thông tin sử dụng các lệnh này sử dụng lệnh trợ giúp help save và help load.
Các hoạt động tương tự cũng có thể được thực hiện qua lựa chọn menu File
– Save Workspace As và File – Import Data.
43
2.3 Thao tác ma trận và vectơ
Có một số lệnh MATLAB phổ biến được sử dụng để điều khiển ma trận.
Lệnh help elmat sẽ cho biết toàn bộ danh sách các lệnh này.
Một số lệnh để tạo các ma trận đặc biệt:
>> M = zeros(2,2) % Tạo ma trận giá trị 0
M =
0 0
0 0
N =
1 1
1 1
1 1
v =
E5 =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
44
Chiều dài của một vector và kích thước của một ma trận có thể được xác
định qua sử dụng các lệnh length và size.
>> length(x1) % Xác định độ dài vector x1
ans =
B =
1 0 0 0
0 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
rows =
columns =
Một số kiểu ma trận, biến đặc biệt cũng được liệt kê bởi help elmat. Khi sử
dụng MATLAB tránh đặt tên biến trùng với các biến đặc biệt này có thể làm thay
đổi giá trị khi sử dụng.
Hoạt động chuyển vị của một ma trận hoặc vector có thể sử dụng toán tử ' và
được đặt ngay sau ma trận cần được chuyển vị.
>> M = [1 2; 3 -2; -1 4] % Tạo ma trận M 3x2
M =
1 2
3 -2
-1 4
N =
1 3 -1
45
2 -2 4
Tuy nhiên cần chú ý khi đối với ma trận số phức khi thực hiện toán tử ' sẽ có
liên hợp phức.
>> M = [i 2; 3 -j] % Tạo ma trận M có số phức
M =
0 + 1.0000i 2.0000
3.0000 0 - 1.0000i
N =
0 - 1.0000i 3.0000
2.0000 0 + 1.0000i
Muốn tránh liên hợp phức trong trường hợp này cần sử dụng dấu (.) trước
toán tử:
>> K = M.'
K =
0 + 1.0000i 3.0000
2.0000 0 - 1.0000i
Chuyển đổi một ma trận thành một vector cột qua sử dụng dấu hai chấm (:):
>> M = [1 2; 3 -2; -1 4] % Tạo ma trận M
M =
1 2
3 -2
-1 4
mVec =
-1
-2
46
Hàm repmat có thể được sử dụng để sao chép lặp lại ma trận:
>> N = repmat(M,2,2) % Sao chép ma trận M 4 lần
N =
1 2 1 2
3 -2 3 -2
-1 4 -1 4
1 2 1 2
3 -2 3 -2
-1 4 -1 4
Một toán tử hay được sử dụng trong lập trình là toán tử end, xác định chỉ số
cuối cùng của một vector mà không cần giá trị cụ thể.
>> yVec = [0, 3, -1, 0, 1, 99]
yVec =
0 3 -1 0 1 99
yVec =
0 3 -1 0 1 99 -1 -2 -3
47
Chuỗi các lệnh khi đó có thể được thực hiện trong cửa sổ lệnh chi bằng một
lệnh tương ứng với tên m-file. Để tránh các vấn đề xung đột xảy ra, bất kỳ tên lệnh
được sử dụng trước đó không nên được dùng. Để kiểm tra xem liệu tên lệnh đã tồn
tại hay chưa có thể sử dụng lệnh trợ giúp help <tên> ở cửa sổ lệnh hoặc sử dụng
hàm exist <tên>.
Ví dụ thủ tục viết chương trình MATLAB được cho thấy trong hình 2-14
cùng với giao diện bộ Editor. Một chuỗi các lệnh có thể thực hiện lần lượt ở ngoài
cửa sổ lệnh được tập hợp vào một tệp và lưu lại với tên tệp là vidu1.m.
Hình 2-14 Ví dụ viết chương trình MATLAB trong cửa sổ lập trình Editor
chuỗi lệnh trong tệp sẽ được thực hiện và cho kết quả giống như hình 2-5. Tại đầu
của tệp chương trình, dấu % được sử dụng đặt trước các nội dung chú giải của
chương trình. Các chú giải là cần thiết để làm cho chương trình rõ ràng và luôn có
trong lập trình chuyên nghiệp. Các nội dung chú giải ở đầu tệp có thể được đọc ở
48
cửa sổ lệnh bằng lệnh trợ giúp help, ví dụ: help vidu1. Chú ý rằng, khi chương
trình thực hiện, tất cả các biến được định nghĩa trong tệp đều được biết trong
workspace.
ở đây các tham số đầu vào và các tham số đầu ra cách nhau bằng dấu phẩy (,).
Những điều cần lưu ý khi xây dựng hàm đó là tên hàm và tên tệp m-file phải giống
nhau, trong hàm có thể chứa các hàm khác nhưng các hàm con trong hàm đó chỉ
được gọi trong chính nó. Mỗi hàm có không gian làm việc riêng nên khác với thủ
tục ở trên các biến được tạo ra trong hàm là các biến cục bộ và chỉ có ý nghĩa trong
không gian làm việc của hàm. Nếu hàm muốn sử dụng chung các biến thì biến đó
phải được khai báo là biến toàn cục: global tên_biến.
Việc gọi hàm ở cửa sổ lệnh hay trong m-file có thể thực hiện theo cách sau:
>> [y1,y2,…] = tên_hàm(x1,x2,…) hoặc
>> tên_hàm(x1,x2,…)
với x1, x2, … là các tham số chứa giá trị tương ứng với các tham số trong hàm
được xây dựng. Lưu ý các tham số đầu vào và đầu ra khi hàm được gọi chỉ có tác
dụng bên trong hàm đó. Để quản lý số lượng tham số đầu vào và đầu ra của hàm có
thể sử dụng các biến đặc biệt nargin và nargout tương ứng.
Ví dụ xây dựng một hàm đơn giản với cấu trúc:
[t,sinfct,cosfct,expfct] = vidu2(f1,f2,damp)
được cho thấy trong hình 2-15. Hàm được lưu cùng với tên tệp là vidu2.m. Ngoài
cửa sổ lệnh việc gọi hàm có thể thực hiện như:
>> [t,s1,c1,e1] = vidu2(3,5,2);
49
kết quả tại workspace các biến t, s1, c1, e1 được tạo ra với các giá trị được
tính bởi hàm từ các tham số đầu vào là các giá trị nhập trực tiếp và đồ thị tương tự
hình 2-5.
các_câu_lệnh1
elseif biểu_thức2
các_câu_lệnh2
50
else
các_câu_lệnh3
end
if A > B
elseif A == B
else
end
Hàm được lưu lại vào tệp với tên sosanh.m và có thể gọi ngoài cửa sổ lệnh
>> sosanh(5,2)
A lon hon B
Câu lệnh for: dạng cấu trúc lặp được sử dụng khi đã biết số vòng lặp và có
cấu trúc cơ bản như sau:
for biến = biểu_thức
câu_lệnh
...
câu_lệnh
end
Ví dụ sử dụng câu lệnh for tính giá trị các phần tử trong ma trận A kích
thước 5x5 với aij 1 i j 1
k = 5;
for m = 1:k
for n = 1:k
end
end
51
disp('Ma tran A:');
disp(a);
Chương trình được lưu vào tệp với tên tinhmatran.m. Ngoài cửa sổ lệnh có thể
gọi chương trình để kiểm tra kết quả:
>> tinhmatran
Ma tran A:
Câu lệnh while: dạng cấu trúc lặp được sử dụng khi chưa biết số vòng lặp
nhưng có điều kiện ràng buộc và có cấu trúc cơ bản như sau:
while biểu_thức
các_câu_lệnh
end
N
Ví dụ sử dụng câu lệnh while tìm N để S k 2 1000
k 1
n = 1
s = 0;
while s < 1000
s = s + n^2;
n = n + 1;
end
disp('Gia tri tong S:');
disp(s);
disp('Gia tri n:');
disp(n-1);
Chương trình được lưu vào tệp với tên timn.m. Ngoài cửa sổ lệnh có thể gọi
chương trình để kiểm tra kết quả:
>> timn
1015
52
Gia tri N:
14
case case_biểu_thức
otherwise
end
Ví dụ sử dụng câu lệnh switch để xem thời khóa biểu như sau
t = input('Nhap vao ngay thu trong tuan: ');
switch t
case 2
'Toan, Van, Anh'
case 3
'Van, S?, Dia'
case 4
'Toan, Sinh, Ly'
case 5
'Hoa, Anh, Ly'
case 6
'Tin, Su, Toan'
case 7
'Anh, Van, Hoa'
otherwise
'Nghi hoc'
end
Chương trình được lưu vào tệp với tên thoikb.m. Ngoài cửa sổ lệnh có thể gọi
chương trình để kiểm tra kết quả:
>> thoikb
ans =
53
Toan, Sinh, Ly
theCommands =
>> eval(theCommands)
x 1x1 8 double
y 1x1 8 double
z 1x1 8 double
>> z
z =
Trong ví dụ trên biến theCommands chứa một chuỗi lệnh MATLAB được định
nghĩa như một xâu ký tự. Xâu ký tự này được dịch thành chuỗi lệnh MATLAB qua
hàm eval sau đó.
>> printcommand = …
['fprintf(''%',digs,'.',post,'f\n'',',num2str(x),')'];
>> eval(printcommand)
0.1666700
Trong ví dụ trên hàm fprintf được sử dụng để định dạng dữ liệu vào một tệp
hoặc ghi lên màn hình giá trị một số thập phân với 7 số sau dấu phẩy. Để thực hiện
hoạt động này có thể sử dụng lệnh đơn giản sau:
54
>> fprintf('%2.7'f\n', x)
Tuy nhiên trong nhiều trường hợp lệnh thực hiện ở dạng xâu ký tự do vậy cần sử
dụng hàm eval để thực hiện. Ví dụ trên cũng cho thấy hoạt động của một số hàm
chuyển đổi từ định dạng giá trị số sang dạng xâu ký tự num2str. Biến
printcommand là một biến ký tự.
value =
0.9093
>> value = FH_Sin(2) % Tính giá trị hàm qua điều khiển hàm
value =
0.9093
Trong ví dụ trên điều khiển hàm FH_Sin là một con trỏ chỉ ra mã hàm sin. Như vậy
hàm này sẽ được thực hiện khi FH_Sin được gọi.
Đối với các phiên bản MATLAB trước, việc gọi hàm được thực hiện qua sự
trợ giúp của hàm feval như sau:
>> value = feval(FH_Sin, 2)
value =
55
0.9093
Các ví dụ về sử dụng điều khiển hàm sẽ còn được cho thấy trong các phần
tiếp theo khi giải các bài toán trong kỹ thuật.
Các tham số của cửa sổ Editor có thể được thiết lập bằng việc sử dụng
Preferences. Các cell mô tả một sự cải tiến quan trọng, đó là các phần được
phân cách bởi một dòng chú thích bắt đầu bằng hai dấu %%. Con trỏ khi đặt ở trong
một cell thì cell đó sẽ được làm nổi bật lên. Do đó các cell rất hữu ích trong việc
xây dựng và phát triển một chương trình. Bằng việc sử dụng menu Cell hoặc các
thanh công cụ cell, các cell có thể được đánh giá. Cửa sổ bộ Editor cũng có thể
được phân chia trong trường hợp làm việc với nhiều tệp.
Bên cạnh công cụ debugger, cũng có các công cụ khác để hỗ trợ phát triển
chương trình: như kiểm tra mã bằng M-Lint và profiler. Các công cụ này có thể
được thực hiện qua menu Tools.
57
2.6 Một số phương pháp số sử dụng MATLAB
Các ứng dụng quan trọng nhất của MATLAB là giải các bài toán kỹ thuật
bằng phương pháp số. Trong phần này một số phương pháp số cơ bản sử dụng
MATLAB sẽ được giới thiệu.
Hình 2-18 Mô tả phương pháp chia nửa để tìm nghiệm phương trình
Phương pháp chia nửa được áp dụng để giải phương trình f(x) = 0 đối với
biến thực x, trong đó f là một hàm liên tục trên một khoảng [a, b]. Trong trường hợp
này khoảng [a, b] phải thỏa mãn chứa một nghiệm cần tìm hay nói cách khác f(a) và
f(b) trái dấu nhau. Giải thuật của phương pháp được thực hiện như sau:
- Tính điểm giữa bằng việc chia nửa khoảng tìm nghiệm: c = (a + b)/2, và
tính giá trị hàm tại điểm giữa f(c).
- Kiểm tra xem nếu f(c) đủ nhỏ trong phạm vi cho phép thi dừng vòng lặp
và trả về nghiệm tìm được x0 = c. Nếu không tiếp tục thực hiện bước tiếp
theo.
58
- Kiểm tra dấu của f(c) và thay thế a hoặc b bằng c đảm bảo rằng khoảng
[a, b] mới phải chứa nghiệm.
- Lặp lại các bước cho đến khi khoảng tìm nghiệm đủ nhỏ hay sai số tương
đối (b - a)/b < với là sai số cho phép.
Chương trình MATLAB thực hiện giải thuật chia nửa để tìm nghiệm phương
trình được cho trong ví dụ dưới đây.
% Hàm myfun
function y = myfun(x)
% Hàm cần tìm nghiệm
y = x.^3-2*x-5;
Trong MATLAB có một số hàm sử dụng cho mục đích tìm nghiệm như fzero với
cách sử dụng đơn giản như sau:
Nếu f(x) là một đa thức thì có thể sử dụng hàm roots để tìm các nghiệm của đa
thức đó theo cách sau:
59
trong đó f(x) là hàm lấy tích phân và a và b được gọi là giới hạn dưới và trên của
tích phân. Ý nghĩa toán học của phép tính tích phân cho biết diện tích bị giới hạn
bởi đường cong f(x) trong khoảng [a, b] như cho thấy trong hình 2-19. Có một số
phương pháp số có thể được sử dụng để tính gần đúng tích phân này như phương
pháp điểm giữa (midpoint), phương pháp hình thang và phương pháp Simpsons,
v.v.
Hình 2-19 Tích phân giới hạn (a) và phương pháp điểm giữa để tính gần đúng (b).
Trong giới hạn nội dung, phương pháp điểm giữa được trình bày như một ví
dụ để tính gần đúng tích phân. Để xác định được công thức tính gần đúng của
phương pháp này, khoảng lấy tích phân a x b được chia thành N đoạn bằng nhau
có độ rộng là h với h = (b - a)/N. Đặt xj = a + (j – 1/2)h với j = 1, …, N, và đặt fj =
f(xj) do đó fj là các giá trị hàm của f(x) tại điểm giữa của các đoạn. Khi đó diện tích
dưới đường cong f(x) giữa a và b được tính gần đúng bởi diện tích của N hình chữ
nhật
b N N
f ( x)dx hf j h f j (2.2)
a j 1 j 1
Như vậy công thức (2.2) được sử dụng để tính gần đúng tích phân và độ chính xác
của phép tích phân phụ thuộc vào độ rộng mỗi đoạn h hay số lượng đoạn N.
Một hàm tính tích tích phân được xây dựng trong MATLAB dựa trên
phương pháp điểm giữa được cho trong đoạn mã dưới đây trong đó hàm số để lấy
tích phân được trỏ tới bằng sử dụng điều khiển hàm:
60
% Ví dụ về tính tích phân giới hạn dùng pp điểm giữa.
function [integral] = midpoint(a, b, F, N)
% Function midpoint
% ví dụ cách dùng: integ = midpoint(0, 2, @myfun, 10)
for k=2:N
xi = a + (k-1/2)*h; % Tính điểm giữa mỗi đoạn
integral = integral+F(xi);
end;
Trong thư viện của MATLAB, có một số hàm để sử dụng tính tích phân ví
dụ hàm quad và trapz:
I = quad(f,a,b) % thực hiện tích phân hàm f trong [a, b]
y ( x0 ) y 0 (2.3)
y ( x ) f x, y ( x )
d
(2.4)
dx
Hàm f có thể là một hàm tuyến tính hoặc phi tuyến của biến độc lập x và tham số
phụ thuộc y. Có một số phương pháp số để giải các ODE bậc một.
Phương pháp Euler: Cách tiếp cận đơn giản nhất cho giải bài toán ODE
bằng phương pháp số được dựa trên phép tính gần đúng đạo hàm
61
y( x h) y( x) hy(1) ( x) (2.5)
Nếu x1 = x0 + h thì đạo hàm từ phương trình vi phân được thay thế trong công thức
sai phân hữu hạn để có
y1 y0 hf ( x0 , y0 ) (2.6)
tính gần đúng y(x1) = y(x0 + h). Tương tự, y(x2) = y(x1 + h) = y(x0 + 2h) có thể tính
gần đúng bằng
y2 y1 hf ( x1 , y1 ) (2.7)
yn1 yn hf ( xn , yn ) (2.8)
với n = 0, 1, 2, … trong đó yn+1 là phép tính gần đúng cho y(xn+1) và xn+1 = x0 +
(n+1)h. Phương pháp Euler có thể xem là phương pháp tính gần đúng đường cong
y(x) bằng một đa giác mà cạnh đầu tiên chính là tiếp tuyến của đường cong tại x0.
62
Phương pháp Euler biến đổi: Do phương pháp Euler tính nghiệm của điểm
tiếp theo dựa vào độ dốc của điểm trước đó nên hạn chế về độ chính xác. Để cải
thiện độ chính xác, một phương pháp Euler biến đổi được sử dụng để ước tính
nghiệm kế tiếp dựa trên độ dốc tại điểm giữa mỗi khoảng tính bằng cách tính độ dốc
trung bình giữa hai điểm xn và xn+1 như mô tả trong hình 2-21. Tuy nhiên do nghiệm
tại điểm kế tiếp chưa biết nên cần phải tính giá trị dự đoán hay tạm thời bằng
phương pháp Euler dựa trên giá trị điểm hiện tại
yn1 yn hf ( xn , yn ) (2.9)
Sử dụng giá trị dự đoán này để ước tính độ dốc trung bình giữa hai điểm để tính
nghiệm cuối cùng yn+1 theo công thức sau
y n 1 y n
h
2
f ( x n , y n ) f ( x n 1 , y n1 ) (2.10)
Như vậy giải thuật để tính nghiệm ODE bằng phương pháp Euler biến đổi
được thực hiện theo hai bước: bước 1 là tính nghiệm dự đoán bằng phương pháp
Euler, bước 2 là tính nghiệm kế tiếp dựa trên công thức Euler biến đổi (2.10). Đoạn
mã giải thuật của phương pháp Euler biến đổi thực hiện trong MATLAB được cho
dưới đây.
63
% Ví dụ về giải thuật giải ODE dùng pp Euler biến đổi.
% fdot là hàm phương trình vi phân cần tìm nghiệm
x(1) = x0;
y(1) = y0;
for k=2:N
x(k) = x(k-1) + h;
ytemp = y(k-1)+fdot(x(k-1),y(k-1))*h; % Tính nghiệm dự đoán
% Tính nghiệm điểm tiếp theo
y(k) = y(k-1)+h*(fdot(x(k-1),y(k-1))+fdot(x(k),ytemp))/2;
end;
trong đó
k1 hf xn , yn ,
ở đây S xác định số tầng tính toán hay bậc của phương pháp, ma trận các hệ số aij
(cho 1 j < i S) được gọi là ma trận Runge-Kutta, bi (cho i = 1, 2, …, S) và ci (cho
i = 2, 3, …, S) là các trọng số và các điểm nút. Các hệ số thường có quan hệ
S i 1
bi 1 và
i 1
a
j 1
ij ci . Tùy thuộc vào giá trị cụ thể của S và các hệ số tương ứng ta
64
- Phương pháp Runge-Kutta bậc 4: Khi S = 4 ta có phương pháp R-K bậc
4. Các hệ số cụ thể cho phương pháp R-K bậc 4 là b1 = b4 = 1/6, b2 = b3 =
1/3 và c2 = c3 = ½, c4 = 1, a21 = a32 = ½, a43 = 1 và a31 = a41 = a42 = 0. Cụ
thể
y n 1 y n
1
k1 2k 2 2k 3 k 4 (2.13)
6
với
k1 hf xn , yn ,
k 2 hf xn 12 h, yn 12 k1 , (2.14)
k3 hf xn 12 h, yn 12 k 2 ,
k 4 hf xn h, yn k3 ,
Như vậy dựa trên các công thức tính nghiệm gần đúng trong các phương
pháp Runge-Kutta, các giải thuật dễ dàng được thực hiện trong MATLAB.
Trong MATLAB cũng sẵn có các hàm để sử dụng giải các phương trình vi
phân ODE được cho trong bảng dưới đây:
ở đây solver là tên hàm sử dụng để giải, odefun là tên hàm ODE cần giải, tspan
là khoảng giá trị để giải ODE, y0 là giá trị ban đầu.
65
r r
nhau. Biết nghiệm giải tích của phương trình này là y(t ) y0 e at sử dụng
a a
để đánh giá độ chính xác của phương pháp. Cho r = 1, a = 1 và y0 = 0, phương trình
trên được giải bằng phương pháp Euler được cho trong đoạn mã dưới đây và kết
quả cho thấy trong hình 2-22:
Hình 2-22 Kết quả giải phương trình vi phân cho trong ví dụ 2.1.
Ví dụ 2.2: Sử dụng hàm ode23 để giải bài toán dao động con lắc được mô tả
bởi phương trình vi phân bậc hai sau:
Ở đây (t) là góc của con lắc có độ dài l tạo thành tại thời điểm t so với vị trí cân
bằng của nó (xem hình 2-23). Để giải phương trình (2.15) đòi hỏi cần hai điều kiện
ban đầu
66
(0)
(0) ,
(0)
xác định vị trí bắt đầu (độ lệch) của con lắc và vận tốc ban đầu của nó. Phương trình
(2.15) cần được chuyển đổi thành hệ phương trình vi phân bậc 1 trước khi áp dụng
phương pháp số để giải. Việc chuyển đổi được thực hiện bằng cách đặt:
1 (t ) (t )
2 (t ) (t )
( 0) 1 ( 0 )
(0) ,
(0) 2 (0)
Trước khi sử dụng hàm giải phương trình vi phân, một hàm được xây dựng
với tên tệp pendde.m để mô tả hệ phương trình vi phân ở dạng vector như sau:
67
Sau đó có thể gọi hàm ode23 để giải hệ phương trình với điều kiện ban đầu cho là
(0) = /4 và ’(0) = 0 trong khoảng [0, 20] như sau:
>> [t,solution]=ode23(@pendde,[0 20],[pi/4, 0]);
>> plot(t,solution(:,1),'r',t,solution(:,2),'b:');
Nghiệm tìm được trả về trong biến solution là một ma trận gồm 2 cột trong đó
cột 1 chứa nghiệm của phương trình cần giải ((t)), còn cột 2 chứa đạo hàm của nó
(’(t)) theo đúng cấu trúc được định nghĩa trong hàm pendde.m. Kết quả bài toán
được cho thấy trong hình 2-24.
Hình 2-24 Kết quả giải phương trình vi phân bậc 2 trong ví dụ 2.2.
68
Câu hỏi/bài tập chương 2
1/ Tạo các vectơ và ma trận trong MATLAB với các biến:
4/ Cho ma trận:
Sử dụng các toán tử quan hệ để chuyển đổi các số hạng trong ma trận có giá trị > 10
và < -10 bằng 0.
5/ Tính giá trị của tín hiệu:
69
6/ Cho vectơ tần số: và các hàm truyền của
một bộ tích phân và của một phần tử trễ thời gian bậc 1 tương ứng:
thường gặp trong xử lý tín hiệu và kỹ thuật điều khiển. Hãy vẽ đồ thị biên độ của
các hàm truyền này trên 2 hình riêng biệt. Sử dụng các hàm semilogx, semilogy và
loglog để thay đổi kết quả biểu diễn đồ thị theo các kiểu trục khác nhau. Xác định
kiểu biểu diễn nào là tốt nhất.
7/ Tính và vẽ hàm x2 + y2 trong dải [-2,2]x[-1,1] sử dụng lưới có cỡ bước 0,2 theo
chiều x và 0,1 theo chiều y.
8/ Vẽ hình cầu có bán kính R = 3.
9/ Viết một chương trình MATLAB có tên circle_prog.m để thực hiện các hoạt
động sau: vẽ đường tròn có bán kính r = 3, trả về các kết quả tính chu vi và diện tích
hình tròn.(Hint: sử dụng lệnh axis equal để hiển thị đồ thị tốt hơn).
10/ Thay đổi chương trình trên để hiển thị kết quả với 5 số sau dấu phẩy. (Hint: có
thể dùng lệnh sprintf).
11/ Cho một hàm f(x) = x3/3+4x2+x-6 trong dải -1<x<3. Viết chương trình tìm
nghiệm phương trình trên bằng phương pháp bisection với sử dụng 2 dự đoán ban
đầu tại x = 0 và x = 3.
(Sử dụng lệnh input để cho phép nhập giá trị các tham số đầu vào từ bàn phím khi
chạy chương trình)
12/ Viết mã chương trình sử dụng vòng lặp để tính tích phân:
13/ Viết mã chương trình sử dụng vòng lặp while để tính gần đúng 2 dựa trên
phương pháp Newton dùng hệ thức đệ quy:
Quá trình lặp thực hiện cho đến khi xn thay đổi chỉ 0.0001.
70
14/ Viết chương trình tìm nghiệm ptr vi phân: y (t ) ay(t ) r với a = 1, r = 1 và
y(0) = 0 bằng phương pháp Euler biến đổi với cỡ bước h = 0.25. Xác định sai số so
với nghiệm giải tích tại 2 thời điểm t = 1 và t = 2.
15/ Tương tự bài tập 14 nhưng sử dụng phương pháp RK bậc 3.
16/ Tương tự bài tập 14 nhưng sử dụng phương pháp RK bậc 4.
17/ Cho sơ đồ mạch RC hình dưới:
Điện áp đầu ra của hệ thống tuân theo ptr vi phân tuyến tính:
Hãy viết chương trình tìm nghiệm của ptr này trong khoảng [0, 1] s bằng phương
pháp RK bậc 4, biết C = 4.7F và R = 10 k. Hàm u1(t) là hàm bậc đơn vị. Sau đó
so sánh kết quả với nghiệm thu được bằng việc sử dụng lệnh ode45.
71
Chương 3 Giới thiệu về Simulink
Với sự phát triển mạnh trong lĩnh vực mô phỏng hệ thống, MATLAB đã đưa
ra một bộ công cụ mô phỏng Simulink thuận tiện cho việc mô phỏng các hệ thống
động. Chương này sẽ giới thiệu những đặc điểm cơ bản nhất của Simulink giúp sinh
viên hiểu và áp dụng vào mô phỏng các hệ thống đơn giản từ đó có thể phát triển
mô phỏng cho các hệ thống phức tạp hơn.
Simulink cho phép mô phỏng hệ thống dựa trên sơ đồ khối để tìm nghiệm
phương trình vi phân mô tả nó. Nói cách khác một phương trình vi phân có thể
được chuyển đổi thành một sơ đồ khối để giải bằng Simulink.
72
3.2 Nguyên lý hoạt động của Simulink
Chương trình Simulink có thể được khởi tạo bằng lệnh simulink hoặc lệnh
open_system(‘simulink.mld’) trong cửa số lệnh MATLAB. Sau khi thực
hiện một cửa sổ trình duyệt thư viện các khối chức năng sẵn có trong Simulink cái
thường được hiển thị ở dạng biểu tượng.
Hình 3-2 Cửa sổ giao diện trình duyệt thư viện các khối chức năng của Simulink
Thư viện các khối chức năng được tổ chức thành các nhóm chức năng cho
mục đích mô phỏng khác nhau. Trong lĩnh vực mô phỏng hệ thống truyền thông,
ngoài thư viện các khối thư viện chung Simulink các thư viện hay được sử dụng đó
là Communications Blockset, Signal Processing Blockset và RF
Blockset.
73
chọn File – Open. Mô hình mới được lưu lại dưới một tên phù hợp với đuôi mở
rộng mdl (mdl=model) bằng việc lựa chọn File – Save As.
Xây dựng một hệ thống lấy tích phân làm ví dụ lưu trong tên tệp
test1.mdl. Trước hết lấy khối nguồn sóng hình sine Sine Wave làm nguồn tín
hiệu từ thư viện Sources bằng cách kéo khối đó vào cửa sổ mô hình được mở.
Tiếp theo để tích phân tín hiệu, lấy khối Integrator từ thư viện Continuous,
sau đó kết nối đầu ra của khối nguồn với đầu vào khối tích phân bằng sử dụng
chuột. Khối tích phân có biểu tượng 1
s vì liên quan đến khai triển Laplace của quá
trình tích phân. Hầu hết các khối chức năng tuyến tính được mô tả bởi khai triển
Laplace hoặc khai triển z (đối với tín hiệu rời rạc). Để hiển thị tín hiệu và kết quả
tích phân trên cùng một cửa sổ, khối ghép kênh Mux từ thư viện Signal Routing
được sử dụng và khối Scope từ thư viện Sinks được lựa chọn để hiển thị. Tín hiệu
nguồn và đầu ra khối tích phân được kết nối với 2 đầu vào khối ghép kênh và đầu ra
sau đó nối với đầu vào khối Scope. Mô hình sau khi kết nối có giao diện như trong
hình 3-3.
74
trong hình 3-4. Các giá trị phù hợp của các tham số sẽ được nhập vào trực tiếp hoặc
lựa chọn các thuộc tính phù hợp sẵn có trong giao diện thiết lập của khối. Lấy ví dụ
mô hình test1.mdl, các tham số khối nguồn sine có thể được thiết lập gồm tần số,
biên độ và pha ban đầu của tín hiệu sine. Tuy nhiên có một lựa chọn quan trọng cần
chú ý là kiểu tín hiệu Time based hoặc Sample based. Vì hệ thống tích phân xây
dựng cho tín hiệu liên tục nên cần lựa chọn Time based cho phù hợp. Riêng đối với
khối Scope để thiết lập tham số cần lựa chọn biểu tượng Parameters trên cửa số
hiển thị để mở giao diện thiết lập như cho thấy trong hình 3-5. Tại cửa sổ này số
lượng đồ thị hiển thị và lưu dữ liệu kết quả dễ dàng được thiết lập.
Hình 3-4 Các cửa sổ thiết lập tham số cho các khối chức năng trong mô hình
Ngoài ra, các thông tin về mô hình dạng văn bản cũng dễ dàng thêm vào
bằng cách kích đúp trên cửa sổ mô hình. Tương tự tên các khối chức năng trong mô
hình cũng có thể thay đổi theo ý muốn.
75
Hình 3-5 Cửa sổ thiết lập tham số trên khối Scope
76
hình 3-6. Các thiết lập cơ bản cho mô hình là lựa chọn các tham số cho bộ giải
phương trình vi phân và thời gian chạy mô phỏng. Ở chế độ mặc định thời gian mô
phỏng được xác định từ 0 đến 10 giây. Ngoài ra mục Data Import/Export cho
phép thiết lập và quản lý việc truy xuất dữ liệu kết quả trên cửa sổ quản lý biến
workspace.
Mô phỏng được thực hiện bằng lựa chọn lệnh menu Simulation – start
hoặc kích trực tiếp biểu tượng hình tam giác trên thanh công cụ. Khi chạy mô phỏng
kết quả sẽ được hiển thị trên khối Scope. Do các kết quả được lưu vào biến
S_test1_signals như thiết lập tham số cho khối Scope nên có thể sử dụng để
vẽ đồ thị kết quả trong MATLAB như đoạn lệnh cho dưới đây. Kết quả được cho
trong hình 3-7.
77
phương trình vi phân bằng Simulink là cần chuyển đổi phương trình vi phân thành
một hệ thống động và được mô tả bằng sơ đồ khối.
Để hiểu rõ cách thực hiện giải phương trình vi phân bằng Simulink ta hãy xét
một ví dụ đơn giản là một bài toán phương trình vi phân bậc hai như sau
Nghiệm của phương trình vi phân này có thể được giải dễ dàng và ta có
Để giải phương trình (3.1) bằng Simulink ta có thể sử dụng kỹ thuật lấy tích phân
các đạo hàm của nghiệm mong muốn bằng bộ tích phân trong Simulink như cho
thấy trong hình 3-8. Các bộ lấy tích phân sẽ phải được khởi tạo tương ứng với các
giá trị ban đầu mà đầu bài cho, cụ thể là bộ tích phân đầu tiên được đặt là 0 vì giá trị
tín hiệu đầu ra y (t ) tại thời điểm 0 (bắt đầu của mô phỏng) phải là 0 theo điều kiện
ban đầu. Bộ tích phân thứ hai được đặt là 1 vì giá trị tín hiệu đầu ra y(t) cần là 1 tại
thời điểm 0 theo điều kiện ban đầu. Tuy nhiên để xây dựng mô hình thực hiện theo
đúng phương trình vi phân (3.1) ta cần kết nối đầu ra bộ tích phân thứ hai với đầu
vào bộ tích phân đầu tiên có đổi sang dấu âm. Việc chuyển dấu âm của đầu ra y(t)
được thực hiện bằng việc sử dụng khối khuyếch đại Gain trong thư viện Math
Operations với hệ số khuyếch đại bằng -1. Hoạt động này tương đương với việc tín
hiệu đầu vào được nhân với hệ số -1 để chuyển đổi dấu. Để hiển thị kết quả khối
Scope sẽ được sử dụng với đầu vào được kết nối với đầu ra bộ tích phân thứ hai.
Mô hình Simulink hoàn chỉnh để giải phương trình (3.1) được cho thấy trong hình
3-9. Sau khi chạy mô hình Simulink kết quả hiển thị trên đồ thị khối Scope là đường
cosine giống như nghiệm chính xác của phương trình (Hình 3-10).
78
Hình 3-9 Mô hình Simulink để giải phương trình vi phân (3.1)
Hình 3-10 Kết quả giải phương trình bằng Simulink trên khối Scope
Để hiểu rõ cách thực hiện giải phương trình vi phân bằng Simulink, một số
ví dụ các phương trình vi phân khác nhau được cho dưới đây.
Ví dụ 3.1: Giải phương trình vi phân y (t ) y(t ) với điều kiện ban đầu y(0) = 1. Mô
hình Simulink và kết quả giải phương trình được cho trong hình 3-11.
79
Hình 3-11 (a) Mô hình Simulink và (b) kết quả giải phương trình vi phân trong ví dụ 3.1
Ví dụ 3.2: Giải phương trình vi phân y(t ) e t 2 y(t ) với điều kiện ban đầu y(0) =
1 và y’(0) = 0. Mô hình Simulink và kết quả giải phương trình được cho trong hình
3-12.
Hình 3-12 (a) Mô hình Simulink và (b) kết quả giải phương trình vi phân trong ví dụ 3.2
80
3.4 Đơn giản hóa hệ thống Simulink
Trong Simulink có một số cách giúp đơn giản hóa hệ thống Simulink đặc
biệt đối với những mô hình có độ phức tạp cao. Thêm nữa các cách này cũng giúp
việc quản lý và phân cấp sắp xếp hệ thống một cách tốt hơn.
Hình 3-13 Khối Fcn và giao diện thiết lập tham số cho khối
Khi sử dụng khối Fcn cần chú ý rằng tín hiệu đầu vào của khối luôn được
gọi là u mà không cần quan tâm nó có thể được ký hiệu như thế nào trong hệ thống.
81
Tín hiệu đầu vào có thể là một đại lượng vô hướng hoặc vector. Nếu nhiều tín hiệu
phải được đưa vào một khối thì chúng có thể được kết hợp lại trước thành một tín
hiệu vector bằng việc sử dụng khối Mux. Với các tín hiệu đầu vào vector, các thành
phần được xác định bằng việc đánh chỉ số u(1), u(2), … trong khối. Tín hiệu đầu ra
luôn là một đại lượng vô hướng.
Hình 3-14 Xây dựng phân hệ Subsystem để đơn giản hóa mô hình Simulink
Một cách khác để tạo ra khối Subsystem bằng cách lấy khối Subsystem từ
thư viện Ports&Subsystems. Kích đúp vào khối để mở cửa sổ mô hình và có thể
xây dựng mô hình cho khối subsystem trong cửa sổ này. Khi khối subsystem được
tạo ra, các khối cổng đầu vào In1 và đầu ra Out1 cũng được thêm vào mô hình.
Các khối này cũng có thể lấy từ thư viện Sources và Sinks tương ứng. Số lượng
công đầu vào và đầu ra tùy thuộc vào mô hình phân hệ xây dựng.
Việc xây dựng các subsystem cho phép tổ chức hệ thống Simulink ở dạng
phân cấp cho mô hình mô phỏng như đề cập trong chương 1 một cách dễ dàng. Việc
82
duyệt từ các subsystem mức dưới lên mô hình hệ thống chính có thể thực hiện qua
nút biểu tượng hình mũi tên trên thanh công cụ. Trong một số trường hợp các
subsystem cũng cần tạo giao diện để thiết lập tham số giống như các khối chức năng
cơ bản khác. Để tạo giao diện thiết lập tham số cho khối subsystem, lựa chọn menu
Edit – Mask subsystem. Khi các khối subsystem được xây dựng, các khối này
có thể được tập hợp lại để thành một thư viện cho mục đích riêng của người sử
dụng và được sử dụng giống như các thư viện khác trong Simulink.
- Sử dụng khối To Workspace trong thư viện Sinks, một tên biến có thể
được thiết lập để tạo ra trong MATLAB sau khi chạy mô phỏng. Các dữ
liệu được ghi trong biến tùy thuộc vào kết nối đầu vào của khối trong mô
hình Simulink.
- Trong thiết lập tham số cấu hình Simulink: vào các tên biến phù hợp
trong khối tham số ở mục Data Imporrt/Export - Save to
Workspace.
- Sự dụng phần thiết lập tham số trong khối Scope/Data History như
đã đề cập trong phần 3.2.
Ngoài ra các biến sử dụng trong chương trình Simulink có thể được định
nghĩa trong MATLAB bằng việc viết một chương trình m-file. Khi các tên biến và
giá trị của biến được định nghĩa trước thì các biến này có thể được sử dụng thay cho
các giá trị cụ thể trong phần thiết lập tham số cho các khối trong mô hình. Như vậy
việc thay đổi giá trị cho các biến có thể thực hiện qua chương trình MATLAB thay
cho việc thiết lập ở từng khối của Simulink.
83
lập sự phụ thuộc hệ thống được mô phỏng lên các tham số này. Việc khảo sát này
có thể được thực hiện tự động qua MATLAB.
Gọi chương trinh Simulink qua MATLAB: việc gọi này có thể được thực
hiện ở ngoài cửa sổ lệnh hoặc trong một chương trình MATLAB qua sử dụng hàm
sim. Thêm nữa cơ chế này được sử dụng để gọi một chương trình mô phỏng
Simulink từ MATLAB mà không cần phải khởi tạo Simulink cho phép tốc độ thực
hiện nhanh hơn. Cách sử dụng cơ bản hàm sim được cho thấy qua cú pháp sau:
>> [t,x,y] = sim('system',[starttime, endtime]);
Tham số 'system' là tên của hệ thống Simulink để được thực hiện, vector tham số
[starttime, endtime] xác định thời điểm bắt đầu và kết thúc của mô phỏng.
Vector trả về [t,x,y] xuất hiện theo cùng trật tự trong cửa sổ tham số Simulink
tại mục Data Import/Export – Save to workspace.
Thiết lập các tham số Simulink bằng hàm set_param cho phép định nghĩa
các tham số của hệ thống ở bên ngoài chương trình. Cú pháp cơ bản của hàm
>> set_param('obj','parameter1',value1,'parameter2',…);
trong đó 'obj' là tên một hệ thống hoặc tên khối có đường dẫn. Một số ví dụ sử
dụng hàm set_param được cho dưới đây:
84
% Ví dụ về quá trình lặp lại mô phỏng Simulink
for i=1:iterations
% Set the block parameters with set_param
% for each new iteration.
reciprocalmass = num2str(1/M(i));
set_param('s_denon3/invm','Gain',reciprocalmass);
b = num2str(B(i));
set_param('s_denon3/Factorb','Gain',b);
c = num2str(Fc);
set_param('s_denon3/Factorc','Gain',c);
[t,x,y] = sim('s_denon3', [0,tm]);
Y = [Y,y];
end;
3.5.3 Truyền các biến thông qua các biến toàn cục
Một khả năng nữa để liên lạc giữa các hàm MATLAB và Simulink đó là khai
báo các tham số hay biến toàn cục. Cách khai báo đơn giản là:
global x y z p1 a2 ...
Nếu khai báo này được thêm vào trong hàm MATLAB thì các biến này cũng có thể
được sử dụng dựa trên truyền các tham số cho Simulink để được sử dụng trong hệ
thống mô phỏng.
Khả năng này thực sự rất thuận tiện nhưng nó che giấu một số mối nguy. Về
cơ bản để tránh các ảnh hưởng không mong muốn trong tất cả các ngôn ngữ lập
trình bậc cao bao gồm cả MATLAB, các biến toàn cục chỉ nên được sử dụng trong
các trường hợp cấp thiết. Dưới các điều kiện thông thường việc sử dụng chúng nên
tránh.
85
Câu hỏi/bài tập chương 3
1/ Thiết kế một hệ thống Simulink để giải bài toán giá trị ban đầu:
Biến đổi hệ thống để mô phỏng một hàm nhiễu loạn (vế bên phải 0) được xác
định là e-t
2/ Giải bài toán giá trị ban đầu:
86
Chương 4 Mô phỏng tín hiệu và quá trình thu
phát
Nội dung trong chương này sẽ tập trung vào mô phỏng các quá trình xảy ra
tại hai khối cơ bản trong hệ thống truyền thông là khối phát và khối thu tín hiệu.
Mô phỏng hệ thống truyền thông cơ bản cũng được phân chia thành các quá trình
mô phỏng như mô hình hệ thống trong hình 4-1. Tùy thuộc vào mục đích mô phỏng
87
và mức độ phức tạp của mô hình mô phỏng mà các khối cơ bản được chi tiết hóa
theo các mức phân cấp như đã đề cập trong chương 1. Sơ đồ khối hệ thống truyền
thông trong hình 1-5 cho thấy các quá trình cơ bản xảy ra trong các bộ thu phát tín
hiệu và những vấn đề cơ bản để mô phỏng các quá trình này sẽ đề cập chi tiết trong
chương này.
x(t ) r(t ) cos2f ct (t ) Re r(t )e j (2fct (t )) Re r(t )e j (t ) e j (2fct ) (4.1)
trong đó r(t) là điều chế biên độ, (t) là điều chế pha của tín hiệu và fc là tần số sóng
mang. Tín hiệu
~
x (t ) r (t )e j (t ) (4.2)
chứa cùng thông tin như x(t) và được gọi là tín hiệu tương đương băng gốc hoặc
đường bao phức của tín hiệu thông dải x(t). Như vậy ~x (t ) là dạng tương đương băng
gốc hay thông thấp của x(t) có cùng độ rộng băng tần B nhưng được biểu diễn ở
dạng phức.
Trong điều chế tín hiệu số, các tín hiệu điều chế biên độ và điều chế pha gồm
có cả hai thành phần đồng pha và vuông pha luôn có thể được mô tả theo dạng:
và có phổ tương ứng là khai triển Fourier của x(t) như sau:
88
X(f )
1
P f f c jQ f f c P f f c jQ f f c (4.4)
2
trong đó p(t) và q(t) là các thành phần đồng pha và vuông pha của tín hiệu có độ
rộng băng tần B, P(f) và Q(f) là phổ của p(t) và q(t) tương ứng. Tương tự như (4.1),
tín hiệu điều chế có thể viết thành:
x (t )e j 2fct
x(t ) Re ~ (4.5)
trong đó ~x (t ) là tín hiệu tương đương băng gốc được xác định như sau:
~
x (t ) p(t ) jq(t ) (4.6)
Như vậy trong mô phỏng tín hiệu x(t) có thể được mô tả tốt bởi đường bao phức
~
x (t ) mà không làm mất đi tín hiệu gốc ban đầu. Tín hiệu đường bao phức có thể
được biểu diễn theo một cách khác như sau:
~
x (t ) a(t )e j (t ) (4.8)
~ 2X ( f fc ) khi f f c 0
X( f ) (4.9)
0 còn lai
Như vậy, phổ của tín hiệu tương đương băng gốc có thể coi như phần phổ dương
của tín hiệu thông dải và được dịch xuống băng gốc một lượng bằng fc như được mô
tả trong hình 4-2
X(f) ~
X( f )
X(f)
Hình 4-2 Phổ của tín hiệu thông dải và phổ của tín hiệu tương đương băng gốc
89
Tương ứng với các loại tín hiệu được sử dụng trong mô phỏng, có hai mô
hình mô phỏng tương ứng đó là:
- Mô hình thông dải và
- Mô hình tương đương băng gốc
Trong mô phỏng hệ thống truyền thông sử dụng mô hình thông dải như được
mô tả tổng quát trong hình 4-3 trong đó các tín hiệu bản tin gốc ban đầu sẽ được
điều chế bởi sóng mang fc để tạo ra tín hiệu thông dải sp tại đầu ra bộ phát. Vì tín
hiệu thông dải là tín hiệu thực nên các hàm mô tả các thành phần khác trong hệ
thống như hàm đáp ứng kênh hp(t), nhiễu cộng np(t) và hàm lọc đều có giá trị thực
tương ứng. Tín hiệu thu được rp(t) tại bộ thu sẽ được giải điều chế để chuyển đổi tín
hiệu thông dải về tín hiệu băng gốc khôi phục tín hiệu ban đầu. Tuy mô hình thông
dải mô tả hoạt động sát với hệ thống thực tế nhưng mô phỏng sử dụng mô hình này
sẽ đòi hỏi khối lượng tính toán lớn.
Kênh
hp(t)
Hình 4-3 Mô hình thông dải dạng rút gọn và mở rộng với quá trình điều chế và giải điều
chế.
Trong mô phỏng hệ thống truyền thông, các tín hiệu hay hàm thời gian đều
cần được lấy mẫu. Để đảm bảo điều kiện lấy mẫu, phổ của tín hiệu thông dải nằm
trong dải tần fc – B/2 < f < fc + B/2 sẽ cho thấy rằng tần số lấy mẫu đòi hỏi cỡ bậc 2fc
+ B. Ở đây B được xem là độ rộng băng tần của tín hiệu băng gốc ban đầu. Do vậy
mô hình tương đương băng gốc được sử dụng trong hầu hết các mô phỏng hệ thống
truyền thông hiện nay. Ở mô hình tương đương băng gốc như mô tả trong hình 4-4,
90
các tín hiệu là tín hiệu tương đương băng gốc chỉ xét đương bao phức của sóng
mang chứ không xem xét đầy đủ cả sóng mang trong tín hiệu. Vì vậy các hàm trong
mô hình tương đương băng gốc bao gồm đáp ứng xung của kênh h(t), nhiễu cộng
n(t) và các hàm lọc đều được biểu diễn ở dạng phức. Cũng tương tự như các tín hiệu
mô tả ở trên, các hàm phức quan hệ với các hàm trong mô hình thông dải như sau:
hp (t ) 2 Re h(t )e j 2fct (4.10a)
n p (t ) Re n(t )e j 2fct (4.10b)
r (t ) Rer(t )e
p
j 2fct
(4.10c)
Đối với mô hình tương đương băng gốc, tần số lấy mẫu đòi hỏi trong mô phỏng hệ
thống chỉ cỡ bậc độ rộng băng tần B của tín hiệu, do vậy mô hình này gọn nhẹ và
thuận tiện hơn khi thực hiện mô phỏng.
Kênh
h(t)
Cũng giống như mô tả tín hiệu, mô hình hóa hay mô phỏng hệ thống truyền
thông có thể được thực hiện trong miền thời gian hoặc miền tần số. Trong miền thời
gian, tín hiệu tại bộ thu được xác định:
r (t ) s(t ) h(t ) n(t ) (4.11)
trong đó * là phép tích chập trong miền thời gian. Còn trong miền tần số, tín hiệu
thu được xác định:
R( f ) S ( f ) H ( f ) N ( f ) (4.12)
trong đó R(f), S(f), H(f) và N(f) là các khai triển Fourier của r(t), s(t), h(t) và n(t)
tương ứng.
91
xs (t ) x(t ) p(t ) (4.13)
với
p(t ) t nT
n
s (4.14)
trong đó chuỗi xung kim p(t) được gọi là hàm lấy mẫu, x(t) là tín hiệu liên tục về
thời gian và xs (t ) x(nTs ) x[n] là tín hiệu rời rạc về thời gian với Ts là chu kỳ lấy
mẫu và f s Ts1 là tốc độ lấy mẫu.
Hàm xs (t ) cũng là một chuỗi xung kim có trọng số bằng với giá trị của các mẫu x(t)
hay
xs (t ) xnT t nT
n
s s (4.15)
X f nf
1
Xs( f ) s (4.17)
Ts n
Như vậy X s ( f ) là một hàm tuần hoàn gồm tổng các bản sao X(f) bị định cỡ và bị
dịch trong miền tần số.
Để tránh lỗi chồng phổ (aliasing), quá trình lấy mẫu một tín hiệu băng gốc có
độ rộng băng tần B sẽ cần phải thỏa mãn điều kiện lấy mẫu Nyquist tức f s 2B hay
92
tần số lấy mẫu phải lớn hơn hai lần độ rộng băng tần của tín hiệu gốc. Nếu điều kiện
lấy mẫu không thỏa mãn thì hiện tượng chồng phổ xảy ra và không khôi phục lại
được tín hiệu gốc ban đầu. Trong mô phỏng tần số lấy mẫu cần được lựa chọn phù
hợp để giảm sai số chồng phổ nhưng tránh tăng thời gian chạy mô phỏng.
Trong một số trường hợp mô phỏng hệ thống có các độ rộng băng tần khác
nhau, quá trình chuyển đổi tốc độ mẫu sẽ được đòi hỏi tại một số giai đoạn mô
phỏng. Sự chuyển đổi tốc độ mẫu đơn giản là tốc độ lấy mẫu dạng sóng sẽ được
tăng lên hoặc giảm đi. Quá trình chuyển đổi lên một tốc độ lấy mẫu cao hơn gọi là
quá trình tăng mẫu (upsampling) đòi hỏi sử dụng kỹ thuật nội suy (interpolation),
còn quá trình chuyển đổi xuống một tốc độ thấp hơn được gọi là quá trình giảm mẫu
(downsampling).
Quá trình giảm mẫu được thực hiện tại biên giữa phần tín hiệu băng rộng và
băng hẹp và được mô tả trong hình 4-6. Tín hiệu giảm mẫu có chu kỳ lấy mẫu lớn
hơn so với chu kỳ mẫu ban đầu và biểu diễn bởi
trong đó Td là chu kỳ lấy mẫu sau giảm mẫu và lớn hơn M lần so với chu kỳ lấy
mẫu ban đầu Ts, tương ứng với tần số lấy mẫu giảm M lần. Quá trình giảm mẫu có
thể được thực hiện đơn giản bằng việc lựa chọn các mẫu với khoảng cách mẫu tăng
M lần tương ứng từ tập mẫu tín hiệu ban đầu.
93
Quá trình tăng mẫu được thực hiện tại biên giữa phần tín hiệu băng hẹp và
băng rộng và được mô tả trong hình 4-7. Tín hiệu tăng mẫu có chu kỳ lấy mẫu nhỏ
hơn so với chu kỳ mẫu ban đầu và biểu diễn bởi
trong đó Tu là chu kỳ lấy mẫu sau tăng mẫu và nhỏ hơn M lần so với chu kỳ lấy mẫu
ban đầu Ts, tương ứng với tần số lấy mẫu tăng M lần. Tuy nhiên khác với quá trình
giảm mẫu, quá trình tăng mẫu đòi hỏi việc xác định giá trị các mẫu mới tại các thời
điểm nằm giữa các mẫu ban đầu. Việc tính toán các mẫu mới giữa hai mẫu đã biết
được thực hiện bằng phương pháp nội suy.
Phép nội suy là một hoạt động quan trọng trong kỹ thuật đa tốc độ và cho
một số mục đích trong mô phỏng. Có nhiều kỹ thuật nội suy bao gồm:
94
- Nội suy tuyến tính: đây là kỹ thuật nội suy đơn giản nhất khi ước tính các
điểm mẫu mới nằm giữa hai mẫu đã biết bằng một hàm tuyến tính.
- Nội suy đa thức: đây là kỹ thuật nội suy bậc cao khi ước tính các điểm
mẫu mới nằm giữa hai mẫu đã biết bằng một hàm đa thức bậc cao. Các hệ
số của đa thức được ước tính từ tập mẫu ban đầu.
- Nội suy spline: phương pháp này được coi như một dạng biến đổi của nội
suy đa thức bậc cao trong đó bao gồm một tập các hàm đa thức khác nhau
được sử dụng để ước tính các điểm mới trên các khoảng mẫu khác nhau
đảm bảo với sai số ước tính là nhỏ nhất trên khoảng đó.
- Nội suy hàm sinc: phép nội suy này được sử dụng cho tín hiệu mẫu bị
giới hạn băng tần, đây cũng được coi là phép nội suy bộ lọc thông thấp
trong đó các mẫu được nội suy qua phép tích chập với đáp ứng xung hàm
sinc.
Để thực hiện phép nội suy trong MATLAB, nhiều hàm trong Signal
Processing Toolbox có thể được sử dụng bao gồm:
- hàm interp1 thực hiện nội suy 1 chiều với các phương pháp nội suy
khác nhau có thể được thiết lập.
yi = interp1(x,Y,xi) % xác định yi theo xi từ cặp x,Y
- hàm interp thực hiện nội suy để tăng tốc độ mẫu lên một số nguyên lần
bằng phương pháp nội suy bộ lọc thông thấp.
y = interp(x,r) % tăng tốc độ mẫu của x lên r lần
Một ví dụ về sử dụng các hàm nội suy này được cho trong đoạn mã MATLAB dưới
đây:
95
1
0.8
0.6
0.4
0.2
0
Y
-0.2
-0.4
-0.6
Original
-0.8 Linear
Spline
-1
0 1 2 3 4 5 6 7 8 9 10
X
1 1.5
0.8
0.6 1
0.4
0.2 0.5
-0.2 0
-0.4
-0.6 -0.5
-0.8
-1 -1
1 2 3 4 5 6 7 8 9 10 0 5 10 15 20 25 30 35 40
Hình 4-9 Ví dụ về tăng mẫu sử dụng hàm interp trong MATLAB. (a) Tín hiệu mẫu ban
đầu, (b) Tín hiệu được tăng mẫu.
96
- Quá trình lọc: Mô phỏng quá trình lọc có thể được thực hiện hiệu quả
trong miền tần số qua khai triển Fourier rời rạc (DFT)
- Phân tích phổ: sử dụng phân tích các tín hiệu trong miền tần số.
Trong mô phỏng các tín hiệu biểu diễn đều ở dạng rời rạc về thời gian nên
việc chuyển đổi qua lại giữa hai miền thời gian và tần số được thực hiện bởi cặp
biến đổi Fourier rời rạc (DFT) và khai triển Fourier ngược rời rạc (IDFT). Khai
triển Fourier của một vector mẫu rời rạc f[k] có N mẫu được thực bởi DFT như sau:
N 1 2
F n f k e
j nk
N
với (n = 0N-1) (4.20)
k 0
Chú ý các hệ số F[n] là phức. Trong MATLAB cặp biến đổi này được thực hiện qua
hàm fft và ifft. Ngoài các hàm này, một số hàm khác về biến đổi Fourier trong
MATLAB cũng hay được sử dụng trong biểu diễn phổ như hàm fftshift. Một ví
dụ về sử dụng hàm fft để biểu diễn phổ tín hiệu được cho trong đoạn mã dưới đây.
x Xf
1 1
0.8 0.8
Amplitude
Amplitude
0.6 0.6
0.4 0.4
0.2 0.2
0 0
0 50 100 150 200 250 0 50 100 150 200 250
Number of samples Number of samples
Hình 4-10 Ví dụ thực hiện khai triển Fourier sử dụng hàm fft
97
Trong mô phỏng, đại lượng mật độ phổ công suất (PSD) thường hay được sử dụng
trong phân tích một tín hiệu. Một hàm tính toán PSD có thể dễ dàng được xây dựng
từ hàm fft như cho ở đoạn mã dưới đây.
Ns = length(x);
Ts = t(2)-t(1);
-2
10
0.8 -4
10
Amplitude
PSD
0.6
-6
0.4 10
0.2
-8
0 10
0 50 100 150 200 250 -0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
Sample index Frequency
Khối đầu tiên trong hệ thống thông tin để mô phỏng đó chính là nguồn tín
hiệu. Có hai kiểu nguồn cơ bản đó là: nguồn tín hiệu tương tự và nguồn tín hiệu số.
98
nguồn tín hiệu tương tự cụ thể nào đó. Các tín hiệu đo thử này có thể được sử dụng
như các tín hiệu đầu vào các khối mã hóa nguồn hoặc khối điều chế trong hệ thống
truyền dẫn tương tự.
Nguồn đơn tần thường là tín hiệu đo kiểm phổ biến được sử dụng trong hệ
thống thông tin. Trong mô phỏng, tín hiệu đơn tần này sẽ cần được lấy mẫu và biểu
diễn ở dạng rời rạc về thời gian
Chuỗi thời điểm lấy mẫu t k luôn có khoảng cách bằng nhau trong mô phỏng và
bằng với chu kỳ lấy mẫu Ts hay tk = kTs. Tần số f0 và biên độ A có thể được biến đổi
để thu được đáp ứng tần và đáp ứng công suất hay biên độ của hệ thống. Trong các
mô hình lý thuyết, tham số pha thường được giả sử có phân bố đều trên khoảng
[0, 2]. Tuy nhiên, đáp ứng của một hệ thống thường không nhạy cảm với giá trị
của , do vậy trong mô phỏng được cố định tại một số giá trị bất kì. Trong các hệ
thống thông dải, tần số f0 được đo từ tần số trung tâm fc. Tín hiệu ở dạng liên tục là
x(t ) A cos2 f c f 0 t (4.23)
và tín hiệu đường bao phức của tín hiệu này được lấy mẫu để cho mô phỏng sẽ là
trong đó f s Ts1 là tần số lấy mẫu. Chú ý fs thường được thiết lập ở giá trị bằng 8
đến 16 lần f0 để đảm bảo biểu diễn chính xác dạng sóng và phổ của tín hiệu.
Một tập các tín hiệu đơn tần được gọi là tín hiệu đa tần cũng thường được sử
dụng để đánh giá méo điều chế tương hỗ trong các hệ thống phi tuyến. Đặc trưng
biểu diễn đường bao phức cho tín hiệu đa tần có dạng
M
f
x (k ) An exp j 2k n j n
~ (4.25)
n 1 fs
trong đó An, n và fn đặc trưng cho biên độ, pha và tần số của tín hiệu thứ n:
xn (t ) An cos2 f c f n t n (4.26)
Trừ phi có một mối quan hệ cụ thể đã biết giữa n, đại lượng này có thể được giả sử
độc lập nhau và có phân bố đều trên khoảng [0, 2]. Đoạn mã MATLAB dưới đây
cho ví dụ về cách tạo một tín hiệu đa tần và biểu diễn phổ của nó.
99
% Chương trình ví dụ tạo tín hiệu đa tần và vẽ phổ
% Thiết lập các tham số
A1 = 3; % amplitude
f1 = 500; % frequency [Hz]
phi1 = -pi/4; % Phase [rad]
A2 = 2; % amplitude
f2 = 300; % frequency [Hz]
phi2 = 0; % Phase [rad]
N = 2^6; % number of samples
T0 = 0; % start time [s]
Tf = 10e-3; % end time [s]
Ts = (Tf-T0)/(N-1); % Tính chu kỳ mẫu
fs = 1/Ts; % Tần số lấy mẫu [Hz]
% Tạo tín hiệu đa tần
t = T0:Ts:Tf;
x = A1*cos(2*pi*f1*t+phi1)+A2*cos(2*pi*f2*t+phi2);
% Biểu diễn kết quả
figure(1);
plot(t*1e3,x,'o-');
xlabel('Time (ms)');
ylabel('Amplitude');
title('Vi du ve tao tin hieu hinh sin');
% Ước tính phổ
figure(2);
[f,Xf] = spectrocal(t,x);
semilogy(f,Xf);
xlabel('Frequency (Hz)');
ylabel('PSD');
title('Pho tin hieu da tan');
grid;
axis([0 2000, 3 1e-4]);
4
0
3 10
2
-1
1 10
Amplitude
PSD
0
-2
-1 10
-2
-3
-3 10
-4
-4
-5 10
0 1 2 3 4 5 6 7 8 9 10 0 200 400 600 800 1000 1200 1400 1600 1800
Time (ms) Frequency (Hz)
Hình 4-12 Ví dụ nguồn tín hiệu tương tự đa tần và phổ tương ứng
100
Nguồn tín hiệu số trong mô phỏng có thể được đặc trưng bởi ba tham số
chính:
- Kiểu mẫu tự hay danh sách các ký hiệu thông tin (symbol) có thể mà
nguồn sẽ tạo ra. Trong hệ thống viễn thông, tập kiểu mẫu tự thường bao
gồm M ký hiệu với M = 2n trong đó n là một số nguyên được biểu diễn
như A = {0, 1, …, M-1} hoặc A = { 1, 3, …, (M-1)}. Trường hợp
đơn giản nhất và thường sử dụng với M = 1 ta có A = {0, 1} cho các
nguồn nhị phân và các ký hiệu lúc này được gọi là bit. Ngoài ra các ký
hiệu có thể có giá trị phức cũng được sử dụng, ví dụ như A = { 1, j}.
- Xác suất ưu tiên phát hay tần số xuất hiện tương đối của mỗi ký hiệu mà
nguồn tạo ra. Nguồn số sinh ra các ký hiệu trong bảng mẫu tự một cách
ngẫu nhiên giống với thực tế. Ví dụ nguồn nhị phân cho mô phỏng sinh ra
các bít 0 và 1 với xác suất bằng nhau.
- Tốc độ ký hiệu (symbol rate) tức số lượng ký hiệu thông tin mà nguồn
sinh ra trong một đơn vị thời gian (baudrate). Tốc độ này quan hệ với tốc
độ bít (Rb) như sau:
Rb R. log2 M (4.27)
Như vậy trong mô phỏng các nguồn số thường tạo ra một cách ngẫu nhiên,
do đó nó sẽ đòi hỏi các hàm tạo tín hiệu ngẫu nhiên khi thực hiện mô phỏng.
101
tác động của nhiễu. Tập hợp các dạng sóng biểu thị các biến đổi ngẫu nhiên được
mô phỏng sử dụng các biến và các quá trình ngẫu nhiên. Đối với mục đích phân
tích, tập các dạng sóng có thể được mô hình hóa bởi một quá trình ngẫu nhiên x(t),
trái lại tập các bít nhị phân có thể được mô hình hóa bởi một chuỗi ngẫu nhiên
{A(k)}. Lưu ý, trong mô phỏng các quá trình ngẫu nhiên cũng được lấy mẫu.
Trong khi mô hình quá trình ngẫu nhiên mô tả một tập các hàm thời gian, thì
giá trị tức thời của một tập có thể được mô hình hóa bởi một biến ngẫu nhiên. Ví dụ
giá trị tức thời của x(t) tại t = t0 có thể được mô hình hóa như một biến ngẫu nhiên
có giá trị nhị phân với các xác suất p1 và p2, trong đó p1 là xác suất để x(t) tại t = t0
có giá trị +1 và p2 là xác suất để x(t) tại t = t0 có giá trị -1. Phân bố biên độ tức thời
của nhiễu n(t) có thể được mô hình hóa như một biến ngẫu nhiên liên tục có một
hàm mật độ xác suất phù hợp. Do vậy các kiến thức về toán xác suất thống kê sẽ
cung cấp cơ sở về các mô hình các biến và các quá trình ngẫu nhiên sử dụng trong
mô phỏng hệ thống truyền thông.
Trong mô phỏng hệ thống truyền thông, các mô hình cho các biến ngẫu
nhiên hay được sử dụng trong mô phỏng bao gồm mô hình phân bố đều và mô hình
phân bố chuẩn.
- Phân bố đều: trong đó tất cả các giá trị trong một khoảng xác định có
cùng xác suất và được biểu diễn qua hàm mật độ xác suất
1
f ( x) khi a x b (4.28)
ba
trong đó a và b là giá trị nhỏ nhất và lớn nhất tương ứng trong khoảng
giá trị. Trong mô phỏng, các giá trị mẫu từ phân bố đều có thể được sử
dụng để tạo ra các mẫu từ các phân bố xác suất khác.
- Phân bố chuẩn (Gauss): có biến ngẫu nhiên được mô tả qua hàm mật độ
xác suất
1 x 2
f ( x) exp cho - < x < (4.29)
2 2
2
trong đó và 2 là giá trị trung bình và phương sai của hàm phân bố. Mô
hình phân bố này thường được sử dụng trong mô phỏng nhiễu và cũng
được sử dụng như một sự gần đúng cho một số phân bố khác.
102
Phân bố Rayleigh: có biến ngẫu nhiên X X 12 X 22 , trong đó X1 và X2
12
-
là các biến ngẫu nhiên Gauss độc lập nhau có trung bình bằng 0 và
phương sai 2, được mô tả qua hàm mật độ xác suất
x x2
f ( x) exp 2 cho x > 0 (4.30)
2 2
Mô hình phân bố này được sử dụng trong mô hình kênh pha đinh, đường
bao của nhiễu Gauss băng hẹp.
Trong MATLAB có các hàm sẵn có để tạo ra các số ngẫu nhiên theo các
hàm phân bố khác nhau.
120
100
80
60
40
20
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Hình 4-13 Biểu đồ mật độ xác suất phân bố đều của 1000 mẫu.
103
% Ví dụ tạo số ngẫu nhiên phân bố chuẩn trong MATLAB
% Tạo các số ngẫu nhiên phân bố chuẩn có trung bình bằng 0
% và độ lệch chuẩn bằng 1
>> x = randn(m,n)
% Tạo các số ngẫu nhiên phân bố chuẩn có trung bình bằng m
% và phương sai v
>> x = m + sqrt(v) * randn(m,n)
% Tạo vectơ hàng 1000 số ngẫu nhiên phân bố chuẩn có trung bình 0
% và độ lệch chuẩn bằng 1
>> x = randn(1,1000);
>> hist(x,10);
300
250
200
150
100
50
0
-4 -3 -2 -1 0 1 2 3 4
Hình 4-14 Biểu đồ mật độ xác suất phân bố chuẩn của 1000 mẫu.
- Tạo các số ngẫu nhiên phân bố Rayleigh: sử dụng hàm rand hoặc randn
104
Simulated and Theoretical Rayleigh PDF for variance = 0.5
1.4
Simulated PDF
Theoretical PDF
1.2
0.8
P(r)--->
0.6
0.4
0.2
0
-0.5 0 0.5 1 1.5 2 2.5 3 3.5
r --->
Hình 4-15 Mật độ xác suất của biến ngẫu nhiên phân bố Rayleigh
% Hàm randint
% Tạo ma trận mxn các số 0 và 1 có xác suất bằng nhau
>> x = randint(m,n);
% Ví dụ:
>> x = randint(1,10)
x =
0 0 1 1 1 0 1 1 0 0
% Tạo ma trận mxn có các giá trị phân bố đều trong dải từ 0 đến 7
>> x = randint(m, n, [0, 7]); hoặc
>> x = randint(m,n, 8);
% Hàm randsrc
% Tạo ma trận mxn các số -1 và 1 có xác suất bằng nhau
>> x = randsrc(m,n);
% Ví dụ:
>> x = randsrc(1,10)
x =
-1 1 1 -1 -1 -1 -1 1 1 1
% Tạo ma trận mxn có các giá trị phân bố đều trong tập {-3,-1,1,3}
>> x = randsrc(10,10,[-3 -1 1 3]); hoặc
>> x = randsrc(10,10,[-3 -1 1 3; .25 .25 .25 .25]);
105
4.3 Mã hóa
Quá trình mã hóa trong hệ thống truyền thông được phân ra thành các loại cơ
bản bao gồm: mã hóa nguồn, mã hóa đường và mã hóa kênh.
Hình 4-16 Quá trình PCM thực hiện chuyển đổi tín hiệu tương tự sang số (ADC)
Một chương trình MATLAB thực hiện quá trình PCM lượng tử hóa đều được viết
dưới dạng hàm function được cho dưới đây và ví dụ kết quả sử dụng hàm này được
cho trong hình 4-17.
106
% Ví dụ về mã hóa nguồn sử dụng quá trình PCM lượng tử hóa đều
function [code,xq,sqnr] = uniform_pcm(x,M)
% x = input sequence
% M = number of quantization levels
% code = the encoded output
% xq = quantized sequence before encoding
% sqnr = signal to quantization noise ratio in dB
xq = zeros(size(x));
xcode = xq;
for k = 1:M
ind = find(x > Mq(k)-delta/2 & x <= Mq(k)+delta/2);
xq(ind) = Mq(k);
xcode(ind) = Ml(k);
end
sqnr = 20*log10(norm(x)/norm(x-xq)); % Tính tỉ số trên nhiễu lượng tử
code = de2bi(xcode,Nb,'left-msb'); % Chuyển đổi sang từ mã nhị phân
0.5
Amplitude
-0.5
-1
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Time (ms)
0.5
Amplitude
-0.5
-1
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Time (ms)
Hình 4-17 Ví dụ kết quả sử dụng hàm uniform_pcm cho quá trình ADC
Quá trình lượng tử hóa không đều chia dải biên độ thành các khoảng không
đều nhau. Trong thực tế quá trình này được thực hiện thành 2 bước như mô tả trong
hình 4-18. Trước hết mẫu tín hiệu được xử lý qua một phần tử phi tuyến gọi là bộ
nén và sau đó được đưa vào bộ lượng tử hóa đều. Quá trình 2 bước này tương
đương với lượng tử hóa không đều của mẫu đầu vào ban đầu.
107
Bộ nén biên độ
Bộ lượng
Bộ mã hóa
tử hóa đều
Bộ giãn
Hình 4-18 Quá trình thực hiện lượng tử hóa không đều
Vi du ve nonuniform PCM
1
0.5
Amplitude
-0.5
-1
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Time (ms)
Hình 4-19a Ví dụ quá trình lượng tử hóa không đều sử dụng hàm nén .
108
Vi du ve nonuniform PCM
0.5
Amplitude
0
-0.5
-1
Hình 4-19b Ví dụ quá trình lượng tử hóa không đều sử dụng hàm nén .
Quá trình giải mã được thực hiện ngược lại quá trình mã hóa và dễ dàng xây dựng
các hàm tương như quá trình mã hóa. Để đảm bảo khôi phục lại dạng sóng tương tự
từ các mẫu chuyển đổi, các kỹ thuật nội suy như đã trình bày trong phần 4.1 cần
thiết được sử dụng.
trong đó p là hàm dạng xung, T là chu kỳ lặp của xung và N là số lượng xung
cần biểu diễn. Đối với chuỗi xung vuông, hàm xung vuông được biểu diễn
bởi
1 khi t Tw
p(t ) (4.32)
0 khi t Tw
với Tw là độ rộng của xung biểu diễn có giá trị thường nhỏ hơn chu kỳ xung.
Đoạn mã MATLAB ví dụ về biểu diễn chuỗi xung vuông được viết dưới
dạng hàm function và sử dụng hàm này được cho dưới đây:
110
% Ví dụ về biểu diễn chuỗi xung vuông
function [t,y] = myrectpulse(Tw,Rp,Ns,Np)
% Chuong trinh vi du tao chuoi xung vuong
% Tw – độ rộng xung
% Rp – tốc độ lặp xung
% Ns – số lượng mẫu
% Np – số lượng xung cần biểu diễn
% t – vector thời gian
% y – vector mẫu đầu ra
y = zeros(size(t));
for k = 1:Ns
if mod(t(k),Nsp*ts) <= Tw
y(k) = 1;
else
y(k) = 0;
end
end
0.8
0.6
Amplitude
0.4
0.2
0
0 1 2 3 4 5 6 7 8
Time (s) x 10
-6
Hình 4-21 Chuỗi xung vuông được tạo ra sử dụng hàm myrectpulse.
Dựa trên các bước cơ bản trong thực hiện mô phỏng mã đường truyền đã
trình bày ở trên, dạng sóng một mã đường truyền có thể được biểu diễn như sau
N
x(t ) k pt kT (4.33)
k 0
trong đó k là ký hiệu logic được sắp xếp tại bước đầu tiên theo quy luật chuyển đổi
mã đường, p(t) là hàm dạng xung và thường là dạng xung vuông xác định theo công
111
thức (4.32). Một số ví dụ về biểu diễn các mã đường truyền đơn giản được cho
trong các đoạn mã dưới đây được xây dựng dưới dạng hàm function và cách sử
dụng hàm.
1.2
1
1
0.5
0.8
Amplitude
Amplitude
0.6 0
0.4
-0.5
0.2
-1
0
0 20 40 60 80 100 120 140 160 0 20 40 60 80 100 120 140 160
Time (ps) Time (ps)
112
Ví dụ biểu diễn mã AMI:
1 1
0.5 0.5
Amplitude
Amplitude
0 0
-0.5 -0.5
-1 -1
113
của mã thực hiện là k/n. Một mã như vậy được xem là một mã khối (n,k) và gồm có
2k từ mã độ dài n bít ký hiệu là c1, c2, …, c2k. Việc sắp xếp nguồn thông tin thành
chuỗi bít đầu vào kênh truyền được thực hiện một cách độc lập và đầu ra của bộ mã
hóa chỉ phụ thuộc vào chuỗi đầu vào hiện tại có độ dài k bít và không phụ thuộc vào
chuỗi đầu vào trước đó. Trong mã xoắn, chuỗi nguồn có độ dài k0 được sắp xếp
thành n0 bít chuỗi đầu ra nhưng các chuỗi đầu ra này không chỉ phụ thuộc vào k0 mà
còn phụ thuộc vào m đầu vào cuối cùng của bộ mã hóa, m thường được gọi là độ
dài bộ nhớ. Các thuật toán về mã hóa và giải mã các mã kênh truyền không phải là
nội dung của môn học này mà thuộc về các môn học trước. Do đó, nội dung phần
này sẽ không đề cập đến giải thuật của các mã mà chỉ đề cập đến cách thức cơ bản
để thực hiện mã hóa trong hoạt động mô phỏng.
Do quá trình mã hóa và giải mã kênh truyền đều được thực hiện trong miền
số nên các hoạt động mã hóa hay giải mã được tiến hành qua các hoạt động tính
toán ma trận từ mã ở trạng thái logic. Lấy mã khối tuyến tính để làm ví dụ cho các
hoạt động này trong mô phỏng. Các mã hóa khối tuyến tính là lớp mã khối quan
trọng và được sử dụng rộng rãi. Một mã khối là tuyến tính nếu bất kỳ tổ hợp tuyến
tính của hai từ mã là một từ mã. Trong trường hợp nhị phân điều này muốn nói rằng
tổng của bất kỳ hai từ mã nào là một từ mã. Trong mã khối tuyến tính, các từ mã
hình thành một không gian con k chiều của một không gian n chiều. Các mã khối
tuyến tính được mô tả theo ma trận tạo mã G, là một ma trận nhị phân k x n và mỗi
từ mã c đầu ra bộ mã hóa được xác định dưới dạng
c uG (4.34)
trong đó u là chuỗi dữ liệu nhị phân có độ dài k bít (đầu vào bộ mã hóa). Một tham
số quan trọng trong mã khối tuyến tính cái xác định khả năng sửa lỗi của nó đó là
khoảng cách mã hay khoảng cách Hamming tối thiểu. Khoảng cách này được ký
hiệu dmin và được xác định bởi
d min min d H ci , c j (4.35)
i j
Đối với mã tuyến tính, khoảng cách nhỏ nhất bằng với trọng số nhỏ nhất của mã
định nghĩa bởi
wmin min wci (4.36)
ci 0
có nghĩa là số lượng bít 1 nhỏ nhất trong bất kỳ từ mã khác không nào. Đoạn mã
MATLAB sau minh họa hoạt động mã hóa khối tuyến tính.
114
% Ví dụ về mã khối tuyến tính (n,k)
% k = 4, n = 10
k = 4;
for i=1:2^4
for j=k:-1:1
if rem(i-1,2^(-j+k+1))>=2^(-j+k)
u(i,j)=1;
Định nghĩa tổ hợp các từ mã
else 4 bít đầu vào bộ mã hóa
u(i,j)=0;
end
end
end
% Định nghĩa G, ma trận tạo mã
g = [1 0 0 1 1 1 0 1 1 1;
1 1 1 0 0 0 1 1 1 0;
0 1 1 0 1 1 0 1 0 1;
1 1 0 1 1 1 1 0 0 1];
c = rem(u*g,2); % Xác định từ mã đầu ra
w_min = min(sum((c(2:2^k,:))')); % Xác định khoảng cách Hamming
Kết quả:
u = c =
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 1 1 1 1 0 0 1
0 0 1 0 0 1 1 0 1 1 0 1 0 1
0 0 1 1 1 0 1 1 0 0 1 1 0 0
0 1 0 0 1 1 1 0 0 0 1 1 1 0
0 1 0 1 0 0 1 1 1 1 0 1 1 1
0 1 1 0 1 0 0 0 1 1 1 0 1 1
0 1 1 1 0 1 0 1 0 0 0 0 1 0
1 0 0 0 1 0 0 1 1 1 0 1 1 1
1 0 0 1 0 1 0 0 0 0 1 1 1 0
1 0 1 0 1 1 1 1 0 0 0 0 1 0
1 0 1 1 0 0 1 0 1 1 1 0 1 1
1 1 0 0 0 1 1 1 1 1 1 0 0 1
1 1 0 1 1 0 1 0 0 0 0 0 0 0
1 1 1 0 0 0 0 1 0 0 1 1 0 0
1 1 1 1 1 1 0 0 1 1 0 1 0 1
Do hoạt động trong miền số rời rạc nên bên cạnh mô phỏng dạng sóng, mô
phỏng các sự kiện rời rạc hay mô phỏng kênh rời rạc thường hay được sử dụng để
đánh giá hiệu năng mã hóa kênh. Vấn đề mô phỏng kênh rời rạc sẽ được đề cập đến
trong Chương 5.
Thư viện Communications Toolbox trong MATLAB cũng chứa các hàm
mã hóa kênh sẵn có cho mục đích mô phỏng. Các hàm này được liệt kê trong phụ
lục A và một ví dụ sử dụng các hàm này cũng được cho trong Chương 5.
115
4.4 Điều chế và giải điều chế
Y (t ) AX (t ) cos2f c t (4.37)
được gọi là dạng điều biến biên độ vì X(t) biến đổi biên độ của C(t). Trong một kiểu
tương tự, quá trình điều chế pha hoặc tần số C(t) có thể được biểu diễn
Z (t ) Acos2f c t k p X (t ) (4.38)
hoặc
W (t ) A cos 2f c t k f 2 X (t )dt (4.39)
f i (t ) k f X (t ) (4.40)
trong đó X1(t) và X2(t) là các tín hiệu băng gốc (thông thấp) có độ rộng băng tần B,
và tần số sóng mang fc thường >> B. X1(t) và X2(t) có thể là hai tín hiệu tương tự độc
lập hoặc chúng có thể liên hệ duy nhất với tín hiệu chung X(t) như trong các chế độ
điều chế triệt một phần dải biên (VSB) hoặc điều biến đơn biên (SSB). Bảng 4.1 liệt
kê các tín hiệu X1(t) và X2(t) cho một số loại điều chế tương tự.
116
Bảng 4-1 Bảng các thành phần của các chế độ điều chế tương tự
Trong trường hợp mô phỏng tương đương băng gốc, dạng sóng tín hiệu điều
biến được biểu diễn ở dạng đường bao phức
Y (t ) X 1 (t ) jX 2 (t )e j
~
(4.42)
Độ lệch pha ngẫu nhiên của sóng mang thường được giả sử là 0. Đường bao phức
~
Y (t ) cũng có thể được biểu diễn như sau
~
Y (t ) R(t )e j (t ) (4.43)
R(t ) X 12 (t ) X 22 (t )
12
(4.44)
và
X 2 (t )
(t ) tan1 (4.45)
X 1 (t )
~
Các giá trị mẫu của Y (t ) sẽ được sử dụng trong mô phỏng. Mặc dù ta không lấy
mẫu tín hiệu điều chế thông dải, các ảnh hưởng như lệch tần và đặc tính lựa chọn
tần số có thể được mô phỏng sử dụng mô hình tương đương băng gốc.
Trong trường hợp điều chế có sóng mang, một ví dụ về điều chế AM được
cho trong đoạn mã MATLAB dưới đây. Các kiểu điều chế khác cũng dễ dàng được
thực hiện dựa trên bảng 4-1.
117
% Chuong trinh vi du ve dieu che AM
%% Thiết lập tham số
% Bản tin
A = 1; % amplitude
f = 440; % frequency [Hz]
phi = -pi/4; % Phase [rad]
% Sóng mang
m = 0.5; % modulation index
Ac = A/m; % amplitude
fc = 5e3; % frequency [Hz]
phi_c = 0; % Phase [rad]
Vi du ve dieu che AM
3
1
Amplitude
-1
-2
-3
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (ms)
118
y = pmmod(x,Fc,Fs,phasedev) – sử dụng tín hiệu x để điều chế PM
sóng mang Fc tại tần số lấy mẫu Fs với độ lệch pha phasedev.
trong đó bk là các mức giá trị trong bảng mẫu ký tự phù hợp với các định dạng điều
chế khác nhau, ví dụ: điều chế BPSK ta có bk {1, -1}; điều chế OOK ta có bk
{0, 1}; hay điều chế PAM ta có bk {1, …, (M-1)}. Hàm p(t) xác định dạng
xung đầu ra tín hiệu điều chế (ví dụ hàm xung vuông hay sinc). So sánh biểu thức
(4.46) và (4.33) ta sẽ thấy sự tương tự trong mô phỏng mã đường và điều chế số.
Quá trình điều chế số cũng có thể được mô tả dưới dạng cầu phương gồm hai
thành phần dạng sóng khác nhau X1(t) và X2(t) với
N 1
X 1 (t ) a k p1 t kT1 (4.47)
k 0
và
N 1
X 2 (t ) bk p 2 t kT2 (4.48)
k 0
trong đó p1(t) và p2(t) là các hàm dạng xung giống như p(t); ak và bk là các chuỗi
biến ngẫu nhiên rời rạc trong bảng mẫu tự với tốc độ ký hiệu là 1/T1 và 1/T2 tương
ứng. Trong các mô phỏng hệ thống truyền thông thông thường, T1 = T2 và p1(t) =
p2(t). Để mô tả các loại điều chế số khác nhau, biểu đồ chòm sao thường được sử
dụng như cho thấy trong hình 4-26 với một số kiểu điều chế hay gặp.
119
8-ASK
8-PSK 16-QAM
Hình 4-26 Một số ví dụ biểu đồ chòm sao trong điều chế số.
Một số chế độ điều chế phổ biến trong hệ thống thực tế được mô tả bởi biểu thức
(4.47) và (4.48) với các tham số cụ thể được cho trong bảng 4-2. Các công thức
(4.47) và (4.48) được sử dụng để xây dựng các hàm điều chế số trong mô phỏng.
Bảng 4-2 Bảng các thành phần của các chế độ điều chế số
120
y = pammod(x,M) – điều chế bản tin số x sử dụng PAM hoặc M-ASK
% Signal generator
dm = randint(1,1000,4);
% PAM modulation
s = pammod(dm,4);
% PAM demodulation
r = pamdemod(s,4);
Ngoài biểu diễn tín hiệu điều chế dưới dạng tương đương băng gốc, tín hiệu điều
chế số dạng thông dải có cả sóng mang cũng có thể được thực hiện bằng cách kết
hợp với các hàm điều chế tương tự. Ví dụ điều chế 2-ASK có sóng mang được cho
trong đoạn mã sau:
% Chuỗi dữ liệu
h = [0 1 0 1];
% NRZ modulation
[t,y,code]=nrzcode(h,1e6,512); % Tạo dạng sóng sử dụng mã NRZ
% Điều chế AM
ts = t(2)-t(1); % sampling time
fs = 1/ts; % sampling freq.
fc = 10e6; % carrier freq.
yd = ammod(y,fc,fs);
plot(t,yd) ;
0.5
Amplitude
-0.5
-1
0 5 10 15 20 25 30 35 40
Time (ns)
121
Một ví dụ điều chế số khác sử dụng modem object được cho trong đoạn
mã sau:
Trong ví dụ trên biểu đồ chòm sao của tín hiệu sau khi điều chế được vẽ nhờ sử
dụng hàm scatterplot và kết quả cho trên hình 4-28.
Scatter plot
0.6
0.4
0.2
Quadrature
-0.2
-0.4
-0.6
Hình 4-28 Biểu đồ chòm sao tín hiệu điều chế QPSK
Tuy nhiên cần lưu ý, các hàm MATLAB trên chỉ thực hiện việc chuyển đổi
từ bản tin gốc thành các symbol theo kỹ thuật điều chế tương ứng. Do vậy để tạo ra
tín hiệu điều chế dạng sóng điều chế đầu ra thì cần thực hiện kỹ thuật tương tự như
bước 2 trong mô phỏng mã đường truyền.
122
Tuy nhiên để khôi phục tín hiệu ban đầu một số hoạt động xử lý tín hiệu sẽ
được thực hiện để thu được bản sao giống nhất trong trường hợp tương tự hoặc ước
tính tin cậy nhất luồng ký hiệu trong trường hợp số. Hoạt động xử lý thường là quá
trình lọc, tiếp sau đó có thể là quá trình thu (detection) trong bộ thu số. Quá trình
thu đơn giản là thực hiện lấy mẫu đầu ra bộ lọc và so sánh với một ngưỡng để quyết
định tín hiệu thu được (mạch quyết định).
Giải điều chế kết hợp:
Quá trình giải điều chế này đòi hỏi một tín hiệu dao động nội trong bộ thu có
dạng:
cˆ(t ) 2 cos 2fˆc t ˆ
trong đó fˆc và ˆ là các ước tính tương ứng của tần số sóng mang và pha được sinh
ra từ cơ chế khôi phục sóng mang trong bộ thu. Khi đó đối với mô tả tổng quát theo
(4.41), các ước tính của X1(t) và X2(t) có thể được xác định theo sơ đồ giải điều chế
như hình 4-28. Các bộ lọc trước quá trình thu thường là các bộ lọc phối hợp sẽ được
đề cập đến ở phần 4.5.3. Các tín hiệu được ước tính có dạng:
Xˆ 1 (t ) X 1 (t ) cos2 f c fˆc t ˆ
(4.49a)
X (t ) sin 2 f fˆ t ˆ
2 c c
Xˆ 2 (t ) X (t ) cos 2 f fˆ t ˆ
X (t ) sin 2 f fˆ t ˆ
2 c c
(4.49b)
1 c c
Từ phân hệ khôi
Bộ lọc phục sóng mang
trước
123
Trong các hệ thống thực tế, tín hiệu đầu vào bộ thu là một phiên bản bị méo
dạng và nhiễu của Y(t) và có dạng:
z(t ) w(t ) n(t ) (4.50)
trong đó w(t) là đường bao phức của thành phần tín hiệu bị méo dạng và n(t) là
đường bao phức của nhiễu. Theo mô hình đường bao phức (tương đương băng
gốc), hoạt động bộ giải điều chế có thể được mô tả như:
trong đó w(t ) wR (t ) jwI (t ) và n(t ) nc (t ) jns (t ) . Các giá trị mẫu của phương
trình trước chính là những cái được thực hiện trong mô phỏng một bộ giải điều chế
coherent. Các tín hiệu Xˆ 1 (t ) và Xˆ 2 (t ) thường được xem như là các tín hiệu băng
gốc.
Nếu X1(t) và X2(t) là các tín hiệu tương tự thông thấp thì Xˆ 1 (t ) và Xˆ 2 (t )
thường chỉ cần được lọc để giảm thiểu nhiễu. Còn nếu các tín hiệu được giải điều
chế Xˆ 1 (t ) và Xˆ 2 (t ) là các tín hiệu số thì chúng cần phải được xử lý để khôi phục
các chuỗi ban đầu {ak} và {bk} với lỗi xảy ra ít nhất có thể. Do đó hai hoạt động cơ
bản được thực hiện đối với tín hiệu giải điều chế đó là hoạt động lọc thường là lọc
phối hợp và quá trình lấy mẫu tiếp sau đó để đưa vào bộ quyết định. Các mẫu tín
hiệu được sử dụng để quyết định ký hiệu nào đã được gửi đi. Trong trường hợp
đồng bộ hoàn toàn, giả sử các méo dạng sinh ra từ kênh có đáp ứng hc(t) và đáp ứng
của bộ lọc phối hợp là hm(t), khi đó các dạng sóng đầu vào bộ lấy mẫu có thể viết
thành:
s1 (t ) a pt kT D h (t ) h
k
k c m (t ) n1 (t ) (4.52a)
s 2 (t ) b pt kT D h (t ) h
k
k c m (t ) n2 (t ) (4.52b)
trong đó D là đại lượng trễ truyền dẫn chưa biết và cố định, dấu * mô tả phép tích
chập, và n1(t) = nc(t)hm(t), n2(t) = ns(t)hm(t). Để khôi phục {ak} và {bk} dạng sóng
(4.52) phải được lấy mẫu tại các thời điểm thích hợp. Hoạt động lấy mẫu sẽ được
thực hiện tại các thời điểm:
ˆ
t k kTb D (4.53)
124
trong đó D̂ là một ước tính trễ hệ thống. Ước tính D̂ được xác định qua hệ thống
khôi phục định thời trong bộ thu như mô tả trong hình 4-29. Trong ngữ cảnh mô
phỏng, thường không có trễ truyền dẫn và trễ hiệu dụng vì quá trình lọc có thể được
ước tính khá chính xác trước. Các vấn đề về đồng bộ và quá trình lọc sẽ được trình
bày trong các phần sau.
Từ khôi phục
định thời
Bộ quyết
định
Nếu kx(t ) 1 thì khi đó bằng việc quan sát đường bao thực của y(t) là [1+kx(t)] tín
hiệu điều chế x(t) có thể thu được vì 1 kx(t ) 1 kx(t ) . Như vậy hoạt động giải
điều chế này thường được gọi là kỹ thuật tách đường bao. Vì do nhiễu và méo dạng,
~y (t ) nói chung là dạng phức, do đó hoạt động tách đường bao đơn giản là lấy giá trị
tuyệt đối của đường bao phức. Trong một số bộ thu khác như bộ thu quang, quá
trình giải điều chế biên độ không kết hợp đòi hỏi lấy bình phương biên độ của
đường bao phức. Phương pháp này còn được gọi là giải điều chế theo quy luật bình
phương. Nếu tín hiệu đầu vào được xác định bởi (4.54) thì quá trình giải điều chế
không kết hợp có dạng
Như vậy phương pháp này đòi hỏi một độ sâu điều chế nhỏ. Theo mô hình đường
bao phức cả hai phương pháp không kết hợp trên có thể được biểu diễn như sau
125
~z (t )
xˆ (t ) ~ 2 (4.55)
z (t )
trong đó ~z (t ) là đường bao phức của tín hiệu đầu vào bộ giải điều chế và xˆ (t ) là tín
hiệu thực đầu ra bộ giải điều chế.
Các tín hiệu điều chế pha và điều tần có thể được giải điều chế bằng nhiều
chế độ khác nhau. Chế độ cổ điển cho tín hiệu FM được gọi là thu sai biệt
(discriminator). Do pha là tích phân của tần số nên một bộ giải điều chế PM là một
bộ discriminator theo sau bởi một bộ lọc tích phân. Về nguyên tắc hoạt động này
được thực hiện ngược với quá trình điều chế FM. Nếu w ~(t ) r (t )e j (t ) là tín hiệu
đường bao phức thu được của tín hiệu điều chế thì trong mô phỏng quá trình thu
discriminator để khôi phục tín hiệu được thực hiện bằng việc lấy vi phân thành phần
pha của lớp vỏ phức
~ d
x (t ) (t ) (4.56)
dt
Chú ý trong mô phỏng việc lấy vi phân được thực hiện trong miền rời rạc. Trong
MATLAB quá trình này có thể được thực hiện bằng việc sử dụng các hàm diff và
gradient.
%% Quá trình giải điều chế để khôi phục bản tin sử dụng modem object
% yn là tín hiệu đầu vào bộ giải điều chế.
126
4.5 Quá trình lọc
Quá trình lọc được thực hiện tại nhiều vị trí trong hệ thống cho các mục đích
khác nhau. Các ứng dụng cơ bản của quá trình lọc trong các hệ thống truyền thông
bao gồm lựa chọn các tín hiệu mong muốn, giảm ảnh hưởng của nhiễu và giao thoa,
biến đổi phổ tín hiệu và tạo dạng các tính chất miền thời gian (điểm cắt 0 và các
dạng xung) của dạng sóng tín hiệu số để cải thiện khả năng thu.
Sy ( f ) Sx ( f ) H ( f )
2
(4.57)
trong đó Sx(f) là mật độ phổ công suất (PSD) của tín hiệu đầu vào x(t) và H(f) là
hàm truyền đạt của hệ thống. Bằng việc lựa chọn cẩn thận H(f), các thành phần phổ
của tín hiệu đầu vào được lựa chọn có thể được làm nổi bật hoặc bị suy yếu. Hoạt
động lọc lựa chọn tần số này được sử dụng phổ biến trong các hệ thống truyền
thông. Nếu Sx(f) và H(f) được xác định trước thì việc tính toán Sy(f) là rõ ràng. Nói
cách khác, giả thiết rằng Sy(f) là PSD mong muốn đầu ra được xác định từ Sx(f) là
PSD đầu vào. Viết lại (4.57) có được
Sy ( f )
H( f )
2
(4.58)
Sx ( f )
và bài toán ở đây trở thành bài toán tổng hợp một bộ lọc thực tế H(f) để thỏa mãn
(4.57). Điều này có thể được thực hiện bằng việc xác định thừa số vế phải của biểu
thức (4.58) và bao gồm chỉ các pole và các zeros ở một nửa trái của mặt phẳng s
cho việc xác định H(s). (Khai triển s = j2f được áp dụng trước khi thực hiện …).
Ví dụ thực hiện quá trình lọc tín hiệu bằng bộ lọc Butterworth có hàm truyền
được mô tả bởi
1
H( f )
2
(4.59)
1 b
2n
trong đó n là bậc bộ lọc và b xác định độ rộng băng tần bộ lọc. Bộ lọc được viết
dưới dạng hàm MATLAB cho trong đoạn mã dưới đây:
127
function y = butterwflt(x,n,B,Ts)
% Function bo loc butterworth
% B - filter bandwidth, Ts - sampling time, n - filter order
% y - filtered output
Ns = length(x);
% Frequency domain
f = [0:Ns/2-1 -Ns/2:-1]/(Ns*Ts);
Xf = fft(x);
Hf = 1./(1+(f./B).^(2*n)); % transfer func.
Yf = Xf.*Hf;
% Convert into time domain
y = ifft(Yf);
>> [f,Xf]=spectrocal(t,y);
>> figure(2);
-4
10
PSD
-6
10
-8
10
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
Frequency
1.2
0.8
Amplitude
0.6
0.4
0.2
0
0 50 100 150 200 250
Sample index
128
4.5.2 Lọc tạo dạng xung
Mỗi xung trong các dạng sóng được sử dụng trong các hệ thống truyền dẫn
số được yêu cầu thỏa mãn hai điều kiện quan trọng: độ rộng băng tần và các điểm
cắt không (zero crossings). Nếu chuỗi số có tốc độ ký hiệu là Rb thì khi đó độ rộng
băng tần của dạng sóng số cần cỡ bậc Rb và nó có thể đòi hỏi có các điểm cắt không
trong miền thời gian cứ mỗi chu kỳ Tb, trong đó Tb = 1/Rb. Nyquist đã chứng minh
rằng một xung miền thời gian p(t) sẽ có các điểm cắt không ở mỗi chu kỳ Tb nếu
khai triển của nó P(f) đáp ứng được ràng buộc sau:
P f kR T
k
b b đối với f Rb 2 (4.60)
Nếu P(f) thỏa mãn (4.60) thì p(t) có các tính chất sau:
p(0) 1
(4.61)
p(kTb ) 0, k 1,2,...
Các yêu cầu điểm cắt không được đưa ra để đảm bảo giao thoa giữa các ký hiệu
(ISI) bằng không và trợ giúp quá trình khôi phục tín hiệu định thời.
Một họ P(f) đáp ứng được điều kiện Nyquist cho trong (4.60) là họ raised
cosine với
Tb, f Rb 2
R Rb R
P( f ) Tb cos2 f b , f b (4.62)
4 2 2 2
Rb
0, f
2
trong đó là tham số băng tần trội hay còn gọi là hệ số uốn (rolloff). Chú ý rằng
P(f) raised cosine bị giới hạn băng tần đến +(Rb/2) và do đó nó có thể đáp ứng các
điều kiện về băng tần chọn lọc.
Họ raised cosine có đáp ứng xung có dạng
và có các điểm cắt không ở mỗi chu kỳ Tb như cho thấy trong hình 4-31.
129
1 1
0.8
0.8
0.6
0.6
0.4
p(t)
P(f)
0.4 0.2
0
0.2
-0.2
0 -0.4
0 0.2 0.4 0.6 0.8 1 1.2 0 0.5 1 1.5 2 2.5 3
f/Tb t/Tb
Hình 4-29 Đặc tính của họ xung raised cosine tại các giá trị khác nhau. (a) Đáp ứng tần
P(f), chú ý P(f) = P(-f); (b) Đáp ứng xung p(t).
Xung raised cosine có thể được sinh ra bằng cách cho một xung kim qua một
bộ lọc có H(f) = P(f). Nếu đầu vào bộ lọc là g(t) không phải là xung kim thì khi đó
để sinh ra một đầu ra thuộc họ raised cosine, hàm truyền bộ lọc sẽ là
P( f )
H( f ) (4.64)
G( f )
1.2
1
0.5
0.8
Amplitude
0.6
0.4
0.2
-0.2
0 0.5 1 1.5 2 2.5 3 3.5 4
Time (s) x 10
-6
1.2
1
0.25
0.8
Amplitude
0.6
0.4
0.2
-0.2
0 0.5 1 1.5 2 2.5 3 3.5 4
Time (s) x 10
-6
Hình 4-30 Ví dụ dạng xung được lọc bởi bộ lọc raised cosine tại các giá trị khác nhau.
130
Trong hầu hết các ứng dụng, hoạt động lọc để tạo ra P(f) được chia ra giữa
hai bộ lọc, một bộ lọc tại bộ phát có hàm truyền ký hiệu là HT(f) và một bộ lọc tại
bộ thu có hàm truyền ký hiệu là HR(f). Với một xung kim tại đầu vào của HT(f) và
một kênh truyền lý tưởng, ta có HT(f)HR(f) = P(f). Trong trường hợp đơn giản hệ
thống có nguồn nhiễu cộng tại đầu vào bộ thu, nó có thể được chứng minh rằng sự
phân chia tối ưu để đảm bảo tối ưu hóa tỉ số tín hiệu trên nhiễu tại đầu ra bộ thu là
chia tách P(f) bằng nhau giữa bộ phát và bộ thu, tức là
HT ( f ) H R ( f ) P( f )
12
(4.65)
Bộ lọc này còn được gọi là bộ lọc raised cosine căn bậc hai và có đáp ứng xung:
hR (t ) hT (t ) 8
R 1 8t
12 2
(4.66)
b
Khi thực hiện một bộ lọc có đáp ứng như (4.66) trong miền thời gian, cần chú ý một
số khó khăn trong phương pháp số có thể nảy sinh, ví dụ x = 0 trong tính sinc(x).
Để tránh vấn đề này khi thực hiện trong MATLAB, giá trị x = 0 được thay thế bằng
giá trị gần đúng eps, là một biến đặc biệt về độ chính xác tương đối trong
MATLAB.
Ngoài việc tự xây dựng các hàm lọc như những ví dụ cho ở trên, trong
MATLAB quá trình lọc có thể được thực hiện bằng việc sử dụng hàm filter
trong thư viện Signal processing toolbox theo cấu trúc tổng quát cho trong
hình 4-31.
Hình 4-31 Cấu trúc giải thuật quá trình lọc sử dụng hàm filter trong MATLAB.
Cách sử dụng hàm filter được thực hiện theo cú pháp cơ bản sau:
y = filter(b,a,x);
trong đó a, b là các vector có độ dài n chứa các hệ số của bộ lọc được đặc trưng bởi
hàm truyền trong miền z:
131
và quá trình lọc có thể được mô tả phương trình sai phân:
y(n) b(1) * x(n) b(2) * x(n 1) ... b(nb 1) * x(n nb)
a(2) * y(n 1) ... a(na 1) * y(n na)
với n – 1 là bậc của bộ lọc cho cả hai kiểu bộ lọc FIR và IIR, na là bậc bộ lọc hồi
tiếp và nb là bậc bộ lọc nạp trước. Các hệ số lọc a, b có thể được xác định từ các
hàm thiết kế bộ lọc sẵn có trong thư viện như:
p (t ) n(t )
y (t ) or
n(t )
Tín hiệu thu y(t) được quan sát trong T giây trong khoảng [0, T] và được xác định
xem có hoặc không có xung p(t) bằng việc xử lý y(t). Quá trình xử lý y(t) được thực
132
hiện qua một bộ lọc, do vậy việc quyết định sự có mặt xung p(t) được dựa trên đầu
ra của một bộ lọc tại thời điểm t = T. Tín hiệu đầu ra bộ lọc có dạng
T
z y ( ) h(T ) d (4.67)
0
Nó đã được chứng minh rằng xác suất quyết định sai hoặc lỗi trung bình nhỏ nhất
khi bộ lọc có hàm truyền đạt
P * ( f ) exp( j 2fT )
H( f ) K (4.68)
SN ( f )
trong đó K là một hằng số thực dương. Nếu n(t) là nhiễu trắng thì ta có
Bằng việc lấy khai triển Fourier ngược của H(f), hàm đáp ứng xung của bộ lọc được
xác định là
do đó
T T
z y ( )h(T )d y ( ) p( )d (4.71)
0 0
Các phương trình (4.70) và (4.71) cho thấy rằng đáp ứng xung của bộ lọc được phối
hợp với p(t) và đây là lí do bộ lọc kiểu này được gọi là bộ lọc phối hợp. Chú ý rằng
khi p(t) là xung vuông đơn vị như mô tả bởi (4.5) thì z chỉ là tích phân của tín hiệu
đầu vào. Nếu một quyết định phải được thực hiện trong các khoảng thời gian liên
tiếp thì (4.71) bao hàm rằng tích phân này bắt đầu thực hiện tại đầu mỗi khoảng chu
kỳ. Như vậy, giá trị của tích phân tại điểm cuối khoảng trước phải được loại bỏ. Do
vậy bộ lọc này còn được gọi là bộ lọc integrate-and-dump (I&D) như mô tả trong
hình 4-31.
133
Quá trình lọc phối hợp về mặt nguyên lý có thể bù méo tuyến tính trong các
xung khi méo dạng đó được biết, nhưng không thể bù giao thoa giữa các ký hiệu.
Để có thể bù được méo bao gồm cả méo phi tuyến và biến đổi theo thời gian thì bộ
lọc thích ứng hay kỹ thuật cân bằng sẽ cần được sử dụng tại bộ thu.
Hình 4-32 Dạng sóng tín hiệu xung vuông trong trường hợp lý tưởng và bị nhiễu tại đầu
vào và đầu ra bộ lọc phối hợp.
Một ví dụ về bộ lọc phối hợp với các loại xung cơ bản bao gồm xung vuông
và xung tam giác trên một chu kỳ T được thực hiện cho trong đoạn mã dưới đây:
% Ví dụ về bộ lọc phối hợp cho dạng xung vuông và xung tam giác
Ts = .01; % Chu kỳ lấy mẫu
t=-1:Ts:1;
T = length(t);
% Tạo các dạng xung
prect = ones(1,T); % Xung vuông
ptri(1:(T-1)/2) = t(1:(T-1)/2)+1; % Xung tam giác
ptri((T-1)/2+1) = 1; % Xung tam giác
ptri((T+1)/2:T) = 1-t((T+1)/2:T); % Xung tam giác
ptri = ptri * sqrt(3); % Định cỡ energy
% Tạo nhiễu có biên độ an
an = 0.5;
n = an*randn(1,T); % Gaussian noise
% Cộng nhiễu vào các xung
pw1 = prect + n;
pw2 = ptri + n;
% Lọc phối hợp các xung
rf1 = pw1(1);
rf2 = pw2(1);
mf2 = ptri(1)*pw2(1);
for k=2:T
rf1(k) = rf1(k-1) + pw1(k); % Lọc xung vuông lên xung vuông
rf2(k) = rf2(k-1) + pw2(k); % Lọc xung vuông lên xung tam giác
% Lọc xung tam giác lên xung tam giác
mf2(k) = mf2(k-1) + ptri(k)*pw2(k);
end
134
Kết quả được cho thấy trong hình 4-33 dưới đây.
Rectangle Pulse
2
1.5
0.5
0
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Triangle Pulse
2
1.5
0.5
0
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
(a)
Noisy Rectangle Pulse
4
-2
-4
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
-2
-4
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
(b)
Rect. Filter on Rect. Pulse
200
100
0
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Rect. Filter on Tri. Pulse
200
100
0
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Tri. Filter on Tri. Pulse
200
100
0
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
(c)
Hình 4-33 Kết quả ví dụ về bộ lọc phối hợp: (a) Dạng xung gốc ban đầu, (b) Dạng xung bị
nhiễu, (c) Dạng sóng đầu ra bộ lọc phối hợp (I&D).
135
4.6 Quá trình đồng bộ
Trong hệ thống truyền thông, quá trình đồng bộ là một trong những chức
năng chính của bộ thu bao gồm quá trình khôi phục sóng mang và khôi phục tín
hiệu đồng hồ. Mặc dù có nhiều cấp đồng bộ ngoài việc đồng bộ sóng mang và định
thời trong các hệ thống truyền thông lớn như đồng bộ khung, gói hay từ mã, các
kiểu đồng bộ này thường được thực hiện qua việc sử dụng các chuỗi ký hiệu đặc
biệt được ghép cùng với các chuỗi tin. Quá trình đồng bộ sóng mang và định thời có
thể được thực hiện có hoặc không có sử dụng tín hiệu trợ giúp. Hều hết các hệ
trong đó các tín hiệu sóng mang và định thời tham khảo được tách ra từ dạng sóng
tín hiệu tại bộ thu.
Các kỹ thuật đồng bộ biến đổi phụ thuộc vào chế độ điều biến, môi trường
hoạt động và mức độ chính xác mong muốn. Hiệu năng của quá trình khôi phục
sóng mang và định thời thường được đo bởi các tham số độ lệch thời gian và jitter
(rung pha) hiệu dụng như mô tả trong hình 4-34.
Đồng hồ
lý tưởng
1 N
Độ lệch =
1 N
i jitter rms = i b 2
N i 1 N i 1
Hình 4-34 Độ lệch thời gian và jitter trong một tín hiệu dạng sóng định thời.
Hình 4-35 Tác động của lỗi pha và lỗi định thời lên BER. (a) Mô hình thu coherent đơn
giản; (b) hệ thống tống quát.
Như vậy ta có các kiểu tiếp cận mô phỏng khác nhau phụ thuộc vào cách mà
( ˆ , ˆ ) được mô tả và cách cụ thể để thu được chúng. Một số cách tiếp cận thuộc
dạng “cấu trúc” xác định các hoạt động được thực hiện để rút ra ( ˆ , ˆ ). Các tiếp cận
khác được dựa trên mô tả thống kê ( ˆ , ˆ ) hoặc dựa trên giải thuật trên một khuôn
khổ thống kê.
Một trong những cách đơn giản đó là sử dụng cách tiếp cận đồng bộ đấu
cứng. Dạng sóng d(t) được lọc phối hợp và được lấy mẫu tại thời điểm ˆ đưa vào
bộ quyết định để xác định xác suất lỗi Pe( ˆ , ˆ ). Trong phương pháp này, tại mỗi giá
trị ˆ cố định một hàm BER điều kiện P ˆ,ˆ ˆ sẽ thu được bằng cách biến đổi ˆ
e
137
trên một tập giá trị rời rạc. Sẽ có một ˆ ˆopt mà BER là nhỏ nhất như cho thấy ở
hình 4-36a và đặc tính về độ lệch hay lỗi pha tĩnh được xác định. Cũng một cách
tương tự tại mỗi giá trị ˆ một hàm BER điều kiện Pe ˆ,ˆ ˆ sẽ thu được trên một tập
giá trị ˆ rời rạc. Hàm BER theo độ lệch định thời ˆ ˆopt sẽ được xác định như cho
thấy ở hình 4-36b. Như vậy, BER là một hàm của cả hai ˆ và ˆ , do đó một sự biểu
diễn sự phụ thuộc trên một bề mặt không gian 3 chiều có thể được thực hiện như ví
dụ trong hình 4-37. Trong thực tế các đại lượng ˆ và ˆ là các quá trình biến đổi
chậm và có thể được mô tả theo một phân bố nào đó và Pe được tính trung bình trên
các phân bố đó.
(a) (b)
Hình 4-36 Sự phụ thuộc BER vào (a) độ lệch pha và (b) độ lệch định thời.
Hình 4-37 Sự phụ thuộc BER vào đồng thời cả hai tham số độ lệch pha và độ lệch định
thời trong biểu diễn 3D.
Trong mô phỏng mức hệ thống, nó không cần thiết phải mô phỏng chi tiết ( ˆ
, ˆ ) được sinh ra thế nào. Do vậy một quá trình ngẫu nhiên tương đương được sử
dụng để phỏng tạo lại quá trình đồng bộ thực tế ảnh hưởng lên BER. Xét dạng sóng
thu được có dạng
138
r (t ) s(t ) n(t ) (4.72)
bao gồm cả thành phần pha mong muốn (t) cũng như thành phần pha không mong
muốn (t) đặc trưng cho nhiễu pha bộ dao động và méo dạng. Từ (4.72) r(t) có thể
được biểu diễn như
phản ánh sự có mặt của nhiễu. Tín hiệu tham chiếu dao động nội có thể được mô tả
như
c(t ) 2 cosc t ˆ(t ) ˆ (t ) (4.75)
trong đó (t) sinh ra từ nhiễu nhiệt và các thành phần pha khác là các ước tính của
các đại lượng tương ứng trong (4.73). Dạng sóng giải điều chế thu được bằng việc
nhân r(t) với c(t) và lấy thành phần thông thấp để có được
d (t ) (t ) cos (t ) (t ) (t ) (4.76)
trong đó (t ) (t ) ˆ(t ) (t ) ˆ . Như vậy dạng sóng giải điều chế phụ thuộc
vào nhiễu pha không được theo dấu (t ) ˆ(t ) và nhiễu nhiệt được theo dấu (t).
(Lỗi pha tĩnh ˆ đơn giản là một hằng số có thể được giả sử như là một tham số
giống như cách tiếp cận đấu cứng). Bỏ qua lỗi pha tĩnh có thể thấy rằng (t) chính
là quá trình ngẫu nhiên tương đương. Do vậy hệ thống có thể được mô phỏng không
có nhiễu pha và (t) có thể đơn giản được đưa trực tiếp vào tín hiệu giải điều chế
như chỉ ra ở (4.76). Nói chung (t) là một quá trình chậm do vậy cần chú ý các giá
trị của nó cách nhau bởi Ts có mức độ tương quan nhất định do vậy cần sử dụng kỹ
thuật đa tốc độ trong mô phỏng. Thêm nữa thời gian chạy mô phỏng phải đủ lớn để
quan sát được hết sự tiến triển của quá trình đặc trưng. Đối với đại lượng jitter thay
cho biểu thị theo độ thì sẽ được biểu diễn trong miền thời giant ham chiếu với một
chu kỳ kí hiệu. Do vậy ảnh hưởng của jitter đồng hồ có thể được mô phỏng bằng
cách truyền một luồng dữ liệu đồng bộ hoàn toàn và lấy mẫu đầu ra bộ lọc phối hợp
bằng một tín hiệu đồng hồ hay lấy mẫu bị nhiễu. Tính nhiễu của quá trình này được
mô tả bởi một quá trình ngẫu nhiên tương đương thường là quá trình ngẫu nhiên
Gauss với một PSD xác định.
139
4.6.2 Mô phỏng mạch vòng khóa pha (PLL)
Phần tử trung tâm của nhiều cấu trúc đồng bộ chính là mạch vòng khóa pha
(PLL) thường được mô tả bởi một phương trình vi phân phi tuyến. Có nhiều mô
hình mô tả PLL phụ thuộc vào cấu trúc hay bậc của mạch vòng.
Sơ đồ khối cơ bản của PLL dạng mạch vòng bậc hai và mô hình tương
đương trong miền pha của nó được cho thấy trong hình 4-38. Trong hình này, tín
hiệu sóng mang đi vào sẽ được so pha với sóng mang được tạo ra từ bộ dao động.
Độ lệch pha đầu ra được cho qua một bộ lọc vòng để chuyển đổi thành sự biến đổi
dạng điện áp điều khiển bộ tạo dao động VCO. Hàm truyền bộ lọc vòng F(s) cho
mạch vòng bậc 2 có thể được biểu diễn
s 2 1
F ( s) (4.77)
s 1 1
trong đó một trong hai trường hợp xác định 1 như sau
và 1 và 2 là các tham số thời gian liên quan đến tần số tự nhiên và hệ số tắt dần
của PLL.
140
Có hai kiểu mô hình mô phỏng PLL đó là mô hình độc lập (stand-alone) và
mô hình lắp ráp (assembled). Sự khác nhau giữa hai mô hình đó là mô hình lắp ráp
được xây dựng bằng việc tập hợp mô hình phương trình vi phân từ các mô hình
mức thấp hơn. Tuy nhiên mô hình độc lập cho độ ổn định và độ chính xác tốt hơn
tại khoảng cách mẫu xác định.
Trong mô hình độc lập, hàm truyền bộ lọc vòng (4.77) được viết lại
1 2 1 s
F ( s) (4.79)
1 1 1 1 s
và được biểu diễn theo hệ thống như hình 4-39. Thay biểu diễn này vào sơ đồ khối
hình 4-38 ta có được sơ đồ khối mở rộng như trong hình 4-40. Ở đây các biến mới
y(t ) và y (t ) với y(t ) d 2 y dt 2 , y (t ) dy dt được đưa vào để xây dựng bài toán
theo dạng mô hình yêu cầu. Từ hình 4-40, các mối quan hệ giữa các tham số của
mạch vòng được xác định
141
v(t ) K1 K3 1 2 y(t ) y (t ) (4.80)
Đặt
K1 K 2 K 3 2 K1 K 2 K 3 1
c1 , c2 , c3 (4.85)
1 1 1
Đây chính phương trình vi phân phi tuyến bậc hai theo biến y và đầu vào (t). Như
vậy mô phỏng PLL quay trở lại bài toán giải phương trình vi phân. Các phương
pháp giải phương trình vi phân ODE đã được đề cập trong Chương 3. Thêm nữa
dựa trên sơ đồ khối mô tả PLL trong hình 4-40, mô hình Simulink dễ dàng được
xây dựng để mô phỏng PLL.
142
đến hiệu năng hệ thống và cách thức mô phỏng đặc tính mạch vòng khóa pha đã
được trình bày.
4-1/ Viết chương trình MATLAB tạo chuỗi bit ngẫu nhiên phân bố đều có độ dài
128 bit. Sau đó thực hiện chuyển đổi chuỗi bit này thành các giá trị thập phân trong
dải từ [0,15].
- Gợi ý: Chuyển đổi vector hàng thành ma trận mx4, sau đó dùng hàm
bi2de để chuyển đổi sang dạng thập phân.
4-2/ Xây dựng các function để nén và giải nén tín hiệu theo luật A có dạng cấu trúc
sau:
function [y,amax] = alaw(x,A) và function x = invalaw(y,A)
4-3/ Viết chương trình mã hóa tín hiệu x = 2cos(4t) tại tần số lấy mẫu fs = 20 Hz
sử dụng quá trình PCM theo luật A với 8 mức lượng tử. Hãy xác đinh từ mã đầu ra
của 5 mẫu đầu tiên. Vẽ biểu diễn tín hiệu gốc ban đầu, tín hiệu được lấy mẫu và tín
hiệu được lượng tử hóa trên cùng một hình. (Sử dụng các function đã xây dựng của
bài tập trên)
4-4/ Xây dựng function để chuyển đổi chuỗi bit dữ liệu đầu vào thành mã đường RZ
đơn cực.
Sử dụng function này để mã hóa RZ và biểu diễn dạng sóng của chuỗi bit [0 1 1 0 1
0 1 0] tại tốc độ 1 Mbit/s.
4-5/ Viết function để tạo chuỗi xung tam giác đầu ra. Biết trong một chu kỳ dạng
xung được biểu diễn bởi hàm sau:
4-6/ Cho tín hiệu tương tự được mô tả bởi công thức sau:
s(t ) 2cos(20 t + /4)+cos(30 t )
Viết chương trình thực hiện điều chế biên độ tín hiệu bằng sóng mang fc = 300 Hz.
Vẽ dạng sóng tín hiệu bản tin ban đầu và tín hiệu được điều chế.
Giải điều chế tín hiệu trên bằng kỹ thuật phù hợp và vẽ dạng sóng tín hiệu sau khi
được giải điều chế.
143
4-7/ Tạo chuỗi ký tự ngẫu nhiên có độ dài 100 ký tự để thực hiện điều biến BPSK.
Hãy viết chương trình biểu diễn dạng sóng đường bao phức của tín hiệu điều biến
BPSK tại tốc độ 10 Mb/s bởi các xung raised cosine được mô tả bởi hàm sau:
2t
p(t ) 1 cos 0t T
T
144
Chương 5 Mô phỏng kênh thông tin
Kênh thông tin là thành phần quan trọng nhất trong hệ thống truyền thông,
xác định đặc tính truyền dẫn của hệ thống. Chương này sẽ đề cập đến phương pháp
luận cơ bản trong việc mô phỏng kênh thông tin.
145
Việc phát triển các mô hình toán học cho quá trình lan truyền tín hiệu trên
một môi trường truyền dẫn đòi hỏi một sự hiểu biết tốt các hiện tượng vật lý cơ bản.
Ví dụ, để phát triển một mô hình cho kênh vô tuyến tầng điện ly, ta phải hiểu cơ sở
vật lý của quá trình truyền sóng vô tuyến. Tương tự, một sự hiểu biết cơ bản về
quang học là cần thiết để phát triển các mô hình cho các sợi quang đơn mode và đa
mode. Các kỹ sư thông tin dựa vào các chuyên gia trong vật lý để cung cấp các mô
hình cơ bản cho các kiểu kênh thông tin khác nhau.
Một trong những thách thức trong mô hình hóa kênh thông tinh là sự chuyển
đổi một mô hình truyền sóng chi tiết thành một dạng phù hợp cho việc mô phỏng.
Các mô hình toán học, từ quan điểm vật lý, có thể thường rất chi tiết và không phù
hợp cho mô phỏng. Ví dụ, mô hình toán học cho một kênh vô tuyến có thể ở dạng
các phương trình Maxwell. Trong khi nó rất chính xác, thì mô hình này phải được
đơn giản hóa và được chuyển đổi thành một dạng phù hợp như hàm truyền đạt hoặc
đáp ứng xung trước khi sử dụng nó cho mô phỏng. Rất may, quá trình này dễ dàng
hơn việc thu được các mô hình vật lý cơ bản và xác định các tham số của các mô
hình như vậy.
Các kênh thông tin vật lý như đôi dây xoắn, ống dẫn sóng, không gian tự do
và sợi quang thường có đặc tính tuyến tính. Một số kênh như kênh vô tuyến di
động, trong khi là tuyến tính có thể cư xử theo một kiểu biến đổi theo thời gian một
cách ngẫu nhiên. Mô hình mô phỏng của các kênh này nằm trong hai loại chính sau:
- Các mô hình hàm truyền đạt đối với các kênh bất biến theo thời gian:
Trong các mô hình này, kênh thông tin được giả sử có bản chất tĩnh (tức
kênh có đáp ứng xung bất biến theo thời gian) cung cấp một đáp ứng tần
xác định vì các trễ cố định trong kênh thông tin. Hàm truyền của kênh bất
biến theo thời gian được cho là phẳng nếu nguồn tin có độ rộng băng tần
mà trên đó kênh thông tin có đáp ứng khuyếch đại không đổi. Kênh được
cho là có tính chọn lọc tần số nếu nguồn tin có độ rộng băng tần mà trên
đó kênh thông tin có sự thay đổi đáng kể hệ số khuyếch đại.
- Các mô hình đường trễ nhánh (TDL) cho các kênh biến đổi theo thời
gian. Đối với các mô hình kênh này, kênh thông tin được giả sử để biến
đổi theo thời gian. Nếu kênh thay đổi trong khoảng thời gian quan tâm
nhỏ nhất đối với một tín hiệu, thì kênh được cho là kênh fading nhanh.
Nếu kênh duy trì đặc tính tĩnh trên một số lượng lớn các symbol liên tiếp
146
của nguồn tin, thì kênh được cho là kênh fading chậm và kênh có thể
được xem giống như mô hình trên trong một khoảng thời gian xác định.
Các mô hình hàm truyền đạt có thể được mô phỏng hoặc trong miền thời
gian hoặc miền tần số sử dụng các bộ lọc đáp ứng xung hữu hạn (FIR) hoặc đáp ứng
xung vô hạn (IIR). Các mô hình thực nghiệm ở dạng đáp ứng xung hoặc đáp ứng
tần đo được hoặc tổng hợp được thường được mô phỏng sử dụng kỹ thuật FIR. Các
biểu thức giải tích cho hàm truyền đạt dễ dàng hơn để mô phỏng khi dùng kỹ thuật
IIR.
Trong mô phỏng hệ thống truyền thông, các mô hình kênh dạng sóng được
sử dụng để đặc trưng cho các tương tác vật lý giữa một dạng sóng được phát và
kênh thông tin. Các mô hình kênh dạng sóng được lấy mẫu tại một tần số lấy mẫu
thích hợp. Các mẫu được xử lý thông qua mô hình mô phỏng. Một kỹ thuật khác
hiệu quả hơn trong một số ứng dụng đặc trưng kênh thông tin bởi một số trạng thái
hữu hạn. Khi thời giant hay đổi, trạng thái kênh thay đổi theo tương ứng bởi một tập
xác suất chuyển tiếp. Kênh thông tin khi đó có thể được định nghĩa bởi một chuỗi
Markov. Mô hình kênh sinh ra thường có dạng một mô hình Markov ẩn (HMM)
thuộc về các mô hình kênh rời rạc được sử dụng trong mô phỏng với lượng tính
toán nhỏ nhất.
Đối với mô hình kênh dạng sóng, một mô hình tổng quát có thể được mô tả
trong hình 5-1 trong đó mô tả hai ảnh hưởng cơ bản của kênh truyền đó là:
- Méo dạng sóng tín hiệu do giới hạn băng tần của kênh được đặc trưng bởi
đáp ứng xung của kênh h(t).
- Nhiễu cộng được đặc trưng bởi n(t).
Tùy thuộc vào mô hình mô phỏng như đã đề cập ở chương 4 mà các hàm đáp ứng
xung và nhiễu cộng cũng có giá trị phức hoặc giá trị thực. Việc mô phỏng các mô
hình kênh có thể được thực hiện trong miền thời gian và miền tần số tương ứng.
Hình 5-1 Mô hình kênh tổng quát trong mô phỏng hệ thống truyền thông
147
5.2 Mô hình kênh AWGN
Nhiễu Gauss trắng cộng (AWGN) là một mô hình nhiễu cơ bản trong hệ
thống thông tin để mô tả các quá trình ngẫu nhiên xảy ra trong kênh truyền. Các đặc
tính cơ bản của nhiễu AWGN bao gồm:
- Nhiễu có tính cộng: nghĩa là nhiễu của kênh truyền được cộng thêm vào
tín hiệu được phát đi, ở đây nhiễu có tính độc lập thống kê với tín hiệu.
- Nhiễu là trắng: tức mật độ phổ công suất nhiễu là phẳng, do vậy tự tương
quan của nhiễu trong miền thời gian là bằng không cho bất kỳ độ lệch
thời gian khác không nào.
- Nhiễu có phân bố Gauss hoặc phân bố chuẩn.
Do hầu hết các nhiễu sinh ra trong hệ thống có các đặc tính này nên mô hình
kênh AWGN được coi là mô hình kênh cơ bản nhất khi mô tả ảnh hưởng của nhiễu
trong hệ thống. Mối quan hệ giữa đầu vào và đầu ra của kênh AWGN có thể được
biểu diễn đơn giản như sau:
r (t ) s(t ) n(t ) (5.1)
trong đó n(t) là thành phần nhiễu trắng có phân bố Gauss với trung bình bằng 0
được cộng thêm vào tín hiệu đầu vào kênh truyền s(t) như mô tả trong hình 5-2.
Trong mô phỏng hệ thống thông tin, tùy thuộc vào loại mô hình mô phỏng
hay tín hiệu đầu vào mà thành phần nhiễu n(t) cũng có tính chất phù hợp tương ứng.
Đối với trường hợp mô hình dải thông, tín hiệu đầu vào s(t) là tín hiệu thực nên
thành phần nhiễu AWGN n(t) được tạo ra cũng là tín hiệu thực và có hàm tự tương
quan tương ứng là:
trong đó E[] là phép tính kỳ vọng trong thông kê. Do đó mật độ phổ công suất của
nhiễu n(t) có thể thu được qua khai triển Fourier từ (5.1) và có được:
148
Sn ( f ) N0 (5.3)
cho tất cả các thành phần tần số trong băng tần nhiễu.
Đối với trường hợp mô phỏng tương đương băng gốc, tín hiệu đầu vào s(t) là tín
hiệu phức nên thành phần nhiễu AWGN n(t) được tạo ra cũng là tín hiệu phức gồm
2 thành phần thực và ảo (hay thành phần đồng pha và vuông pha) và mỗi thành
phần có hàm tự tương quan là N 0 ( ) 2 . Các thành phần nhiễu đồng pha và vuông
pha đều có phân bố Gauss và là các quá trình độc lập nhau. Như vậy đại lượng mật
độ phổ công suất N0 xác định mức công suất nhiễu AWGN hay phương sai của hàm
phân bố nhiễu Gauss. Đây cũng chính là tham số đặc trưng cho kênh AWGN và xác
định tỉ số tín hiệu trên nhiễu (SNR) của kênh truyền:
Ps P
SNR hay SNR dB 10 log 10 s (5.4)
N0 N0
trong đó Ps là mức công suất tín hiệu đầu vào kênh AWGN. Đối với tín hiệu đầu
vào là tín hiệu có tính ngẫu nhiên thì công suất tín hiệu đầu vào có thể được ước
tính qua phép tính phương sai của tín hiệu. Tham số SNR cũng được sử dụng đặc
trưng cho kênh AWGN thay cho mức công suất nhiễu. Khi đó, mức công suất hay
phương sai nhiễu sẽ được rút ra từ giá trị SNR được thiết lập cho kênh và mức công
suất tín hiệu đầu vào.
Hình 5-3 Mật độ phổ công suất kênh AWGN trong hai mô hình thông dải và mô hình
tương đương băng gốc.
Kênh AWGN có thể được mô phỏng trong MATLAB bằng việc sử dụng
hàm randn để tạo ra các mẫu nhiễu theo phân bố Gauss cộng vào tín hiệu đầu vào.
Một đoạn mã MATLAB tạo ra N mẫu nhiễu Gauss phức độc lập nhau có phương
sai là VarN được cho dưới đây:
149
% Tạo nhiễu Gauss phức có phương sai là VarN.
Như vậy một hàm MATLAB mô phỏng kênh AWGN cho cả tín hiệu thực và tín
hiệu phức có thể được xây dựng như ví dụ cho dưới đây:
if (isreal(yClean))
yNoise = yClean + sqrt(VarN)*randn(size(yClean));
else
yNoise = yClean + sqrt(VarN/2) ...
*(randn(size(yClean))+j*randn(size(yClean)));
end
Đoạn mã MATLAB sau cho một ví dụ về sử dụng hàm addnoise đối với một
tín hiệu NRZ đầu vào giả sử là tín hiệu thực. Hình 5-4 cho kết quả ảnh hưởng của
nhiễu AWGN lên dạng sóng của tín hiệu tại tỉ số SNR được thiết lập tại 10 dB. Một
ví dụ khác đối với tín hiệu phức sử dụng điều chế QPSK khi truyền qua kênh
AWGN được cho trong hình 5-5. Ảnh hưởng của nhiễu AWGN được thấy qua biểu
đồ chòm sao của tín hiệu QPSK tại 2 giá trị SNR khác nhau là 10 và 20 dB.
% Vi du ve kenh AWGN
d = randint(1,100); % Tạo chuỗi bản tin
[t,x] = nrzcode(d,1e6,2000,'pol'); % Mã hóa dạng sóng NRZ
Ts = t(2)-t(1); % Thời gian lấy mẫu
xp = raisedcosflt(x,1.5e6,Ts,0.5); % Tạo dạng xung
% Truyền dẫn qua kênh AWGN
SNRdB = 10; % dB
SNR = 10^(SNRdB/10);
varn = var(xp)/SNR; % Xác định phương sai nhiễu
xnoise = addnoise(xp,varn);
% Hiển thị kết quả
plot(t,xp,'rx',t,xnoise);grid;
xlabel('Time (s)');
ylabel('Amplitude');
eyediagram(xp,40); % Biểu diễn biểu đồ mắt tín hiệu đầu vào
eyediagram(xnoise,40); % Biểu diễn biểu đồ mắt tín hiệu đầu ra
Trong ví dụ trên hàm eyediagram được sử dụng để vẽ biểu đồ mắt của một tín
hiệu dạng sóng. Cú pháp cơ bản sử dụng hàm eyediagram như sau:
- eyediagram(x,n); vẽ biểu đồ mắt của tín hiệu x với cửa sổ biểu diễn
gồm n mẫu. n phải là một số nguyên lớn hơn 1. (Thường n là số nguyên
lần số mẫu/1 chu kỳ symbol).
150
2
1.5
Amplitude 0.5
-0.5
-1
-1.5
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Time (s) x 10
-4
1.5
1
1
0.5
0.5
Amplitude
Amplitude
0 0
-0.5
-0.5
-1
-1
-1.5
-1.5 -2
-0.5 0 0.5 -0.5 0 0.5
Time Time
Hình 5-4 Dạng sóng tín hiệu NRZ trước và sau khi truyền qua kênh AWGN và biểu đồ
mẫu mắt tương ứng.
1 0.6
0.4
0.5
0.2
Quadrature
Quadrature
0 0
-0.2
-0.5
-0.4
-1 -0.6
-0.8
-1.5
-1
-1.5 -1 -0.5 0 0.5 1 1.5 -1 -0.5 0 0.5 1
In-Phase In-Phase
Hình 5-5 Biểu đồ chòm sao của tín hiệu QPSK khi truyền qua kênh AWGN tại mức SNR
bằng 10 dB và 20 dB tương ứng.
151
5.3 Các mô hình kênh thông tin cụ thể
Có nhiều loại kênh thông tin khác nhau và thường phân ra thành hai loại
chính là kênh hữu tuyến và kênh vô tuyến.
trong đó R, L, C là điện trở, độ cảm và điện dung của cáp tương ứng, các tham số
này phụ thuộc vào đặc điểm cụ thể về kích thước và vật liệu của cáp.
Các ống dẫn sóng và sợi quang có thể cũng được bao gồm trong loại môi
trường truyền dẫn có dẫn sóng (hữu tuyến). Trong khi mode truyền dẫn có thể thay
đổi, các kênh thông tin trong loại này có thể được mô hình hóa như các hệ thống
tuyến tính bất biến theo thời gian được mô tả bởi hàm truyền đạt. Tuy nhiên để mô
tả chính xác quá trình lan truyền của các mode dẫn trong ống dẫn sóng
Các hệ thống thông tin quang hữu tuyến sử dụng sợi quang, trong khi các hệ
thống thông tin quang không dây truyền ánh sáng qua không gian tự do. Kiểu hệ
thống thông tin quang phổ biến nhất sử dụng sợi đơn mode hoặc đa mode như kênh
truyền, và có nguồn tin số nhị phân và một bộ thu thực hiện quyết định dựa trên
năng lượng thu được trong mỗi chu kỳ bit. Ngoài việc gây suy hao các xung quang
152
phát đi, sợi quang còn gây méo hoặc dãn xung quang. Có hai cơ chế gây méo chính
khác nhau: tán sắc sắc thể và tán sắc mode. Tán sắc sắc thể là kết quả của sự khác
biệt về vận tốc lan truyền của các thành phần phổ khác nhau được phát đi và là
nguyên nhân méo dạng chính trong các sợi quang đơn mode sử dụng phổ biến hiện
nay. Trong điều kiện hoạt động tuyến tính, sợi quang cũng có thể được mô hình hóa
bằng một hàm truyền đạt trong đó băng thông truyền dẫn phụ thuộc vào tán sắc như
sau:
2 2 z 3 z
j j 3
6
H f ( z, ) e 2
(5.6)
trong đó z là khoảng cách truyền dẫn, 2 và 3 là các hệ số lan truyền bậc 2 và bậc 3
tương ứng của sợi quang đơn mode, các hệ số này quan hệ với tham số tán sắc của
sợi qua các hệ thức sau:
2
20 D 20 2D
2 và 3 S (5.7)
2c 2c 0
ở đây 0 là bước sóng tín hiệu, D và S là hệ số tán sắc và độ dốc tán sắc của sợi
quang đơn mode. Tuy nhiên trong nhiều hệ thống thông tin sợi quang hiện nay, hiệu
ứng phi tuyến cũng là ảnh hưởng cần xem xét, do vậy mô hình truyền dẫn trong sợi
quang đơn mode phải được mô tả bởi phương trình Schrodinger phi tuyến. Việc giải
phương trình này đòi hỏi một số kỹ thuật đặc thù sẽ không được đề cập đến trong
nội dung bài giảng này.
153
vô tuyến qua khí quyển và cách sử dụng những mô hình đó để phân tích, thiết kế và
mô phỏng các hệ thống truyền thông hiện đại.
Từ quan điểm thiết kế truyền thống, ta phân các mô hình lan truyền thành hai
loại sau: (i) mô hình ảnh hưởng phạm vi rộng (được dùng để tính toàn tổn hao
truyền sóng); (ii) mô hình ảnh hưởng phạm vi hẹp (được dùng để mô hình hóa méo
thông tin do hiệu ứng đa đường, hoặc do sự thay đổi ngẫu nhiên đặc tính truyền lan
của kênh). Trong khi, giai đoạn 1 được dùng để thiết lập độ dự trữ công suất tuyến
và phân tích vùng phủ sóng trong giai đoạn thiết kế khởi đầu, thì loại thứ hai được
dùng để thiết kế chi tiết cho hệ thống.
Một kênh “gần như” là không gian tự do được giả định rằng coi khí quyển là
môi trường hoàn toàn đồng nhất, không hấp thụ để khảo sát vùng truyền lan sóng
giữa ăng ten phát/thu (không xảy ra các hiện tượng hấp thụ hoặc phản xạ sóng vô
tuyến RF). Trong mô hình được lý tưởng hóa này, kênh chỉ làm suy hao tín hiệu và
không gây méo dạng sóng. Suy hao được tính theo mô hình truyền lan không gian
tự do được định nghĩa là:
4d
2
Lf (5.8)
trong đó là bước sóng của tín hiệu phát, d là khoảng cách ăng ten phát/thu vô
hướng. Khuếch đại ăng ten phát và ăng ten thu được xem xét khi tính toán công suất
thu thực tế.
Đối với đa số các kênh thực tế trong đó tín hiệu truyền lan qua khí quyển và
gần mặt đất, việc giả định kênh truyền lan không gian tự do không còn phù hợp
nữa. Ảnh hưởng đầu tiên phải xét đến là khí quyển, nó gây ra hấp thụ, khúc xạ và
tán xạ. Sự hấp thụ do khí quyển khi xem xét trên băng tần hẹp sinh ra suy hao bổ
sung. Tuy nhiên, với băng rộng tổn hao lại phụ thuộc vào tần số và thường được mô
hình hóa bởi một hàm truyền đạt. Hiệu ứng lọc này có thể được coi như bất biến
theo thời gian hoặc giả tĩnh (vì kênh thay đổi rất chậm so với tín hiệu). Một hiện
tượng thuộc khí quyển khác nữa là méo pha do tầng điện ly, có thể được mô hình
hóa bởi một đáp ứng pha thay đổi chậm theo thời gian hoặc bất biến theo thời gian.
Một số ví dụ về các mô hình hàm truyền đạt được dùng để đặc tính hóa các loại
kênh khí quyển cụ thể được mô tả dưới đây.
Các ảnh hưởng của khí quyển khác, mặt đất, những vật thể có trên mặt đất
gần với đường truyền sóng thường tạo ra truyền dẫn đa đường. Truyền dẫn đa
đường là tín hiệu đến qua hiều đường phản xạ và/hoặc khúc xạ từ máy phát đến
154
máy thu. Các ảnh hưởng này có thể biến đổi theo thời gian do sự thay đổi trong các
điều kiện khí quyển hoặc sự chuyển động tương đối của ăng ten phát và ăng ten thu
như trong thông tin di động. Thuật ngữ lấp lánh được bắt nguồn từ thiên văn học
vô tuyến, được sử dụng để mô tả tính thay đổi theo thời gian trong các đặc tính kênh
do các thay đổi về vật lí trong môi trường truyền lan như các thay đổi mật độ điện
tử trong tầng điện ly gây phản xạ sóng vô tuyến tần số cao. Thuật nhữ pha đinh đa
đường được dùng trong truyền thông di động để mô tả các thay đổi trong các điều
kiện kênh và trong các đặc tính tín hiệu thu.
Kênh tầng đối lưu: Truyền thông tầng đối lưu (không phải điện ly) sử dụng
băng tần VHF (30 đến 300 MHz) và UHF (300 MHz tới 3 GHz) để truyền tin trên
cự ly vài nghìn km. Trong những băng tần này, ôxy và hơi nước có trong khí quyển
sẽ hấp thụ năng lượng RF. Tổn hao do hấp thụ phụ thuộc vào tần số của sóng RF
cũng như điều kiện khí quyển, độ ẩm thực tế. Tập các đặc tính điển hình về tổn hao
truyền lan do sự hấp thụ khí quyển thường được thấy ở nhiều tài liệu.
Các đặc tính hấp thụ mang tính chọn lọc tần số của khí quyển có thể được
xấp xỉ bằng một hàm truyền đạt ở dạng:
H ( f ) H 0 exp j0.02096f 106 N ( f ) l (5.9)
trong đó N(f) là khúc xạ phức của khí quyển và được cho bởi:
N ( f ) N 0 D( f ) jN ( f ) (5.10)
Trong các biểu thức (5.9) và (5.10) thì H0 là hằng số, N0 là khúc xạ phụ thuộc tần
số, D(f) là hấp thụ khúc xạ, N”(f) là độ hấp thụ, l là khoảng cách (km). Các tham số
này phụ thuộc vào tần số và các điều kiện khí quyển như nhiệt độ, áp suất, độ ẩm.
Các giá trị điển hình thường được trình bày ở dạng bảng dữ liệu [1].
Một khi biết trước các điều kiện khí quyển và độ rộng băng tần của tín hiệu,
thì có thể tính được hàm truyền đạt theo thực nghiệm tại các giá trị tần số khác nhau
theo (5.9) và (5.10). Có thể tìm được hàm truyền đạt tương đương băng gốc bằng
cách dịch tần số và dùng kỹ thuật FIR để mô phỏng mô hình kênh này.
Ảnh hưởng của mưa lên kênh vô tuyến: Mưa có ảnh hưởng đáng kể lên
truyền lan sóng viba tại các tần số cao (lớn hơn 10 GHz). Nhiều kỹ thuật đã được đề
xuất trong các tài liệu để mô hình hóa các ảnh hưởng của mưa [1]. Suy hao do mưa
rào là một hàm của tốc độ mưa và tần số. Khi tốc độ mưa và tần số tín hiệu càng lớn
thì suy hao càng lớn. Theo đó, suy hao tăng khi tốc độ mưa và tần số tăng. Ngoài ra,
xuất hiện các đỉnh cộng hưởng trong đặc tính suy hao. Các đỉnh cộng hưởng thường
155
xảy ra tại 22 GHz và 60 GHz. Đỉnh tại 22 GHz xảy ra do hơi nước và đỉnh tại 60
GHz xảy ra do các phân tử ôxy.
Suy hao do mưa rào thường được tính toán cho các vị trí địa lý cụ thể sử
dụng tính thống kê về tỉ lệ mưa vùng đó. Với thông tin vệ tinh, tổn hao được tính
toán là một hàm của góc ngẩng ăng-ten trạm mặt đất (theo chiều ngang) và tần số.
Độ ngẩng càng thấp có nghĩa là có nhiều nước mưa hơn và tổn hao càng cao. Ảnh
hưởng của mưa rào được tính toán cụ thể với xác suất ngừng hoạt động cho trước,
là phân số của thời gian mà BER của tuyến vượt giá trị ngưỡng (thường là 10-3 cho
thông tin thoại và 10-6 cho các tuyến số liệu).
Với các độ rộng băng thông (dải thông) tương đối nhỏ, các ảnh hưởng của
mưa có thể được tính đến bằng cách đưa thêm thành phần tổn hao phụ vào mô hình
kênh. Tuy nhiên, khi dải thông của tín hiệu lớn, sẽ thay đổi suy hao trên băng thông
và cần có một mô hình kiểu hàm truyến đạt. Đáp ứng biên độ của hàm truyền đạt có
một độ nghiêng tuyến tính (trên thang đo dB) và đáp ứng pha được giả sử là tuyến
tính.
Các kênh truyền lan không gian tự do ở tần số cao sử dụng ăng ten định
hướng cao, có đặc tính phân cực cụ thể. Khi bước sóng (tương ứng tần số sóng
mang) lớn hơn rất nhiều so với kích thước phần tử khí quyển và khi không có các
vật cản vật lý đối với đa đường, thì có thể sử dụng phân cực ăng ten để cách ly
(phân lập) các kênh. Trong các hệ thống truyền thông sử dụng nhiều phân cực trực
giao cho các tín hiệu khác nhau, thì phải xét đến hiệu ứng khử cực của mưa. Khử
phân cực có nghĩa là năng lượng trong một phân cực rò ra hoặc kết hợp với năng
lượng trong thành phần phân cực trực giao. Điều này gây ra xuyên âm. Nếu có hai
tín hiệu được truyền trên các thành phần phân cực trực giao là:
mô hình đơn giản nhất cho hai tín hiệu thu với khử phân cực là:
~
r1 (t ) 11 ~
s1 (t ) 12 ~
s2 (t )
~ (5.12)
r (t ) s (t ) ~
2
~
21 1 s (t )
22 2
trong đó tỉ số 20log(11/21) là số đo nhiễu phân cực chéo (XPI) lên tín hiệu 1 từ tín
hiệu 2. Trong khi rất nhiều phép tính gần đúng khả dụng trong nhiều tài liệu để
phân tích ảnh hưởng của XPI lên hệ thống số hoặc tương tự, thì nhu cầu mô phỏng
tăng lên khi hệ thống lệch khỏi hệ thống lý tưởng.
156
5.3.3 Kênh pha đinh đa đường
Trong thông tin vô tuyến, đa đường là hiện tượng lan truyền của tín hiệu vô
tuyến tới ăng ten thu bằng hai hoặc nhiều hơn hai đường truyền như mô tả trong
hình 5-6. Các nguyên nhân của đa đường bao gồm hiệu ứng dẫn trong khí quyển,
quá trình phản xạ và khúc xạ ở tầng điện ly, sự phản xạ từ mặt nước và các vật
chướng ngại trên mặt đất như các ngọn núi và các tòa nhà. Các hiệu ứng đa đường
gây ra sự giao thoa cộng hưởng và triệt tiêu, và sự dịch pha của tín hiệu.
Các tín hiệu đa đường thu được ở các dạng lan truyền khác nhau khi tín hiệu
tới bộ thu từ bộ phát thông qua các đường truyền khác nhau. Do đó sẽ có sự giao
thoa đa đường dẫn đến pha đinh đa đường. Việc thêm vào sự chuyển động của hoặc
bộ phát hoặc bộ thu hoặc các đối tượng xung quanh làm cho biên độ hoặc pha của
toàn bộ tín hiệu thu được thay đổi trên một khoảng thời gian xác định gây ra pha
đinh.
Một mô hình kênh pha đinh đa đường có thể được đặc trưng một cách tổng
quát như một bộ lọc có đáp ứng xung
K
h(t ) ak .e jk .e j 2fc k . t k (5.13)
k 1
trong đó K đặc trưng cho số đường truyền tín hiệu từ bộ phát đến bộ thu trong đó
mỗi đường truyền thứ k được đặc trưng bởi hệ số suy hao ak, độ trễ k và độ dịch
pha k tại thời điểm t, fc là tần số sóng mang và là hàm xung Dirac. Từ phương
trình (5.13) ta có thể thấy độ dịch pha bao gồm sự dịch pha vì quá trình lan truyền
trong không gian tự do của thành phần đa đường thứ k và bất kì độ dịch pha bổ sung
gặp phải trong kênh truyền. Tùy thuộc vào đặc tính của các tham số trong ptr. (5.13)
mà ta có các mô hình kênh pha đinh đa đường khác nhau. Như vậy, khi tín hiệu đầu
157
vào là tín hiệu băng gốc s(t) với tần số sóng mang fc được truyền qua kênh pha đinh
đa đường, tín hiệu thu được tương đương băng gốc có thể được biểu diễn bởi
K
r (t ) s(t ) h(t ) ak .e jk .e j 2f c k .st k (5.14)
k 1
Từ (5.14) ta thấy được tín hiệu thu được bao gồm tập hợp các bản sao của tín hiệu
phát mà mỗi bản sao được định cỡ bởi ak .e j .e j 2f và bị trễ bởi một lượng k. Nói
k c k
cách khác, có K đường truyền khác nhau tức là có K bản sao của cùng tín hiệu tới
bộ thu tại thời điểm t. Mỗi bản sao trải qua các tổn hao khác nhau dẫn tới biên độ
khác nhau, và quãng đường khác nhau sinh ra sự dịch pha và trễ khác nhau.
Đáp ứng tần số hay hàm truyền đạt của kênh có thể thu được từ (5.14) qua khai triển
Fourier và thu được
K
H ( f ) ak .e jk .e j 2fc k .e j 2f k (5.15)
k 1
Tại một tần số f xác định, đáp ứng tần cũng là tổng của các số phức. Như vậy khi
các số hạng này cộng triệt tiêu nhau thì đáp ứng tần là rất nhỏ hoặc thậm chí bằng 0
tại tần số đó. Các điểm null trong đáp ứng tần của kênh pha đinh đa đường là điển
hình trong hệ thống thông tin vô tuyến và được xem như là pha định chọn lọc tần
số.
Trong trường hợp các kênh bất biến theo thời gian, các tham số trong đáp
ứng xung hay đáp ứng tần không phụ thuộc vào biến thời gian t. Các tham số này có
thể được xác định qua các phép đo kiểm kênh truyền. Khi các tham số được xác
định, đáp ứng tần của kênh pha đinh đa đường dễ dàng tính được qua biểu thức
(5.15). Một đoạn mã MATLAB tính toán đáp ứng tần của kênh pha đinh đa đường
được cho thấy dưới đây:
HH = amp.*exp(-j*2*pi*fc*tau) * exp(-j*2*pi*tau'*ff);
% Chú ý: tau’*ff là phép nhân ma trận và tích của hai hàm mũ exp cũng
% là nhân ma trận tạo ra phép tính tổng trong biểu thức đáp ứng
tần.
158
Một ví dụ về mô hình kênh pha đinh đa đường được cho thấy trong các hình 5-7 và
5-8. Trong ví dụ này, kênh đa đường được đặc trưng bởi 69 đường truyền khác nhau
với các tham số được cho thấy trong hình 5-7. Hình 5-8 cho thấy đáp ứng tần tương
ứng của kênh với các điểm notch đặc trưng cho tính chọn lọc tần số của kênh vô
tuyến.
-5
x 10
4
3
Attenuation
0
0.8 1 1.2 1.4 1.6 1.8 2
Delay (s)
2
Phase Shift/
-2
-4
0.8 1 1.2 1.4 1.6 1.8 2
Delay (s)
Hình 5-7 Ví dụ đáp ứng xung của kênh pha đinh đa đường cho thấy suy hao, trễ và pha của
mỗi đường giữa bộ thu và bộ phát.
-78
-80
-82
|Frequency Response| (dB)
-84
-86
-88
-90
-92
-94
-96
-98
-5 -4 -3 -2 -1 0 1 2 3 4 5
Frequency (MHz)
Hình 5-8 Đáp ứng tần của kênh pha đinh đa đường tương ứng với đáp ứng xung trong hình
5-7 được đặc trưng bởi các điểm notch.
159
Trong mô hình kênh biến đổi theo thời gian mà phần lớn các hệ thống vô
tuyến hay gặp, các tham số biến đổi theo biến thời gian t hay ak = ak(t), k = k(t) và
k = k(t). Sự biến đổi của tất cả ba tham số này đều là các quá trình ngẫu nhiên. Độ
dịch pha có thể được giả sử theo phân bố đều, còn hàm phân bố tham số biên độ
phụ thuộc vào kiểu pha đinh cùng với khoảng cách lan truyền (tổn hao tuyến). Độ
trễ thông thường được mô hình hóa theo phân bố Poisson. Một mô tả ví dụ về đáp
ứng xung của một kênh đa đường biến đổi theo thời gian cho thấy trong hình 5-9,
trong đó đối với một thời điểm ti xác định, mỗi thành phần đường truyền có một độ
trễ, biên độ và pha khác nhau.
Hình 5-9 Mô tả đáp ứng xung của kênh đa đường biến đổi theo thời gian
Phụ thuộc vào hàm phân bố biên độ các thành phần ta có các kiểu mô hình kênh pha
đinh khác nhau. Hai hàm phân bố hay được sử dụng là hàm phân bố Rayleigh và
hàm phân bố Rice tương ứng với các mô hình kênh pha đinh Rayleigh và mô hình
kênh pha đinh Rice.
Hình 5-10 Mô hình kênh pha đinh đa đường biến đổi theo thời gian
Mô phỏng kênh pha đinh đa đường biến đổi theo thời gian cũng có thể được
thực hiện như mô phỏng bộ lọc FIR hoạt động theo dạng rời rạc theo thời gian.
Hình 5-10 mô tả sơ đồ khối mô hình kênh pha đinh đa đường theo mô hình bộ lọc
FIR. Số lượng nhánh của bộ lọc được xác định bởi tích độ trải trễ và tốc độ lấy mẫu.
160
Các nhánh có trọng số phức là ngẫu nhiên tuân theo hàm phân bố Gauss. Biên độ
trọng số của mỗi nhánh được phản ánh qua mặt cắt trễ công suất. Sự biến đổi theo
thời gian của các nhánh có thể được đặc trưng bởi tham số dịch tần Doppler tức thời
liên hệ với thành phần dịch pha mỗi nhánh có thể được biểu diễn như sau:
f di f d cos i (5.16)
trong đó i là góc tới của thành phần tín hiệu đường truyền thứ i, fd là tần số dịch
Doppler cực đại được xác định bởi
v
fd fc (5.17)
c
với v là tốc độ chuyển động tương đối giữa bộ phát và bộ thu. Ví dụ về đáp ứng tần
biến đổi theo thời gian được mô phỏng cho thấy trong hình 5-11.
-70
|Frequency Response| (dB)
-80
-90
-100
-110
-120
-130
200
150 5
100
0
50
Time (ms) 0 -5
Frequency (MHz)
Hình 5-11 Sự phụ thuộc đáp ứng tần theo thời gian tại fc = 1GHz, vận tốc v = 10m/s và tần
số Doppler cực đại 33Hz.
Quá trình mô phỏng kênh pha đinh đa đường có thể được thực hiện trong
miền thời gian thông qua tích chập như mô tả bởi ptr. (5.15) hay như hình 5-10. Cần
lưu ý khi thực hiện phép tích chập trong MATLAB qua hàm conv, độ dài vector
kết quả lớn hơn độ dài vector tín hiệu đầu vào, do vậy cần hiệu chỉnh độ dài vector
nếu cần để đồng bộ với vector thời gian khi biểu diễn kết quả.
161
5.3.4 Kênh rời rạc
Mô hình cơ bản của một hệ thống thông tin có thể mô tả trong hình 5-12, bao
gồm một nguồn dữ liệu rời rạc, một bộ mã hóa kênh để điều khiển lỗi, một bộ điều
chế và bộ phát, một kênh thông tin, một bộ thu và một bộ giải mã. Phụ thuộc vào
ứng dụng cho hệ thống và chi tiết của mô phỏng, các phần tử khác như bộ cân bằng,
các bộ ghép/tách xen, bộ đồng bộ sóng mang và ký hiệu có thể là một phần của mô
hình hệ thống. Như đã đề cập ở Chương 4, bộ điều chế sắp xếp một ký hiệu hoặc
một chuỗi ký hiệu tại đầu vào bộ điều chế thành một dạng sóng tại đầu ra bộ điều
chế. Dạng sóng sẽ bị tác động bởi một số hiệu ứng suy giảm trong kênh thông tin
như là nhiễu, giới hạn băng tần, giao thoa và pha đinh. Tất cả các hiệu ứng này có
thể được đặc trưng bởi dạng sóng. Đầu vào một bộ thu cũng là một dạng sóng bị
méo dạng bởi kênh truyền. Vai trò của bộ thu là để quan sát dạng sóng thu được
trên một chu kì của ký hiệu hoặc chuỗi ký hiệu để xác định các ký hiệu được phát
đi. Kênh truyền trong trường hợp này được xem như là kênh dạng sóng vì cả hai
đầu vào và đầu ra của kênh được đặc trưng như dạng sóng. Nó rất quan trọng để lưu
ý rằng tất cả các phần tử hệ thống với ngoại trừ kênh thông tin đều được mô tả bới
các sắp xếp xác định. Kênh thông tin thực hiện một sự sắp xếp ngẫu nhiên hay
thông kê của tín hiệu đầu vào tới đầu ra của kênh.
Thuật ngữ mô hình kênh rời rạc được sử dụng để biểu thị tất cả các phần tử
của một hệ thống thông tin nằm giữa hai điểm A và B trong hệ thống, trong đó đầu
vào tại điểm A là một vector các ký hiệu rời rạc (chuỗi đầu vào) ký hiệu là X = [x1,
x2, …, xk, …] và đầu ra tại B là một vector các ký hiệu rời rạc khác (chuỗi đầu ra)
ký hiệu là Y = [y1, y2, …, yk, …]. Thông thường điểm A sẽ là đầu ra bộ mã hóa kênh
hoặc tương đương đầu vào bộ điều chế, và điểm B sẽ là đầu vào bộ giải mã như cho
thấy trong hình 5-12. Chú ý rằng, với sự phân chia cho thấy trong hình 5-12, bộ
điều chế phát, kênh dạng sóng và bộ thu là phần của mô hình kênh rời rạc. Mối
quan hệ giữa vector đầu vào kênh rời rạc X và vector đầu ra Y sẽ bị tác động bởi
các thành phần hệ thống như các bộ lọc và bởi các nhiễu loạn ngẫu nhiên xảy ra
trong kênh vật lý dạng sóng. Trong một hệ thống thông tin nhị phân với các bộ thu
quyết định cứng, các phần tử của cả X và Y sẽ là các chuỗi nhị phân. Trong trường
hợp các bộ thu quyết định mềm, các phần tử của Y sẽ là từ một danh sách ký tự M
mức. Các lỗi truyền dẫn sinh ra từ những khiếm khuyết trong các phần tử hệ thống
giữa các điểm A và B bao gồm cả kênh vật lý sẽ làm cho các phần tử của X và Y
đôi lúc khác nhau.
162
Hình 5-12 Mô hình kênh rời rạc trong hệ thống thông tin.
Các mô hình kênh rời rạc mô tả cơ chế tạo lỗi theo xác suất. Các mô hình
này thuộc trong hai loại sau:
- Loại mô hình đầu tiên được xem là các mô hình kênh không nhớ, được sử
dụng để mô hình hóa các lỗi truyền dẫn hoặc các chuyển tiếp từ đầu vào
tới đầu ra của kênh dưới điều kiện giả sử rằng không có sự tương quan về
thời gian trong cơ chế chuyển tiếp. Đó là xác suất chuyển tiếp đầu vào –
đầu ra đối với ký hiệu đầu vào kênh thứ n không bị tác động bởi những gì
xảy ra với bất kỳ ký hiệu đầu vào khác. Các mô hình như vậy có thể áp
dụng đối với các kênh thông tin mà không có sự giao thoa giữa các ký tự
(ISI) hay pha đinh và nhiễu là AWGN. Trong một hệ thống nhị phân
quyết định cứng, sự giả sử này bao hàm rằng các lỗi bit không tương
quan với nhau. Các mô hình kênh rời rạc cho các kênh không nhớ luôn
thu được nghiệm tầm thường.
- Loại mô hình kênh rời rạc thứ hai áp dụng cho các trường hợp trong đó
các chuyển tiếp từ các ký hiệu đầu vào đến các ký hiệu đầu ra là tương
quan về thời gian. Trong trường hợp này, xác suất lỗi cho ký hiệu thứ n
phụ thuộc vào liệu một lỗi có xảy ra trong truyền dẫn các ký hiệu trước
hay không. Kênh pha đinh thường gặp phải trong thông tin vô tuyến là
một ví dụ tốt của kênh thông tin có các lỗi tương quan. Các lỗi sẽ xu
hướng xảy ra theo cụm khi kênh vô tuyến đang ở trạng thái pha đinh sâu,
163
và những kênh này được xem như là các kênh lỗi cụm hoặc các kênh có
nhớ.
Các mô hình kênh rời rạc là các mô hình xác suất có hiệu quả về tính toán
hơn so với các mô hình kênh dạng sóng. Hiệu quả được cải thiện tới từ hai yếu tố.
Các mô hình rời rạc được mô phỏng tại tốc độ ký hiệu, trái lại các mô hình kênh
dạng sóng thường được mô phỏng tại tốc độ từ 8 đến 16 lần tốc độ ký hiệu. Chính
điều này đã giảm tải trong tính toán ít nhất một bậc độ lớn. Trong khi mỗi khối đơn
được mô phỏng chi tiết theo một mô hình dạng sóng, thì có một sự rút gọn mức cao
trong mô hình kênh rời rạc. Mức rút gọn này sẽ giảm thêm khối lượng tính toán.
Hai yếu tố này có thể giúp tiết kiệm thời gian tính toán cỡ vài bậc khi thực hiện mô
phỏng.
Trong các trường hợp đơn giản, các mô hình kênh rời rạc có thể thu được
bằng giải tích từ các mô hình của các thành phần nằm giữa đầu vào kênh tại A và
đầu ra kênh rời rạc tại B. Tuy nhiên trong hầu hết trường hợp, các mô hình kênh rời
rạc thu được từ các mẫu lỗi được đo kiểm hoặc mô phỏng giữa các điểm A và B.
Các mô hình kênh rời rạc được sử dụng để thiết kế và phân tích tác động của các
thành phần bên ngoài phần hệ thống giữa điểm A và B, ví dụ như các bộ mã hóa
điều khiển lỗi, các bộ mã hóa nguồn và các bộ đan xen.
Mô hình hóa các kênh rời rạc không nhớ là một quá trình rõ ràng. Ví dụ,
trong trường hợp của một kênh đối xứng rời rạc không nhớ với các đầu vào và đầu
ra là tín hiệu nhị phân, tất cả những gì ta cần biết để mô tả kênh là một giá trị xác
suất lỗi bít. Mô phỏng kênh này đòi hỏi tạo một số ngẫu nhiên đơn và so sánh số đó
với một ngưỡng để quyết định liệu một bít xác định sẽ gặp lỗi truyền dẫn hay không
hay thu được mà không bị lỗi. Như vậy, để mô phỏng truyền dẫn một triệu bít qua
một kênh xác định, tất cả những gì chúng ta phải làm là tạo ra một triệu số ngẫu
nhiên phân bố đều và thực hiện các so sánh ngưỡng được yêu cầu. Do đó, toàn bộ
hệ thống được đặc trưng bởi kênh này được mô phỏng hiệu quả. (So sánh trường
hợp này với mô phỏng dạng sóng cái đòi hỏi tạo ra hàng triệu mẫu đặc trưng cho
dạng sóng trong hệ thống được mô phỏng và xử lý các mẫu này xuyên suốt tất cả
các khối chức năng trong hệ thống)
Các kênh rời rạc có nhớ khó để mô hình hóa hơn. Cơ chế tạo lỗi tương quan
về thời gian thường được mô hình hóa bởi một chuỗi Markov rời rạc về thời gian
trong đó một mô hình trạng thái được sử dụng để đặc trưng các trạng thái khác nhau
của kênh thông tin và một tập xác suất chuyển tiếp trạng thái được sử dụng để xác
164
định tiến trình của các trạng thái kênh. Mỗi trạng thái cũng sẽ kết hợp với một tập
xác suất chuyển tiếp ký hiệu từ đầu vào tới đầu ra. Như vậy, mô hình này phức tạp
hơn và đòi hỏi nhiều tham số hơn kênh không tương quan. Cấu trúc mô hình và các
giá trị tham số được ước tính từ hoặc các mẫu lỗi đo được hoặc mẫu lỗi mô phỏng.
Mô phỏng kênh rời rạc bao gồm việc tạo ra một số ngẫu nhiên trước khi truyền dẫn
mỗi ký hiệu để xác định trạng thái kênh, và sau đó rút ra một số ngẫu nhiên khác để
xác định chuyển tiếp đầu vào – đầu ra. Trong khi mô hình và các thủ tục ước tính
tham số là phức tạp, thì mô phỏng mô hình Markov cho thấy rất hiệu quả. …
Như vậy, mô phỏng kênh rời rạc đều đòi hỏi tạo mẫu lỗi ngẫu nhiên. Quá
trình này có thể được thực hiện qua việc sử dụng các hàm tạo số ngẫu nhiên trong
MATLAB. Ngoài các hàm tạo số ngẫu nhiên như mô tả trong Chương 4, ta có thể
sử dụng hàm randerr trong MATLAB để tạo các mẫu lỗi bít. Đoạn mã dưới đây
cho thấy ví dụ sử dụng hàm randerr:
% out = randerr(m) tạo ma trận nhị phân mxm với mỗi hàng có một vị
% trí lỗi ngẫu nhiên.
% out = randerr(m,n) tạo ma trận nhị phân mxn với mỗi hàng có một vị
% trí lỗi ngẫu nhiên.
% out = randerr(m,n,ne) tạo ma trận nhị phân mxn với mỗi hàng có
% số vị trí lỗi ngẫu nhiên được xác định bởi ne.
out = randerr(5,3,[0 2]) % Tạo mẫu lỗi bít với 2 kiểu lỗi gồm 0 và 2
vị trí lỗi ngẫu nhiên mỗi hàng
1 1 0
0 1 1
0 1 1
0 0 0
0 1 1
out2 = randerr(5,3,[0 2; .75 .25]) % Tạo mẫu lỗi bít với 2 kiểu lỗi
gồm 0 và 2 vị trí lỗi ngẫu nhiên mỗi hàng có xác suất lần lượt là 75%
và 25%.
0 0 0
1 0 1
0 0 0
0 0 0
0 0 0
165
Hình 5-13 Mô hình kênh nhị phân
Mô hình kênh rời rạc không nhớ đơn giản nhất là kênh đối xứng nhị phân
(BSC) như được mô tả trong hình 5-13a. Đầu vào kênh rời rạc này là một chuỗi nhị
phân được ký hiệu bởi vector X. Thành phần thứ k của vector này, xk, tương ứng với
đầu vào kênh thứ k, và pk tương ứng với xác suất lỗi lên truyền dẫn ký hiệu thứ k.
Đối với một kênh không nhớ, pk là độc lập với k, do vậy lỗi trên tất cả các ký hiệu bị
tác động bởi kênh thông tin theo cùng một kiểu. (Nếu kênh là có nhớ, nhìn chung pk
sẽ là một hàm của pk-1). Một chuỗi ký hiệu có độ dài M được xử lý qua kênh không
nhớ bằng cách gọi mô hình kênh M lần liên tiếp. Đối với ký hiệu thứ k, một đầu vào
nhị phân là 0 thu được chính xác là 0 với xác suất 1-pk, và thu sai là 1 với xác suất
pk. Đầu ra kênh thứ k được kí hiệu là yk và chuỗi M ký hiệu đầu ra kênh được ký
hiệu bởi vector Y. Kênh là đối xứng khi các bít 0 và 1 bị ảnh hưởng bởi kênh truyền
theo cùng một kiểu. Lưu ý rằng kết quả của tính đối xứng là xác suất lỗi độc lập với
ký hiệu được phát đi, do đó nguồn lỗi có thể được mô phỏng tách biệt với nguồn tin
(dữ liệu). Đối với một kênh nhị phân, quan hệ đầu vào-đầu ra có thể được biểu diễn
như sau
Y XE (5.18)
trong đó X và Y là các vector dữ liệu đầu vào và đầu ra tương ứng, là phép toán
XOR, và E là vector lỗi. Cụ thể, E = {e1, e2, e3, …} là một vector nhị phân hoặc
chuỗi có các phần tử {0, 1} trong đó ek = 0 chỉ ra phần tử thứ k của X, xk, thu được
chính xác (yk = xk), và ek = 1 chỉ ra phần tử thứ k của X thu được bị lỗi (yk xk).
Tham số định nghĩa hiệu năng của mô hình kênh nhị phân đối xứng là xác suất lỗi
Pe cái có thể được ước tính dễ dàng từ các phép đo hoặc từ mô phỏng hệ thống ở
mức dạng sóng. Chú ý rằng đối với một hệ thống nhị phân, ước tính xác suất lỗi
theo phương pháp Monte Carlo là trọng số Hamming của vector lỗi E chia cho N là
số phần tử trong vector E. Khi pk được biết, chuỗi lỗi tương ứng với N ký hiệu phát
đi có thể được tạo ra bằng việc gọi N lần bộ tạo số ngẫu nhiên phân bố đều và so
sánh số ngẫu nhiên với ngưỡng p. Cụ thể:
166
1, U k pk
ek (5.19)
0, U k pk
trong đó Uk là số thu được từ lần gọi bộ tạo số ngẫu nhiên thứ k. Mô hình phức tạp
hơn với xác suất lỗi bít 1 và 0 khác nhau như mô tả trong hình 5-13b và các mô
hình nhiều đầu vào và đầu ra đều có thể mở rộng ra từ mô hình BSC.
Trong MATLAB, mô hình kênh BSC dễ dàng được xây dựng từ hàm
randerr như trong ví dụ trước. Tuy nhiên ta có thể sử dụng hàm kênh đối xứng
nhị phân bsc trong thư viện Communications Toolbox. Ví dụ về hàm bsc được
cho trong đoạn mã dưới đây:
Một ví dụ khác trong MATLAB về sử dụng mô hình kênh BSC trong khảo sát hiệu
năng mã sửa lỗi BCH trong hệ thống viễn thông cũng được cho trong đoạn mã dưới
đây:
% Ví dụ sử dụng kênh BSC trong mô phỏng hiệu năng mã sửa lỗi BCH
167
Kết quả sau khi chạy chương trình:
ber =
0.0021
ber0 =
0.0499
Như vậy qua mô hình kênh rời rạc hiệu năng của mã sửa lỗi dễ dàng được mô
phỏng mà không phải thực hiện tải tính toán lớn qua xử lý các mẫu tín hiệu trong
kênh dạng sóng.
Biết tín hiệu được truyền qua kênh AWGN có SNR bằng 8 dB. Hãy so sánh kết quả
giữa tín hiệu gốc ban đầu và tín hiệu thu được sau khi giải điều chế.
5-3/ Tương tự bài 2 nhưng sử dụng kỹ thuật điều chế FM với độ sâu điều chế m =
0,4.
5-4/ Cho tín hiệu điều chế được cho trong bài tập 4-7 truyền qua kênh AWGN có
SNR bằng 10 dB. Hãy biểu diễn biểu đồ mắt của tín hiệu trước và sau khi truyền
qua kênh.
168
5-5/ Mô phỏng ảnh hưởng của kênh truyền cáp đồng trục dài 1 km được mô tả bởi
phương trình (5.5) lên tín hiệu băng gốc sử dụng mã đường NRZ tại tốc độ 100
Kb/s. Biết cáp đồng trục có trở kháng 50 , độ cảm L = 235.7 nH/m và điện dung C
= 94.2 pF/m. Giả sử không xét đến suy hao của kênh truyền. Tín hiệu sẽ bị ảnh
hưởng như thế nào nếu sử dụng mã RZ 50%.
5-6/ Giả sử rằng một kênh BSC được xác định bởi xác suất lỗi p = 10-2 với pk độc
lập với k. Xây dựng chương trình MATLAB sử dụng hàm randerr để mô phỏng
truyền dẫn N ký hiệu qua kênh với N = 100, N = 1000, và N = 10000. Trong mỗi
trường hợp đếm số lỗi thực xảy ra và tính BER thu được từ mô phỏng. Lặp lại thí
nghiệm 10 lần cho mỗi giá trị của N. Hãy đưa ra kết luận sau khi thực hiện.
5-7/ Mô phỏng ảnh hưởng tán sắc trong sợi đơn mode lên xung Gauss có độ rộng
xung là 10 ps. Biết sợi quang có hệ số tán sắc D = 17 ps/nm-km và S 0 với
khoảng cách L = 200 m, 500 m và 1 km.
5-8/ Cho kênh pha đinh đa đường Rayleigh được mô tả bởi 2 tia có đặc điểm cho
trong bảng sau:
1 1 0.2 0
2 1 0.2 1/2Tsym
Hãy mô phỏng ảnh hưởng của kênh lên tín hiệu QPSK tại mức SNR = 8 dB và so
sánh với trường hợp kênh AWGN.
169
Chương 6 Ước tính các tham số và đánh giá
hiệu năng
Do tính thống kê trong quá trình mô phỏng hệ thống truyền thông, do vậy kỹ
thuật ước tính các tham số có ý nghĩa trong mô phỏng, đặc biệt là ước tính hiệu
năng. Chương này sẽ đề cập đến một số vấn đề cơ bản trong ước tính tham số và
đánh giá hiệu năng hệ thống được mô phỏng.
trong đó N là số mẫu. Một bộ ước tính cũng là một biến ngẫu nhiên, do vậy giá trị
kỳ vọng (hay trung bình) của nó được xác định
1 N 1 N
E x E xk E xk E x E x
1 N
(6.2)
N k 1 N k 1 N k 1
trong đó tính phân bố của kỳ vọng và tính dừng được sử dụng. Như vậy giá trị trung
bình của mẫu cũng là giá trị trung bình của tập phân bố.
170
Phương sai của bộ ước tính là trung bình cộng của bình phương độ lệch giữa
giá trị đo và giá trị kì vọng
Var x E x E x
N N
1
C
2
xx (i, j ) (6.3)
N2 i 1 j 1
Cxx (i, j) Exi Exi x j Ex j (6.4)
C xx (i, j) C xx (i j) (6.5)
x2 N 1
Var x N k C
2
2 xx (kTs ) (6.6)
N N k 1
Trong một số hệ thống năng lượng k(T0) luôn là ngẫu nhiên. Ví dụ trong
một bộ thu quang trực tiếp, đầu ra của diode thu quang thác trong một khoảng thời
gian xác định là một biến ngẫu nhiên thậm chí khi cường độ đầu vào được cố định.
Trong một hệ thống như vậy, trong khi đầu ra trung bình có thể vẫn là thông tin hữu
171
ích thì những gì quan tâm thực sự là phân bố của đầu ra xác định cho một kiểu kí
hiệu.
Dạng sóng x(t) được lấy mẫu tại các khoảng Ts để thu được x và bộ ước tính
công suất trung bình có dạng sau
1 N 2
PN x xk (6.7)
N k 1
Sử dụng một biến trung gian y(t) = x2(t), bài toán trở thành ước tính trung bình của
y(t) và có thể sử dụng kết quả của phần trước
N
1
y
N
y
k 1
k (6.8)
Nó rõ ràng rằng
E y E y (6.9)
hay giá trị kì vọng của bộ ước tính công suất trung bình mẫu hữu hạn là bằng với
giá trị trung bình bình phương của quá trình, độc lập với N.
Trong MATLAB một số hàm sẵn có cho phép sử dụng để ước tính các tham
số thống kê có thể sử dụng đó là:
172
được từ PSD. Có hai kỹ thuật cổ điển để ước tính phổ dựa trên định nghĩa mật độ
phổ công suất: phương pháp gián tiếp và phương pháp trực tiếp.
Phương pháp gián tiếp: Theo định nghĩa PSD Sxx(f) của quá trình x(t) như
là khai triển Fourier của hàm tự tương quan Rxx()
Sx ( f ) R ( ) exp j 2f d ,
x
- < f < (6.11)
Trong mô phỏng, tín hiệu x(t) ở dạng rời rạc nên PSD trong miền rời rạc có dạng
Px ( f ) Ts R (k ) exp j 2fkT ,
k
x s f 1
2 fs (6.12)
Tuy nhiên trong thực tế số lượng mẫu quan sát {x(n)} là hữu hạn, nên bộ ước tính
PSD sẽ được xác định như sau
L
Pˆx ( f ) Ts Rˆ (k ) exp j 2fkT
k L
x s (6.14)
trong đó chỉ số k được như là trễ và trễ cực đại được sử dụng là L. Lưu ý rằng P̂x là
tuần hoàn theo f và vùng quan tâm là f 1 2Ts . Hàm tự tương quan lúc này sẽ
được tính bởi
N k 1
1
Rˆ x (k )
N
x(n k ) x
n 0
(n) (6.15)
trong đó k = 0, 1, …, N-1 là số các mẫu quan sát, và x* là liên hợp phức nếu x là số
phức. P̂x được xác định cho bất kỳ f nào trong khoảng f 1 2Ts .
Phương pháp trực tiếp: Hàm PSD được định nghĩa như sau
S x ( f ) lim E Sˆ x ( f , T )
T
(6.16)
trong đó
2
XT ( f )
Sˆ x ( f , T ) (6.17)
T
và
173
T
X T ( f ) x(t ) exp j 2ft dt (6.18)
0
là khai triển Fourier thời gian hữu hạn của một hàm mẫu của quá trình. Một bộ ước
tính PSD dạng rời rạc thời gian Pˆ ( f ) được xác định như sau
x
1
Pˆx ( f ) X N ( f )2 (6.19)
NTs
trong đó
N 1
X N ( f ) Ts x(n) exp j 2fnTs (6.20)
n 0
là khai triển Fourier rời rạc của chuỗi dữ liệu quan sát.
Như vậy dựa trên giải thuật FFT, ước tính phổ sẽ được xác định hoặc bằng
phương pháp gián tiếp hoặc bằng trực tiếp. Các ví dụ về tính toán PSD của tín hiệu
sử dụng hàm fft đã được cho trong Chương 4 mục 4.1.
x s0 n0 (6.21)
s 0 As (6.22)
với
Thành phần nhiễu được xem như là sai số trung bình bình phương nhỏ nhất trên tất
cả các A và được định nghĩa như sau
2 x As 2 (6.24)
174
Nó có thể được chứng minh rằng (6.24) nhỏ nhất khi
u , A A 2 s2 2 AR xs ( ) (6.25)
1 N 2
2
s s kTs (6.26)
N k 1
1 N
Rxs ( ) xkTs skTs
N k 1
(6.27)
được xem là hàm tương quan chéo thực nghiệm. Do vậy ước tính SNR ̂ được xác
định như sau:
s 02
ˆ (6.28)
2
Có hai cách tiếp cận để tính toán ước tính SNR đó là tiếp cận miền thời gian
và tiếp cận miền tần số. Nhiệm vụ chính của quá trình tính toán ước tính SNR là xác
định độ trễ tốt nhất * để (6.25) đạt cực tiểu.
Thủ tục mô phỏng miền thời gian để ước tính SNR:
- Chạy mô phỏng và thu được M mẫu đầu ra của hệ thống {x(k)}, k = 1, 2,
…, M và N = M + K mẫu tín hiệu đầu vào {s(k)}, k = -(K-1), -(K-2), …,
0, 1, …, M. K mẫu bổ sung của tín hiệu đầu vào cần được lựa chọn để trải
trên khoảng trễ lớn nhất trong hệ thống max, và hàm tương quan chéo
thực nghiệm luôn chứa N điểm.
- Tính tương quan chéo thực nghiệm theo
175
1 N
Rxs ( j ) x(k ) s(k j ), j (k 1),...,0
N k 1
và tìm giá trị của j là j* để thu được giá trị cực đại của Rxs(j).
- Tính các đại lượng
1 N 2
X2 x (k )
N k 1
1 N 2
s2 s ( k j )
N k 1
Rxs ( j )
ˆ
X 2 s2 Rxs2 ( j )
- Thực hiện khai triển Fourier rời rạc ngược (IDFT) đối với chuỗi X m S m ,
trong đó X m liên hợp phức của DFT của xm và S m là DFT của chuỗi
sm . Chú ý rằng chuỗi xm trước hết phải được chèn thêm K giá trị 0. Số
hệ số k mà biên độ của nó là lớn nhất tương ứng với trễ được tìm thấy.
Chú ý rằng chỉ K + 1 hệ số đầu tiên cần được tìm kiếm.
- Tính toán ̂ theo biểu thức tương tự thủ tục miền thời gian với được
đặt tại giá trị tìm được ở bước trên.
176
6.3.1 Phương pháp Monte-Carlo
Phương pháp Monte-Carlo là một lớp rộng lớn các giải thuật tính toán dựa
trên việc lấy mẫu ngẫu nhiên lặp lại để thu được các kết quả số (gần đúng); thông
thường bằng việc chạy mô phỏng nhiều lần để thu được phân bố của một thực thể
xác suất chưa biết.
177
trong đó Ne và N là tổng số lỗi đếm được và tổng số ký hiệu truyền đi sau
M lần chạy mô phỏng lặp lại.
Một điều cần lưu ý là các lỗi xảy ra ngẫu nhiên trong quá trình mô phỏng, do
vậy cần xem xét đặc tính thống kê của bộ ước tính P̂e . Khi các sự kiện lỗi độc lập
xảy ra, xác suất để Ne lỗi xảy ra trong N ký hiệu truyền dẫn được xác định bởi phân
bố nhị thức
N
p N N e PeN e 1 Pe e
N N
(6.30)
Ne
trong đó
N N!
(6.31)
k k!N k !
là hệ số nhị thức và Pe là xác suất lỗi truyền dẫn hay được xem là xác suất lỗi thực.
Giá trị trung bình và phương sai của một biến ngẫu nhiên tuân theo phân bố nhị
thức dễ dàng được xác định. Giá trị trung bình của Ne được xác định bởi
N2 NPe 1 Pe
e
(6.33)
Sử dụng các kết quả này vào (6.29), giá trị trung bình và phương sai của bộ ước tính
Monte-Carlo cho xác suất lỗi sẽ là
EN e
E Pˆe
N
(6.34)
E Pˆe
NPe
N
Pe (6.35)
cái cho thấy rằng bộ ước tính Monte-Carlo cho xác suất lỗi là không chệch
(unbiased). Phương sai của bộ ước tính Monte-Carlo cho xác suất lỗi là
N2
P2ˆ 2
e
(6.36)
e
N
178
Pe 1 Pe
P2ˆ (6.37)
e
N
cái cũng cho thấy bộ ước tính là phù hợp vì phương sai giảm dần hay Pˆe Pe khi N
.
Trong thực tế số lượng ký hiệu truyền đi N trong mô phỏng là hữu hạn và
một câu hỏi đặt ra là N sẽ là bao nhiêu. Nói cách khác, trong mô phỏng Monte-
Carlo sẽ cần thực hiện bao nhiêu vòng lặp là đủ. Để xác định được câu trả lời cho
câu hỏi trên cần xem xét bài toán khoảng tin cậy hay độ tin cậy của bộ ước tính P̂e .
Khoảng tin cậy cho xác suất (1-) để các ước tính nằm trong một phạm vi giá trị
xác định P̂ . Do đó có hai tham số cần quan tâm đó là: xác suất được xác định
e
bởi , và phạm vi giá trị được xác định bởi . Biểu diễn ở dạng biểu thức, khoảng
tin cậy được định nghĩa bởi
Pr Pe Pˆ Pˆe Pe Pˆ 1 p
e e
(6.38)
như mô tả trong hình 6-5. Phương trình (6.38) có thể được viết lại theo sai số
Pˆ P như
e e
Pr Pˆ Pˆe Pe Pˆ 1
e e
(6.39)
Giả sử sai số Pˆe Pe là một biến ngẫu nhiên Gauss đối với N lớn, hàm mật độ xác
suất của Pˆe Pe gần đúng bởi
1 Pˆ P
exp e 2 e
2
2 Pˆ 2 Pˆ
e e
Chú ý rằng Pˆe Pe là một biến ngẫu nhiên có trung bình bằng không vì ước tính
không bị chệch. Do vậy ta có
t2
Pr Pˆe Pe Pˆ
1 dt
e
2 Pˆ
exp
2 2ˆ
(6.40)
e
Pˆ
e Pe
y2
2 dy Q
1
Pr Pˆe Pe Pˆ exp (6.41)
e
2
179
trong đó Q(.) được gọi là hàm Q theo phân bố Gauss. Từ hình 6-5 ta có
Pr Pˆe Pe Pˆ Q
e
2
(6.42)
do đó
1 p
Q 1 Q 1 (6.43)
2 2
Ví dụ với xác suất yêu cầu p = 95%, từ (6.43) sẽ xác định được = 1,96. Trong
MATLAB các hàm Q và Q đảo có thể được xây dựng qua sử dụng các hàm lỗi
erfc và erfinv như đoạn mã dưới đây.
% Hàm Q đảo
function y=Qinv(x)
y=sqrt(2)*erfinv(1-2*x); % inverse error function
% Ví dụ sử dụng hàm Qinv
>> Qinv(0.025)
ans =
1.960
P̂e
Pe Pˆ Pe Pe Pˆ
e e
Như vậy đối với mô phỏng Monte-Carlo, tiêu chuẩn dừng vòng lặp có thể
được xác định từ độ tin cậy (xác suất p) mong muốn, khoảng tin cậy chấp nhận
được (tham số ) và tốc độ lỗi kỳ vọng Pe. Từ (6.37) và (6.43) ta có thể xác định
được tổng số ký hiệu cần truyền trong mô phỏng đó là
180
2
N Pe 1 Pe (6.44)
ˆ
Pe
Ví dụ đối với tốc độ lỗi kỳ vọng Pe = 10-3, p = 95% và khoảng tin cậy P̂ = 10-4,
e
từ (6.44) điều kiện dừng mô phỏng Monte-Carlo được xác định N 400000. Tuy
nhiên trong các mô phỏng các hệ thống truyền thông, tốc độ lỗi có thể thường rất
nhỏ, do đó điều đáng mong muốn là xem khoảng tin cậy là một phần nhỏ của tốc độ
lỗi tức Pˆ Pe với = 0,1 cho 10% sai số ước tính là có thể chấp nhận được. Vì
e
vậy thay bằng xác định tổng số ký hiệu N cần truyền thì tổng số lỗi đếm được Ne
được xác định như là điều kiện dừng mô phỏng. Từ (6.44) tổng số lỗi kỳ vọng xác
định được là
2 2
N e N .Pe 1 Pe (6.45)
Ví dụ với p = 95% và = 0,1 thì mô phỏng sẽ dừng khi số lượng lỗi đếm được đạt
đến khoảng 400 lỗi.
Một cấu trúc chương trình mô phỏng Monte-Carlo trong MATLAB được cho
trong đoạn mã dưới đây
181
6.3.2 Phương pháp bán giải tích
Đối với phương pháp Monte-Carlo, tải tính toán có thể rất lớn khi tốc độ lỗi
kỳ vọng nhỏ. Ví dụ tại tốc độ lỗi cỡ 10-8 đòi hỏi ít nhất 109 – 1010 ký hiệu được
truyền đi. Trong khi phương pháp giải tích khó đánh giá tốc độ lỗi chính xác đối với
những hệ thống phức tạp. Do vậy phương pháp bán giải tích có thể được áp dụng để
khắc phục giới hạn của các phương pháp Monte-Carlo và giải tích. Trong phương
pháp bán giải tích, kiến thức của hệ thống đang phân tích được sử dụng để giảm tải
tính toán và mức độ phức tạp mà mô phỏng Monte-Carlo đòi hỏi.
Hình 6-6 Các phương pháp khác nhau để đánh giá hiệu năng hệ thống.
Ý tưởng thực hiện phương pháp bán giải tích đó là: Thực hiện phát một
chuỗi ký hiệu ngẫu nhiên có độ dài Lm (L là bậc điều chế) qua hệ thống mô phỏng,
tiếp sau xác suất lỗi trung bình được tính dựa trên phương pháp giải tích thông qua
đánh giá hàm mật độ xác suất của mẫu thu được tại bộ quyết định.
Xét trường hợp đối với hệ thống nhị phân đơn giản như mô tả trong hình 6-7.
Trong hệ thống này các điểm thu được lý tưởng là A, trong khi sự méo dạng sẽ tự
biểu hiện trong các mẫu biên độ quanh những điểm này như cho thấy bởi mẫu ví dụ
tại vk = (1 - k)A, trong đó k là tỉ phần lỗi cho mẫu thứ k. Đối với mẫu đó, xác suất
lỗi có điều kiện được xác định bởi
vk
pk f
n ( )d Fn (vk ) (6.45)
trong đó fn là hàm xác suất một chiều và Fn là hàm phân bố tích lũy. Đối với nguồn
nhiễu Gauss, pk 12 erfc vk
2 , trong đó vk = (1 - k)A, và 2 là công suất nhiễu.
Nếu một chuỗi N bít được phát đi, BER tổng cộng trung bình chỉ là phép tính trung
bình của pk
1 N
p pk
N k 1
(6.46)
182
Nói cách khác phương pháp bán giải tích sử dụng công thức tính BER bằng phương
pháp giải tích, nhưng các tham số trong công thức được ước tính từ các mẫu thu
được tại bộ quyết định sau khi chạy mô phỏng.
Hình 6-7 Mô tả phương pháp bán giải tích cho hệ thống nhị phân:
Một đoạn mã MATLAB dưới đây cho ví dụ về ước tính BER dựa trên
phương pháp bán giải tích:
% Ví dụ ước tính BER dựa trên phương pháp bán giải tích
% xx – vector tín hiệu thu sau mô phỏng
% nbw – độ rộng băng tần nhiễu
% EsOverN0dB – Tỉ số tín hiệu trên nhiễu theo dB
…
nx = length(xx); % Độ dài chuỗi ký hiệu đầu vào bộ thu;
% Xác định phương sai nhiễu.
EsOverN0 = 10^(EsOverN0dB/10); % dB to linear
N0 = Es/EsOverN0; % Công suất nhiễu
sigma = sqrt(N0*nbw*2); % Phương sai nhiễu
d = abs(xx);
pe = sum(Q(d/sigma)); % Ước tính xác suất lỗi
pe = pe/nx;
183
Phương pháp ngoại suy đuôi phân bố:
• Kỹ thuật cho phép mở rộng sự quan tâm
• Thực hiện xác định tốc độ lỗi tại chế độ lỗi cao: các ước tính có
độ tin cậy cao hơn
• Mở rộng các ước tính để dự đoán tốc độ lỗi tại những điều kiện
SNR mà ở đó tốc độ lỗi là nhỏ
Tuy nhiên việc cải thiện tốc độ chạy mô phỏng của các phương pháp này
cũng có thể làm cho sai số kết quả đầu ra tăng lên. Do vậy cần chú ý khi áp dụng và
có sự đánh giá phương pháp bằng việc so sánh kiểm chứng với phương pháp
Monte-Carlo.
184
xk Mã hóa dk Bộ điều sk Kênh rk Bộ giải d’k Giải mã x’k
vi sai chế PSK AWGN điều chế vi sai
x k d k d k 1
d k d k 1 xk
So sánh
Ước tính
BER
0
10
Theory
Simulation
-1
10
BER
-2
10
-3
10
-4
10
0 2 4 6 8 10
Eb/N0 in dB
Hình 6-9 Kết quả BER là hàm SNR của hệ thống DPSK truyền qua kênh AWGN
185
Ví dụ 6.2: Mô phỏng hệ thống BPSK qua kênh AWGN và kênh pha đinh
Rayleigh
Mô hình mô phỏng hệ thống được cho thấy trong hình 6-10 trong đó hệ
thống sử dụng điều chế BPSK và được truyền trên hai kênh AWGN và kênh pha
đinh Rayleigh để so sánh hiệu năng. Kết quả mô phỏng được cho thấy trên hình 6-
11.
186
6.4 Tổng kết chương
Nội dung chương này đã đề cập đến các kỹ thuật ước tính các tham số bao
gồm các tham số của tín hiệu, tỉ số tín hiệu trên nhiễu và tham số hiệu năng của hệ
thống. Trong các kỹ thuật ước tính tham số hiệu năng qua xác suất lỗi, phương pháp
Monte Carlo đã được trình bày cụ thể từ phương pháp luận đến cách thức thực hiện.
Ngoài ra phương pháp bán giải tích cũng được giới thiệu như một cách để giúp ước
tính xác suất lỗi nhanh hơn. Các phương pháp khác như lấy mẫu quan trọng và
ngoại suy đuôi cũng giới thiệu để gợi mở cho người học tìm tòi thêm. Một vài ví dụ
mô phỏng cũng đã được đưa ra để minh họa nội dung của chương.
187
Tài liệu tham khảo
188
Phụ lục A
Mã hóa nguồn
arithdeco Giải mã nhị phân sử dụng giải mã số học
arithenco Mã hóa chuỗi ký hiệu sử dụng mã hóa số học
compand Bộ nén/giãn luật hoặc luật A mã nguồn
dpcmdeco Giải mã sử dụng điều chế mã xung vi sai
dpcmenco Mã hóa sử dụng điều chế mã xung vi sai
dpcmopt Tối ưu hóa các tham số điều chế mã xung vi sai
huffmandeco Giải mã Huffman
Tạo từ điển mã Huffman cho nguồn bằng mô hình xác suất đã
huffmandict
biết
huffmanenco Mã hóa Huffman
189
Lloyds Tối ưu hóa các tham số lượng tử hóa sử dụng thuật toán Lloyd
quantize Tạo chỉ số lượng tử hóa và giá trị đầu ra được lượng tử hóa
Mã sửa lỗi
bchdec Bộ giải mã BCH
bchenc Bộ mã hóa BCH
bchgenpoly Bộ tạo đa thức tạo mã BCH
bchnumerr Số lỗi có thể sửa của mã BCH
convenc Mã chập dữ liệu nhị phân
cyclgen Tạo ma trận sinh và kiểm tra chẵn lẻ của mã cyclic
cyclpoly Tạo đa thức tạo mã của mã cyclic
decode Bộ giải mã khối
dvbs2ldpc Các mã LDPC theo tiêu chuẩn DVB-S.2
encode Bộ mã hóa khối
fec.bchdec Xây dựng đối tượng giải mã BCH
fec.bchenc Xây dựng đối tượng mã hóa BCH
fec.ldpcdec Xây dựng đối tượng giải mã LDPC
fec.ldpcenc Xây dựng đối tượng mã hóa LDPC
fec.rsdec Xây dựng đối tượng giải mã Reed-Solomon
fec.rsenc Xây dựng đối tượng mã hóa Reed-Solomon
gen2par Chuyển đổi giữa ma trận sinh và kiểm tra chẵn lẻ
gfweight Tính khoảng cách tối thiểu của mã khối tuyến tính
hammgen Tạo các ma trận sinh và kiểm tra chẵn lẻ của mã Hamming
rsdec Bộ giải mã Reed-Solomon
rsdecof Giải mã tệp ASCII được mã hóa sử dụng mã Reed-Solomon
rsenc Bộ mã hóa Reed-Solomon
rsgenpoly Tạo đa thức tạo mã của mã Reed-Solomon
syndtable Tạo bảng syndrome giải mã
vitdec Giải mã chập dữ liệu nhị phân sử dụng thuật toán Viterbi
190
Điều chế/giải điều chế số
dpskdemod Giải điều chế DPSK
dpskmod Điều chế DPSK
fskdemod Giải điều chế FSK
fskmod Điều chế FSK
genqamdemod Giải điều chế QAM tổng quát
genqammod Điều chế QAM tổng quát
modem Gói các lớp modem
modnorm Hệ số định cỡ cho chuẩn hóa đầu ra điều chế
mskdemod Giải điều chế MSK
mskmod Điều chế MSK
oqpskdemod Giải điều chế QPSK bù
oqpskmod Điều chế QPSK bù
pamdemod Giải điều chế xung biên
pammod Điều chế xung biên
pskdemod Giải điều chế PSK
pskmod Điều chế PSK
qamdemod Giải điều chế QAM
qammod Điều chế QAM
191
scatterplot Tạo biểu đồ chòm sao
semianalytic Tính BER sử dụng kỹ thuật bán giải tích
symerr Tính số lượng lỗi ký hiệu và SER
Các bộ lọc
intdump Lấy tích phân và khởi tạo (I&D)
hank2sys Chuyển đổi ma trận Hankel thành mô hình hệ thống tuyến tính
hilbiir Thiết kế bộ lọc IIR khai triển Hilbert
rcosine Thiết kế bộ lọc raised cosine
rcosfir Thiết kế bộ lọc FIR raised cosine
rcosiir Thiết kế bộ lọc IIR raised cosine
rectpulse Tạo dạng xung vuông
Bộ cân bằng
cma Xây dựng đối tượng giải thuật modul hằng số
dfe Xây dựng đối tượng bộ cân bằng hồi tiếp quyết định (DFE)
equalize Cân bằng tín hiệu sử dụng đối tượng bộ cân bằng
lineareq Xây dựng đối tượng bộ cân bằng tuyến tính
Xây dựng đối tượng giải thuật thích ứng trung bình bình
lms
phương tối thiểu (LMS)
Cân bằng tín hiệu điều chế tuyến tính sử dụng thuật toán
mlseeq
Viterbi
normlms Xây dựng đối tượng giải thuật thích ứng LMS chuẩn hóa
reset(equalizer) Thiết lập lại đối tượng bộ cân bằng
Xây dựng đối tượng giải thuật thích ứng bình phương tối thiểu
rls
đệ quy (RLS)
signlms Xây dựng đối tượng giải thuật thích ứng LMS có dấu
varlms Xây dựng đối tượng giải thuật thích ứng LMS cỡ bước biến đổi
Trường Galois
convmtx Ma trận tích chập của vector trường Galois
cosets Tạo các coset cyclotomic của trường Galois
dftmtx Ma trận khai triển Fourier rời rạc trong trường Galois
filter(gf) Bộ lọc số 1-D trên trường Galois
gf Tạo mảng trường Galois
gftable Sinh tệp để gia tốc tính toán trường Galois
minpol Tìm đa thức nhỏ nhất của phần tử trường Galois
mldivide Phép chia trái ma trận \ của các mảng Galois
primpoly Tìm các đa thức nguyên của trường Galois
192
Interleaving/Deinterleaving
convdeintrlv Khôi phục trật tự ký hiệu sử dụng các thanh ghi dịch
convintrlv Giao hoán các ký hiệu sử dụng các thanh ghi dịch
deintrlv Khôi phục trật tự các ký hiệu
intrlv Sắp xếp lại chuỗi ký hiệu
randdeintrlv Khôi phục trật tự các ký hiệu sử dụng giao hoán ngẫu nhiên
randintrlv Sắp xếp lại các ký hiệu sử dụng giao hoán ngẫu nhiên
193
deconv Khử tích chập và chia đa thức
fft Khai triển Fourier rời rạc
fft2 Khai triển Fourier rời rạc 2-D
fftshift Dịch thành phần tần số 0 về trung tâm phổ
filter2 Bộ lọc số 2-D
freqspace Khoảng cách tần số trong đáp ứng tần
ifft Khai triển Fourier rời rạc ngược
ifft2 Khai triển Fourier rời rạc ngược 2-D
unwrap Hiệu chỉnh pha để tạo ra đồ thị pha bằng phẳng
Khai triển
bitrevorder Giao hoán dữ liệu thành trật tự đảo bit
czt Khai triển z chirp
dct Khai triển cosine rời rạc
dftmtx Ma trận khai triển Fourier rời rạc
digitrevorder Giao hoán đầu vào thành trật tự đảo số
fwht Khai triển Walsh-Hadamard nhanh
goertzel Khai triển Fourier rời rạc sử dụng thuật toán Goertzel bậc hai
hilbert Tín hiệu giải tích rời rạc thời gian sử dụng khai triển Hilbert
idct Khai triển cosine rời rạc ngược
ifwht Khai triển Walsh-Hadamard nhanh ngược
194
xcorr Tương quan chéo
xcorr2 Tương quan chéo 2-D
xcov Đồng phương chéo
Các bộ lọc số
cfirpm Thiết kế bộ lọc FIR pha phi tuyến và phức
fir1 Thiết kế bộ lọc FIR dựa trên cửa số
fir2 Thiết kế bộ lọc FIR dựa trên lấy mẫu tần số
firls Thiết kế bộ lọc FIR pha tuyến tính bình phương tối thiểu
intfilt Thiết kế bộ lọc FIR nội suy
firrcos Thiết kế bộ lọc FIR raised cosine
gaussfir Bộ lọc tạo dạng xung FIR Gauss
butter Thiết kế bộ lọc Butterworth
cheby1 Thiết kế bộ lọc Chebyshev kiểu 1
cheby2 Thiết kế bộ lọc Chebyshev kiểu 2
freqz Đáp ứng tần của bộ lọc số
fvtool Công cụ trực quan bộ lọc
grpdelay Độ trễ bộ lọc trung bình (độ trễ nhóm)
195
impz Đáp ứng xung của bộ lọc số
phasedelay Trễ pha của bộ lọc số
phasez Đáp ứng pha của bộ lọc số
stepz Đáp ứng bậc của bộ lọc số
zerophase Đáp ứng pha zero của bộ lọc số
zplane Vẽ đồ thị zero-pole
fftfilt Lọc FIR dựa trên FFT sử dụng phương pháp xếp chồng-cộng
filter Lọc dữ liệu bằng bộ lọc FIR hoặc IIR
filtfilt Lọc số pha zero
196