器件物理与设计

PCSEL 的半导体外延层与纵向光学结构

读完本章,你应能

读前准备

本章的入门阅读不要求学过电动力学。你只需会读横纵坐标、理解比例,并愿意把一条曲线看成“位置与数值的对应关系”。 三角函数、复数、导数和矩阵会在用到时解释;带有“进阶推导”的部分可在第一次阅读时跳过。 跳过推导仍可读懂输入、结果和计算流程,但不能据此认为自己已经掌握了完整的电磁理论。

阅读主线

我们围绕一个问题展开:给定一叠半导体薄层,怎样知道光主要分布在哪些层里? 先认识光波和层栈,再认识模式,随后把“求曲线”拆成能够逐步执行的计算,最后用实际算例检验理解。 第一次阅读可先读 第 17.1 节、第 17.7 节、第 17.10 节、第 17.11 节、第 17.12 节。 想知道程序里的公式从何而来,再回读 第 17.8 节、第 17.9 节。

本章一直使用的例子

后面会用一叠含三个薄发光区域的半导体层来实际计算。这三个区域叫量子阱,它们的含义、材料参数与具体位置都会逐项说明。 该例沿用本书的教学结构,不是某个实验器件的外延复原。第一次阅读不用记住全部数字,先弄清我们为什么需要这些输入。

从零开始:我们究竟要算什么

把芯片想成一叠很薄的材料

“外延”是一种在晶体表面继续生长晶体薄层的制备方式。不同薄层可以有不同的材料成分、厚度和掺杂。 把这些层按实际顺序列在一起,就得到“层栈”。它类似一叠纸,但每层的光学和电学性质不一定相同。 这个比喻只帮助理解层序;真实薄层不是彼此独立、可以随意替换的纸片。

在常见的 PCSEL(光子晶体面发射激光器)中,有些薄层负责产生和放大光,有些层帮助约束光, 还有些层主要负责导电、散热或支撑。光学计算并不只看发光的那一层。 原因是光波的分布往往跨越好几层:即使某层不发光,改变它的厚度也可能改变光与发光层相遇的程度。

所谓“纵向分布”,在本章特指沿芯片厚度方向的分布。 设芯片平躺,zz 从下向上,xx 沿芯片表面,yy 沿表面的另一个方向。 先考虑一束沿 xx 前进的导波,再问:从下往上穿过芯片时,它在不同 zz 处有多强? 这条随 zz 变化的曲线,就是我们要找的纵向模场剖面。

这与“面发射”并不矛盾。PCSEL 中的光先参与面内传播和反馈,光子晶体再把其中一部分耦合成离开表面的光。 本章先求不含孔阵散射的背景波导,暂不求向上射出的光束。 所以,沿 xx 传播、沿 zz 分布、最后可能沿 zz 出光,是三个不同的问题。

光波、电场、振幅和波长是什么意思

光是一种电磁波:电场和磁场随时间、空间共同变化。电场可以理解为某个位置对电荷施加作用的强弱与方向, 不是芯片里的一条有形轨道。我们先用一个电场分量描述光;完整电磁关系留到进阶部分。

想象在一个固定位置记录电场:它会在正、负两个方向之间周期性变化。 一次完整重复叫一个周期;每秒重复多少次叫频率 ff,单位为 Hz。 振幅是这种变化的幅度。“正电场”与“负电场”表示相反方向,不表示正功率与负功率。 相位则描述变化进行到了周期中的哪一步。两个波如果同一步达到峰值,就称为同相。

在同一时刻,沿传播方向测量相邻两个同相位置之间的距离,得到波长。 真空波长记为 λ0\lambda_0,下标 0 表示真空;本章例子取 940 nm。 换算时记住:1 nm=10−9 m1\,\mathrm{nm}=10^{-9}\,\mathrm m, 1 μm=1000 nm1\,\mathrm{\mu m}=1000\,\mathrm{nm},所以 940 nm 等于 0.940 μm。

折射率 nn 描述材料中的相位传播速度:在本章采用的透明、非磁材料近似下,n=c/vphn=c/v_{\mathrm{ph}}, 其中 cc 是真空光速,vphv_{\mathrm{ph}} 是波峰移动的速度。 同频率的光进入均匀材料后,波长变为 λ0/n\lambda_0/n。 折射率不等于发光强度;nn 较大,也不意味着那一层必然拥有最大的电场。

光为什么能留在中间,而不是散到各处

最简单的波导是一层较高折射率的芯层,夹在两侧较低折射率的包层之间。 “波导”就是能够引导波沿某个方向传播的结构,“包层”是芯层外侧帮助约束光的材料。 从光线角度看,光以合适角度从高折射率一侧到达界面,会发生全反射,从而主要留在芯层附近。

但当层厚与波长相近时,仅画一条来回反射的光线就不够了。 从两个界面反射的波会相互叠加;只有相位关系合适的分布,才能在不断向前传播时保持同一种横截面形状。 这种满足结构条件的分布叫模式(mode)。 可类比一根两端固定的弦只允许某些振动形状,但这里只借用“边界筛选形状”的想法: 波导没有固定弦端,本章还固定了光的频率,实际求的是允许的传播常数和场形状。

在理想、均匀、无损的波导中,单个模式沿 xx 前进时,纵向剖面的形状不变,随 xx 变化的是相位。 几个模式混合时,剖面可能因它们相互干涉而变化。 “一个模式”不是“只有一条光线”,也不是“只有一个光子”。

全反射也不意味着电场在芯层边界突然归零。场会伸进包层,再逐渐减小,这段叫倏逝尾。 这里的减小发生在“离芯层越来越远”的方向,并不等于光沿前进方向被材料吸收。 厚度方向的束缚、传播方向的吸收,必须分开判断。

先学会读一张模式图

可以先看 图 17.5,暂不管它是怎样算出来的。 上半图是输入:横轴是位置 zz,纵轴是折射率,台阶告诉我们材料在哪里更换。 下半图是输出:同一个位置对应的场强有多大。 粉色窄带表示量子阱所在的位置;量子阱是本例中承担增益的薄层,下一节会解释它的含义。

下半图画的是归一化后的场幅平方,而不是每个位置实际测得的瓦数。 “归一化”在这里就是把整条曲线除以一个公共数,使峰值为 1。 例如把原来峰值为 2 的场幅全部除以 2,形状完全不变。 这样便于比较形状,但峰值都是 1 的两张图,实际功率仍可能很不相同。

读图时依次问:峰值在哪里?场进入包层后是否变小?量子阱是否落在强场区? 最后一个问题不能只看峰值,还要看量子阱在横轴上占多宽。 一条很窄的阱层即使穿过峰值,覆盖的曲线面积仍可能不大。 后面要算的“约束因子”,就是把这种面积比较变成明确的数值。

外延层怎样影响光的放大与损耗

模式与发光材料的关系,可以先用“光与材料相遇多少”来理解。 量子阱在得到足够电子和空穴后,可以通过受激辐射给光补充能量。 受激辐射在这里指已有光场促使载流子释放能量,并使该光场得到放大;这种放大作用叫增益。 如果模式主要落在量子阱之外,即使阱内材料的放大能力不错,整个模式得到的放大也会打折。

相反,如果场延伸到会吸收光的掺杂层或金属附近,一部分光能会转化为热。 这属于损耗。激光开始持续振荡,需要光的放大能够补偿各种损耗。 因此,设计者既希望场与量子阱有足够重叠,又希望它少进入不必要的高损耗区域。 图 17.1 把这两种作用放在同一张图里;初读时先看“场在哪里”和“与哪一层相遇”,不必记住图上的全部缩写。 图文中出现的“冷腔模式”,指先不加入激光增益时求出的被动光学模式,并不是说把芯片实际冷却到某个温度。

外延层作为器件接口的图形化读法。平面内光子晶体给出冷腔候选模,但外延层通过纵向模场、量子阱重叠和损耗区重叠决定它能否成为真实器件模。
外延层作为器件接口的图形化读法。平面内光子晶体给出冷腔候选模,但外延层通过纵向模场、量子阱重叠和损耗区重叠决定它能否成为真实器件模。图 17.1 · 原始 LaTeX/TikZ 图源独立渲染

为什么发光层很薄,波导却要更宽

量子阱限制的是载流子,不是把光关进一个小盒子

半导体中的电子和空穴统称载流子。空穴可以先理解为价带中缺少一个电子所形成的、表现得像正电荷的可移动状态。 选择合适的材料并夹出一层很薄的区域,能够使某些电子和空穴状态主要局限在这一区域,这就是量子阱(quantum well,QW)的基本想法。 “阱”指载流子能量上的限制,不是材料里挖出的空洞,也不意味着光只能存在于阱内。 多个阱由势垒层隔开,就叫多量子阱(multiple quantum wells,MQW)。

本例每个阱只有 8 nm 厚,而光的纵向分布宽得多。 即使阱的折射率较高,仅靠这样薄的一层也通常不能把大部分光场都压进阱内。 所以,发光区域的宽度与光波导的宽度不必相同。 前者主要服务于载流子的限制和增益,后者主要服务于光的分布。

