做量子密钥分发(QKD)系统的人,迟早会在光路子系统上摔几跤。我当年第一次搭相位编码链路,连续一周干涉可见度上不去,最后排查下来居然是温度漂移把光纤臂长带偏了。所以这个系列的第二篇,我打算把光路子系统单独拎出来聊透,从光源、衰减、调制到不等臂干涉仪、单光子探测和同步,把设计思路和实操细节一次讲清楚。
这篇文章适合正在搭QKD原型机的学生、刚接触量子通信的工程师,以及想搞明白“光子到底怎么编码和测量”的非光学专业朋友。我会用自己做过的链路做例子,给出可以直接参考的设计参数、调试步骤和避坑经验。看完之后,你应该能对一套实验室级QKD系统的光路结构有一个完整认识,也知道该从哪里下手开始搭。
1. 光路子系统整体架构:从端到端先搭一个框架
1.1 光路子系统在整个QKD系统里扮演什么角色
QKD的本质,是发送端(Alice)把密钥比特编码到单个光子的量子态上,接收端(Bob)通过测量来提取这些比特。如果中间存在窃听者,任何测量行为都会不可避免地扰动量子态,两端通过比对误码率就能发现异常。而光路子系统,就是负责“产生光子、编码量子态、传输、解码、探测”的所有光学硬件和光机结构的集合。
从模块上看,一套典型的实验室QKD光路包含这么几个部分:
- 光源模块:通常是一台窄线宽脉冲激光器,输出一定重复频率的光脉冲。
- 编码模块:通过强度调制器、相位调制器,把密钥比特编码到光子的某个自由度上。
- 衰减模块:把宏观光强衰减到单光子量级,让每个脉冲的平均光子数低于0.1。
- 信道传输:在实验室里就是一段标准单模光纤,在工程场景下可能是几十公里甚至上百公里的光缆。
- 解码/干涉模块:Bob端的非平衡干涉仪,用来把相位信息转化成强度信息。
- 探测模块:单光子探测器,通常还要配合门控和同步电路。
在动手设计之前,先别急着选器件,要先把整个链路的“损耗预算”和“时序关系”算明白。我见过不少同学上来就买一堆光学元件,装起来之后发现计数率低到探测器根本起不了门控,就是因为没有提前估算损耗,也没有统一设计时序。
1.2 编码方案怎么选:偏振、相位还是时间相位
编码方案是整个光路设计的核心决策。量子密钥分发最常见的三种编码方式各有优劣,我列一张表方便对比:
| 编码方案 | 基本原理 | 优点 | 缺点 | 适合场景 |
|---|---|---|---|---|
| 偏振编码 | 用光子的偏振方向(如水平/垂直、45°/135°)表示比特 | 实现直观,调制器件简单 | 普通光纤中偏振态随机漂移,需要保偏光纤或实时补偿 | 短距离、自由空间链路 |
| 相位编码 | 通过非平衡干涉仪引入相位差(0/π)编码 | 对偏振扰动相对鲁棒,技术成熟 | 需要干涉仪稳定性好,温度敏感 | 光纤链路,经典BB84协议 |
| 时间相位编码 | 用光子到达时间定义比特位,用相位定义额外维度 | 抗环境扰动能力强,适合长距离 | 系统结构复杂,时序要求高 | 长距离光纤QKD、商用系统 |
我自己的经验是:在实验室环境里,单不等臂干涉仪加相位编码是最容易复现、也最能讲清楚原理的方案。它的调制逻辑直接对应BB84协议的双基选择,调试时也方便用连续光逐级排查问题。偏振编码虽然看着简单,但普通单模光纤里面的偏振态会被温度、应力随机改变,不用保偏光纤的话,干涉可见度会飘到你怀疑人生。而时间相位编码的抗扰性最好,但探测器门控、多时间片解码的复杂度会成倍上升,初期不建议碰。
1.3 先做链路损耗预算,再定器件参数
一条光路的器件参数,很大程度上是由损耗预算决定的。我建议先画一张表,把每一段的预期损耗写下来,再去反推光源功率和探测器灵敏度。
举个例子,假设我选1550nm波长,设计链路如下:激光器出纤功率0dBm,经过编码和衰减模块总损耗约12dB(调制器、耦合器、连接器),传输一段2km单模光纤损耗约0.4dB,Bob端干涉仪和光纤跳线损耗约8dB,最后到达探测器的光功率大概是0dBm - 12dB - 0.4dB - 8dB = -20.4dBm。这个功率显然不是单光子水平,是因为衰减模块还没有算进去。
衰减模块的目的是把每个脉冲的平均光子数降到μ≈0.1左右。1550nm单光子的能量大约是1.28×10⁻¹⁹焦耳,如果脉冲重复频率是1MHz,那么平均光功率要达到P = μ × hν × f ≈ 1.28×10⁻¹⁴瓦,换算成dBm大约是-109dBm。也就是说,从-20.4dBm再衰减掉将近90dB,才能进入单光子量级。这个数值听起来很夸张,实际操作也确实需要二级甚至三级衰减,否则一个大功率衰减器很难同时保证精度和稳定性。
结论就是:损耗预算不是最后验证用的,而是最开始定的。它决定了你需要几级衰减、探测器需要多少效率、同步光能不能从同一光源分出来。
2. 光源、衰减与调制:把单光子信号稳定地造出来
2.1 光源选型:为什么DFB激光器是起步首选
对于相位编码QKD,光源的核心要求是窄线宽、波长稳定、能输出高速脉冲。市场上常见的窄线宽激光器有DFB分布反馈激光器、外腔半导体激光器和光纤激光器。DFB激光器因为体积小、驱动简单、线宽能做到几百kHz到几MHz,是实验室搭建QKD链路的性价比之选。
为什么要在意线宽?因为非平衡干涉仪的两臂之间存在一个时延差Δt,同一光脉冲分成两路之后,要经过不同长度的光纤再干涉。如果激光器的相干时间小于Δt,两路光在第二个耦合器处叠加时已经不再相干,干涉条纹就会消失。粗略估计,线宽Δν要远小于1/Δt。比如时延差取5ns,对应1/Δt是200MHz,那么线宽只有远小于200MHz才能保证干涉清晰。常用DFB激光器的线宽通常在MHz量级,完全够用。
另外,波长建议优先选1550nm。一个是这个波段在光纤里的损耗最低(约0.2dB/km),有利于后续扩展到长距离;另一个是1550nm的InGaAs单光子探测器技术最成熟,门控模式、暗计数等指标都能满足QKD需求。1310nm虽然色散更小,但探测器选项要少很多。
2.2 衰减链路怎么搭:从毫瓦到单光子
从宏观光强到单光子水平,衰减不是“随便串几个衰减器”这么简单。我最初只用一个可调衰减器,结果发现衰减量一大,输出功率就不稳定,插损波动对计数率影响极其明显。后来改成二级衰减结构:先用一个6dB到10dB的光衰减器把功率粗调到安全范围,再用一个高精度可调衰减器(0到60dB)做精确调整,最后再加一个固定衰减器兜底,确保探测器端绝对不会因为意外出现强光。
衰减器选型要注意两点:一个是回波损耗,光纤连接器端面反射回来的光会干扰光源稳定性,所以单模光纤链路里最好加隔离器;另一个是精度和重复性,实验中需要记录不同诱骗态强度,衰减器至少要能稳定复现几个强度档位。
关于“衰减到单光子水平”还一个问题,就是衰减后的脉冲仍然服从相干态的泊松分布,也就是说,即使平均光子数μ=0.1,依然有概率出现含两个以上光子的脉冲。这就是QKD系统设计里必须考虑诱骗态协议的原因——通过随机发送不同强度的光脉冲来探测光子数分裂攻击。实验室初步搭建时,可以先不管协议细节,但硬件上一定要预留调节强度的能力。
2.3 相位调制和强度调制:偏置点与控制电压
编码模块里,相位调制器是核心。常用的铌酸锂(LiNbO₃)相位调制器通过外加电场改变晶体折射率,从而改变光相位。驱动信号通常是几十伏量级的脉冲,需要配合一个偏置控制器稳定工作点。
这里有个很关键的实操点:相位调制器的半波电压(Vπ)随温度会有漂移,如果直接用固定电压驱动,编码相位会偏掉。我刚搭系统时遇到过误码率突然从3%涨到10%,排查很久才发现是因为实验室内空调温度变化,导致调制器偏置点漂移。解决办法有两个:一是给调制器装温控封装,二是定期校准偏置电压,用测试计数率最大/最小来反推相位零点。
强度调制器在某些方案里也需要,比如制备诱骗态时就要精确控制脉冲强度。但如果你只是在跑基础BB84,强度调制可以先不做,用固定衰减器也能凑合。不过一旦要验证更完整的协议,强度调制器就是绕不开的模块,建议在设计光路时就把它的插损预算预留进去。
2.4 脉冲时序和电驱动信号怎么对齐
光路子系统不光是光学器件,电信号时序同样直接影响编码质量。光源的触发信号、相位调制器的驱动信号、衰减后的脉冲到达Bob端的时间,这三者必须严格对应。我通常会用一个可编程延迟发生器来调对齐关系,先用示波器接快速光电探测器看脉冲序列,再逐级调整延迟值,让调制窗口正好套住光脉冲的顶部。
在实验记录里我还发现,调制驱动信号的上升沿对相位编码质量影响很大。如果上升沿太慢,光脉冲的一部分处于相位过渡区,等于同时存在两个相位,这会直接抬高误码率。所以驱动源的选择上,不要只盯着电压幅度,还要看压摆率(V/ns)。目前的商用脉冲源或者自制的雪崩晶体管驱动电路,只要上升沿能做到1ns量级,基本就不会成为系统瓶颈。
3. 解码端核心:不等臂干涉仪与相位编码的实现
3.1 不等臂马赫-曾德尔干涉仪的工作原理
相位编码的解码核心,是一台非平衡马赫-曾德尔干涉仪。它由一个分束器、一条短臂、一条长臂和一个合束器组成。光脉冲进入后分成两路,短臂一路先到合束器,长臂一路后到,于是在合束器输出端出现三个时间片:短臂-短臂的早片、短臂-长臂与长臂-短臂的重合片、长臂-长臂的晚片。其中重合片是两路光同时到达叠加形成的,相位差直接决定干涉结果是增强还是相消。
如果Alice端也有一个完全相同的非平衡干涉仪,情况会更直观。脉冲先经过Alice的干涉仪,被劈成早、晚两个时间片,传输到Bob的干涉仪后再一次被劈开。真正携带干涉信息的,是那个“早-晚”和“晚-早”重合的时间片。Alice和Bob的相位调制度不同,重合片输出强度就会不同,Bob端据此解码出0或1。
而BB84协议里的两个测量基,实现方式就是Bob端随机选择在长臂或短臂上施加0或π/2的附加相位偏置。如果Bob的基矢和Alice一致,重合片会呈现确定性的相长或相消;如果基矢不一致,结果随机,探测到两个输出端口的概率各占一半。
3.2 时延差怎么选:5ns还是10ns
不等臂干涉仪的关键参数是两臂的光程差,也就是时延差Δt。这个值不能太小,太小的话探测器的门控窗口和三个时间片会重叠,根本没法定提取重合片;也不能太大,太大会超出激光器的相干时间,干涉可见度下降。
具体到计算,你还需要考虑脉冲重复频率。如果重复频率是1MHz,那么脉冲间隔是1000ns,Δt取5ns到20ns都没有问题。如果重复频率提高到100MHz,脉冲间隔只有10ns,Δt就必须小于10ns,否则不同脉冲的时间片会串扰。我常用的起步参数是:重复频率1MHz,Δt=5ns。这样对应两臂光纤长度差大约1米(光在光纤中的速度大约是2×10⁸m/s,1米约5ns),在实验台上摊开完全可行,干涉可见度也容易保证。
需要特别说明的是,Δt=5ns时,三个时间片的间隔是5ns。如果Bob端单光子探测器的门宽是1ns,就能比较干净地把重合片挑出来。如果门宽太大,比如3ns以上,早片和重合片会混合,计数就会变得不可靠。所以探测器门控参数和干涉仪时延差必须联动设计。
3.3 法拉第镜结构:彻底告别偏振漂移
普通单模光纤里的偏振漂移是相位编码系统最大的敌人之一。虽然相位编码比偏振编码抗扰,但如果干涉仪两臂的光在合束点偏振方向不匹配,干涉可见度还是会大打折扣。早期方案是用保偏光纤做干涉仪,但保偏光纤价格高、熔接要求高,还要注意连接器角度对准,实验调试很痛苦。
更聪明的做法是采用法拉第镜结构,也就是所谓的“即插即用”方案。它的思想是:Bob端发一个强光脉冲到Alice,Alice用相位调制器调制后通过法拉第镜反射回来,返回光路的偏振态会被自动补偿到与入射方向正交,从而抵消光纤中的双折射扰动。这套方案的好处是信号光往返一趟,往返的相位噪声和偏振变化会自然抵消,干涉可见度相当稳定。
如果你只是在实验桌上搭单程链路,可以暂时不用法拉第镜,但必须给干涉仪加温控或者放在减震隔离的光学平台上。我曾经在普通实验桌上搭过一次,旁边有人走过,干涉可见度能掉好几个百分点。换成光学平台并盖上遮光罩之后,数据立刻稳定下来。
3.4 干涉可见度的测量方法
干涉可见度是衡量解码光路质量的核心指标,计算公式是V = (Imax - Imin) / (Imax + Imin)。测量方法很直接:不衰减到单光子水平,先用连续光或宏脉冲光送入系统,用快速光电探测器接收Bob端重合时间片的强度。然后缓慢改变Bob的相位偏置,看输出强度在最大值和最小值之间变化,据此计算出可见度。
做这一步调试时,强光下能看到非常直观的正弦干涉曲线。如果曲线对比度不够,先检查偏振;如果曲线有随机跳变,考虑机械稳定性和温度漂移;如果根本找不到正弦变化,多半是时间片没有对准,或者干涉仪两臂的光程差超出了光源的相干长度。我一般要求可见度做到95%以上再继续做单光子实验,否则后续误码率很难压下来。
4. 探测器、同步与整条链路的联调
4.1 单光子探测器选型:SPAD和SNSPD怎么取舍
1550nm波段最常用的单光子探测器是InGaAs/InP雪崩光电二极管(SPAD),工作在盖革模式下,增益极高,单个光子就能触发一次雪崩脉冲。它的优点是体积小、价格可控、不需要超低温系统,用热电制冷就能把工作温度降到-30℃左右;缺点是存在死时间、后脉冲概率,暗计数也比超导探测器高一个量级。
如果预算和实验室条件允许,超导纳米线单光子探测器(SNSPD)是另一个选择。它的时间抖动更小、暗计数率可以做到几十Hz以下,几乎不拖累系统误码率,但需要一套低温制冷系统,光耦合也更麻烦。对于入门级的“设计与实现”项目,SPAD完全够用,重点是学会合理设置门控窗口和死时间参数。
挑选SPAD时有几个指标要重点看:
- 探测效率:通常在10%到25%,越高越好。
- 暗计数率:在门控模式下用“每门暗计数概率”表示,比如1×10⁻⁵,对应1MHz门频约10Hz。
- 后脉冲概率:一般几%到十几%,需要通过足够长的死时间压制。
- 时间抖动:影响时间片区分,越小越好。
4.2 同步方案:让Bob知道光子什么时候来
单光子探测器不可能一直开着等待光子,那样暗计数和噪声会把信号完全淹没。实际方案是“门控探测”:只在光子预期到达的极短时间窗口内打开探测器。这就要求Bob必须通过一个同步信号,确切知道Alice发出的每个光脉冲什么时候到达。
最简单的同步方式是电同步:用一根电缆把Alice的触发信号送到Bob。实验室里几百米到几公里的距离问题不大,但距离一旦拉长,电信号的损耗和延迟就不太行了。更实用的方案是光同步:从同一时钟源分出一路强同步光(比如1310nm),在Bob端用高速PIN管恢复出电触发信号。同步光和信号光可以用波分复用器合/分,避免互相干扰。
我在调试时踩过一个坑:同步光电探测器的输出延迟会随光功率变化,而实验过程中光功率会因连接器微移产生波动,导致同步信号抖动,间接推高误码率。后来我把同步光功率调得较高,并给它加了一级限幅放大,抖动才稳定下来。初学者搭环境时,可以先给同步探测留出一路示波器观测口,方便随时看时序波形。
4.3 链路联调:从连续光到单光子逐级切换
整条链路的联调顺序,我建议按下面的思路来:
- 用连续光测试每个模块的插损和波形。
- 用脉冲光跑通整个光路,在Bob端用快速探测器扫时间,确认三个时间片的位置和幅度。
- 不加衰减,测干涉可见度,把相位偏置和时序调到位。
- 加入衰减,用单光子探测器替换快速探测器,开始看计数。
- 调整门控窗口,把重合时间片的计数率和暗计数比值调到最优。
- 最后才接入量子密钥分发协议软件,进行基矢筛选和误码率统计。
这个顺序的核心逻辑是:每一级都在上一级参数全部正常之后再往下走。我见过有人一上来就接单光子探测器,结果连光路通没通都不知道。先用强光确认干涉、再用弱光确认计数,一步一步来,问题定位会快很多。
4.4 链路损耗和计数率的对应关系
单光子实验阶段,你一定会算一件事:理论上应该每秒看到多少个计数,和实际计数器上的数差多少。以1MHz重复频率、μ=0.1、Bob端干涉仪通过率约0.3、探测器效率15%为例,有效探测概率大约是0.1×0.3×0.15=0.0045,也就是每1000个脉冲有4.5个计数,换算到1MHz就是4500个计数/秒。经过基矢匹配和重合时间片筛选之后,有效计数还会进一步减半。
如果实测计数率和理论估算差太多,先别怀疑协议,用强光分段测插损,找到损耗异常点才是关键。我会在干涉仪前后、衰减模块前后都留一个插拔的光纤跳线,方便随时用光功率计逐段测量,这样排查起来非常省时间。
5. 调试中的常见问题与排查技巧实录
5.1 干涉可见度上不去的四类原因
如果你发现干涉曲线对比度低,不要急着调相位调制器,先按顺序检查:
- 偏振失配:两路光在合束点偏振不一致。检查方法是在合束器前加偏振控制器,看可见度是否随偏振变化。如果是法拉第镜结构,直接看反射链路偏振补偿是否正常。
- 时间片重叠:重合片和早/晚片没有完全分开,探测器或示波器看到的是混合信号。检查时延差,确认两臂光纤长度差与设计值一致。
- 光源相干性不足:激光器线宽太宽,两臂光不能完全相消。可以尝试换成窄线宽激光器,或者缩短时延差。
- 机械/温度漂移:干涉仪两臂光纤受振动或温度影响发生微小形变,相位随机漂移。这通常表现为可见度读数缓慢波动,解决手段是温控封装和隔振平台。
5.2 计数率异常偏低,多半是时序问题
单光子计数率低,不是探测器坏了,而是门控窗口没和光子对上。我的排查套路是:把整个系统恢复到“强光脉冲模式”,用快速光电探测器看Bob端的时间波形,确定重合片到达探测器的时间点;然后切换到单光子探测器,用延迟发生器一个一个扫描门控延迟值,观察计数率变化,找到最优点。
常见误区是只调延迟不调门宽。门宽太宽会让后脉冲和暗计数混进来,太窄又会错过光子信号。我通常在1ns到3ns之间来回试,选择计数率/暗计数比值最大的门宽,而不是单纯追求计数率最大。
5.3 误码率偏高压不下来的几个隐藏因素
QKD误码率高了,第一反应可能是干涉可见度不好,但如果可见度已经调到95%以上,问题往往出在更隐蔽的环节:
- 相位调制器的驱动电压失真:检查脉冲平台的平坦度,如果有过冲或者振铃,光子就可能被编码成错误相位。
- 暗计数占比过高:每1MHz门频只有几十个暗计数时影响不大,但如果光源衰减过多、有效计数率太低,暗计数占比就会飙升,误码率自然上去。
- 后脉冲干扰:死时间设置太短,上一个光子的雪崩脉冲残留到下一个门控窗口,产生虚假计数。把死时间调到几十纳秒量级再看误码率。
- 时间片串扰:如果Bob端干涉仪的时延差和探测器的门宽设计不匹配,早片和重合片会在时间上部分重叠。这种问题仅凭计数率看不出来,需要做时间相关性测量才能发现。
5.4 我用顺手的几件调试工具
最后分享几个我常年放在实验台上的东西,都是不起眼但能救命的:
- 光功率计加上一个可插拔的FC/APC跳线,用来逐段测插损。
- 一个快速光电探测器(带宽2GHz以上),配合示波器看脉冲波形和时间片。
- 一个可编程延迟发生器,用来微调所有触发信号。
- 标签纸和记号笔,给每一根光纤和同轴线做标记。这个看似废话,但光路调乱之后,没有标签简直寸步难行。
量子密钥分发系统的设计与实现,看起来是个高深的课题,但落到光路子系统上,其实就是把“光的产生、编码、衰减、干涉、探测”五个环节一个个抠稳定。哪一环飘了,整条链路的误码率就会诚实地反映出来。国内外做QKD的组多,真正能稳定跑出漂亮误码率的系统,无一不是在光路稳定性上下了死功夫。希望这篇拆解能让你少走点弯路。