4. MZI 阵列架构:1×N, N×N, 网格拓扑
这一讲咱们把目光从单个 MZI 单元挪开,看看怎么把它们拼成有用的阵列。你想想看,光计算系统里通常需要把一路光分到多路,或者把多路信号交叉重组,那就得靠阵列架构来搞定。
我个人习惯把阵列分成三类:1×N 分束器、N×N 交叉开关、网格拓扑。这三类不是替代关系,而是不同场景下的工具。我刚开始接触这行时,总觉得 N×N 最万能,后来踩了坑才发现——选错架构,校准难度直接翻倍。
4.1 1×N 分束器:树形级联
最简单也最直观的阵列。用 MZI 的 2×2 耦合特性,一层层把光功率均分。比如你要做成 1×8,就先用一个 MZI 分成两路,每路再接一个 MZI 分成四路……说白了就是二叉树。
关键点
- 每个 MZI 只做 3dB 分束(分光比 50:50)
- 级联深度 = log₂(N),N 是输出端口数
- 相位校准只需保证每个 MZI 的 π/2 偏置准确
我在项目中遇到过一种情况:用 1×16 分束器给探测器阵列馈光,结果输出端光功率差异超过 20%。排查半天发现是中间某个 MZI 的热光串扰导致相位偏移。嗯,这里要注意:级联层数越多,对相位误差的累积越敏感。
| 参数 | 典型值 | 我的经验 |
|---|---|---|
| 均匀度 | ±0.5 dB | 用 5 层以内,超过会有压力 |
| 插入损耗 | ~1.5 dB(4 层) | 每层加 0.3~0.4 dB |
| 带宽一致性 | ±10 nm | 与 MZI 臂长差相关 |
4.2 N×N 交叉开关:全连接矩阵
如果把 1×N 看作“广播”,那 N×N 就是“交换”。每个输入都可以路由到任意输出,核心结构是 Reck 或 Clements 分解。简单说,用一组 MZI 网格实现任意酉矩阵的分解,再通过相位调谐来设置权值。
为什么需要这么多拓扑?因为实际芯片上的波导交叉会引入损耗和串扰,所以 N×N 架构必须做无阻塞路由。我最常用的是 Clements 结构——相比 Reck,它对误差的容忍度更高,校准起来也少几轮迭代。
避坑指南
我曾经用 Reck 结构搭过 8×8 阵列,在校准阶段发现深度大的通路相位误差累积严重,花了三周才调出来。后来换成 Clements 结构,同样的校准流程只花了三天。所以小规模用 Reck 图省面积,大规模建议直接上 Clements。
4.3 网格拓扑:可重构光计算的核心
网格拓扑是前面两种的“合体”。它把 MZI 排成矩形或三角形网格,既可以做分束,也可以做路由,还能支持权重矩阵的在线更新。说白了,这就是光计算芯片的“神经网络层”。
每个节点是一个 2×2 MZI,相邻节点通过波导连接。当你在每个 MZI 上加两个相位调谐器(内部臂和外部臂),就能实现任意 2×2 酉变换,进而组合出任意 N×N 酉矩阵。这正是光计算中的“万能砖块”。
// 伪代码:网格拓扑的配置向量
// 假设 4×4 网格(两层 MZI)
config = {
layer1: [{theta: 0.2, phi: 0.8}, {theta: 0.5, phi: 0.3}],
layer2: [{theta: 0.1, phi: 0.9}, {theta: 0.6, phi: 0.4}]
}
4.4 三种架构的对比——该用哪个?
| 特征 | 1×N 分束器 | N×N 交叉开关 | 网格拓扑 |
|---|---|---|---|
| 适用场景 | 信号广播、参考光分配 | 全连接光交换、矩阵乘法 | 可重构光计算、神经网络 |
| 波导交叉 | 无(树形结构) | 可能有(需做交叉优化) | 必然有(网格排列) |
| 相位校准难度 | 低(逐级校准) | 中(需全局优化) | 高(联合调谐) |
| 损耗 | 低(层级少) | 中(取决于路径) | 中高(波导长度较长) |
我一般这样选:如果只需要做分光,毫不犹豫上 1×N;如果需要做任意酉变换且规模小于 8×8,用 Clements 的 N×N;超过 8×8 或者要做可编程光计算,只能硬着头皮上网格拓扑——但校准策略必须提前规划好。
注意
- 网格拓扑的热管理:MZI 间距缩小到 50 μm 以下时,热串扰会让校准失效
- 波导交叉处的损耗:90° 交叉每处 ~0.1 dB,10×10 网格至少有 90 个交叉,累积不可忽略
- 容差设计:建议给每个 MZI 留 20% 的额外调谐范围,应付工艺偏差
最后说一个我自己的习惯:刚做光计算芯片时,总想把拓扑做得越通用越好,结果校准策略一塌糊涂。后来学乖了,先用 1×N 做分光通道,再搭一个小的网格做核心运算——这种混合架构既好校准,又能满足大多数实验室验证需求。