Mục lục
THUẬT NGỮ VIẾT TẮT
MỞ ĐẦU i
CHƯƠNG 1: TÁN XẠ RAMAN 1
1.1 Tổng quan về tán xạ Raman 1
1.1.1 Ánh sáng 1
1.1.2 Tương tác của ánh sáng và môi trường 1
1.1.3 Sợi quang 2
1.1.4 Quá trình truyền ánh sáng trong sợi quang 4
1.1.5 Tính chất phi tuyến của sợi quang 7
1.1.6 Tán xạ ánh sáng 9
1.1.7 Tán xạ Raman 10
1.2 Đặc tính của tán xạ Raman kích thích 12
1.2.1 Phổ khuếch đại Raman 12
1.2.2 Ngưỡng Raman 14
1.2.3 Ảnh hưởng của các chất phụ gia trong sợi thuỷ tinh 17
1.2.4 Ảnh hưởng của phân cực ánh sáng 18
1.3 Ảnh hưởng của tán xạ Raman kích thích trong thông tin quang 19
1.3.1 Ảnh hưởng của SRS đối với hệ thống đơn kênh 19
1.3.2 Ảnh hưởng của SRS trong hệ thống WDM 23
1.4 Thí nghiệm tán xạ Raman kích thích 27
1.4.1 Thí nghiệm đo hệ số khuyếch đại Raman 27
1.4.2 Thí nghiệm đo ngưỡng Raman 30
CHƯƠNG 2: ỨNG DỤNG TÁN XẠ RAMAN KÍCH THÍCH KHUYẾCH ĐẠI TÍN HIỆU QUANG 32
2.1 Sự cần thiết phải khuyếch đại quang 32
2.2 Những khái niệm cơ bản về khuyếch đại quang. 33
2.2.1 Phổ khuyếch đại và băng tần bộ khuyếch đại 33
2.2.2 Nhiễu trong bộ khuyếch đại quang. 35
2.2.3 Các ứng dụng khuyếch đại 37
2.3 Bộ khuyếch đại quang Raman 38
2.3.1 Nguyên lý bơm 38
2.3.2 Hệ số khuyếch đại và băng tần của bộ khuyếch đại Raman 40
2.3.3 Tăng ích quang Raman 41
2.3.4 Hiệu năng khuyếch đại 44
2.3.5 Nhiễu trong các bộ khuyếch đại Raman 47
2.3.6 Khuyếch đại Raman phân bố DRA (Distributed Raman Amplifier) 49
2.3.7 Khuyếch đại Raman tập trung LRA (Lumped Raman Amplifier) 52
2.3.8 Bộ khuyếch đại quang lai ghép Raman/EDFA 55
2.4 Ứng dụng bộ khuyếch đại quang Raman trong hệ thống WDM 55
CHƯƠNG 3: CHƯƠNG TRÌNH MÔ PHỎNG 58
3.1 Tính toán tham số 58
3.1.1 Tham số “Walk-off” d 58
3.1.2 Hệ số khuyếch đại Raman 58
3.2 Các lưu đồ thuật toán 60
3.2.1 Lưu đồ thuật toán tính hằng số lan truyền sóng 60
3.2.2 Lưu đồ thuật toán tính hệ số khuyếch đại Raman 60
3.2.3 Lưu đồ tính hệ số phi tuyến 61
3.2.4 Lưu đồ thuật toán mô phỏng SRS 62
3.3 Kết quả mô phỏng và giải thích 63
3.3.1 Kết quả mô phỏng phổ khuyếch đại Raman 63
3.3.2 Kết quả mô phỏng ảnh hưởng của SRS 64
3.3.3 Đặc tuyến công suất 68
KẾT LUẬN 69
TÀI LIỆU THAM KHẢO 70
PHỤ LỤC A. Phương pháp biến đổi Fourier rời rạc 71
PHỤ LỤC B. Chương trình mô phỏng 73
101 trang |
Chia sẻ: tlsuongmuoi | Lượt xem: 2768 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đồ án Tán xạ raman kích thích, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Raman có một phần ánh sáng bơm bị tán xạ tự phát. Ánh sáng tán xạ tự phát này gây nhiễu cho các kênh tín hiệu có bước sóng gần bước sóng ánh sáng bơm. Theo một số kết quả nghiên cứu hiệu ứng này có thể làm cho hệ số tạp âm NF tới 3 với các kênh tín hiệu có bước sóng gần bước sóng bơm.
Khuyếch đại Raman phân bố DRA (Distributed Raman Amplifier)
Hình 2.10- Khuyếch đại tập trung (a) và khuyếch đại phân bố (b).
Với bộ khuyếch đại Raman phân bố DRA, ánh sáng bơm được phân bố trải dài trong sợi quang. DRA tận dụng sợi quang sẵn có trong mạng như một phương tiện để khuyếch đại tín hiệu và như vậy ánh sáng sẽ được khuyếch đại đồng đều dọc theo sợi quang trên một khoảng cách lớn (Hình 2.10b).
Với các bộ khuyếch đại DRA, thông thường ánh sáng bơm có công suất cao được bơm theo hướng ngược để kết hợp với các bộ khuyếch đại tập trung khác như các bộ khuyếch đại quang sợi pha đất hiếm EDFA. Ưu điểm chính của DRA là cải thiện tỉ số tín hiệu trên nhiễu SNR và giảm tính phi tuyến.
Hình 2.11- Công suất tín hiệu trong hệ thống sử dụng DRA
Hình 2.11 biểu diễn mức công suất ánh sáng tín hiệu của hệ thống khuyếch đại theo chu kỳ. Đỉnh hình răng cưa tương ứng với các điểm khuyếch đại tập trung. Đường nét đứt là biểu diễn công suất ánh sáng tín hiệu trong hệ thống chỉ sử dụng các bộ khuyếch đại tập trung với tăng ích cao. Đường cong trên hình 2.11 tương ứng với công suất ánh sáng tín hiệu trong trường hợp sử dụng bộ khuyếch đại DRA kết hợp với bộ khuyếch đại quang tập trung có tăng ích nhỏ. Khi sử dụng DRA mức công suất tín hiệu dọc theo sợi quang sẽ đồng đều hơn. Nếu kết hợp các bộ khuyếch tập trung mức ánh sáng tín hiệu đỉnh không quá lớn. Như vậy sẽ tránh được các hiệu ứng phi tuyến. Đồng thời mức công suất ánh sáng tín hiệu cũng không xuống thấp quá do ảnh hưởng của suy hao do đó tỉ số SNR được cải thiện. Tỉ số SNR cao tương ứng với khả năng tăng khoảng cách giữa các bộ khuyếch đại hoặc tăng dung lượng của kênh tín hiệu. Khoảng cách giữa các bộ khuyếch đại quang tập trung thường khoảng 80 km, bằng cách sử dụng DRA hiệu năng của hệ thống tương đương với sử dụng khuyếch đại quang tập trung với khoảng cách giữa chúng là 35 đến 38 km [5], [8].
Ngoài khả năng tăng khoảng cách giữa các bộ khuyếch đại hoặc tăng tốc độ bit DRA còn được sử dụng trong hệ thống WDM để giảm khoảng cách giữa các kênh hoặc hoạt động tại bước sóng tán sắc không.
Một số thí nghiệm với DRA [5], [8]:
Terahara và các cộng sự đã triển khai hệ thống sử dụng DRA hai băng (băng C và băng L) cho hệ thống WDM cự ly dài. Trong hệ thống này tốc độ truyền là 12.8 Tb/s với khoảng cách là 840 km. Hệ thống sử dụng sợi đơn mode chuẩn với khoảng cách giữa các bộ khuyếch đại là 140 km (tăng 60 km so với hệ thống thông thường). Với bộ khuyếch đại DRA hai băng, tỉ số giữa tín hiệu trên tạp âm quang OSNR tăng 3.7 tại băng C và băng L.
Các thí nghiệm của Nielsen thực hiện trên hệ thống 3.28 Tb/s (82 x 40 Gb/s mã NRZ) với sợi dịch tán sắc có chiều dài 3x100 km. Hệ thống bao gồm 40 kênh WDM băng C (khoảng cách giữa các kênh là 100 GHz) và 42 kênh WDM băng L (khoảng cách giữa các kênh cũng là 100 GHz). Hệ thống này có tỉ số lỗi bit (BER) dưới dù các kênh đều không sử dụng sửa lỗi trước (forward error correction)
H. Suzuki thực hiện nghiên cứu hiệu ứng phi tuyến trên hệ thống DWDM 1Tb/s băng C (100 x 10Gb/s, khoảng cách giữa các kênh là 25 Ghz) có khoảng cách 320 km (4x80 km) và sử dụng sợi dịch tán sắc DSF. Với việc sử dụng DRA và ghép kênh đan xen phân cực, ảnh hưởng của hiệu ứng trộn bốn sóng FWM không đáng kể.
Bên cạnh các ưu điểm vừa nêu, khuyếch đại Raman tập trung cũng có một số nhược điểm:
Sợi quang có chiều dài hiệu dụng thấpđược xác định từ hệ số suy hao của sợi. Trong các bộ khuyếch đại DRA chiều dài hiệu dụng của sợi quang thường nhỏ hơn 40 km.Chiều dài hiệu dụng thấp làm giảm khả năng tăng khoảng cách giữa các bộ khuyếch đại.
DRA có công suất ánh sáng bơm rất cao, ví dụ để tối ưu hoá mức nhiễu công suất ánh sáng bơm với sợi dịch tán sắc khoảng 580 và 1.28 W với sợi đơn mode chuẩn. Với mức công suất ánh sáng bơm cao như vậy các thiết bị quang như connector rất dễ bị hư hại.
DRA rất nhạy cảm với các điều kiện môi trường như nhiệt độ, độ ẩm… và sự thay đổi cơ học.
Một vấn đề đáng được quan tâm khác đối với DRA là nhiễu tán xạ Rayleigh kép. Các bộ khuyếch đại DRA thường có nhiễu DRS cao hơn so với các bộ khuyếch đại Raman tập trung khi sử dụng cùng loại sợi và có chiều dài sợi như nhau.
Những vấn đề trên làm giảm tính ưu việt của DRA. Tuy nhiên do lợi ích từ tỉ số SNR và giảm hiệu ứng phi tuyến của DRA là rất lớn nên DRA đã được sử dụng khá rộng rãi trong các hệ thống cự ly dài.
Khuyếch đại Raman tập trung LRA (Lumped Raman Amplifier)
Hình 2.12- Khuyếch đại Raman tập trung.
Bộ khuyếch đại Raman tập trung LRA là một khối đơn. Trong bộ khuyếch đại Raman tập trung tất cả công suất ánh sáng bơm được tập trung trong một khối. Hình 2.12 là một thí dụ kết nối bộ khuyếch đại Raman tập trung trong hệ thống thông tin quang. Trong sơ đồ trên ánh sáng bơm được giữ trong bộ khuyếch đại bằng các bộ cách ly xung quanh bộ khuyếch đại với chiều dài sợi tăng ích Raman khoảng vài km. Như vậy khác với bộ khuyếch đại Raman phân bố ánh sáng bơm không đi vào sợi quang từ bên ngoài bộ khuyếch đại.
Hình 2.13- Tăng ích của bộ khuyếch đại Raman tập trung.
Đặc điểm đáng lưu ý nhất của khuyếch đại Raman tập trung đó là khả năng sử dụng dải bước sóng mới mà tại các dải băng này EDFA không thể hoạt động.
Khả năng sử dụng băng S với khuyếch đại quang Raman
Trong các dải băng cửa sổ thông tin khuyếch đại quang sợi EDFA chỉ có thể hoạt động tại băng C và băng L mà không thể hoạt động tại băng S (1480-1530 nm). Với khuyếch đại Raman bước sóng khuyếch đại được quyết định bởi bước sóng ánh sáng bơm và như vậy khuyếch đại Raman có thể hoạt động ở bất kỳ vùng bước sóng nào có suy hao thấp. Hiện nay với kỹ thuật làm khô, suy hao sợi quang do hấp thụ nước tại bước sóng 1390 nm đã giảm mạnh. Như vậy kết hợp với sử dụng các loại sợi quang mới, khuyếch đại Raman đã không những chỉ có thể hoạt động tại băng C mà còn có khả năng sử dụng khác trong dải 1280 đến 1550 nm.
Hình 2.14- Sự phụ thuộc của suy hao theo bước sóng
Sự phát triển của DWDM không những cho phép tăng dung lượng của truyền dẫn của mỗi kênh mà còn tăng số kênh truyền dẫn trên một sợi quang. Hiện nay các hệ thống WDM và DWDM hầu hết đều sử dụng băng C và băng L. Khi nhu cầu về số kênh truyền dẫn cho DWDM tăng thì các dải băng tần mới được đưa vào sử dụng. Trong các dải băng khả chuyển có băng S là quan trọng nhất. Băng S có đặc tính suy hao do hấp thụ và suy hao do uốn cong đối với sợi đơm mode chuẩn tốt hơn so với băng L. Băng S cũng có tán sắc nhỏ hơn băng L khoảng 30 %. Một số loại khuyếch đại được nghiên cứu ứng dụng cho băng S như là khuyếch đại quang bán dẫn, khuyếch đại quang sợi pha Thilium nhưng chỉ có khuyếch đại Raman là giải pháp tối ưu cho vấn đề này [8]. Để tìm hiểu về khả năng sử dụng băng S của LRA ta nghiên cứu hệ thống thử nghiệm của B.A. Puc lần đầu tiên sử dụng khuyếch đại Raman tập trung bù tán sắc băng S SLRA ( sợi tăng ích có tán sắc âm tại băng S, mỗi bộ SLRA có thể bù tán sắc cho 75 km sợi SSMF).
Hình 2.15- Hệ thống thử nghiệm SLRA của A. Puc.
Trong hệ thống này 11 bộ SLRA được sử dụng để truyền 20 kênh băng S (từ 493.36 đến 1521.77 nm với khoảng cách giữa các kênh là 200 GHz) trên sợi đơn mode chuẩn có chiều dài 867 km, với tốc độ mỗi kênh là 10.67 Gb/s. Với suy hao trung bình mỗi chặng khoảng 21 , mức công suất tín hiệu ra trung bình của mỗi bộ SLRA là 14 dBm. Tỉ số tín hiệu trên tạp âm quang OSNR đạt khoảng 20.7. Với giá trị này các kênh đều có khi không sử dụng các kỹ thuật sửa lỗi. Khi sử dụng kỹ thuật sửa lỗi trước Reed-Solomon tỉ số SNR tăng khoảng 5
Thí nghiệm của B. A. Puc lần đầu tiên đã chứng minh khả năng của khuyếch đại Raman tập trung. Các thử nghiệm sau này tiếp tục được nghiên cứu đã khẳng định SLRA là công nghệ chìa khoá cho sự mở rộng băng tần hoạt động của mạng thông tin quang sang dải băng S.
Bộ khuyếch đại quang lai ghép Raman/EDFA
Hình 2.16- Khuyếch đại quang lai ghép EDFA/Raman.
Như trong phần (2.3.6) đã trình bày, khuyếch đại quang Raman phân bố DRA có thể được sử dụng kết hợp với các bộ khuyếch đại tập trung khác điển hình trong số đó là kết hợp với bộ khuyếch đại EDFA hình thành bộ khuyếch đại quang lai ghép Raman/EDFA. Loại khuyếch đại quang này có thể thay thế bộ khuyếch đại EDFA trong đó khuyếch đại Raman phân bố đóng vai trò của một bộ khuyếch đại tạp âm nhỏ (tiền khuyếch đại).
Ứng dụng bộ khuyếch đại quang Raman trong hệ thống WDM
Khuyếch đại quang Raman mang lại một nền tảng đơn giản và đơn nhất cho các yêu cầu của các bộ khuyếch đại quang trong mạng thông tin quang cự ly dài và cực dài. Khuyếch đại quang Raman có thể hoạt động với băng tần rộng và tại các tần số mà các bộ khuyếch đại quang khác không thể hoạt động. Ví dụ băng tần tăng ích 100 nm có thể sử dụng trong bất kỳ dải nào trong khoảng từ 1300-1650 nm. Thêm vào đó các bộ khuyếch đại Raman băng rộng hiện nay có băng tần lên tới 136 nm nhờ sử dụng kỹ thuật đan xen bước sóng ánh sáng bơm và ánh sáng tín hiệu. Các bộ khuyếch đại quang Raman không những có thể sử dụng như bộ tiền khuyếch đại tạp âm nhỏ cho các bộ khuyếch đại quang sợi pha đất hiếm EDFA mà chúng còn có thể sử dụng cho toàn bộ yêu cầu khuyếch đại của hệ thống.
Trong các hệ thống DWDM cự ly dài và siêu dài, khuyếch đại Raman chiếm ưu thế do sự đơn giản và mềm dẻo, linh hoạt. Ví dụ khuyếch đại Raman hỗ trợ hệ thống có độ rộng băng tần 100 nm, nó sẽ bao gồm các băng S, C và L. Nếu các hệ thống DWDM trong tương lai truyền dẫn trên cả ba băng S, C và L mà vẫn sử dụng các bộ khuyếch đại quang tập trung như hiện nay thì hệ thống này phải cần thêm các bộ kết hợp băng tần, bộ chia băng tần và ba bộ khuyếch đại tập trung như trên hình 2.17.
Hình 2.17- Khuyếch đại quang trong hệ thống DWDM đa băng.
Trong hệ thống trên cũng cần một bộ khuyếch đại Raman phân bố ba băng đóng vai trò bộ tiền khuyếch đại. Mỗi bộ khuyếch đại tập trung hoạt động tại các băng khác nhau cần có một Laser bơm, một mạch điều khiển và hệ thống giám sát riêng. Các bộ lọc băng cũng không phải là lý tưởng nên cần có thêm các khoảng bước sóng bảo vệ xung quanh mỗi băng. Do nhiễu và suy hao từ các bộ ghép tách băng hệ thống cần tăng quỹ công suất đường truyền.
Hình 2.18- Hệ thống WDM toàn Raman.
Với hệ thống toàn Raman cấu hình hệ thống đơn giản hơn rất nhiều (hình 2.18). Trong hệ thống này chỉ cần một bộ khuyếch đại Raman tập trung băng rộng đi kèm với một bộ khuyếch đại Raman phân bố băng rộng là có thể đáp ứng yêu cầu. Bộ khuyếch đại Raman phân bố băng rộng có thể không khác với hệ thống trên. Tuy nhiên, bộ khuyếch đại tập trung thì đơn giản hơn rất nhiều: số lượng nguồn bơm ít hơn, một hệ thống giám sát và đặc biệt là không có các bộ hợp và chia băng. Đồng thời có thể kết hợp sợi tăng ích và sợi bù tán sắc trong bộ khuyếch đại tập trung để nâng cao hiệu năng của hệ thống.
Trở ngại lớn nhất cho việc sử dụng khuyếch đại Raman trong mạng viễn thông đó là hiệu quả thấp so với EDFA. Tuy nhiên, khi tốc độ bit và tổng số kênh tăng lên, khuyếch đại Raman càng trở nên hấp dẫn hơn. Tăng ích của khuyếch đại Raman lớn hơn khi công suất bơm lớn, điều này được đáp ứng bởi các hệ thống trong tương lai
Trong các hệ thống WDM ban đầu với ít hơn 32 kênh, công suất bơm vào khoảng 100 mW, đây là khoảng mà khuyếch đại Raman có hiệu quả thấp hơn EDFA. Trong những năm 1999-2001, các hệ thống WDM có từ 64 đến 160 kênh với công suất khoảng dưới 200 mW, khi đó khuyếch đại Raman có hiệu quả tương đương với EDFA 980nm. Vào năm 2002, khi hệ thống WDM 240 kênh xuất hiện, công suất ánh sáng tín hiệu ra đạt trên 200 mW [5], [8].
Trong hệ thống thông tin quang thế hệ mới, khuyếch đại Raman sẽ chiếm ưu thế vể hiệu quả ánh sáng bơm hơn khi so sánh vơi EDFA có ánh sáng bơm 1480 nm [5]. Điều này được chỉ ra trên hình 2.18 bằng cách so sánh hiệu suất chuyển đổi công suất của EDFA ánh sáng bơm 1480nm và khuyếch đại Raman với công suất vào 200.
Hình 2.19- Hiệu suất chuyển đổi công suất của RA và EDFA [5].
CHƯƠNG TRÌNH MÔ PHỎNG
Tính toán tham số
Trong các chương trình mô phỏng ảnh hưởng của SRS đến dạng của tín hiệu có liên quan đến tham số “Walk-off” d và hệ số khuyếch đại Raman. Do đó trước khi mô phỏng cần phải tính toán cả hai tham số này.
Tham số “Walk-off” d
Theo phương trình (1.44) tham số “Walk-off” d được biểu diễn như sau
(3.1)
Trong đó và lần lượt là vận tốc nhóm liên quan đến hằng số truyền lan sóng và chiết suất của môi trường:
(3.2)
Với n được xác định theo công thức Sellmeier:
(3.3)
Thông thường để tính n thì ta chỉ cần tính đến m=3 với các giá trị B1, B2, B3, được xác định bằng thực nghiệm đối với các loại sợi khác nhau. Ví dụ với sợi quang đơn mode tiêu chuẩn ta có B1=0.6961663, B2=0.4079426, B3=0.8974794 và các bước sóng .
Như vậy nếu cho một tín hiệu có bước sóng cho trước hoàn toàn có thể tính được từ đó tính được hằng số lan truyền sóng và tham số “Walk-off” d giữa hai tín hiệu.
Hệ số khuyếch đại Raman
Để tính toán cụ thể ảnh hưởng của SRS đến tín kiệu lan truyền bên trong sợi quang thì việc định lượng hệ số khuyếch đại Raman là rất cần thiết. Phổ khuyếch đại Raman trên hình 1.8 được đo lường trong thực tế và rất khó để mô tả nó bằng các hàm toán học. Tuy nhiên theo lý thuyết có thể xây dựng phổ khuyếch đại Raman này một cách gần đúng bằng các hàm toán học như : xây dựng dưới dạng tổng của các đa thức hay dưới dạng tổng của các hàm Gaussian…Trong tất cả các phương pháp thì phương pháp xây dựng phổ theo phương pháp Kramers-Kronig là phổ biến và chính xác hơn cả. Theo phương pháp này thì phổ khuyếch đại Raman được tính như sau:
(3.4)
Trong đó là phần ảo của hàm đáp ứng tần số của môi trường và có dạng trên miền thời gian:
(3.5)
Với , là hai tham số được tính toán trong thực tế , là tần số góc của sóng bơm, là chiết suất của môi trường và giá trị của bằng khoảng 0.18.
Các lưu đồ thuật toán
Lưu đồ thuật toán tính hằng số lan truyền sóng
Hình 3.1- Lưu đồ thuật toán tính hằng số lan truyền sóng.
Lưu đồ thuật toán trên hình 3.1 thực hiện việc tính toán hằng số lan truyền sóng với các bước sóng Lamda cho trước thông qua việc tính toán chiết suất theo công thức Sellmeier, trong đó c là vận tốc ánh sáng trong chân không. B[1]=0.6961663, B[2]=0.4079426, B[3]=0.8974794, Lamda[1]=, Lamda[2]=, Lamda[3]=
Kết quả cuối cùng thuật toán trả về giá trị của hằng số lan truyền sóng
Lưu đồ thuật toán tính hệ số khuyếch đại Raman
Lưu đồ thuật toán trên hình 3.2 thực hiện việc tính toán gần đúng hệ số khuyếch đại Raman theo phương pháp Krames-Kronig, kết quả cuối cùng của thuật toán trả về giá trị của g. Trong đó và là hệ số chiết suất phi tuyến.
Hình 3.2- Lưu đồ thuật toán tính gần đúng giá trị khuyếch đại Raman.
Lưu đồ tính hệ số phi tuyến
Hình 3.3- Lưu đồ hàm gama tính toán hệ số phi tuyến.
Lưu đồ thuật toán mô phỏng SRS
Hình 3.4- Lưu đồ thuật toán mô phỏng sự tạo thành sóng Stoke ở độ dịch tần df và sự khuyếch đại sóng Stoke gây ra bởi SRS.
Hình 3.4 biểu diễn lưu đồ thuật toán mô phỏng sự hình thành và khuyếch đại sóng Stoke khi công suất bơm vượt quá giá trị công suất ngưỡng.
Trên thực tế sóng Stoke được sinh ra không chỉ ở một tần số mà nó được sinh ra trong một dải tần rất rộng (cỡ 40 THz) và tập trung chủ yếu trong khoảng 6 THz ( ứng với độ dịch tần từ 9 THz15 THz, tuy nhiên ở độ dịch tần đạt khoảng 13.2 THz thì sóng Stoke sẽ được khuyếch đại lớn nhất.
Trong lưu đồ trên có sử dụng hàm Poeff() đó là hàm tính công suất ban đầu của sóng Stoke và được tính theo lưu đồ sau:
Hình 3.5- Lưu đồ thuật toán tính công suất ban đầu của sóng Stoke.
Kết quả mô phỏng và giải thích
Kết quả mô phỏng phổ khuyếch đại Raman
Ta chọn bước sóng bơm , chạy chương trình ta thu được kết quả như hình 3.6.
Quan sát kết quả mô phỏng ta thấy với bước sóng bơm đỉnh khuyếch đại đạt giá trị tại độ dịch tần là 13.15 THz. Đây là những kết quả rất phù hợp với thực nghiệm.
Hình 3.6- Kết quả mô phỏng phổ khuyếch đại Raman
tại bước sóng bơm
Kết quả mô phỏng ảnh hưởng của SRS
Hình 3.7 biểu thị dạng sóng Stoke trên miền thời gian và miền tần số ở độ dịch tần 13.2 THz với các thông số tại một số cự ly truyền dẫn khác nhau. Vì các phép tính sử dụng phương trình Schodinger phi tuyến chỉ là gần đúng nên để giảm sai số trong mô phỏng và thấy rõ được ảnh hưởng của SRS ta chọn công suất Pp=100W là khá lớn so với công suất bơm được sử dụng trong thực tế (chỉ khoảng vài Watt). Công suất ban đầu của sóng Stoke Ps sẽ được tính toán trong lưu đồ trên hình 3.5.
Quan sát trên hình 3.7 ta thấy rằng ban đầu cường độ sóng Stoke tăng dần theo z sau đó lại giảm dần. Khi cự ly truyền dẫn tăng, dạng sóng Stoke trên miền thời gian nhọn dần ở sườn trước, thoải dần ở sườn sau và mức độ mở rộng của tín hiệu tăng. Trong khi đó phổ của nó lại nhọn dần ở sườn sau, thoải dần ở sườn trước và hẹp dần khi độ dài sợi tăng. Nếu cự ly truyền dẫn đủ lớn độ rộng của tín hiệu trên cả hai miền thời gian và tần số gần như không đổi.
Hình 3.7- Dạng của sóng Stoke trên miền thời gian (cột bên trái) và miền tần số với độ dịch tần 13.2 THz sinh ra do hiệu ứng SRS.
Bản chất của hiện tượng này có thể giải thích thông qua bản chất của tán xạ kích thích Raman. Khi cho một sóng có cường độ đủ lớn bơm vào bên trong sợi, các photon ánh sáng tới sẽ chuyển một phần năng lượng của nó cho dao động cơ học của các phần tử cấu thành môi trường truyền dẫn (phonon) và tạo thành sóng mới (sóng Stoke). Ban đầu cự ly truyền dẫn tăng, sự tương tác giữa photon và phonon càng nhiều làm cho sóng Stoke có cường độ tăng dần đồng thời làm cho sườn trước của sóng bơm bị suy thoái.
Thông thường sóng mới sinh ra có vận tốc lớn hơn sóng bơm. Do đó khi cự ly truyền dẫn tăng thì khoảng cách giữa hai sóng cũng tăng lên làm cho năng lượng sóng bơm chủ yếu chuyển vào sườn sau của sóng Stoke nên sóng mới tạo thành sẽ có phần đuôi kéo dài như trên hình 3.7.
Sự chênh lệch vận tốc giữa sóng bơm và sóng Stoke có thể thấy rõ trên hình 3.8, khi cự ly truyền dẫn tăng thì khoảng cách giữa hai sóng tăng.
Hình 3.8- Sóng bơm và sóng Stoke ở các cự ly truyền dẫn khác nhau.
Khi độ dài của sợi đủ lớn thì khoảng cách giữa hai sóng rất lớn, lúc này sóng bơm không tác động đến sóng Stoke nữa làm cho năng lượng của sóng Stoke không tăng lên(bão hoà). Tuy nhiên sóng Stoke cũng tương tác với các Phonon làm cho năng lượng của sóng Stoke bị giảm dần khi cự ly truyền dẫn tăng.
Sự dịch tần của sóng Stoke gây ra bởi sóng bơm có thể được giải thích thông qua hình 3.8. Ban đầu cự ly truyền dẫn nhỏ làm sóng bơm tương tác với cả sườn trước và sườn sau của sóng Stoke (hình 3.8) làm cho sườn trước của sóng Stoke bị dịch về phía tần số thấp và sườn sau của sóng Stoke dịch về phía tần số cao. Khi cự ly truyền dẫn tăng sóng Stoke lan truyền nhanh hơn sóng bơm nên chỉ có sườn trước của sóng bơm tương tác với sườn sau của sóng Stoke. Chính điều này làm cho phổ của sóng Stoke thoải dần ở phía tần số thấp và bị thu hẹp ở vùng tần số cao và có dạng như trên hình 3.7. Khi cự ly truyền dẫn đủ lớn thì ảnh hưởng của sóng bơm lên sóng Stoke bị bão hoà làm cho phổ của sóng Stoke gần như không bị mở rộng thêm.
Ta cũng có thể ước lượng gần đúng khoảng cách mà tại đó hiện tượng bão hoà bắt đầu xảy ra. Từ phương trình (1.54) ta có hệ số khuyếch đại phụ thuộc thời gian như sau:
(3.6)
Trong đó:
= (3.7)
Từ hai phương trình (3.13) ta thấy phụ thuộc hoàn toàn vào hàm và đạt giá trị lớn nhất khi hay là :
(3.8)
Vậy cường độ sóng Stoke đạt trạng thái bão hoà tại .Nếu Pp=100W,,ta tính được .
Hình 3.9- Phổ (a) và dạng trên miền thời gian (b) của sóng bơm với các thông số W, , tại z=500 m.
Khác hẳn với sóng Stoke phổ của sóng bơm không bị ảnh hưởng bởi sóng Stoke mà chỉ bị ảnh hưởng do hiệu ứng điều chế tự dịch pha (SPM) [1]. Đồng thời dạng của sóng bơm trên miền thời gian cũng gần như không đổi dọc theo cự ly truyền dẫn.
Đặc tuyến công suất
Hình (3.10) là kết quả mô phỏng quá trình chuyển từ công suất bơm sang công suất tín hiệu trên sợi quang dài 3 km với hệ số suy hao là 0.2 dB/km, công suất bơm Pp=10 W. Kết quả này thu được từ việc giải hệ hai phương trình (2.19) và (2.20). Để giải chính xác hệ hai phương trình này, chương trình mô phỏng sử dụng hàm ode45 có sẵn trong Matlab cho phép giải hệ phương trình vi phân cấp 1.
Hình 3.10-Quá trình chuyển đổi từ công suất bơm sang công suất tín hiệu gây ra bởi hiệu ứng tán xạ Raman kích thích.
KẾT LUẬN
Vấn đề nghiên cứu ảnh hưởng của hiệu ứng tán xạ Raman kích thích lên chất lượng truyền dẫn trong hệ thống thông tin quang đang là một vấn đề có tính thời sự. Chính hiệu ứng này đã gây nên một loại các hiện tượng như thay đổi phổ tín hiệu quang, gây nhiễu trong hệ thống thông tin quang đồng thời cũng được ứng dụng trong việc khuyếch đại tín hiệu quang. Khi công suất tín hiệu truyền trong sợi quang càng lớn thì ảnh hưởng của SRS càng rõ nét.
Từ việc thực hiện đồ án “Tán xạ Raman kích thích”, có thể rút ra một số kết quả:
1. Nghiên cứu quá trình tán xạ Raman khi ánh sáng truyền trong môi trường sợi quang, các đặc tính của tán xạ Raman kích thích như phổ khuyếch đại Raman, tăng ích quang Raman, ngưỡng Raman.
2. Trình bày các ảnh hưởng của tán xạ Raman kích thích trong hệ thống thông tin quang bao gồm ảnh hưởng của SRS đến dạng xung trong hệ thống đơn kênh, các ảnh hưởng của SRS đến hệ thống WDM như xuyên âm, thay đổi công suất đầu ra của các kênh trong hệ thống WDM và cách khắc phục những ảnh hưởng này.
3. Trình bày khả năng sử dụng tán xạ Raman kích thích trong khuyếch đại tín hiệu quang, cấu trúc và ứng dụng của các bộ khuyếch đại quang Raman trong mạng thông tin quang.
4. Xây dựng thành công chương trình mô phỏng để làm rõ hơn nhưng đặc tính của tán xạ Raman kích thích, dựa theo phương trình Schrodinger phi tuyến chương trình đã tính toán và vẽ được dạng của sóng bơm và sóng Stoke trên miền thời gian và miền tần số. Chương trình cũng vẽ được chính xác đặc tuyến công suất qua đó làm rõ được quá trình chuyển đổi công suất từ sóng bơm sang sóng Stoke.
Do tán xạ Raman kích thích là một vấn đề rất rộng nên nội dung đồ án chưa thể đề cập đến mọi vấn đề liên quan. Hướng phát triển tiếp theo của đồ án là tiếp tục tìm hiểu sâu hơn nữa những ảnh hưởng và khả năng ứng dụng của tán xạ Raman kích thích, hoàn thiện chương trình mô phỏng, tìm cách tối ưu hơn nữa thuật toán mô phỏng để có thể thu được những kết quả mô phỏng chính xác hơn.
Sinh viên: Mai Nguyên Dũng
TÀI LIỆU THAM KHẢO
1.
Govind P.Agrawal, Nonlinear fiber optics, Academic Press, Inc, 1995.
2.
Govind P.Agrawal, Fiber optic communications system, John Wiley & Son, Inc, 2000.
3.
G. Van Simaeys, Philippe Emplit, IEEE, Unified description of stimulated-Raman-scattering and four-wave mixing in wavelength-division-multiplexed systems, IEEE Photon, December 1996.
4.
Chirstopher M. McIntosh, Alexandra G. Grandpierre, Dematrios N. Christodoulide, Eliminating SRS Channel Depletion in Massive WDM Systems via Optical Filtering Techniques, IEEE Photonics Tech. Letters, Vol. 13, No. 4, April 2001.
5.
Mohammed N. Islam, Raman Amplifiers for Telecommunications, IEEE Journal of Selected Topics in Quantum Electronics, Vol. 8, No. 3, May/June 2002.
6.
Hoàng duy Hân, Nghiên cứu các hiệu ứng phi tuyến trong sợi quang, Đồ án tốt nghiệp khoá 45, Đại học bách khoa Hà Nội.
7.
Nguyễn vĩnh Nam, Vũ văn San, Trần thị thuỷ Bình, Võ đức Hùng, Trần hoàng Diệu, Đỗ thị Nhàn, Nghiên cứu ảnh hưởng của các hiệu ứng phi tuyến tới chất lượng truyền dẫn trong thông tin quang, Đề tài 13-2000-HV-R-DT, Viện khoa học kỹ thuật bưu điện.
8.
Đồ án tốt nghiệp các khoá trước.
PHỤ LỤC A. Phương pháp biến đổi Fourier rời rạc
Phương pháp biến đổi Fourier rời rạc hay còn gọi là phương pháp biến đổi Fourier nhanh (FFT-Fast Fourier Tranform) được cho bởi công thức sau:
(A.1)
Trong đó , lần lượt là các giá trị rời rạc của hàm h trên miền thời gian và miền tần số với số mẫu là N. Phương trình (A.1) có thể thu được bằng cách xuất phát từ dạng biến đổi Fourier trên miền liên tục như sau:
(A.2)
Với là khoảng cách giữa hai mẫu liên tiếp, là các thời điểm lấy mẫu, là tần số lấy mẫu và là tần số mẫu thứ n:
; ; (A.3)
(A.4)
Ta thấy rằng nếu càng nhỏ thì phổ tín hiệu thu được càng chính xác. Ngoài ra cũng cần phải chú ý là sau khi tìm được ta phải chuyển về thông qua (A.2) để thu được phổ đúng của tín hiệu, quá trình này được gọi là chuẩn hoá.
Tương tự ta tính được hàm biến đổi FFT ngược(IFFT):
(A.5)
Và phương trình chuẩn hoá :
(A.6)
Từ phương trình (A.1) ta thấy là một dãy tuần hoàn chu kỳ N () do đó ta tính toán với 0N-1 hay thì kết quả thu được là như nhau. Vì vậy để tính toán phổ thông thường người ta tính toán với tuy nhiên phổ của tín hiệu () trong trường hợp này bị lệch đi một nửa bề rộng phổ. Do đó để thu được phổ đúng thì sau khi tính toán xong ta phải dịch phổ đi một nửa bề rộng phổ (FFTShift).
ình 1.3.1.4 trang 4)sáng hình 3_______________________________________________________________________________________________Như vậy để tính toán phổ của tín hiệu theo phương pháp biến đổi Fourier rời rạc ta phải thực hiện qua ba giai đoạn. Ban đầu là ta thực hiện việc biến đổi FFT theo (A.1) sau đó dịch đi một nửa bề rộng phổ (ta sẽ thực hiện hai giai đoạn này bằng cách xây dựng hai hàm FFT và FFTShift) và cuối cùng là thực hiện chuẩn hoá như (A.2) để thu được phổ chính xác.
PHỤ LỤC B. Chương trình mô phỏng
Chương trình mô phỏng được viết băng ngôn ngữ Visual Basic, các thông số nhập vào để tính toán như hình (B.1). Sau đó có thể chọn vẽ dạng của sóng bơm, sóng Stoke trên miền thời gian và miền tần số, vẽ phổ khuyếch đại Raman, đặc tuyến công suất.
Hình B.1- Các tham số cần nhập trong chương trình mô phỏng.
‘******************************************************************
‘Chương trình mô phỏng được xây dưng bằng ngôn ngữ lập trình Visual Basic kết ‘hợp với công cụ Matlab.
‘Code by :Mai nguyên Dũng
Private FontFile As String
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long
Private Declare Function RemoveFontResource Lib "gdi32" Alias "RemoveFontResourceA" (ByVal lpFileName As String) As Long
Dim showmatLab As Boolean
Dim useMatlab As Boolean
Private Type complex
real As Double
img As Double
End Type
Dim obj1
Dim j As Integer
Dim dt As Double
Dim tm As Double
Const n2 = 2.67 * 10 ^ -20
Const pi = 3.14159265358979 ' 3.1416
Const c = 3 * 10 ^ 8
Const h = 6.625 * 10 ^ -34
Const t11 = 12.2 * 10 ^ -15
Const t22 = 32 * 10 ^ -15
Dim Pp As Double, T0 As Double, z As Double
Dim lamdap As Double, lamdas As Double ‘Bước sóng bơm và sóng Stoke
Dim Aeff As Double
Dim chisomax As Integer
Dim SRSPump As Boolean
Dim Peakp As Double, Peaks As Double, Pth As Double, Ps As Double
Dim gR As Double, gs As Double, gp As Double
Dim gamap As Double, gamas As Double, delta As Double, d As Double
Dim aso(1024) As Double, phis(1024) As Double, asz(1024) As complex
Dim apo(1024) As Double, phip(1024) As Double, apz(1024) As complex
Dim aszT(1024) As Double, apzT(1024) As Double
Dim max_x As Double, max_y As Double
Dim label_xs As String, label_ys As String 'Chú giải trên các trục-Stoke
Dim label_xp As String, label_yp As String 'Chú giải trên các trục- Pump
Dim label_x As String, label_y As String
Dim ti_le_xs As Double, ti_le_ys As Double 'Ti le do thi xung Stoke
Dim ti_le_xp As Double, ti_le_yp As Double
Dim fre(1024) As Double 'Các mẫu tần số
Dim t(1024) As Double
Dim tp1(1024) As Double, ts1(1024) As Double
Dim newDraw As Boolean 'Cho biet ve tren mot do thi moi hay khong
Dim Lw As Double 'Chiều dài Walk-Off
‘********************Hàm RamanGain*******************
Private Function RamanGain(ByVal lamdap As Double, ByVal df As Double)
‘Hàm tính hệ số khuyếch đại Raman với bước sóng bơm lamdap
Dim k As Double, w As Double, tu As Double, mau As Double
k = 1 / t11 ^ 2 + 1 / t22 ^ 2
w = 2 * pi * Abs(df)
tu = 2 * w / t22
mau = (k - w ^ 2) ^ 2 + (2 * w / t22) ^ 2
RamanGain = 0.18 * 16 * pi * n2 / (3 * lamdap) * k * tu / mau
End Function
‘********************Hàm beta***********************
Private Function beta(lamda As Double) As Double
Dim b(3) As Double, n As Double, wdn As Double
b(1) = 0.6961663
b(2) = 0.4079426
b(3) = 0.8974794
Dim l(3) As Double
l(1) = 0.0684943
l(2) = 0.1162414
l(3) = 9.896161
Dim O(3) As Double, i As Integer, Om As Double
For i = 1 To 3
O(i) = 2 * pi * c / l(i)
Next i
Om = 2 * pi * c / (lamda * 10 ^ 6)
n = 1
wdn = 0
For i = 1 To 3
n = n + (b(i) * O(i) ^ 2) / (O(i) ^ 2 - Om ^ 2)
wdn = wdn + (b(i) * O(i) ^ 2 * Om ^ 2) / (O(i) ^ 2 - Om ^ 2) ^ 2
Next i
n = n ^ 0.5
beta = (n + wdn / n) / c
'beta = n
End Function
‘********************Hàm Poeff***********************
Private Function Poeff(ByVal Aeff As Double, ByVal Po As Double, ByVal z As Double, ByVal lamdap As Double)
‘Hàm tính công suất sóng Stoke ban đầu
Dim k As Double, w As Double, tu As Double, mau As Double
k = 1 / t11 ^ 2 + 1 / t22 ^ 2
Dim df As Double
df = Val(txtDodichtan) * 10 ^ 12
w = 2 * pi * Abs(df)
tu = 2 * w / t22
mau = (k - w ^ 2) ^ 2 + (2 * w / t22) ^ 2
lamdas = c / (c / lamdap - df)
Dim dtu As Double, dmau As Double, d2mau As Double, d2g As Double, g2p As Double
dmau = 4 * w ^ 3 + 8 * w / (t22 ^ 2) - 4 * k * w
dtu = 2 / t22
d2mau = 12 * w ^ 2 + 8 / t22 ^ 2 - 4 * k
d2g = Abs(d2tu / mau - d2mau * tu / mau ^ 2 - 2 * dtu * dmau / mau ^ 2 + 2 * (dmau) ^ 2 * tu / mau ^ 3)
g2p = 0.155 * 16 * pi * n2 / (3 * lamdap) * k * d2g
Poeff = h * df * (2 * pi * Aeff / (g2p * Po * z)) ^ 0.5
End Function
‘********************Hàm ve_xung_vao()***********************
Private Function ve_xung_vao()
‘Ve xung vao
Dim Tmv As Double, i As Integer, dtv As Double
Dim tv(1024) As Double, yv(1024) As Double, tv1(1024) As Double
Tmv = 20 * T0
dtv = Tmv / 1023
For i = 1 To 1024
tv(i) = (-Tmv / 2 + (i - 1) * dtv)
tv1(i) = tv(i) / T0
yv(i) = sqrt(Ps) * Exp(-(tv1(i) ^ 2 / 2))
Next i
ti_le_x = tinh_ti_le(MaxT(tv))
ti_le_y = tinh_ti_le(MaxT(yv))
For i = 1 To 1024
tv(i) = tv(i) * 10 ^ ti_le_x
yv(i) = yv(i) * 10 ^ ti_le_y
Next i
label_x = "Time ,s x 10" & showScript(-ti_le_x)
label_y = "V x 10" & showScript(-ti_le_y)
Ve_truc_toa_do MaxT(tv) + 1, MaxT(yv) + 1
For i = 1 To 1024
Next i
Plot tv, yv, 1, 1
Form2.Labelx.Caption = label_x
Form2.Labely.Caption = label_y
End Function
‘********************Hàm Tinh_toan_thong_so()***********************
Private Function Tinh_toan_thong_so()
‘Tính toán các giá trị người sử dụng nhập vào
Form2.Labelx.Caption = ""
Form2.Labely.Caption = ""
Pp = Val(txtPp.Text)
T0 = Val(txtT0) * 10 ^ -12
lamdap = (10 ^ -6) * Val(txtLamdaP)
z = Val(Text1.Text)
Aeff = Val(txtAeff.Text) * (10 ^ -12)
gR = RamanGain(lamdap, Val(txtDodichtan) * 10 ^ 12)
lamdas = c / (c / lamdap - Val(txtDodichtan) * 10 ^ 12)
gamap = gama(Aeff, lamdap)
gamas = gama(Aeff, lamdas)
Ps = Poeff(Aeff, Pp, z, lamdap)
If (z 0) Then
Pth = 16 * Aeff / (z * gR)
End If
gs = gR / Aeff
gp = (lamdap / lamdas) * gs
d = beta(lamdap) - beta(lamdas)
Lw = T0 / d
delta = z * d / T0
End Function
‘********************Hàm SRS()***********************
Private Function SRS(fc As Double, pSample As Integer, ntype As Integer, nNo As Integer)
Dim max_x As Double, max_y As Double, i As Integer
If (Pp >= Pth) And (z 0) Then
If Check1.Value = 1 Then
DrawStoke 1024, OptMienthoigian.Value
If OptMienthoigian.Value = True Then 'Neu la mien thoi gian
For i = 1 To 1024
ts1(i) = ts1(i) * 10 ^ ti_le_xs
aszT(i) = aszT(i) * 10 ^ ti_le_ys
Next i
max_x = MaxT(ts1) + 1
max_y = MaxT(aszT) + 1
label_x = label_xs
label_y = label_ys
Ve_truc_toa_do max_x, max_y
Plot ts1, aszT, MaxT(ts1) + 1, MaxT(aszT) + 1, label_xs, label_ys
Else 'Neu la mien tan so
For i = 1 To 1024
fre(i) = fre(i) * 10 ^ ti_le_xs
aszT(i) = aszT(i) * 10 ^ ti_le_ys
Next i
max_x = MaxT(fre) + 1
max_y = MaxT(aszT) + 1
label_x = label_xs
label_y = label_ys
Ve_truc_toa_do max_x, max_y
Plot fre, aszT, MaxT(fre) + 1, MaxT(aszT) + 1, label_xs, label_ys
End If
Else 'Nếu cần vẽ xung Pump
DrawPump 1024, OptMienthoigian.Value
If OptMienthoigian.Value = True Then 'Neu ve o mien thoi gian
For i = 1 To 1024
tp1(i) = tp1(i) * 10 ^ ti_le_xp
apzT(i) = apzT(i) * 10 ^ ti_le_yp
Next i
max_x = MaxT(tp1) + 1
max_y = MaxT(apzT) + 1
label_x = label_xp
label_y = label_yp
Ve_truc_toa_do max_x, max_y
Plot tp1, apzT, (tm / 2) * 10 ^ ti_le_x, Round(MaxT(apzT)) * 10 ^ ti_le_y + 1, label_xp, label_y
Else 'Neu la mien tan so
For i = 1 To 1024
fre(i) = fre(i) * 10 ^ ti_le_xp
apzT(i) = apzT(i) * 10 ^ ti_le_yp
Next i
max_x = 2 * fre(1024)
max_y = MaxT(apzT) + 1
label_x = label_xp
label_y = label_yp
Ve_truc_toa_do max_x, max_y
Plot fre, apzT, 2 * fre(pSample), MaxT(apzT) + 1, label_x, label_y
End If
End If
End Function
‘********************Hàm Ve_hai_xung()***********************
Private Function Ve_hai_xung()
‘Vẽ hai xung trên miền thời gian
Form2.Labelx.Caption = ""
Form2.Labely.Caption = ""
Form2.LblBuocsong.Caption = ""
Form2.lblKhoangcach.Caption = ""
newDraw = True
Dim tilex As Double, tiley As Double
Dim i As Integer
Tinh_toan_thong_so
Dim max_x As Double, max_y As Double
If (Pp >= Pth) And (z 0) Then
Ps = Poeff(Aeff, Pp, z, lamdap)
DrawPump 1024, True
DrawStoke 1024, True
If ti_le_xp < ti_le_xs Then
tilex = ti_le_xp
Else
tilex = ti_le_xs
End If
If ti_le_yp < ti_le_ys Then
tiley = ti_le_yp
Else
tiley = ti_le_ys
End If
For i = 1 To 1024
ts1(i) = ts1(i) * 10 ^ tilex
aszT(i) = aszT(i) * 10 ^ tiley
tp1(i) = tp1(i) * 10 ^ tilex
apzT(i) = apzT(i) * 10 ^ tiley
Next i
If MaxT(ts1) > MaxT(tp1) Then
max_x = MaxT(ts1)
Else
max_x = MaxT(tp1)
End If
If MaxT(aszT) > MaxT(apzT) Then
max_y = MaxT(aszT)
Else
max_y = MaxT(apzT)
End If
max_y = Round(max_y) + 1
label_x = label_xp
label_y = label_yp
Ve_truc_toa_do max_x, max_y
Form2.Picture1.ForeColor = vbRed
Plot tp1, apzT, max_x, max_y, label_xp, label_yp
Form2.Picture1.ForeColor = vbBlack
Plot ts1, aszT, max_x, max_y, label_xp, label_yp
Form2.Labelx.Caption = label_x
Form2.Labely.Caption = label_y
Form2.lblKhoangcach.Caption = "z=" & z & "m"
Form2.lblChugiai.Caption = "H×nh 1 Sãng b¬m vµ sãng Stoke ë cù ly " & z & " m"
End If
End Function
‘********************Hàm DrawPump()***********************
Private Function DrawPump(ByVal pSample As Integer, Optional timedomain As Boolean = True, Optional ByVal fc As Integer = 0)
‘Tính toán sóng bơm
Dim i As Integer
Dim max1 As Double
Dim temp1 As Double, temp2 As Double
If timedomain = True Then
tm = 20 * T0
Else
tm = 100 * T0
End If
dt = tm / (pSample - 1)
For i = 1 To pSample
tp1(i) = (-tm / 2 + (i - 1) * dt)
t(i) = tp1(i) / T0
apo(i) = (Pp ^ 0.5) * Exp(-0.5 * t(i) ^ 2)
If (Pp < Pth) Or (z = 0) Then
phip(i) = -gamap * z * apo(i) ^ 2
apz(i).real = apo(i) * Cos(phip(i))
apz(i).img = apo(i) * Sin(phip(i))
imgProcess.Width = picProcess.Width / pSample * i
Else
If useMatlab = False Then
phip(i) = Ps * sqrt(pi) / (2 * delta) * (erf(t(i) + delta) - erf(t(i)))
Else
phip(i) = tinhPhip(delta, t(i))
End If
temp1 = Cos(gamap * z * (apo(i) ^ 2 + 2 * phip(i)))
temp2 = Sin(gamap * z * (apo(i) ^ 2 + 2 * phip(i)))
apz(i).real = apo(i) * Exp(-gp * z / 2 * phip(i)) * temp1
apz(i).img = -apo(i) * Exp(-gp * z / 2 * phip(i)) * temp2
imgProcess.Width = picProcess.Width / pSample * i
End If
Next i
Peakp = TimMax(apz)
max1 = MaxT(tp1)
ti_le_xp = tinh_ti_le(max1)
ti_le_yp = tinh_ti_le(Peakp)
label_xp = "10" & showScript((-tinh_ti_le(max1)))
label_yp = "10" & showScript((-tinh_ti_le(Peakp)))
If timedomain = True Then ‘Vẽ trên miền thời gian
For i = 1 To pSample
apzT(i) = Modul(apz(i)) '* (10 ^ ti_le_yp)
tp1(i) = tp1(i) '* (10 ^ ti_le_xp)
Next i
If ti_le_xp 0 Then
label_xp = "Time,s x" & label_xp
Else
label_xp = "Time,s"
End If
If ti_le_yp 0 Then
label_yp = "Amplifier V x" & label_yp
Else
label_yp = "Amplifier V"
End If
Else 'Vẽ trên miền tần số
Dim apzF() As complex, aps() As complex
ReDim apzF(pSample) As complex
ReDim aps(pSample) As complex
FFT apz, apzF ‘Biến đổi sang miền tần số
FFTShift apzF, aps ‘Dịch đi một nửa bề rộng phổ
For i = 1 To pSample
apzT(i) = (dt * Modul(aps(i))) ^ 2
Next i
max_y = MaxT(apzT)
ti_le_yp = tinh_ti_le(max_y)
For i = 1 To pSample
apzT(i) = (dt * Modul(aps(i))) ^ 2 '* 10 ^ ti_le_yp
Next i
For i = 1 To pSample
fre(i) = (fc + (-(pSample - 1) / 2 + i - 1) / (pSample * dt)) '* 10 ^ -11
Next i
max_x = MaxT(fre)
ti_le_xp = tinh_ti_le(max_x)
For i = 1 To pSample
fre(i) = fre(i) '* 10 ^ ti_le_xp
Next i
If ti_le_xp 0 Then
label_xp = "Frequency(f-f0),Hz x" & "10" & showScript(-ti_le_xp)
Else
label_xp = "Frequency(f-f0),Hz"
End If
If ti_le_yp 0 Then
label_yp = "Power, W x" & "10" & showScript((-ti_le_yp))
Else
label_yp = "Power, W"
End If
End If
End Function
‘********************Hàm DrawStoke()***********************
Private Function DrawStoke(ByVal pSample As Integer, Optional ByVal timedomain As Boolean = True)
‘Tính toán với sóng Stoke
Dim i As Integer
Dim temp1 As Double, temp2 As Double
If timedomain = True Then
tm = 20 * T0
Else
tm = 100 * T0
End If
dt = tm / (pSample - 1)
For i = 1 To pSample
ts1(i) = (-tm / 2 + (i - 1) * dt) - z * d
t(i) = ts1(i) / T0
aso(i) = sqrt(Ps) * Exp(-0.5 * (t(i) + delta) ^ 2)
If useMatlab = False Then
phis(i) = Pp * sqrt(pi) / (2 * delta) * (erf(t(i) + delta) - erf(t(i)))
Else
phis(i) = TinhPhis(delta, t(i))
End If
temp1 = Cos(gamas * z * (aso(i) ^ 2 + 2 * phis(i)))
temp2 = Sin(gamas * z * (aso(i) ^ 2 + 2 * phis(i)))
asz(i).real = aso(i) * Exp(gs * z / 2 * phis(i)) * temp1
asz(i).img = -aso(i) * Exp(gs * z / 2 * phis(i)) * temp2
imgProcess.Width = (14 / 8) * picProcess.Width / pSample * i / 2
Next i
Peaks = TimMax(asz)
If timedomain = True Then
For i = 1 To pSample
aszT(i) = Modul(asz(i))
imgProcess.Width = 7 / 8 * (picProcess.Width) + picProcess.Width / pSample * i / 16
Next i
max_x = MaxT(ts1)
max_y = MaxT(aszT)
ti_le_xs = tinh_ti_le(max_x)
ti_le_ys = tinh_ti_le(max_y)
If ti_le_xs 0 Then
label_xs = "Time, s x 10" & showScript(-ti_le_xs)
Else
label_xs = "Time, s"
End If
If ti_le_ys 0 Then
label_ys = "Amplifier, V x 10" & showScript(-ti_le_ys)
Else
label_ys = "Amplifier, V"
End If
For i = 1 To pSample
ts1(i) = ts1(i) '* 10 ^ ti_le_xs
aszT(i) = aszT(i) '* 10 ^ ti_le_ys
imgProcess.Width = 15 / 16 * (picProcess.Width) + picProcess.Width / pSample * i / 16
Next i
Else 'Ve trong mien tan so
Dim asf() As complex, ass() As complex
ReDim asf(pSample) As complex
ReDim ass(pSample) As complex
FFT asz, asf
FFTShift asf, ass
For i = 1 To pSample
aszT(i) = ((dt * Modul(ass(i))) ^ 2)
imgProcess.Width = 7 / 8 * (picProcess.Width) + picProcess.Width / pSample * i / 16
Next i
For i = 1 To pSample
fre(i) = (fc + (-(pSample - 1) / 2 + i - 1) / (pSample * dt))
Next i
max_y = MaxT(aszT)
max_x = MaxT(fre)
ti_le_xs = tinh_ti_le(max_x)
ti_le_ys = tinh_ti_le(max_y)
If ti_le_xs 0 Then
label_xs = "Frequency(f-f0),Hz x" & "10" & showScript(-ti_le_xs)
Else
label_xs = "Frequency(f-f0),Hz"
End If
If ti_le_ys 0 Then
label_ys = "Power, W x" & "10" & showScript(-ti_le_ys)
Else
label_ys = "Power, W"
End If
For i = 1 To pSample
fre(i) = fre(i) '* 10 ^ ti_le_xs
aszT(i) = aszT(i) ' * 10 ^ ti_le_ys
imgProcess.Width = 15 / 16 * (picProcess.Width) + picProcess.Width / pSample * i / 16
Next i
End If
Form2.lblKhoangcach.Caption = "z=" & z & " m"
End Function
‘********************Hàm tinhPhip()***********************
Private Function tinhPhip(ByVal delta As Double, ByVal tg As Double) As Double
Dim str As String
str = Ps & " * sqrt(pi) / (2 * " & delta & ") * (erf(" & tg & "+ " & delta & ") - erf(" & tg & "))"
str = Mid(obj1.execute(str), 7)
tinhPhip = Val(str)
End Function
‘********************Hàm TinhPhis()***********************
Private Function TinhPhis(ByVal delt As Double, ByVal tg As Double) As Double
‘Kết hợp sử dụng Matlab
Dim str As String
str = Pp & "*sqrt(pi) / (2 *" & delt & ") * (erf(" & tg & "+" & delta & ") - erf(" & tg & "))"
str = Mid(obj1.execute(str), 7)
TinhPhis = Val(str)
End Function
‘********************Hàm MaxT()***********************
Private Function MaxT(x() As Double) As Double
‘Tìm giá trị lớn nhất của một dãy số thực
Dim i As Integer, num As Integer, temp As Double
num = UBound(x)
For i = 1 To num
If Abs(x(i)) > temp Then
temp = Abs(x(i))
End If
Next i
MaxT = temp
End Function
‘********************Hàm gama()***********************
Private Function gama(ByVal Aeff As Double, ByVal lamda As Double) As Double
gama = n2 * 2 * pi / (lamda * Aeff)
End Function
Private Function expC(x As complex) As complex
'Ham mu so phuc
Dim temp As complex
temp.real = Exp(x.real) * Cos(x.img)
temp.img = Exp(x.real) * Sin(x.img)
expC = temp
End Function
‘********************Hàm TimMax()***********************
Private Function TimMax(x() As complex) As Double
‘Tìm số phức có modul lớn nhất trong một dãy số phức
Dim number As Integer
number = UBound(x)
Dim temp As Double, temp2 As Double
temp = Modul(x(1))
Dim i As Integer
For i = 1 To number
If temp < Modul(x(i)) Then
chisomax = i
temp = Modul(x(i))
End If
Next i
TimMax = temp
End Function
‘********************Hàm FFT()***********************
Private Function FFT(MatrixIn() As complex, ByRef MatrixOut() As complex)
‘Hàm biến đổi Fourier nhanh
Dim numSamples As Integer
Dim k As Integer, n As Integer
Dim A As Double, b As Double
Dim reo() As Double, ImO() As Double, ReI() As Double, ImI() As Double
numSamples = UBound(MatrixIn) '+ 1
ReDim MatrixOut(numSamples) As complex
ReDim reo(numSamples) As Double
ReDim ImO(numSamples) As Double
ReDim ReI(numSamples) As Double
ReDim ImI(numSamples) As Double
For n = 1 To numSamples
ReI(n) = MatrixIn(n).real
ImI(n) = MatrixIn(n).img
Next n
For n = 1 To numSamples
reo(n) = 0
ImO(n) = 0
For k = 2 To numSamples / 2
A = Cos(2 * pi * (k - 1) * (n - 1) / numSamples)
b = Sin(2 * pi * (k - 1) * (n - 1) / numSamples)
reo(n) = reo(n) + (ReI(k) + ReI(numSamples + 2 - k)) * A
reo(n) = reo(n) + (-ImI(numSamples + 2 - k) + ImI(k)) * b
ImO(n) = ImO(n) + (ImI(k) + ImI(numSamples + 2 - k)) * A
ImO(n) = ImO(n) + (-ReI(k) + ReI(numSamples + 2 - k)) * b
Next k
reo(n) = reo(n) + ReI(1) + ReI(numSamples / 2 + 1) * Cos(pi * (n - 1))
ImO(n) = ImO(n) + ImI(1) + ImI(numSamples / 2 + 1) * Cos(pi * (n - 1))
MatrixOut(n).real = reo(n)
MatrixOut(n).img = ImO(n)
Next n
End Function
‘********************Hàm FFTShift()***********************
Private Function FFTShift(x() As complex, y() As complex)
‘Hàm dịch phổ-Dịch đi một nửa bề rộng phổ
Dim number As Integer
number = UBound(x)
ReDim y(number) As complex
Dim i As Integer
For i = 1 To number
If i <= number / 2 Then
y(i).real = x(i + number / 2).real
y(i).img = x(i + number / 2).img
Else
y(i).real = x(i - number / 2).real
y(i).img = x(i - number / 2).img
End If
Next i
End Function
‘********************Hàm Ve_truc_toa_do()***********************
Private Function Ve_truc_toa_do(ByVal xmax As Double, ByVal ymax As Double)
‘Hàm vẽ trục toạ độ
Form2.Labelx.Caption = ""
Form2.Labely.Caption = ""
Form2.Show
Form2.Picture1.Cls
Form2.Picture1.ForeColor = vbBlack
Form2.Picture1.Scale (-xmax, ymax)-(xmax, -ymax / 2)
Form2.Picture1.Line (-xmax, 0)-(xmax, 0)
Form2.Picture1.Line (0, 0)-(0, ymax)
Form2.Picture1.Line (-xmax, xmax / 20)-(-xmax, -xmax / 20)
PrintPic -xmax, 0, -Round(xmax, 1), xmax, ymax
PrintPic 0, ymax, Round(ymax, 1)
Form2.Picture1.Line (-xmax / 40, ymax)-(xmax / 40, ymax)
For i = -4 To 5
PrintPic i * xmax / 5, 0, Round(i * xmax / 5, 1), xmax, ymax ' Round(xmax / 5
Next i
For i = 1 To 4
PrintPic 0, i * ymax / 5, Round(i * ymax / 5, 1), xmax, ymax, False ' Round(xmax / 5)
Next i
End Function
‘********************Hàm Plot()***********************
Private Function Plot(x() As Double, y() As Double, ByVal xmax As Double, ymax As Double, Optional ByVal label_x As String, Optional ByVal label_y As String)
‘Vẽ các điểm (x,y) của hai dãy số đầu vào lên trục toạ độ
Dim num As Integer, i As Integer
num = UBound(x)
For i = 1 To num - 1
If Round(y(i), 2) 0 Then
If i Mod 5 = 0 Then
pause 0.006
End If
Form2.Picture1.Line (x(i), y(i))-(x(i + 1), y(i + 1))
End If
Next i
End Function
‘********************Hàm PrintPic()***********************
Private Function PrintPic(ByVal x As Double, ByVal y As Double, ByVal str As String, Optional ByVal xmax As Double, Optional ByVal ymax As Double, Optional ByVal hoz As Boolean = True)
‘Hàm vẽ các giá trị vạch đơn vị trên trục toạ độ
If hoz = True Then ‘Trục ngang
Form2.Picture1.Line (x, ymax / 40)-(x, -ymax / 40)
Form2.Picture1.CurrentX = x
Form2.Picture1.CurrentY = y - ymax / 40
Form2.Picture1.Print str
Else ‘Trục đứng
Form2.Picture1.Line (xmax / 40, y)-(-xmax / 40, y)
Form2.Picture1.CurrentY = y
Form2.Picture1.CurrentX = xmax / 40
Form2.Picture1.Print str
End If
'Form2.Picture1.Line
End Function
‘********************Hàm Modul()***********************
Private Function Modul(x As complex) As Double
‘Hàm tính modul của một số phức
Modul = (x.real ^ 2 + x.img ^ 2) ^ 0.5
End Function
‘********************Hàm DrawRamanSpectrum()*********************
Private Function DrawRamanSpectrum()
‘ Hàm vẽ phổ khuyếch đại Raman
Dim pSample As Integer, i As Integer
Dim max_x As Double, max_y As Double
Dim ti_le_x As Double, ti_le_y As Double
Dim label_x As String, label_y As String
pSample = 1024
Dim xt(1024) As Double, yt(1024) As Double
'xt biểu thị độ dịch tần, yt biểu thị hệ số khuyếch đại Raman.
tm = 40 'Ta lay gia tri max tren truc x la 40
For i = 0 To pSample
xt(i) = i * tm / pSample
xt(i) = xt(i) * 10 ^ 12
Next i
For i = 0 To 1024
yt(i) = RamanGain(Val(txtLamdaP) * 10 ^ -6, xt(i))
Next i
max_x = MaxT(xt)
max_y = MaxT(yt)
ti_le_x = -12 'tinh_ti_le(max_x)
ti_le_y = tinh_ti_le(max_y) '13
For i = 0 To 1024
xt(i) = xt(i) * 10 ^ ti_le_x
yt(i) = yt(i) * 10 ^ ti_le_y
Next i
label_x = "Frequency shift,THz"
label_y = "RamanGain x10" & showScript(-ti_le_y) & ",m/W"
Ve_truc_toa_do MaxT(xt) + 1, MaxT(yt) + 1
Form2.LblBuocsong.Caption = ""
Plot xt, yt, 1, 1
Form2.Labelx.Caption = label_x
Form2.Labely.Caption = label_y
Form2.LblBuocsong.Caption = Ky_tu("lamdap") & "=" & Val(txtLamdaP) & Ky_tu("micromet")
Form2.LblBuocsong.Top = MaxT(yt)
End Function
‘********************Hàm Ky_tu()*********************
Private Function Ky_tu(ByVal str As String)
‘Đây là hàm hiển thị các ký tự đặc biệt như …
If str = "lamda" Then
Ky_tu = "ô"
ElseIf str = "micro" Then
Ky_tu = "õ"
ElseIf str = "beta" Then
Ky_tu = "ë"
ElseIf str = "lamdap" Then
Ky_tu = "ô"
ElseIf str = "micromet" Then
Ky_tu = "õm"
End If
End Function
‘******************************************************************
Private Sub Command2_Click()
Tinh_toan_thong_so
ve_xung_vao
End Sub
‘******************************************************************
Private Sub Command3_Click()
newDraw = True
If Check1.Value = 1 And Check2.Value = 1 Then
If optMientanso.Value = True Then
MsgBox "Chuong trinh chi ve hai song dong thoi tren mien thoi gian.", vbOKOnly, "Thong bao"
End If
OptMienthoigian.Value = True
Ve_hai_xung
Exit Sub
End If
Tinh_toan_thong_so
SRS 0, 1024, 1, 1
Form2.Labelx.Caption = label_x
Form2.Labely.Caption = label_y
MsgBox "Da ve song do thi", vbOKOnly, "Thong bao"
End Sub
‘******************************************************************
Private Sub Command4_Click()
DrawRamanSpectrum
End Sub
‘******************************************************************
Private Sub Command5_Click()
Ve_hai_xung
End Sub
‘******************************************************************
Private Sub Form_Load()
'ShellExecute 0, "open", "C:\MATLABR11\bin\matlab.exe", vbNullString, vbNullString, 0
On Error GoTo err
FontFile = App.Path & "\Bede.ttf"
Call AddFontResource(FontFile)
Dim myRange
SetFont
Form3.Show
Set obj1 = CreateObject("Matlab.Application")
Unload Form3
Exit Sub
err:
If err.number = 429 Then
useMatlab = False
Unload Form3
MsgBox "May cua ban chua duoc cai dat Matlab." & vbCrLf & _
"Neu duoc su ho tro cua Matlab chuong trinh se tinh toan chinh xac hon.", vbOKOnly, "Thong bao"
End If
End Sub
‘******************************************************************
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Set obj1 = Nothing
Call RemoveFontResource(FontFile)
End Sub
‘******************************************************************
Private Function tinh_ti_le(ByVal x As Double)
If Round(Logarit(1 / x)) > Logarit(1 / x) Then
tinh_ti_le = Round(Logarit(1 / x))
Else
tinh_ti_le = Round(Logarit(1 / x)) + 1
End If
End Function
‘******************************************************************
Private Function Logarit(ByVal x As Double)
'Ham tinh logarit co so 10 cua x
Logarit = Log(x) / Log(10)
End Function
‘******************************END*****************************
Các file đính kèm theo tài liệu này:
- Tán xạ raman kích thích.doc