文章目录
- 基本原理
- mzm
基本原理
光马赫-曾德尔调制器(Optical Mach-Zehnder Modulator, MZM)可将相位变化转化为光强变化,是现代高速光通信中最核心的光开关和幅度调制器。
MZM的物理结构实际上是个干涉仪,其工作流程为
- 分光:将输入光场等分为两束光,分别进入上、下两个平行的光波导臂。
- 相位调制:两个臂上分别集成相位调制装置,当施加电信号时,两臂中的光波相位发生不同程度的改变。
- 合光与干涉:由于光在两臂传播后相位发生变化,因此在合光时,若二者相位相同,则发生相长干涉,光强最大;若相位相反,则发生相消干涉,光强相互抵消,输出为零。
理想MZM的输入输出光场的传递函数可以表示为
E o ( t ) = E i ( t ) 2 [ 1 + exp ( j π u ( t ) + V b V π ) ] E_o(t)=\frac{E_i(t)}{2}\left[1+\exp\left(j\pi\frac{u(t)+V_b}{V_\pi}\right)\right]Eo(t)=2Ei(t)[1+exp(jπVπu(t)+Vb)]
其中,u ( t ) u(t)u(t)是电驱动信号;V π V_\piVπ是半波电压,表示MZM 的输出光强从最大值变化到最小值所需的电压变化量。
V b V_bVb是偏置电压,由于MZM必须工作在特定的直流偏置点上,否则交流信号 u 无法正确调制光强,其工作点可选
- 正交点V b = ± V π 2 V_b=\pm\frac{V_\pi}{2}Vb=±2Vπ此时传输曲线最线性,常用于模拟调制或高级相干通信
- 峰值点V b = 0 V_b=0Vb=0或V b = V π V_b=V_\piVb=Vπ,此时输出光强最大,常用于直接检测的 OOK(开关键控)信号。
- 零点V b = ± V π V_b=\pm V_\piVb=±Vπ,此时输出光强最小,常用于产生载波抑制单边带(CS-SSB)信号或作为光开关的“关闭”状态。
mzm
OptiCommPy提供了MZM模型函数,函数签名为
optic.models.devices.mzm(Ei,u,param=None)其中,Ei和u即对应MZM模型中的输入光场E i E_iEi和电驱动信号u ( t ) u(t)u(t)。
param是OptiCommPy定义的参数类,共有三个成员,分别是
- param.Vpi 半波电压,默认2 V 2V2V
- param.Vb 偏置电压,默认− 1 V -1V−1V
- param.ER 此为消光比,表示MZM的非理想衰减,默认60dB
下面用默认参数进行测试,效果如下
代码为
fromoptic.models.devicesimportmzmimportnumpyasnpimportmatplotlib.pyplotasplt plt.rcParams['font.sans-serif']='Times New Roman'# 输入光场: 幅度为 1.0 的连续光 (CW)Ei=1.0+0jt=np.linspace(0,10e-9,1000)# 10 nsu_signal=np.where(t<5e-9,1,2.0)Eo=mzm(Ei,u_signal)P_out=np.abs(Eo)**2# 输出光强fig,ax1=plt.subplots(figsize=(8,4))# 绘制输入电信号 (左 Y 轴)ax1.plot(t*1e9,u_signal,'b--',linewidth=2,label='$u(t)$ [V]')ax1.set_xlabel('Time (ns)')ax1.set_ylabel('Voltage (V)',color='b')ax1.tick_params(axis='y',labelcolor='b')ax1.set_ylim(0.9,2.1)ax1.set_yticks([1,2])# 绘制输出光强 (右 Y 轴)ax2=ax1.twinx()ax2.plot(t*1e9,P_out,'r-',linewidth=2,label='$|E_o|^2$')ax2.set_ylabel('normalized light-intensity',color='r')ax2.tick_params(axis='y',labelcolor='r')ax2.set_ylim(0.4,1.1)ax2.set_yticks([0.5,1])fig.tight_layout()plt.grid(True,alpha=0.3)plt.show()