Đồ án Tán xạ raman kích thích

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

doc101 trang | Chia sẻ: tlsuongmuoi | Lượt xem: 2768 | Lượt tải: 2download
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:

  • docTán xạ raman kích thích.doc
Tài liệu liên quan