SCH:给光和载流子安排不同的限制区域

分离限制异质结构(separate confinement heterostructure,SCH)就是把这两项工作分开安排。 量子阱附近设置较宽的波导层,再在更外侧放置较低折射率的包层; 光的分布覆盖“波导层加量子阱”这片较宽区域,载流子则希望更多地留在较窄的量子阱里。 SCH 波导层的折射率可以低于阱层,但应结合外侧包层判断能否导光,不能只比较相邻两层。

可把问题想成“把窄小的发光区域放进较宽的光场中合适的位置”。 量子阱放得太偏,光与它的重叠可能减小;模式贴近高损耗表面,也可能增加吸收。 因此,SCH 的厚度和量子阱的位置需要一起选择。 真实 PCSEL 还含孔阵、接触和可能不对称的上下材料,不能把这幅简单图景直接当作最终器件解。 图 17.2把常规电注入薄膜 PCSEL 的纵向接口画成一张未按比例的层栈图:量子阱与上下 SCH 决定增益重叠,光子晶体层承担二维反馈与法向辐射,掺杂包层和接触负责注入,键合/热沉定义热边界。具体平台可能保留或移除基底,也可能加入反射层;这些都是设计选择,不应把某一种 GaAs 或 InP 层序当作所有 PCSEL 的默认结构。

常规电注入薄膜 PCSEL 的纵向层栈接口示意。
常规电注入薄膜 PCSEL 的纵向层栈接口示意。厚度为量级提示而非设计值;是否采用 DBR、基底移除或倒装键合取决于具体平台,不能作为所有 PCSEL 的默认结构。图 17.2 · 原始 LaTeX/TikZ 图源独立渲染

同一叠材料,光和电子看到的不是同一张图

两种不同半导体相接的界面称为异质结。沿厚度方向画折射率,是在描述光波的环境; 沿同一个方向画导带和价带边缘,则是在描述电子可以占据的能量范围。 这两张图的横轴都可以是 zz,但纵轴一个是无量纲的折射率,一个是能量,不能把它们当成同一种“势阱”。

导带底记为 EcE_c,价带顶记为 EvE_v,两者的能量差是带隙 EgE_g。 这里下标 c,v,gc,v,g 分别用来区分导带、价带和带隙;它们都不是前面所说的电场 EyE_y。 先读懂 图 17.3 的台阶:同一个载流子跨过材料界面,可能需要克服能量障碍。 这解释了为什么材料选择既影响光的分布,也影响电子和空穴能否留在发光区域。

进阶参考:怎样给能带台阶填数值

只运行后面的无损光学算例,不需要输入下列能带参数。 只有进一步计算载流子输运和增益时,才需要它们。

设量子阱或波导层与限制层之间的带隙差为

ΔEg=Eg,barrier−Eg,well,\Delta E_g = E_{g,\mathrm{barrier}} - E_{g,\mathrm{well}},

则工程上常把它分解为导带与价带台阶

ΔEc=QcΔEg,ΔEv=(1−Qc)ΔEg,\Delta E_c = Q_c \Delta E_g, \qquad \Delta E_v = (1-Q_c)\Delta E_g,(17.2)

其中 QcQ_c 是导带偏移系数。式 (17.2) 属于器件材料与电学-光学接口模型。它的意义在于:材料层一旦确定,不仅折射率剖面确定了,电子与空穴在纵向上看到的势垒也同时确定了。

对常见 III--V 体系,QcQ_c 必须按平台给初值,而不是跨平台共用单个“标准值”。表 17.1 给出本书采用的分平台起始区间,均应理解为建模初值:真实器件分析时仍需结合温度、应变和组分做二次标定。

表 17.1 QcQ_c 的平台化初值口径(仅作建模起点,不是跨平台通用常数;温度 T=300 KT=300\,\mathrm{K})。
材料平台QcQ_c 起始区间来源类型说明
GaAs/AlGaAs(近红外)0.600.60--0.700.70[文献值]教材与器件文献常见区间;室温附近常见初值约 0.670.67[Coldren et al., 2012] [Noda et al., 2024]
InGaAsP/InP(1.3/1.55 μm)0.350.35--0.450.45[文献值]需随组分和应变重新标定,不可直接外推到 GaAs 平台[Coldren et al., 2012] [Noda et al., 2024]
InGaN/AlGaN(蓝光/深紫外)0.600.60--0.800.80[工程经验]起点极化场与应变耦合更强,建议先取宽区间再做平台内拟合[Apaydin et al., 2025] [Noda et al., 2024]

这里应记住 QcQ_c 是材料平台相关的分配系数,无需背诵一个脱离材料体系的“标准值”。只要 QcQ_c 变化,电子与空穴各自的限制强弱、泄漏倾向以及对阻挡层的需求都会一起改变。

这对 PCSEL 的影响非常直接。若 ΔEc\Delta E_c 太小,电子在高注入或高温下容易越过量子阱区泄漏到上包层或接触层;若 ΔEv\Delta E_v 太小,则空穴更难被有效限制在有源区,因为空穴有效质量更大、迁移率更低、注入路径也常更差。于是,一个看似“光学上模重叠不错”的外延层,只要能带台阶设计不合理,到了电注入时就会表现出电子泄漏、空穴堆积或有源区载流子不足。这也是“冷腔结论不能直接变成器件结论”的第一层原因。

量子阱与限制层的导带/价带台阶示意。对 PCSEL 来说,这些台阶既决定载流子限制,也通过材料选择间接决定纵向折射率结构。
量子阱与限制层的导带/价带台阶示意。对 PCSEL 来说,这些台阶既决定载流子限制,也通过材料选择间接决定纵向折射率结构。图 17.3 · 原始 LaTeX/TikZ 图源独立渲染

对电注入 PCSEL 来说,还应把这张图读成一个位置关系示意:MQW 有源区通常埋在波导/SCH 区内,而光子晶体层多位于其上方的上波导或近表面区域。这样布置可避免直接刻蚀量子阱,同时让目标纵模的倏逝尾取样光子晶体散射,并保留对 MQW 的较高重叠与较低工艺损伤风险。

为什么电流流过芯片,不等于量子阱就能高效发光

电注入是通过电极把载流子送进芯片,但其中一部分可能没有到达需要的量子阱,或从量子阱附近泄漏出去。 电流还可能在横向上分布不均:靠近接触的区域较多,远处较少。 于是,光场所在的位置和载流子足够多的位置可能并不重合。

这说明本章的光学计算只解决了一部分问题。 它告诉我们“假如量子阱提供增益,模式能利用多少”;至于量子阱实际能提供多少增益,还需要知道载流子和温度。 第 18 章、第 19 章 分别继续讨论这两类输入。 第一次阅读只需记住:把发光层放进结构、把光限制住、把电流送到发光层,是三项不同的工作。

典型 PCSEL 外延层从下到上分别承担什么角色

现在再回到层栈本身。对于典型电注入 PCSEL,自下而上常见的层包括:衬底、下包层、下 SCH/波导层、量子阱区、上 SCH/波导层、光子晶体层、上包层、扩展/接触层与金属。不同路线还可能加入隧穿结、电流阻挡层、电子阻挡层或单独的 current spreading layer。它们的作用不能只按材料名记忆,而应按“对模式、载流子与损耗分别做了什么”来理解。

衬底与下包层主要提供机械支撑、散热通道和下方折射率边界;上下 SCH/波导层把模式缓慢引导到量子阱附近,同时给异质结台阶留出设计空间;量子阱区负责提供受激辐射增益;光子晶体层既参与平面内反馈,也会重新分配纵向模剖面;上包层、接触层与金属则在保证注入的同时引入自由载流子吸收、金属吸收和表面工艺约束。

这些层构成一个耦合系统。比如为了降低串联电阻而加厚上接触层,可能让模式尾部更靠近高损耗区;为了提高表面耦合而把光子晶体层放得更靠近量子阱,又可能让刻蚀损伤和表面复合风险上升。外延设计从一开始就是多目标平衡,而不是“先光学、后电学”。

典型 PCSEL 外延层纵向结构示意。读图重点是每一层如何共同参与光学约束、载流子限制和损耗分布。
典型 PCSEL 外延层纵向结构示意。读图重点是每一层如何共同参与光学约束、载流子限制和损耗分布。图 17.4 · 原始 LaTeX/TikZ 图源独立渲染

纵向模式的计算对象、输入与输出

先把输入整理成一张层表

可以把求模式看成一种“给材料,求光的形状”的计算。 材料名字本身不能让程序开始工作:程序需要知道每一层有多厚、在所选波长下折射率是多少,以及外面还有什么材料。 同样的芯层,上面接空气和接另一种半导体,得到的模式一般不会相同。

下面先用一维模型。这里“一维”的意思是材料性质只随 zz 改变,不是说光只会沿 zz 走。 模型把每层视为在 x,yx,y 方向无限延伸、层内折射率相同的平面。 真实孔阵显然不满足这一点,所以本章先求背景波导,不包含孔散射。

