對于光纖中的強放大光信號,通常需要使用兩個甚至更多的光纖放大級。例如,可能需要濾除階與階之間的ASE或反向傳播的光,或者可能需要在不同級使用不同的光纖(例如,對于功率放大器,使用更大的有效模面積和包層泵浦)。在這里,我們想分享一些關于如何用我們的軟件RP Fiber Power建模這樣的多級放大器的想法。
每個階段一個腳本
概念上最簡單的方法是為不同的階段使用單獨的模擬腳本,或者使用交互式表單對它們建模。這可能是一種適當的方法,特別是如果每個階段都需要在進行下一階段之前詳細分析和優化。
一個具有實際重要性的問題可能是如何在不同的模擬之間傳輸數據。在簡單的情況下,它可能只是一個恒定的信號輸出功率,需要作為下一級的輸入功率;您可以手動傳送。但是,也可能有一個完整的ASE頻譜要轉移,即一整個功率值陣列。在超短脈沖放大的情況下,需要轉移整個脈沖,例如在時域或頻域用復雜的振幅表示。自然的解決方案是將這些數據保存到一個或多個文件中,然后腳本可以在下一個階段讀取這些文件。這只需要更多的代碼,但是我們強大的腳本語言允許您保存和加載任何數據。您甚至可以在交互式表單中使用它,可以為此類任務注入一些腳本代碼。
在如下情況下,可能會遇到這種簡單方法的局限性:
如果第一個放大級的某些細節被修改,您將需要再次手動啟動后續階段的模擬——如果這種情況經常發生,這將是一個痛苦的過程。
制作包含多個階段輸出的圖(如圖1所示)是可能的,但同樣需要保存和加載數據,這可能有點不方便。
簡單的方法在階與階之間相互作用的情況下失敗了。例如,設想第二個放大器級的反向ASE或剩余泵浦功率會影響第一個放大器級。為了計算自洽狀態,顯然不能再單獨考慮階段。
圖1:包含兩個有源光纖的光纖激光器的光功率變化。這個例子摘自之前的一篇文章。
一個腳本有幾個階段
確實經常需要(或者只是更方便)制作一個單獨的模擬腳本來處理多個放大階段(甚至可能是種子激光器,例如鎖模激光器)。
如何在一個腳本定義和處理不同的放大器階段?
接下來的問題是,如何使用不同的stages的索引作為參數的函數來處理不同的stages。解決方案很簡單:為了告訴RP Fiber Power 軟件接下來會發生什么,您可以使用一個函數調用像set_device(2)——例如,光纖的定義相應的光學通道,或計算數據的檢索,是指第二個設備,這可能是第二次放大級。
下面,我們向你您展示一些計算雙級光纖放大器穩態的示例代碼,其中信號從第一級到第二級,而一些從第二級的剩余泵浦光進入第一級(ASE被忽略)。假設已經定義了光纖及其光通道,則可以使用以下函數來計算穩態:
find_steady_state(P_s_in, P_p1, P_p2) := begin global allow all;
var P_s_fw, P_p_bw, NoSteps;
NoSteps := 0; set_device(1);
set_P_in(pump1_fw, P_p1);
set_P_in(signal1, P_s_in);
repeat inc(NoSteps); P_s_fw := P_out(signal1);
set_device(2);
set_P_in(pump2_bw, P_p2);
set_P_in(signal2, P_s_fw);
P_p_bw := P_out(pump2_bw);
{ backward pump power left over by the second stage } set_device(1);
set_P_in(pump1_bw, P_p_bw);
until abs(P_s_fw - P_out(signal1)) < 0.01 mW;
NoSteps; end
您看,即使那些沒有看過手冊的人也可以很容易地猜出代碼的不同元素在做什么。在調用該函數時,您告訴它的信號輸入功率和泵的兩個階段,第一階段和函數返回找到穩態所需的迭代次數(可能通常是2)。此后,您可以檢索任何輸出,例如,顯示兩個階段后的信號輸出功率(3位有效數字和單位瓦):
calc find_steady_state(1 mW, 150 mW, 1600 mW)show "P_s1: ", (set_device(1);
P_out(signal1)):d3:"W"show "P_s2: ", (set_device(2);
P_out(signal2)):d3:"W"
創建一個圖表也是沒有問題的,例如,在給定泵功率的固定值下,將最終信號輸出功率顯示為信號輸入功率的函數:
diagram 1: "Signal Output vs. Signal Input" x: 0, 20"signal input power (mW)", @xy: 0, 1500"signal output power (mW)", @y f: (find_steady_state(x * mW, 150 mW, 1600 mW);
set_device(2); P_out(signal2) / mW), color = blue
在超短脈沖放大的情況下也可以做類似的事情。您可以只創建一個開始脈沖(例如,給定參數的高斯脈沖,或從文件讀取的脈沖,或從鎖模激光模型在同一腳本中的穩態輸出),然后通過不同的階段發送。您可以用連續波計算來準備關于它的激光活性離子的激發狀態的每個階段(例如,根據信號的平均功率,計算為脈沖能量和脈沖重復率的乘積),或在打開恒定的泵浦功率(或任何其他泵浦功率的時間剖面)后模擬重復放大。您還可以定義一個函數,讓它執行某些迭代步驟,直到達到穩定狀態。這些只是例子-您可以做任何您想做的事情!
腳本與圖形界面
其他一些產品(例如VPIphotonics)使用完全不同的方法來建模多個放大器級的系統。在那里,您交互式地在桌面放置一些放大器階段的符號,并將它們與象征它們之間的光流的線連接起來。通過右鍵單擊相應的符號并在獲得的彈出式表單中輸入數據,可以修改放大器級的詳細信息。例如,進一步的工具可以幫助您制作圖表。
乍一看,您可能認為這種GUI方法比編寫帶有如上所示元素的腳本更容易。其實,雖然這在最簡單的情況下可能是正確的,但當您需要在研發工作中做更復雜的事情時,您很快就會發現這種方法固有的局限性。即使用戶界面足夠強大,例如允許您生成圖,計算量顯示為一個函數的輸入參數,但您可能經常需要做更復雜的事情。想象一下,如果您需要進一步的數學處理計算數據——例如,在隨機噪聲的影響下存儲隨后的放大脈沖,并使用傅里葉變換和相關的東西(如應用窗口功能)來計算噪聲頻譜。即使軟件足夠好,可以將脈沖的相關參數存儲在一個文件中,將所有的數據轉移到其他軟件僅僅進行數學處理也會很不方便。如果您可以在模擬腳本中完成所有操作,那么這是最簡單的。
順便說一下,有一些軟件包有一個接口,例如MATLAB,這樣您就可以用MATLAB控制模型(例如自動改變一些參數),并在MATLAB中處理結果。這樣就增加了很大的靈活性,但這是有代價的。首先,您需要有MATLAB許可證,并對其足夠熟悉。其次,您必須查明如何確切地處理該接口。第三,與我們的RP Fiber Power軟件相比,執行速度可能會相當慢。
其他人可能會考慮在MATLAB中完成所有的工作——這是另一個使用腳本進行計算的環境。但是,這意味著巨大的工作量,因為您將不得不執行許多復雜的光學和物理計算,而不是處理您的實際問題。
由于這些原因,我們決定在我們的RP Fiber Power 軟件中使用腳本方法,它仍然可以與交互式表單結合,甚至可以與用戶定義的表單結合。這為您提供了無與倫比的靈活性,而且使用起來也很好。
-
功率放大器
+關注
關注
102文章
3518瀏覽量
131644 -
光信號
+關注
關注
0文章
432瀏覽量
27746
發布評論請先 登錄
相關推薦
評論