我最早在 OptiSystem 里做交叉相位调制(XPM)仿真时,心里默认它跟 ASE 噪声差不多,属于那种“加个数就能看到效果”的东西。结果第一次把两个波长合进一根 80km 光纤,眼图干干净净,光谱上也看不出异常,当时差点以为软件装错了。后来把问题拆开才明白:XPM 本质是相位域的效应,直接拿强度接收机去测,等于用温度计测电压,当然测不到。
这篇记录我打算把 OptiSystem 里研究 XPM 的思路完整写一遍,包括物理背景、最小仿真链路怎么搭、泵浦功率和波长间隔怎么影响结果、色散补偿后为什么 XPM 会反弹,以及我踩过的几个坑。内容主要面向正在做光纤通信课程设计、WDM 系统预研,或者在实验室里想用仿真代替一部分非线性效应测试的人。只要你愿意花一个下午把 OptiSystem 跑熟,XPM 这个抽象概念就能变成一张张可以量化、可以写进报告里的图。
1. 先搞清楚:XPM 在仿真里观察的是什么
1.1 克尔效应里的“泵浦-探针”模型
XPM 是同一根光纤里两个波长彼此“拽”相位的过程。强光(泵浦)通过克尔效应改变了光纤的折射率,弱光(探针)感受到折射率变化,相位就跟着摆动。这个效应和自相位调制(SPM)同源,但两者有一个关键差别:SPM 是自己调自己,XPM 是别人调自己。当两路光偏振方向一致时,单位长度上 XPM 对相位的贡献是同样功率下 SPM 的两倍。
在连续波近似和线偏振同偏振假设下,泵浦对探针的相位扰动用如下形式表达:
Δφ_XPM(t) = 2γL_eff·P_pump(t - z/v_g)
其中 γ 是光纤非线性系数,L_eff 是有效作用长度,P_pump 是泵浦瞬时功率。γ 又由材料非线性折射率 n2、波长 λ 和光纤有效面积 Aeff 决定:
γ = 2π·n2 / (λ·Aeff)
这个式子看着简单,但在 OptiSystem 里很容易被忽略。Single Mode Fiber 组件里,你既可以选择按 n2 和 Aeff 来填参数,也可以直接填非线性系数 γ。很多人保留软件默认的 n2 = 2.6e-20 m²/W,但 Aeff 随光纤型号差别很大。例如 1550nm 波长下,Aeff 从 80µm² 改成 50µm²,γ 会从约 1.3 W⁻¹km⁻¹ 跳到约 2.1 W⁻¹km⁻¹,XPM 仿真结果完全不是一个量级。
可以先手动算一个小例子:80km 标准单模光纤,衰减 0.2 dB/km,对应 α = 0.046 km⁻¹,则有效长度 L_eff = (1 - e^(-αL)) / α ≈ 21.2km。如果泵浦平均功率 10dBm,也就是 10mW,NRZ 码流 50% 占空比下峰值功率接近 20mW,那么相位摆动幅度大约为:
Δφ ≈ 2 × 1.3 × 21.2 × 0.02 ≈ 1.10 rad
这个量级在 10G 系统中已经能明显影响探针信号了。我把这个估算放在前面,是为了让你对“多少功率会出问题”有直觉,不然直接在 OptiSystem 里乱扫功率,很容易把 0dBm 和 30dBm 的结果混为一谈。
1.2 相位扰动不等于强度扰动
我最初在 OptiSystem 里搭链路,探针用 CW 激光器,后面接 PIN 光电二极管,心想 XPM 会在接收端产生一个可测的强度纹波。结果频谱里只有直流和微弱噪声,什么都没有。这不是软件问题,而是物理原理:XPM 把泵浦的强度调制变成了探针的相位调制,光信号的幅度包络不变,普通强度探测器自然什么都看不到。
要让相位扰动在强度上显现出来,有两条路。第一条是引入色散,做 PM-IM 转换:探针被相位调制后带有频率啁啾,经过色散介质后不同频率分量传播速度不同,强度上就会出现起伏。第二条是用相干接收机直接解调相位。OptiSystem 里研究 XPM 的思路也因此分成两派:一派把探针设置为 CW,在光域看光谱或相干解调后的相位变化,适合验证物理机制;另一派让探针也带调制信号,然后观察眼图、Q 因子或误码率的劣化,贴近工程。
这两条路都要在仿真里跑,但不能混淆。想用直接探测看 XPM,却不在链路里加任何色散和相干检测,等价于拿温度计测电压,结果必然是什么都测不到。
2. 搭一个最小双波长链路:组件清单与连接顺序
2.1 组件清单
在 OptiSystem 组件库里,搭建双波长共传链路需要的东西并不多。我常用的组件列表如下:
| 组件 | 库内名称 | 作用 |
|---|---|---|
| 泵浦数据源 | Pseudo-Random Bit Sequence Generator | 产生 2^7-1 伪随机码 |
| 电脉冲成形 | NRZ Pulse Generator | 把 bit 变成 10Gb/s NRZ 电平 |
| 泵浦激光器 | Continuous Wave Laser | 1550nm,入纤平均功率 7dBm |
| 外调制器 | Mach-Zehnder Modulator | 把 NRZ 信号加载到光上,消光比 30dB |
| 探针激光器 | Continuous Wave Laser | 1550.8nm,入纤平均功率 3dBm |
| 合波器 | WDM Mux 2x1 或 Optical Coupler | 将泵浦和探针合成一束光 |
| 传输光纤 | Single Mode Fiber | 80km,含损耗、色散、非线性 |
| 色散补偿光纤 | Dispersion Compensating Fiber | 可选,用于补偿 SSMF 色散 |
| 通道滤波器 | Optical Bandpass Filter | 取探针通道,隔离泵浦 |
| 光探测 | PIN Photodiode | 光信号转强度 |
| 低通滤波 | Low Pass Bessel Filter | 抑制带外噪声和码间干扰 |
| 测量仪器 | Optical Spectrum Analyzer、Eye Diagram Analyzer | 观测光谱和眼图 |
如果你只想看最简单的 XPM 光谱边带,可以暂时不接探针调制,探针保持 CW,直接把探针激光器输出和泵浦输出一起送入合波器。但如果是想做系统级劣化评估,那就按上面清单搭。
2.2 链路连接顺序与参数设置
实际连接顺序如下:
泵浦支路:PRBS Generator → NRZ Pulse Generator → Mach-Zehnder Modulator,调制由 CW Laser(1550nm)输入的光。
探针支路:CW Laser(1550.8nm)直接输出。
两条支路进入 WDM Mux 合成,然后进入 Single Mode Fiber 传输 80km。光纤出口接一个光分路器或直接接 Optical Bandpass Filter,先选出探针波长,再接 PIN 光电二极管、Low Pass Bessel Filter,最后进 Eye Diagram Analyzer。OSA 可以放在光纤输出端和滤波器输出端各一个,方便对照。
这是我比较常用的参数表,能稳定跑出 XPM 现象:
| 参数 | 泵浦通道 | 探针通道 |
|---|---|---|
| 波长 | 1550.0 nm | 1550.8 nm |
| 入纤平均功率 | 7 dBm | 3 dBm |
| 调制格式 | 10Gb/s NRZ,PRBS 2^7-1 | 10Gb/s NRZ,PRBS 2^7-1 |
| 光纤长度 | 80 km SSMF | 80 km SSMF |
| SSMF 色散 | 16.75 ps/nm/km | 16.75 ps/nm/km |
| SSMF 衰减 | 0.2 dB/km | 0.2 dB/km |
| 非线性参数 | n2=2.6e-20 m²/W,Aeff=80µm² | 同左 |
| 带通滤波器 | 不经过 | 中心 1550.8nm,带宽 0.3nm |
全局仿真参数建议设置为:Bit rate 10e9,Sequence length 2^7-1,Samples per bit 128。很多教程用默认 32 samples/bit 也能跑,但 XPM 的细节对采样率比较敏感,后面我会单独说。
一个重要提醒:MZM 有插入损耗,CW Laser 标称功率并不等于入纤功率。如果 CW Laser 设置 7dBm,MZM 插损 5dB,入纤功率只剩下 2dBm,这时 XPM 会很弱。我的习惯是在 MZM 后面加一个 EDFA 或光放大器组件,把平均功率补偿到目标值,再在光纤前用 Optical Power Meter 确认一下。
2.3 容易翻车的对比法:基线必须单独跑
第一次跑完带泵浦的链路,看到探针眼图变差,先别急着归因于 XPM。因为 80km 标准单模光纤本身的色散、放大器 ASE 噪声、滤波器非理想特性都会让眼图劣化。要把 XPM 的影响单独拎出来,必须做差分对比。
我通常的做法是复制一个 Baseline 工程,或者直接把泵浦激光器的输出功率设为 0,再跑一次。两次仿真除了泵浦通道是否入射之外,其他设置完全一样。第二次得到的就是“无 XPM”的参考结果,两者相减才是交叉相位调制的净贡献。
很多同学偷懒只跑一次带泵浦的配置,看到眼图闭得很厉害就写“XPM 导致系统性能恶化”,这个结论并不严谨。在写报告或论文之前,最好把基线眼图、带泵浦眼图、滤波后的光谱图放在一起,形成完整的证据链。
3. 泵浦功率与波长间隔对相位扰动的影响
3.1 用 OSA 观察光谱边带:验证机制的首选方法
如果你想先验证 XPM 的物理机制,最直观的观测对象是光谱。把探针调制关掉,探针保持 CW;泵浦也不一定要用 NRZ 码流,可以换成频率 10GHz 的正弦强度调制,这样光谱边带更清晰。MZM 工作在线性点,泵浦光强近似为 P0(1 + m·sin(ωt)),探针相位就会被一个正弦分量调制,在探针光谱上形成中心载波加对称边带。
在 OptiSystem 里,把 NRZ Pulse Generator 换成 Sinusoidal Generator,驱动同一个 MZM 即可。运行后在 OSA 上看 1550.8nm 附近的探针谱线,正常情况下会看到两侧出现等间距的边带,间距等于泵浦调制频率 10GHz。边带幅度随泵浦功率上升而上升,这就是 XPM 调相的典型特征。
OSA 的参数要注意:分辨率带宽建议设到 0.01nm 以下,否则边带会被分辨率带宽抹平。我见过不少人用默认 0.1nm 的分辨率,结果边带糊成一片,误以为没有 XPM。另外,光纤输出端的功率本身已经衰减,OSA 显示的是绝对功率,边带和中心载波的相对差值才有意义,建议在 OSA 里打开相对显示或直接用差值读数。
3.2 功率扫描实验:系统性观察眼图劣化
看光谱能证明“XPM 存在”,但工程上更关心“XPM 造成多大损失”。这就回到探针也加载信号的系统级链路。我习惯用 OptiSystem 的 Parameter Sweep 功能,对泵浦功率做扫描。把泵浦入纤平均功率从 0dBm 步进到 12dBm,每次自动跑完链路后,记录探针眼图的 Q 因子或眼高。
扫出来的趋势大致如下:
| 泵浦平均功率 | 估算相位偏移幅度 | 探针 Q 因子相对基线变化 | 光谱边带表现 |
|---|---|---|---|
| 0 dBm | 约 0.14 rad | 基本无变化 | 边带不明显 |
| 3 dBm | 约 0.35 rad | 小幅下降 | 边带可见 |
| 6 dBm | 约 0.55 rad | 明显下降 | 边带清晰 |
| 10 dBm | 约 1.10 rad | 严重劣化 | 边带非常明显 |
这个表里的 Q 因子变化量与具体滤波器带宽、码型、光纤色散都有关,我这里给的是趋势。我的经验是,在 10G NRZ 系统里,XPM 相位偏移超过 0.5 rad 后,眼图上的相位抖动和幅度抖动就会肉眼可见;超过 1 rad,Q 因子下降基本不可忽略。你可以用 3.1 节的光谱法估算相位偏移,再和系统性能联系起来,这样报告里就有两条独立证据。
3.3 波长间隔与走离效应:为什么越靠近越受伤
XPM 对波长间隔非常敏感。两个波长在光纤中由于色散的作用群速度不同,泵浦码流会相对探针“滑过”,这个相对滑动时间称为走离时间,近似为 T_walkoff = D × Δλ × L。在 80km SSMF 上,D 取 16.75 ps/nm/km,不同通道间隔的走离时间如下:
| 通道间隔 | Δλ | 走离时间 | XPM 强度趋势 |
|---|---|---|---|
| 50GHz | 0.4 nm | 约 0.54 ns | 较强 |
| 100GHz | 0.8 nm | 约 1.09 ns | 基线 |
| 200GHz | 1.6 nm | 约 2.17 ns | 较弱 |
对照 10Gb/s 码元周期 100ps,100GHz 间隔下泵浦码流在传输过程中已经相对探针滑过 10 个码元,泵浦的快速强度起伏被平均掉很大一部分。通道间隔越小,走离越小,泵浦长串“1”能持续给探针施加相位偏置,XPM 就越明显。在 OptiSystem 里做这个扫描很简单,把泵浦波长从 1550.4nm 到 1551.6nm 依次改一遍,再跑同一组功率扫描即可。你会发现 WDM 系统中通道间隔越窄,非线性串扰越难缠。
4. 色散与 XPM 的“爱恨关系”,以及多信道叠加问题
4.1 走离效应:为什么色散增大反而能“救” XPM
前面说的是色散导致走离,走离让 XPM 平均化。这里有个反直觉的结论:一定量的色散反而是 XPM 的“解药”。如果光纤是零色散,泵浦和探针群速度完全相同,泵浦的一串长“1”会一直与探针的同一段码流相互作用,相位偏置被持续累积,接收端通过 PM-IM 转换看到的是严重的码型相关噪声。
在 OptiSystem 里验证这个结论很容易:把 SSMF 的色散参数临时改成 0,其他参数不变,跑一次功率扫描。你会看到同样的泵浦功率下,零色散光纤的输出端眼图劣化更严重。这就是为什么超长距离系统里,完全零色散并不是最佳工作点——它会让四波混频和 XPM 这类非线性效应同时加剧。
4.2 色散补偿后 XPM 回潮:工程里的常见陷阱
实际系统中我们常常在 SSMF 后面加 DCF 把色散补到接近零。问题是,全补偿之后链路对探针来说等效色散为 0,但对 XPM 来说也回到了小走离状态,XPM 串扰会明显反弹。很多人在长距系统实验中会碰到一个奇怪现象:色散补偿做得很完美,误码率反而比留一点残余色散时更差,其中一个重要原因就是 XPM。
在 OptiSystem 里做这个对比,建议在 SSMF 后分别接 0km、10km、17km 的 DCF。DCF 参数大致设置为色散 -80 ps/nm/km,Aeff 比 SSMF 小,可以设 30µm² 左右,这意味着 DCF 自身的非线性其实不弱。如果用理想色散补偿模块,则看不到 DCF 本身的非线性代价。工程评估时两者都要跑,这样能分清“色散补偿不足带来的代价”和“补偿后 XPM 反弹带来的代价”。
一般来说,DCF 补偿 80% 到 90% 的色散是比较常见的折中:小幅残余色散仍能抑制 XPM,同时总体色散积累在接收机容限以内。
4.3 从两波到多波:WDM 系统里 XPM 的累积效应
前面所有实验都是单泵浦加单探针,但实际 WDM 系统里探针会受到来自其他所有信道的共同扰动。考虑四波或者八波时,不能再简单套用单泵浦模型,总的相位扰动来自多个泵浦信道的贡献叠加。如果各信道数据码型不相关,相位噪声会按功率和的方式累积,相当于有效泵浦功率约等于所有相邻干扰信道功率之和。
在 OptiSystem 里扩展开来并不复杂:把 WDM Mux 从 2x1 换成 4x1 或 8x1,复制三份或七份相同的泵浦发射机,给每个 PRBS 设置不同的时延或种子,避免所有信道码型完全一致。然后把泵浦总功率分摊到各信道,或者固定单信道功率不变,观察探针 Q 因子随信道数增加而下降的曲线。
我实测下来,通道数从 1 个泵浦增加到 3 个泵浦时,探针 Q 因子的恶化并不是线性的,前几个相邻信道的贡献占主导。距离探针很远的信道因为走离时间更大,贡献相对较小。这也解释了为什么 WDM 系统中真正需要关心的是每个探针信道两侧的几个紧邻信道,而不是把所有信道都一视同仁。这个结论对信道规划很有价值,写报告时值得专门画一张“Q 因子 vs 干扰信道数”的曲线。
5. 动手排雷:XPM 仿真里最容易翻车的几个环节
5.1 用错接收机:把相位噪声当强度噪声找
这是所有 XPM 仿真新手最容易踩的坑,我也是这么过来的。如果你把探针设成 CW,后面直接接 PIN 光电二极管,再去看电频谱和眼图,大概率一片平坦。因为 XPM 是相位调制,强度探测器对相位完全不敏感。不是说仿真没设置对,而是观测方式错了。
正确做法有三种:一是用相干接收机结构,把探针相位变化解调出来;二是在链路中加入色散,让相位啁啾通过 PM-IM 转换变成强度变化;三是让探针也承载调制信号,通过 XPM 对探针码流的相位扰动间接影响眼图。第三种在工程上最常用,也是我前面主推的链路配置。如果你确实需要用 CW 探针研究纯相位效应,建议找 OptiSystem 里的 Optical Phase Modulator 和相干检测模块,或者在探针滤波后用 OSA 看光谱边带。
5.2 网格和仿真步长:数值噪声会吃掉真实边带
OptiSystem 处理光纤非线性用的是分步傅里叶法,本质上就是把光纤切成很多小段,一步步计算幅度和相位变化。如果步长太大,数值误差会掩盖真实的 XPM 边带,甚至产生假振荡。遇到这种情况不要怀疑物理,先检查全局参数。
我的建议是 Samples per bit 至少设到 64,如果能接受更慢的运行速度,直接上 128。Sequence length 用 2^7-1 是最低要求,研究码型效应时用 2^10-1 更可靠。样本数太小时,OSA 频谱的边带会被数值窗函数“抹糊”,看起来像 XPM 不存在。另外,在光纤组件设置里可以找到分步傅里叶步长的相关选项,例如最大非线性相移步长,把它调小之后边带会更稳定,但仿真时间会显著增加。如果只是验证机制,跑短光纤加高功率的组合比长光纤加低功率更容易看到效应。
5.3 非线性参数输入模式:n2/Aeff 和 γ 千万别混
OptiSystem 的 Single Mode Fiber 组件有两种非线性参数输入方式。一种直接给非线性系数 γ,单位通常是 W⁻¹km⁻¹;另一种给 n2 和 Aeff,软件内部再计算。看起来只是输入方式不同,但很多人忽略了单位换算。
如果给 n2 = 2.6e-20 m²/W,Aeff = 80µm²,在 1550nm 波长下算出来的 γ 约为 1.3 W⁻¹km⁻¹。但如果你在不同波长下做仿真,Aeff 其实会随波长变化,不应该把所有波长都填同一个 Aeff。另外 DCF 或者小芯径光纤的 Aeff 只有 30µm² 左右,非线性强度是 SSMF 的两倍以上,直接用 SSMF 的参数去跑 DCF 就会严重低估非线性效应。
我自己的习惯是:先在计算器里把 γ 换算好,再直接填非线性系数,并且在工程文件名称里标注“γ=1.32”,这样换台电脑重新打开工程时也不容易弄错。
6. 关于 OptiSystem 授权:顺带回答“OptiSystem 免费吗”
6.1 官方试用版和学生版:该走的渠道别图省事
经常有人问 OptiSystem 有没有免费版。直接回答:没有官方永久免费版,它是商业软件。但 OptiSystem 官网提供试用版,通常是 30 天评估期,能跑大部分教程和本文这类基础仿真。学生身份还可以申请教育版授权,价格政策和具体功能在官网有说明,不同地区代理政策不太一样。
试用版会有一些限制,比如工程规模较大时组件数量受限、部分高级功能无法保存或导出,但拿来学习 XPM 这类单跨距链路是够用的。我建议所有刚接触的人先去官网下载试用版,按本文的链路搭一遍,确认软件能跑通,再决定是否购买授权或申请教育版。
6.2 非正规渠道版本的风险,和更灵活的替代学习路径
市面上一搜“OptiSystem 免费版”会看到各种“绿色版”“一键安装版”,个人建议一律不要碰。一方面这类打包版本很容易夹带弹窗、后门程序,另一方面在论文和工程报告里使用未授权软件存在合规风险。仿真结果是用来支持工程决策或学术发表的,软件来源经不起推敲会比较麻烦。
如果暂时没有正版授权,又很想先理解 XPM 的物理过程,我建议用 Python 或 Octave 写一个分步傅里叶法小脚本,仿真两束波长在光纤里的相互作用。这种方式虽然不能像 OptiSystem 那样方便地搭接收机链路,但能让人把非线性薛定谔方程和 XPM 公式吃得更透。等拿到 OptiSystem 的正规试用权限之后,再回来做系统级验证,效率反而更高。
最后再分享一个习惯:OptiSystem 工程文件是文本格式,备份和复制都很方便。每次改动关键参数前,我会另存一个带版本号的工程文件,命名类似 pump_7dBm_100Ghz_v2.osd 这样。因为功率扫描或者 DCF 长度扫描很容易改着改着就忘记原始基线,有了版本文件,回头找数据就方便得多。XPM 仿真这种事,参数记录做得越细,后面写论文和做对比实验就越省心。