表 17.2 运行纵向光学计算前需要准备的信息。材料数值应对应同一个波长和工作条件。
信息用普通话说,它决定什么
真空波长 λ0\lambda_0这次求哪一种颜色或频率的光;不同波长的折射率可能不同。
各层厚度 djd_j光在第 jj 层内要经过多宽的厚度区间。
各层折射率 njn_j第 jj 层中波的相位变化规律;不是那一层的光强。
从下到上的层序哪些界面先后相接;相同材料和厚度,顺序不同也可能得到不同模式。
上下包层离开有限层栈后,场应当如何继续变化。
偏振 TE 或 TM选哪一类电场、磁场方向关系;下文分别解释。
量子阱范围求出场以后,在哪些位置累计增益区域的重叠。

“半无限包层”表示只在一侧有界面,另一侧一直延伸。 在实际计算中,这是把足够远、对目标束缚模影响可以忽略的外边界移到无穷远的近似, 不是说真实晶圆无限厚。有强反射的背面、附近金属或很长的场尾时,需要重新检查这个近似。

模式的两个主要答案:一条曲线和一个数

曲线记为 ψ(z)\psi(z),读作“位置 zz 处的场幅”。 例如 ψ(z)\psi(z) 在中间大、外侧小,就表示这个模式的电场主要集中在中间。 另一个答案是有效折射率 neffn_{\mathrm{eff}}:它描述整个模式沿 xx 前进时,相位累积有多快。 这两个答案要一起求,因为不同的相位累积速度,通常对应不同的纵向形状。

对无损模式,可以用一个不含复数的式子把两者放在一起:

Ey(x,z,t)=ψ(z)cos⁡(βslabx−ωt).E_y(x,z,t)=\psi(z)\cos(\betaslab x-\omega t).

左边表示位置 (x,z)(x,z)、时刻 tt 的电场 yy 分量。 右边的 ψ(z)\psi(z) 控制“在这个高度最多能振到多大”,余弦控制周期性变化。 ω=2πf\omega=2\pi f 叫角频率;βslab\betaslab 叫传播常数,它把距离 xx 换算为相位变化。 公式里的减号表示波沿正 xx 方向前进。这里选择了实振幅和零初相位,只是为了便于读图。

真空中相位每前进一个波长就增加 2π2\pi,所以定义 k0=2π/λ0k_0=2\pi/\lambda_0。 模式中相应有 βslab=k0neff\betaslab=k_0n_{\mathrm{eff}}。 因此,λ∥=λ0/neff\lambda_\parallel=\lambda_0/n_{\mathrm{eff}} 是沿 xx 的相位重复距离。 用本章实际结果 neff≈3.36093520n_{\mathrm{eff}}\approx3.36093520 换算, λ∥≈279.68 nm\lambda_\parallel\approx\SI{279.68}{nm}。 它不是芯层厚度,也不是光源的真空波长发生了改变。

表 17.3 本章公式中反复出现的符号。先区分“输入的材料量”和“求出的模式量”。
符号单位含义
z,djz,d_jnm 或 μ\mum高度坐标、第 jj 层厚度;程序内部统一用 μ\mum。
njn_j无量纲输入的材料折射率。
neffn_{\mathrm{eff}}无量纲求出的某一模式的有效折射率。
k0,βslabk_0,\betaslab长度的倒数真空波数、模式沿层面的传播常数。
ψ(z)\psi(z)场幅单位TE 电场分布;归一化后纵轴通常只写相对值。
ψ′(z)\psi'(z)场幅/长度曲线的斜率;撇号表示对 zz 求导。
κ\kappa长度的倒数尾部随距离减小的快慢,1/κ1/\kappa 是振幅尾长。
Γ\Gamma无量纲重叠或增益权重的记号,必须连同定义一起读。

把假设和结果对应起来

本节采用线性、各向同性、非磁、无吸收的材料。换成直接的说法:折射率不随这次计算的光强而变, 同一材料不因电场方向不同而使用不同的折射率,磁响应按通常的非磁介质处理,而且暂时不让材料吸收光。 这些是假设,不是所有半导体器件都具备的性质。

如果材料有明显吸收,就需要引入描述吸收的额外参数;如果上下边界离得很近,就不能直接沿用半无限包层。 本章的结果应当连同这组假设一起保存。只有层表而没有边界和偏振说明,下一位读者仍无法重做同一项计算。

模式方程:先读含义,再看推导

不做电动力学推导,也能先理解方程在要求什么

模式方程的作用,是规定曲线在每一层怎样弯曲,以及到了界面怎样接起来。 如果把 ψ\psi 看成曲线高度,ψ′\psi' 是斜率,ψ′′\psi'' 是斜率变化的快慢。 对于 TE 模,稍后得到的方程可以读成

ψ′′=−k02(n2−neff2)ψ.\psi''=-k_0^2\bigl(n^2-n_{\mathrm{eff}}^2\bigr)\psi.

它并不是让你事先猜出整条曲线。给定一个候选 neffn_{\mathrm{eff}} 和起点的高度、斜率, 这条规则就决定曲线怎样继续延伸。

在 n>neffn>n_{\mathrm{eff}} 的层里,正的曲线高度对应向下的弯曲趋势,解可以呈正弦、余弦形状; 在 n<neffn<n_{\mathrm{eff}} 的层里,解可以按指数增大或减小。 因此,同一个模式可以在芯层附近变化较缓,在外侧接上衰减尾。 这不是两张互不相关的曲线,而是一套规则在不同材料中的解。

界面还要求曲线接得合适。对本章的 TE 模,场幅不能突然断开,斜率也要相接。 只接上高度、不接上斜率,通常仍然不是正确模式。 最外侧还要求场远离芯层时衰减。满足所有这些条件的 neffn_{\mathrm{eff}} 才被保留下来。 这就是“本征值”的含义:它不是额外查表得到的材料参数,而是被结构和边界筛选出来的答案。

TE 和 TM:先分清是哪种场在振动

偏振描述电场怎样定向。对于这里沿 xx 传播、材料只随 zz 变化的平面波导, TE 模的电场沿 yy,也就是平行于各层;TM 模的磁场沿 yy,电场则有 x,zx,z 分量。 两者遇到界面时遵循的连续条件不同,所以即使层栈相同,求出的有效折射率也不完全一样。 第一次运行算例先看 TE 曲线即可;不要把 TM 的磁场曲线当作 TE 的电场曲线来算重叠。

进阶推导:用 Maxwell 方程得到 TE/TM 方程

这一小节说明方程的来源,初读可跳到“为什么只有离散的束缚模”。 Maxwell 方程是描述电场 E\mathbf E 与磁场 H\mathbf H 如何相互联系的基本方程。 粗体表示有方向的量,EyE_y 则只是其中沿 yy 的分量。 μ0\mu_0、ε0\varepsilon_0 分别是真空磁导率与真空介电常数;在本节材料近似下,相对介电常数是 n2n^2。 ∇×\nabla\times 称为旋度,是把场在不同空间方向上的变化组合起来的运算。 没有学过它不影响前面的读图和后面的运行;自行检验本小节推导时,则需补学这一运算。

复数记号只是压缩正弦振动的工具。数学中的 i\ii 满足 i2=−1\ii^2=-1, 指数 eiθ=cos⁡θ+isin⁡θ\ee^{\ii\theta}=\cos\theta+\ii\sin\theta 同时记录两个相差四分之一周期的振动。 实际电场取复数表达式的实部;复数场不代表存在“虚假的电场”。 把共同的时间振动因子拿出来后,剩下记录幅度和相位的量称为相量。 沿用 e−iωt\ee^{-\ii\omega t} 时间约定,令所有相量具有面内因子 eiβslabx\ee^{\ii\betaslab x},并且 ∂y=0\partial_y=0。 无源 Maxwell 方程为

∇×E=iωμ0H,∇×H=−iωε0n2(z)E.\nabla\times\mathbf E=\ii\omega\mu_0\mathbf H,\qquad \nabla\times\mathbf H=-\ii\omega\varepsilon_0 n^2(z)\mathbf E.

TE 模的电场沿 yy,记 Ey=ψ(z)eiβslabxE_y=\psi(z)\ee^{\ii\betaslab x}。 代入第一式得到

Hx=iψ′ωμ0,Hz=βslabψωμ0.H_x=\frac{\ii\psi'}{\omega\mu_0},\qquad H_z=\frac{\betaslab\psi}{\omega\mu_0}.

再代入第二式的 yy 分量,得到

ψ′′+[k02n2(z)−βslab2]ψ=0.\psi''+\left[k_0^2n^2(z)-\betaslab^2\right]\psi=0.(17.3)

这里省略了各分量共有的 eiβslabx\ee^{\ii\betaslab x}。 对于上述平面分层、各向同性假设,TE 标量方程是 Maxwell 方程的严格解耦形式; 用它表示带孔 PCSEL 的三维模场,才引入了背景波导近似。

界面上没有表面电流时,切向 EyE_y 和 HxH_x 连续,因此 TE 模要求 ψ\psi 与 ψ′\psi' 连续。折射率跳变会使二阶导数跳变,但不应使电场本身断裂。 这两条条件不能只用“场连续”四个字替代,因为第二条正是选出本征值所需的信息。

对于 TM 模,以 Hy=h(z)eiβslabxH_y=h(z)\ee^{\ii\betaslab x} 为未知量,可得

Ex=−ih′ωε0n2,Ez=−βslabhωε0n2.E_x=-\frac{\ii h'}{\omega\varepsilon_0n^2},\qquad E_z=-\frac{\betaslab h}{\omega\varepsilon_0n^2}.

代回 Maxwell 方程,有

ddz(1n2dhdz)+(k02−βslab2n2)h=0.\frac{\dd}{\dd z}\left(\frac{1}{n^2}\frac{\dd h}{\dd z}\right) +\left(k_0^2-\frac{\betaslab^2}{n^2}\right)h=0.(17.4)

TM 界面条件是 hh 与 h′/n2h'/n^2 连续。 因此不能直接把 TE 程序中的场名改成 HyH_y 就当作 TM 求解器。 TM 的法向电场 EzE_z 可以跳变,连续的是法向位移场 DzD_z; 画图时看见这种跳变并不意味着数值解出错。

为什么只有离散的束缚模

“束缚”是说场在厚度方向局限于芯层附近,“离散”是说允许的解不是任意连续取值。 只知道某个候选值落在允许区间内,还不代表它满足全部界面条件。 计算时要先得到可能的范围,再逐一检验其中哪些值真的可以把上下两侧的曲线接好。 在第 jj 层定义 qj2=k02nj2−βslab2q_j^2=k_0^2n_j^2-\betaslab^2。 qj2>0q_j^2>0 时层内解为正弦、余弦组合;qj2<0q_j^2<0 时为指数函数。 设有限层栈占据 0≤z≤D0\le z\le D,外侧折射率为 n−n_-、n+n_+。 上下无穷远都衰减要求

max⁡(n−,n+)<neff<max⁡jnj.\max(n_-,n_+)<n_{\mathrm{eff}}<\max_j n_j.(17.5)

在这个区间中,外侧场只能取

ψ(z)=A−eκ−z(z<0),ψ(z)=A+e−κ+(z−D)(z>D),κ±=k0neff2−n±2.\psi(z)=A_-\ee^{\kappa_-z}\quad(z<0),\qquad \psi(z)=A_+\ee^{-\kappa_+(z-D)}\quad(z>D), \qquad \kappa_\pm=k_0\sqrt{n_{\mathrm{eff}}^2-n_\pm^2}.

任意猜测的 neffn_{\mathrm{eff}} 通常无法同时满足上下衰减和全部界面条件。 只有少数离散值能做到,它们就是导模本征值。 1/κ±1/\kappa_\pm 是振幅衰减长度,场强的衰减长度则为 1/(2κ±)1/(2\kappa_\pm)。 靠近包层光线时,尾部变长,有限计算窗口需要相应扩大。

用对称三层波导检查直觉

这里是一个可选的解析检查。把复杂的多层结构暂时换成“包层—单一芯层—包层”, 上下包层相同,就容易利用对称性:基模在中心达到极值,左右形状互为镜像。 “偶模”表示左右同号,“奇模”表示左右反号,后者在中心有一个零点。 零点叫节点;负的场幅仍然不是负的光功率,因为读场强时要取模平方。 对厚度 dd、折射率 ncn_c 的芯层和折射率 ns<ncn_s<n_c 的对称包层, 把原点放在芯层中心。偶对称 TE 模在芯层中为 Acos⁡(qz)A\cos(qz), 外侧为衰减指数。由两个界面条件相除消去幅度,得到

qtan⁡(qd/2)=κ,q2=k02nc2−βslab2,κ2=βslab2−k02ns2.q\tan(qd/2)=\kappa,\qquad q^2=k_0^2n_c^2-\betaslab^2,\quad \kappa^2=\betaslab^2-k_0^2n_s^2.(17.6)

奇对称 TE 模则满足 −qcot⁡(qd/2)=κ-q\cot(qd/2)=\kappa。 引入 u=qd/2u=qd/2、w=κd/2w=\kappa d/2, 有 u2+w2=V2u^2+w^2=V^2,其中 V=(k0d/2)nc2−ns2V=(k_0d/2)\sqrt{n_c^2-n_s^2}。 本书的 VV 使用半芯层厚度;引用使用全厚度的文献时要先换算。 基模 TE0_0 没有内部节点,在对称模型中是偶模且无有限厚度截止; 第一个高阶 TE 模在 V=π/2V=\pi/2 开始出现。 这些结论可用于独立检查程序,而不能不加修改地用于非对称或有损层栈。

多层传输矩阵:把边界条件变成一个求根问题

不用先懂矩阵,也能理解计算流程

假设已经选了一个候选有效折射率。先从最下侧界面出发,给出场幅和斜率, 按照这一层的规则推到下一界面,再继续穿过下一层,直至到达最上面。 这种逐层递推,就是传输矩阵法(transfer-matrix method,TMM)的基本做法。 这里“传输”指把解从一个高度推到另一个高度,不是说已经算出了器件的出光效率。

一个起点为什么需要两个数?只给曲线经过的高度,还不知道它正在向上还是向下倾斜; 高度和斜率一起给出,才足以用本章的二阶方程延伸曲线。 一层的传输矩阵只是保存四个系数的小表,规定下一界面的两个数怎样由当前的两个数算出。 它不是一张需要靠直觉猜出来的光场图。

把当前两数叫作 aa(场幅)、bb(斜率),矩阵四格叫作 m11,m12,m21,m22m_{11},m_{12},m_{21},m_{22}, 一次矩阵乘法只做两行加权相加:

下一界面的场幅=m11a+m12b,下一界面的斜率=m21a+m22b.\begin{aligned} \text{下一界面的场幅}&=m_{11}a+m_{12}b,\\ \text{下一界面的斜率}&=m_{21}a+m_{22}b. \end{aligned}

Python 中的符号 @ 执行的就是这种矩阵乘法;它不同于数组逐项相乘的 *。

到了最上面,还要问:刚算出的高度与斜率,能否接上一条向外衰减的尾巴? 通常不能,这时把不匹配程度记为残差 FF。改变候选有效折射率,再从头递推一次。 当残差等于零,或小到符合数值精度要求时,就找到了一支模式。 这里“求根”就是求 F=0F=0,与求一个普通代数方程的解是同一类目标。

进阶推导:每一层的四个系数从哪里来

TE 模以 s=(ψ,ψ′)T\mathbf s=(\psi,\psi')^{\mathsf T} 为状态。 上标 T\mathsf T 表示把横写的两个数排成一列;s1s_1、s2s_2 分别指这一列的第一项、第二项。 均匀层内的解析解给出

s(z+dj)=Mjs(z),Mj=(cos⁡(qjdj)sin⁡(qjdj)/qj−qjsin⁡(qjdj)cos⁡(qjdj)).\mathbf s(z+d_j)=M_j\mathbf s(z),\qquad M_j= \begin{pmatrix} \cos(q_jd_j)&\sin(q_jd_j)/q_j\\ -q_j\sin(q_jd_j)&\cos(q_jd_j) \end{pmatrix}.(17.7)

qj→0q_j\to0 时,上右元取极限 djd_j,下左元取零。 程序用 sin⁡(qd)/q=d sinc⁡(qd/π)\sin(qd)/q=d\,\operatorname{sinc}(qd/\pi) 避免除零。 虚数 qjq_j 自动给出双曲函数;不能删除这些倏逝层。

令下边界 ψ(0)=1\psi(0)=1,这只是选择幅度单位。 下侧衰减条件给出 s(0)=(1,κ−)T\mathbf s(0)=(1,\kappa_-)^{\mathsf T}。 按物理层序传播,

s(D)=MNMN−1⋯M1s(0).\mathbf s(D)=M_N M_{N-1}\cdots M_1\mathbf s(0).

上侧衰减要求 ψ′(D)=−κ+ψ(D)\psi'(D)=-\kappa_+\psi(D),于是求根函数为

F(neff)=s2(D)+κ+s1(D)=0.F(n_{\mathrm{eff}})=s_2(D)+\kappa_+s_1(D)=0.(17.8)

顺序颠倒会改变非对称层栈的结果。 计算时先在束缚区间采样,找到符号改变的区间,再用括区间求根算法精化。 采样加密后应检查根的数量和位置是否稳定;较厚的多模波导不能沿用很稀的扫描。

TM 模使用 s=(h,h′/n2)T\mathbf s=(h,h'/n^2)^{\mathsf T}。 令 aj=1/nj2a_j=1/n_j^2,传输矩阵上右元改成 sin⁡(qjdj)/(ajqj)\sin(q_jd_j)/(a_jq_j), 下左元改成 −ajqjsin⁡(qjdj)-a_jq_j\sin(q_jd_j)。 下边界为 (1,κ−/n−2)T(1,\kappa_-/n_-^2)^{\mathsf T},上边界残差为 s2(D)+(κ+/n+2)s1(D)s_2(D)+(\kappa_+/n_+^2)s_1(D)。 这样传播的是界面连续的状态,层与层之间无需再加一个经验修正因子。

直接矩阵相乘适合本章这种薄而少层的教学波导。 厚势垒、很长的倏逝区或多层反射镜会产生同时极大和极小的指数, 即使真实场有限,中间矩阵也可能病态。此时应换用散射矩阵、对数导数匹配、 稳定打靶或有限元本征方法;把扫描点增多不能修复矩阵条件数问题。

把求根过程落到一组实际数字

以本章七层教学结构为例,先把下侧界面的场幅取为 1。 试填 neff=3.35n_{\mathrm{eff}}=3.35、3.363.36、3.373.37, 程序实际算出的未缩放残差分别约为 −2.22162-2.22162、−0.20660-0.20660、2.166092.16609。 这里残差用场幅单位每微米表示;它的绝对数值依赖刚才选的幅度尺度,不是器件损耗。 重要的是它在 3.363.36 与 3.373.37 之间变了符号。 对这段连续的残差函数,这意味着区间里至少有一个零点。

接着缩小区间,最终找到 neff≈3.36093520n_{\mathrm{eff}}\approx3.36093520。 这一步的实质是“调一个数,让最后一个界面也接得上”。 完整求解器会为数值稳定性缩放残差,因此其 JSON 残差与这里的未缩放数字不同,但零点一致。 另外,找到一个零点并不证明没有别的模式;要扫描整个允许区间,并检查加密扫描后模式数是否改变。

怎样读懂有效折射率和纵向场分布

有效折射率不是什么

neffn_{\mathrm{eff}} 是该模式的相位传播常数与真空波数之比, 不是层材料折射率的算术平均,也不是某一个量子阱的折射率。 给定层栈可能有多支 TE/TM 模,每支各有自己的 neffn_{\mathrm{eff}}。 对于本节的无损一维问题,按有效折射率从大到小排序可识别基模和高阶模, 还应核对内部节点数及场分布。层厚扫描时只按求解器返回序号连线, 可能把不同模式拼接在一起。

曲线的高低、正负与尾部

模式方程只决定形状,不决定实际激光器输出几瓦。 同一个解整体乘以 2,仍然满足这个无损线性问题,只是场幅变了。 用数学语言说,场的整体幅度和复相位不由线性齐次本征问题确定。 作图常令 max⁡∣ψ∣=1\max|\psi|=1;计算重叠也可令 ∫∣ψ∣2dz=1\int|\psi|^2\dd z=1。 归一化后的峰值高低不代表实际输出功率。 应读出主峰位置、节点、上下尾长,以及场在量子阱、光子晶体和接触层所在区间的积分。 一个很薄的量子阱即使位于峰值处,也只占总场积分的一小部分。

幅度平方 ∣ψ∣2|\psi|^2 总是非负;对实数就是先平方,对复数则用它与复共轭的乘积。 因此,两段一正一负的场幅可能具有相同的场强,却具有不同相位。 求增益重叠时累计模平方;讨论波的干涉时,还必须保留相位,不能只看模平方图。

尾部的“衰减长度”也有明确读法:沿包层向外移动一个振幅尾长,场幅变为原来的 1/e1/\mathrm e,约为 0.3680.368, 场幅平方则变为约 0.1350.135。本例上下振幅尾长约为 0.235 μm。 这并不表示在这个距离以外场突然消失,而是它继续逐渐变小。

进阶连接:怎样把一维结果交给平面内模型

把三维场近似写为

E(ρ,z)≈u(ρ)e0(z),βslab2=neff2k02,\mathbf E(\rho,z)\approx u(\rho)\mathbf e_0(z),\qquad \betaslab^2=n_{\mathrm{eff}}^2k_0^2,(17.9)
neff=βslab/k0.n_{\mathrm{eff}}=\betaslab/k_0.(17.10)

就得到了有效折射率近似的出发点。 它适于提供背景相位和初步层栈筛选;孔阵强烈改变纵向场、TE/TM 混合、 多个纵向模参与、金属吸收显著或需要上下辐射功率时,应求完整的开放矢量问题。 在一维束缚导模模型中,向 zz 无穷远的平均净能流为零, 因此不能用上下尾部面积之比代替 PCSEL 的上下出光比。

三种光学约束因子及其物理含义

先不看积分号:比较两块曲线面积

量子阱只有很窄的一段厚度,而模式分布在许多层里。 要衡量它们相遇多少,最简单的办法是画出 ∣ψ(z)∣2|\psi(z)|^2, 累计所有量子阱对应区间的曲线面积,再除以整条曲线的面积。 这个比值叫场强重叠;这里“面积”是数学曲线下的面积,不是芯片顶面的几何面积。

如果没有学过积分,可以先把曲线切成很多窄矩形: 每块矩形的高度是该处的 ∣ψ∣2|\psi|^2,宽度是一个很小的位置间隔 Δz\Delta z。 把“高度乘宽度”加起来,就近似得到面积;把矩形继续切细,就是积分的想法。 只数有多少个采样点不够,因为采样点可能疏密不一,计算必须考虑每段宽度。

符号 ∫R\int_R 表示只在选定区域 RR 累加; ∫R\int_{\mathbb R} 的黑板体 R\mathbb R 表示全部实数位置,即包括上下包层的整个 zz 轴。 这两个 RR 的字体不同,含义也不同。 dz\dd z 提醒我们正在对厚度方向的位置求面积。 程序对半无限包层用衰减函数的解析面积,不需要真的画出无穷长的坐标轴。

为什么还要区分场强重叠和电能重叠

在不同材料里,即使电场幅度一样,对应的电场储能密度也可能不一样。 对本章的无损、非色散材料,电场储能密度与 n2∣ψ∣2n^2|\psi|^2 成正比。 如果问题是“电场能量的多少比例位于量子阱里”,就先用 n2n^2 给曲线加权,再比较面积。 共同的比例常数在分子、分母中约去。 因此,两种重叠都可以计算,但它们回答的不是完全相同的问题。

“限制因子”和“约束因子”在这里对应 confinement factor; 真正需要统一的是积分权重和分母区域。 设 RR 是选定层区,先定义两种介于零和一之间的几何重叠:

ΓR(E)=∫R∣ψ∣2dz∫R∣ψ∣2dz,ΓR(ε)=∫Rn2∣ψ∣2dz∫Rn2∣ψ∣2dz.\Gamma_R^{(E)}=\frac{\int_R|\psi|^2\dd z}{\int_{\mathbb R}|\psi|^2\dd z}, \qquad \Gamma_R^{(\varepsilon)} =\frac{\int_R n^2|\psi|^2\dd z}{\int_{\mathbb R}n^2|\psi|^2\dd z}.(17.11)

第一种统计场强积分;第二种统计无损、非色散介质中的电场储能占比。 第二种的分子没有磁场储能,所以不能一概称为局域总电磁能量占比。 在此口径下,本章保留全书常见符号

Γopt=ΓQW(ε).\Gamma_{\mathrm{opt}}=\Gamma_{\mathrm{QW}}^{(\varepsilon)}.(17.12)

损耗区的电能重叠相应写为

Γloss=ΓVloss(ε).\Gamma_{\mathrm{loss}}=\Gamma_{V_{\mathrm{loss}}}^{(\varepsilon)}.(17.13)

求多量子阱总重叠时,只累加实际阱层,不把中间势垒也算作增益材料。 对光子晶体层也要说明积分区域是整个图案层,还是仅半导体部分。

以本章结果为例,三个量子阱的场强重叠约为 6.22%6.22\%,电能重叠约为 6.82%6.82\%。 这可以理解为:把全空间电场能量记成 100 份,其中约 6.82 份位于三个阱层内。 它不表示量子阱发光效率为 6.82%6.82\%,也不表示输出光束里有这个比例来自某一层。

还可以做一个不需要程序的检查:阱层总厚度为 24 nm,有限芯层总厚度为 320 nm, 厚度之比是 24/320=7.5%24/320=7.5\%,并不等于上述两个重叠。 原因有两个:场强并非沿厚度均匀分布,而且分母还包含芯层外的包层尾部。 所以,不能只用阱厚除以芯层厚来代替模式积分。

材料增益到模增益:为什么需要第三种权重

先区分“材料本身能放大多少”和“整个模式实际得到多少放大”。 前者叫材料增益,后者叫模增益。只有一部分模式与有增益的阱层重叠, 因此不能把材料增益原样填成整个模式的增益。

本章的增益按功率定义:若沿 xx 传播一小段距离, 功率遵循 P(x)=P(0)egmodxP(x)=P(0)\ee^{g_{\mathrm{mod}}x},则 gmodg_{\mathrm{mod}} 的单位是长度的倒数。 它不是“每厘米固定增加多少瓦”,而是随已有功率按比例放大的系数。 幅度增益与功率增益相差因子 2,本章一直使用后者。

把材料增益换成模增益时,需要的权重记为 Γ(g)\Gamma^{(g)}。 第一次阅读可以先看本小节最后的数值换算,再按需要读下面的小扰动推导。 “小扰动”指先求无增益、无吸收的模式,再假设很弱的增益不会明显改变该模式的形状。 材料功率增益 gmatg_{\mathrm{mat}} 的单位是逆长度。 取折射率 n+in′′n+\ii n'' 和 eiβx−iωt\ee^{\ii\beta x-\ii\omega t}, 均匀材料中的功率增益为 gmat=−2k0n′′g_{\mathrm{mat}}=-2k_0n''。 把小虚部看作 TE 本征问题的一阶微扰,

δ(βslab2)=k02∫δεr∣ψ∣2dz∫∣ψ∣2dz,Im⁡δεr≃2nn′′.\delta(\betaslab^2)= k_0^2\frac{\int\delta\varepsilon_r|\psi|^2\dd z}{\int|\psi|^2\dd z}, \qquad \operatorname{Im}\delta\varepsilon_r\simeq2nn''.

于是沿 xx 的模功率增益为

gmod=−2Im⁡δβslab=∫n(z)gmat(z)∣ψ∣2dzneff∫∣ψ∣2dz.g_{\mathrm{mod}}=-2\operatorname{Im}\delta\betaslab =\frac{\int n(z)g_{\mathrm{mat}}(z)|\psi|^2\dd z} {n_{\mathrm{eff}}\int|\psi|^2\dd z}.(17.14)

若所有阱有相同折射率 nQWn_{\mathrm{QW}}、相同小信号材料增益, 定义

ΓQW(g)=nQWneffΓQW(E),gmod=ΓQW(g)gmat.\Gamma_{\mathrm{QW}}^{(g)} =\frac{n_{\mathrm{QW}}}{n_{\mathrm{eff}}}\Gamma_{\mathrm{QW}}^{(E)}, \qquad g_{\mathrm{mod}}=\Gamma_{\mathrm{QW}}^{(g)}g_{\mathrm{mat}}.(17.15)

因此能量重叠 Γopt\Gamma_{\mathrm{opt}} 与增益权重 Γ(g)\Gamma^{(g)} 一般不完全相同。 把全书简写 gmod≈Γoptgmatg_{\mathrm{mod}}\approx\Gamma_{\mathrm{opt}}g_{\mathrm{mat}} 用于数值估算时,需要接受这一近似误差;若输入已是模增益,则不再乘一次重叠。

在材料无色散的本节模型中,对本征方程求波数导数可得

ng=∫n2∣ψ∣2dzneff∫∣ψ∣2dz,ΓQW(g)=ngnQWΓQW(ε).n_g=\frac{\int n^2|\psi|^2\dd z}{n_{\mathrm{eff}}\int|\psi|^2\dd z}, \qquad \Gamma_{\mathrm{QW}}^{(g)} =\frac{n_g}{n_{\mathrm{QW}}}\Gamma_{\mathrm{QW}}^{(\varepsilon)}.

ngn_g 还包含波导色散,不能直接用某层材料的群折射率替代。 这里的群折射率 ngn_g 描述窄带波包包络的传播,和描述单频相位的 neffn_{\mathrm{eff}} 不是同一个量。 “波导色散”表示即使把各层材料折射率当成常数,模式的有效折射率仍会随波长改变。 对不同阱增益不相同的器件,模增益为各阱加权贡献之和。

本例的增益权重约为 0.065720.06572。 仅为演示换算,设每个阱的材料功率增益都取 1000 /cm。 模增益就是约 65.72 /cm,即用 0.065720.06572 乘以 10001000。 这与直接乘电能重叠得到的结果不同。Γ(g)\Gamma^{(g)} 是增益换算权重, 不要把它不加区分地叫作能量占比或概率;其他波导中的数值也不必总小于 1。

进阶补充:损耗、TM 模和三维结构的边界

对于小吸收 αmat>0\alpha_{\mathrm{mat}}>0,同样的 TE 微扰给出 αmod=∫nαmat∣ψ∣2dz/(neff∫∣ψ∣2dz)\alpha_{\mathrm{mod}}=\int n\alpha_{\mathrm{mat}}|\psi|^2\dd z/ (n_{\mathrm{eff}}\int|\psi|^2\dd z)。 增加阱重叠可能同时增加接触吸收,所以阈值需比较总模损耗与模增益。 金属或强吸收改变场型时,使用无损场的一阶微扰可能失效。

对 TM 模,不能把 ∣Hy∣2|H_y|^2 代入 TE 电场重叠公式。 需要重建 Ex,EzE_x,E_z,再采用与所需物理量一致的积分。 更一般的功率吸收式为

αmod=(ωε0/2)∫εr′′∣E∣2dzPx,Px=12Re⁡∫(E×H∗)xdz.\alpha_{\mathrm{mod}}= \frac{(\omega\varepsilon_0/2)\int\varepsilon_r''|\mathbf E|^2\dd z} {P_x},\qquad P_x=\frac12\operatorname{Re}\int(\mathbf E\times\mathbf H^*)_x\dd z.

这里 PxP_x 是每单位 yy 宽度的导波功率。 对于有材料色散的储能,还要使用 ∂(ωε′)/∂ω\partial(\omega\varepsilon')/\partial\omega 权重; 对开放准正规模则另需一致的归一化方法。

真实三维孔阵的纵向分布应由每个水平晶胞截面的积分给出: JE(z)=∬cell∣E∣2dxdyJ_E(z)=\iint_{\mathrm{cell}}|\mathbf E|^2\dd x\dd y, Jε(z)=∬cellRe⁡εr∣E∣2dxdyJ_\varepsilon(z)=\iint_{\mathrm{cell}}\operatorname{Re}\varepsilon_r |\mathbf E|^2\dd x\dd y。 一根穿过孔或半导体的线切不能代表整个晶胞的重叠。 最终阱层、PC 层和分母应在同一物理域上积分并排除 PML, 且声明这是有限物理窗口的重叠,而非开放模的普适归一化。

Python 实例:三量子阱波导的纵向模式

下面采用本书已有的 940 nm 教学层栈,固定实折射率, 不把它当作某一生长晶圆的材料数据库。上下半无限包层均为 n=3.30n=3.30; 有限层从下到上依次是:

128⏟SCH,8⏟QW1,20⏟barrier,8⏟QW2,20⏟barrier,8⏟QW3,128⏟SCHnm.\underbrace{128}_{\mathrm{SCH}}, \underbrace{8}_{\mathrm{QW1}}, \underbrace{20}_{\mathrm{barrier}}, \underbrace{8}_{\mathrm{QW2}}, \underbrace{20}_{\mathrm{barrier}}, \underbrace{8}_{\mathrm{QW3}}, \underbrace{128}_{\mathrm{SCH}}\quad\mathrm{nm}.

总厚度为 320 nm,阱层总厚度为 24 nm。 SCH 和势垒取 n=3.42n=3.42,阱层取 n=3.55n=3.55。 本例不含实际孔阵或有损接触;计算 PC 层重叠时必须先在输入中定义那一层, 不能从这些数据虚构 ΓPC\Gamma_{\mathrm{PC}}。

表 17.4 把教学层栈展开成程序能使用的位置区间。z=0z=0 是下 SCH 与下包层的界面。
层名zz 范围(nm)折射率是否计入阱层重叠
下包层z<0z<03.303.30否
下 SCH00--1281283.423.42否
量子阱 1128128--1361363.553.55是
势垒 1136136--1561563.423.42否
量子阱 2156156--1641643.553.55是
势垒 2164164--1841843.423.42否
量子阱 3184184--1921923.553.55是
上 SCH192192--3203203.423.42否
上包层z>320z>3203.303.30否

表中相邻两行的端点接在一起,没有空隙。 例如第二个量子阱的中心是 (156+164)/2=160 nm(156+164)/2=\SI{160}{nm},正好也是整个对称芯层的中心。 边界点本身的归属不改变连续积分面积,但程序划分采样区间时应避免重复或漏掉一小段厚度。

第一次使用 Python:先分清文件和命令

Python 是执行计算的语言。NumPy 提供数组和矩阵,SciPy 提供求根算法,Matplotlib 负责画图。 不必先学会这些库的全部功能,先让下面的小程序跑通即可。 以下步骤中的“终端”指 PowerShell、命令提示符或 Anaconda Prompt;不要把终端命令写进 Python 的 >>> 提示符里。

  1. 在已安装 Python 的环境中打开终端,运行 python --version,确认它能报告版本。 使用本项目所在电脑的 Anaconda 时,先在 Anaconda Prompt 中运行 conda activate AI_group。 其他电脑使用自己的 Python 环境,不要求建立同名环境。

  2. 若缺少依赖,在该环境的终端运行下面的安装命令。已经安装则可跳过。

  3. 新建普通文本文件 vertical_demo.py,把下一小节的 Python 代码原样保存进去。 文件后缀是 .py,不是 .py.txt;保留缩进,不要复制网页外面的标题。

  4. 在文件所在文件夹打开终端,运行下面的执行命令。

python -m pip install numpy scipy matplotlib
python vertical_demo.py

成功后应看到一行以 TE effective indices: 开头的输出,列表中的数约为 3.3609351974。 这段最小程序只求有效折射率,不生成图片;下一步运行完整程序才会得到场分布和重叠。 如果提示找不到模块,检查安装和运行时是否使用同一个 Python 环境; 如果提示缩进错误,先检查 def、for、if 后面的缩进有没有在复制时丢失。

最小可运行代码

安装 NumPy 和 SciPy 后,下面这段代码即可求 TE 基模。 长度统一使用微米,状态第二分量是对微米求导。

import numpy as np
from scipy.optimize import brentq

k0 = 2*np.pi/0.940
n_clad = 3.30
n = [3.42,3.55,3.42,3.55,3.42,3.55,3.42]
d = np.array([128,8,20,8,20,8,128])*1e-3

def residual(neff):
    kap = k0*np.sqrt(neff**2-n_clad**2)
    state = np.array([1.,kap], dtype=complex)
    for nj,dj in zip(n,d):
        q = k0*np.sqrt(nj**2-neff**2+0j)
        cos_qd = np.cos(q*dj)
        sin_over_q = dj*np.sinc(q*dj/np.pi)
        matrix = np.array([[cos_qd,sin_over_q],
                           [-q*q*sin_over_q,cos_qd]])
        state = matrix @ state
    return (state[1]+kap*state[0]).real

grid = np.linspace(n_clad+1e-9,max(n)-1e-9,6000)
roots = []
for a,b in zip(grid[:-1],grid[1:]):
    if residual(a)*residual(b) < 0:
        roots.append(brentq(residual,a,b,xtol=1e-13))
print("TE effective indices:", sorted(roots,reverse=True))

逐段看懂代码在做什么

第一段准备输入。 k0 是 2π/λ02\pi/\lambda_0;这里波长用了 0.940,因为内部长度单位是微米。 n_clad 是上下包层折射率,不是芯层折射率。 列表 n 与 d 按同一层序对应:第一个折射率配第一个厚度,第二个配第二个。 厚度乘 1e-3 是把 nm 转为 μ\mum,不是缩小了真实器件。

第二段计算一次残差。 函数 residual(neff) 接收一个猜测值。 kap 决定包层尾部的快慢;state 中的两个数是界面处的场幅和斜率。 Python 从 0 开始编号,所以 state[0] 对应公式中的 s1s_1,state[1] 对应 s2s_2。 zip(n,d) 让程序逐层取出配对的折射率和厚度。

每次循环算出该层的矩阵,再用 @ 把状态推到该层的上侧界面。 +0j 允许平方根产生复数,这样当 nj<neffn_j<n_{\mathrm{eff}} 时,程序仍能处理指数型的场。 np.sinc(x) 定义为 sin⁡(πx)/(πx)\sin(\pi x)/(\pi x),因此代码中的 sin_over_q 正好表示 sin⁡(qd)/q\sin(qd)/q,并且能处理 qq 接近零的情况。 return 把最上侧的不匹配程度交还给求根步骤;本例参数无损,理论残差为实数。

第三段寻找合格的猜测值。 linspace 在包层折射率与最大层折射率之间放置 6000 个试探点。 1e-9 是为避开端点的数值偏移,不是材料精度。 相邻残差的乘积为负,表示两端异号;brentq 再在这一区间内寻找零点。 xtol 控制求根的数值容差,并不代表真实材料折射率已知到这么多位。 最后从大到小排序;本例最大的根对应 TE 基模。

运行完整程序,得到曲线和重叠

完整程序保存在 code/vertical_tmm_mode 目录。 其中 run_tutorial.py 是运行入口,vertical_modes.py 是求解器; 绘图另依赖 Matplotlib。在书稿根目录运行:

python code/vertical_tmm_mode/run_tutorial.py
python -m unittest discover -s code/vertical_tmm_mode

如需替换层栈,传入 --config layers.json。 JSON 顶层字段依次为波长、下包层折射率、上包层折射率和有限层列表; 各层字段则是层名、厚度、折射率和是否属于量子阱。字段名为:

wavelength_nm, lower_index, upper_index, layers
layers[]: name, thickness_nm, index, is_qw

材料和层厚按自己的器件修改后,仍需执行根扫描与积分收敛检查。

运行后在同目录的 output 文件夹中找结果。 vertical_te_mode_profile.png 可直接打开查看;PDF 和 SVG 是同一幅图的矢量版本。 vertical_te_mode_profile.csv 是可以用表格软件打开的逐点数据: z_um 是位置,index 是折射率, field_abs_squared 是归一化 TE 场幅平方,is_qw 的 1 表示该点属于阱层。 JSON 文件则按字段保存输入与汇总结果;它是结构化文本,可以用编辑器查看。 完整程序还会生成 TM 曲线,但当前 CSV 保存的是 TE 场,不要把二者混用。

运行结果及其解释

本例实际求得一支 TE 束缚模和一支 TM 束缚模:

neff,TE0=3.36093520,neff,TM0=3.35733482.n_{\mathrm{eff,TE0}}=3.36093520,\qquad n_{\mathrm{eff,TM0}}=3.35733482.

TE 基模无内部节点,峰值在对称中心 z=160 nmz=\SI{160}{nm}; 上下振幅尾长均约为 0.234826 μm。 模式延伸到有限芯层之外,所以不能只用芯层范围作为重叠分母。

现在可以把最初的问题逐一回答出来。 光主要位于中间较高折射率区域,但在包层中仍有尾部; 三个量子阱落在强场附近,却没有占满整个场分布。 TE 与 TM 两个有效折射率都大于包层的 3.303.30、小于最大材料折射率 3.553.55,满足束缚模的必要范围检查。 这只是必要条件;残差和界面检查也要通过,才能确认它们是该层栈的模式。

表 17.5 三量子阱教学波导的 TE0_0 重叠。积分包括解析的上下无穷远衰减尾。
量实际计算值解释
ΓQW(E)\Gamma_{\mathrm{QW}}^{(E)}0.062224380.06222438阱层场强积分占比
ΓQW(ε)\Gamma_{\mathrm{QW}}^{(\varepsilon)}0.068205940.06820594阱层电场储能占比
ΓQW(g)\Gamma_{\mathrm{QW}}^{(g)}0.065724730.06572473小信号材料功率增益权重
ngn_g(材料无色散)3.420857193.42085719含波导色散的群折射率

若只为说明换算而指定三阱均匀材料增益 gmat=1000 /cmg_{\mathrm{mat}}=\SI{1000}{\per\centi\meter}, 则模增益约为 65.72 /cm; 直接乘电能重叠会得到约 68.21 /cm。 这组增益是代入示例,不是对该材料的实验增益预测,更不是阈值电流。

Python 实际求解的教学波导。上图是材料折射率,下图分别为峰值归一化的 |E_y|^2(TE_0)和 |H_y|^2(TM_0);粉色带标出三个量子阱。 两种场各自归一化,不能按曲线高度比较实际功率,也不能共用 TE 电场重叠公式。
Python 实际求解的教学波导。上图是材料折射率,下图分别为峰值归一化的 ∣Ey∣2|E_y|^2(TE0_0)和 ∣Hy∣2|H_y|^2(TM0_0);粉色带标出三个量子阱。 两种场各自归一化,不能按曲线高度比较实际功率,也不能共用 TE 电场重叠公式。图 17.5 · 原始 LaTeX/TikZ 图源独立渲染

如何确认程序算的是导模

程序没有报错,只能说明它执行结束,不能单独证明物理结果正确。 我们用三种检查来回答不同的问题:场在界面能否接上,计算精度加密后答案是否稳定, 以及换一种独立算法是否得到相近结果。 “收敛”就是这里所说的答案随数值加密逐渐稳定,不是指图变得更平滑。 完整程序用各层独立的 Gauss 积分计算重叠,包层尾部采用 ∣A±∣2/(2κ±)|A_\pm|^2/(2\kappa_\pm) 的解析积分。 这避免了在粗网格上用布尔掩码切出 8 nm 量子阱所造成的面积偏差。 32 点加密至 64 点后,本例电能重叠变化小于 10−1210^{-12}; 扫描从 6000 点加密至 12000 点后,本征值变化小于 10−1210^{-12}。

另外,用独立的二阶中心差分离散 TE 方程, 在远离芯层的上下各 2 μm 处置零边界。 网格间距为 4、2、1 nm 时,所得 neffn_{\mathrm{eff}} 与传输矩阵的 绝对差分别约为 4.77×10−64.77\times10^{-6}、1.19×10−61.19\times10^{-6}、 2.95×10−72.95\times10^{-7}。误差随步长减半约缩小四倍,符合二阶离散的预期。 这只是该层栈的验证;弱束缚模需要更远的边界,厚多模结构需要更密的根扫描。

输出 CSV 保存 zz、n(z)n(z)、归一化场和阱层标识; JSON 保存全部根、逐层三种重叠、尾长以及上述收敛误差。 读者可以先改变 SCH 厚度观察模峰与尾长,再移动量子阱位置观察增益重叠。 比较不同结构时保留相同波长和归一化定义,检查是否出现新模式。 最终器件仍需加入真实材料色散、孔阵、吸收和电热工作点。

跑通以后怎样做第一个练习

先保存基准结果,再只改变一项输入,例如上下 SCH 同时加厚,其他输入保持不变。 重新运行后记录模式数、有效折射率、尾长和阱层重叠,不要只比较图峰值,因为每张图都会重新归一化。 第二次可只移动量子阱位置,观察强场与阱层是否仍然重合。 对称结构中同时反转全部层序是一个额外检查:同一套对称输入不应凭空产生左右不同的答案。 这些练习的目标是学会控制变量,不是预先认定“加厚一定更好”。

掺杂和金属为什么在本章就已经是光学问题

掺杂是有意加入少量杂质来改变半导体中载流子的数量,从而改变导电性质。 它有助于电流进入器件,但自由载流子也可能吸收光。金属电极则把外部电路接到芯片上,同时可能带来光学吸收。 因此,导电设计中的材料也属于光学输入,并不能只在 第 19 章 中考虑。

一个简单的自由载流子吸收近似是

αfc≈σnNe+σpNh,\alpha_{\mathrm{fc}} \approx \sigma_n N_e + \sigma_p N_h,(17.16)

其中 Ne,NhN_e,N_h 分别是电子、空穴浓度;本式不用 nn 表示浓度,以免与前面的折射率混淆。 σn,σp\sigma_n,\sigma_p 是把浓度换成吸收的材料系数。 若浓度用 cm−3\mathrm{cm}^{-3}、系数用 cm2\mathrm{cm}^2,乘积就是 cm−1\mathrm{cm}^{-1} 的吸收系数。 它还需要与模式分布结合,才能得到模式实际受到的吸收。

金属的影响更不能简单理解成“再加一点吸收”。一旦模式被上拉到金属附近,不仅损耗增加,模式对称性、偏振选择与远场也会一起变化。因此,在 PCSEL 里,接触层与金属的设计不能后补,而应从一开始就被看作光学边界条件的一部分。

外延层如何改写上下辐射不对称、偏振与远场

“远场”是远离器件后观察到的出光角分布,例如光主要朝正上方还是散布在较大的角度范围。 它不同于本章的纵向剖面:一个是在看光射向哪里,另一个是在看波导内部各高度的场有多大。 前面章节已经从平面内晶格的傅里叶分量和对称性角度解释了面发射、偏振与远场。但真实器件里,模式向上看到的是空气、钝化层、表面结构和金属;向下看到的是包层、衬底和更厚的半导体环境。即便平面内晶格完全对称,这种纵向边界条件的不对称也会让上、下辐射通道不等价。

这会直接影响三类量。第一是出光方向与提取效率:总辐射损耗相同,不代表向上可用的面发射功率相同。第二是偏振选择:不同矢量模与上下辐射通道的耦合权重不同,因此外延层会参与 第 8 章 讨论的偏振选择。第三是远场角谱:纵向相位积累和反射会改写法向附近的角分布。换句话说,第 8 章 那些近场-远场映射,在器件里必须与本章的纵向边界条件一起解读。

为了把这种“不对称”变成可比较的接口量,常把向上提取比例定义为

ηu/d=PupPup+Pdown,\eta_{u/d} = \frac{P_{\mathrm{up}}}{P_{\mathrm{up}}+P_{\mathrm{down}}},(17.17)

其中 PupP_{\mathrm{up}} 与 PdownP_{\mathrm{down}} 分别是模式向上、向下辐射的功率。式 (17.17) 属于开放光学接口量。它不会单独决定阈值,但会直接决定“同样一支冷腔候选模”在器件里究竟是更像一个向上可用的面发射模式,还是更多地把能量泄向衬底和下包层。

层厚灵敏度与孔径工艺对比:从可算到可制造

“灵敏度”描述输入稍微改变时,输出改变多少。 例如固定其他参数,把一层加厚少量,重新求出有效折射率和重叠,再与基准相减。 这才是一次有明确对象的厚度扫描。表 17.6 列出应该比较的量; 它是计算任务表,不是已经运行的扫参结果,也不给未经计算的变化百分比。

表 17.6 外延结构改变后应该重新检查的量。具体变化的方向和大小由对应模型计算,不预设统一百分比。
改动重新计算什么能得到什么、还缺什么
SCH 厚度模式数、neffn_{\mathrm{eff}}、阱层重叠本章一维求解器可检查背景波导;不能同时给出上下出光比。
孔阵刻蚀深度辐射、模式排序、损耗需要含孔阵的周期或有限器件模型;当前七层算例没有孔。
有限 p 包层厚度场与接触区重叠、吸收先在输入中建出这一有限层,再提供吸收数据,不能改变一个不存在的层。
量子阱位置三种阱层重叠、有效折射率移动后重求模式;只移动图上的色带、不更新材料层序,不是同一项计算。

除了层厚,电流孔径工艺选择也会显著影响阈值与模式稳定窗口。以 VCSEL 体系的系统比较为例,指数引导氧化限制结构通常可获得更低阈值电流;而质子注入方案及增益引导氧化结构在横模选择性上可表现更优,同时具备更简化的工艺路径[Sarzaa & Piskorski, 2010]。这一权衡逻辑在 PCSEL 的电流孔径与注入工程中同样成立。

氧化孔径与质子注入孔径的作用机制和主要权衡。两者的优劣取决于具体外延、孔径、热边界和工艺统计,图中不作跨平台性能排名。
氧化孔径与质子注入孔径的作用机制和主要权衡。两者的优劣取决于具体外延、孔径、热边界和工艺统计,图中不作跨平台性能排名。图 17.6 · 原始 LaTeX/TikZ 图源独立渲染

本章输出给后续器件章节的量

本章算例实际给出的,是背景波导的有效折射率、纵向场分布和不同定义下的阱层重叠。 下一步可以把这些量交给增益计算:先知道材料能放大多少,再用相匹配的重叠权重估算模式得到多少放大。 这就是它与 第 18 章 的联系。

上下出光比、真实吸收损耗和启动激光所需的电流,本例尚未算出。 它们分别需要开放辐射、吸收材料和载流子输运等额外输入。 第 19 章、第 20 章 将继续说明电流和温度怎样改变前面求出的光学结果。

回看本章

本章做的事可以用一句话说清:把各层的材料、厚度和外侧条件交给模式方程,找到能在界面接好、在外侧衰减的场分布。 这条曲线与它的有效折射率是一对答案;与量子阱重叠多少,则是求出曲线后再计算的量。 发光层很薄,不等于光也只在这层里;模式峰值归一化为 1,不等于实际输出功率为 1 W。 这一维计算能帮助我们理解和筛选纵向结构,但真实 PCSEL 还需要孔阵辐射、吸收、载流子和温度信息。

不看公式的自测:先回答,再核对

  1. 图的横轴是 zz,是否表示光正沿 zz 传播? 不表示。本章画的是沿厚度取样的分布,背景导波沿 xx 前进。

  2. 折射率最高的薄层,是否一定包含最多光场能量? 不一定。还要看层厚、模式形状以及整个积分范围。

  3. 归一化后两条曲线峰值都是 1,能否比较输出功率? 不能。归一化保留了形状,消去了整体幅度尺度。

  4. 倏逝尾向外变小,是否说明材料正在吸收光? 不一定。在本章无损导波中也有倏逝尾,它说明厚度方向的束缚。

  5. 阱层电能重叠约为 6.82%6.82\%,是不是发光效率? 不是。它只回答已定义的模式电场能量有多少位于阱层。

  6. 程序输出了一个 neffn_{\mathrm{eff}},下一步看什么? 看范围、界面与残差、场的衰减、模式数,以及数值加密后答案是否稳定。

练习题

  1. [基础] 解释为什么 SCH 在 PCSEL 中是连接平面内光学设计与真实器件约束的基础,而非可省略的传统激光器结构。

  2. [基础] 结合 式 (17.2) 说明导带和价带台阶如何分别影响电子泄漏与空穴注入。

  3. [进阶] 讨论为什么增大量子阱重叠并不自动降低阈值,回答中需同时引用 Γopt\Gamma_{\mathrm{opt}} 和 Γloss\Gamma_{\mathrm{loss}}。

  4. [综合] 给出一个你认为 effective index 近似会明显失效的 PCSEL 场景,并说明失效来自哪些纵向物理。

延伸阅读

PCSEL KNOWLEDGE BASE

PCSEL 理论、仿真与器件物理导论

正在载入可检索的全书知识站。JavaScript 不可用时,可直接阅读各章独立页面或下载原书 PDF。

从第一章开始 · 下载原书 PDF