ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SPAD单光子雪崩二极管:原理、工艺与dToF工程实践

SPAD单光子雪崩二极管:原理、工艺与dToF工程实践 这几年只要聊到激光雷达、手机里的dToF测距、扫地机避障甚至医疗影像里的PET探测器都绕不开一个词SPAD。很多人第一次听到“单光子雪崩二极管”这个名字会觉得这东西是不是特别玄乎毕竟“单光子”三个字听着就离普通工程很远。但其实SPAD本质上就是一个工作在盖革模式下的PN结二极管只是它能把单个光子触发出来的信号放大到后端无需模拟放大器就能直接处理的数字脉冲。我最近在做一套dToF参考设计评估也经常被合伙人问到“iToF到底是用CMOS还是SPAD工艺”——这个问法本身就有坑但恰恰是大多数人搞混的地方。这篇不打算写得像教科书。我尽量用实际调系统时的大白话把SPAD的原理、工艺选型、关键参数、读出电路还有我在真实项目里踩过的一些坑一次讲清楚。不管你是刚开始做光学模组的硬件工程师还是正在选ToF方案的算法同学这篇文章应该都能帮你少走点弯路。1. SPAD到底是怎么工作的为什么能探测单光子1.1 “单光子”说的是触发能力不是一次只能收一个光子SPAD的英文全称是Single Photon Avalanche Diode对应的中文就是单光子雪崩二极管。先说一个最常见的误解SPAD并不是说它一次只能接收一个光子也不是说它内部只处理一个光子。所谓“单光子”是指它具备让单个光子触发一次宏观响应的能力。你可以把它理解成一副码好的多米诺骨牌随便轻推其中一张整排牌都会倒下去。光子做的事情只是碰了其中一张牌至于后面整个牌面倒塌的动能完全来自系统本身。这种特性和普通光电二极管PD有本质区别。普通PD在弱光下输出的电流是纳安甚至皮安级别的后端必须有跨阻放大器还得做噪声匹配否则信号早就淹没在系统噪声里了。线性模式的APD虽然有点内增益但增益大概几十到几百倍输出的仍然是模拟量。SPAD不一样它直接输出一个标准数字脉冲这个脉冲的幅度远大于任何微弱模拟信号后端接个TDC或者计数器就能干活整个模拟链路的复杂度大幅下降。所以做系统的人常说SPAD最大的意义不是“探测能力多强”而是把一个原本很头疼的模拟测量问题变成了一个数字脉冲计数和时间测量问题。这个思路上的转变贯穿了后续所有应用方案的设计逻辑。1.2 盖革模式超过击穿电压一个载流子引发“雪崩”要真正理解SPAD的工作原理得回到二极管的击穿现象。普通二极管反向偏置时耗尽区里存在电场光照产生的电子-空穴对被电场扫过形成微弱反向电流。电场不够强时载流子穿过耗尽区基本不会和晶格发生碰撞电离电流和光强基本成线性关系这就是PD的工作模式。APD把反向偏置抬高到接近击穿电压但没超过它。这时载流子在电场作用下有一定概率发生碰撞电离像滚雪球一样产生次级载流子电流被放大几十到几百倍。因为还没达到击穿条件所以电流大小仍然和光强成比例这叫线性雪崩模式。SPAD干脆把反向偏置抬高到击穿电压以上这段超过击穿电压的电压叫过偏压excess bias。在这种状态下哪怕耗尽区里只出现一个载流子它也会被强电场加速到足以碰撞电离出新的电子-空穴对次级载流子再继续碰撞电离形成倍增率极高的雪崩电流。整个过程一旦触发就停不下来直到外部电路介入把电流淬灭。SPAD的增益能轻松达到10^6以上所以单个光子触发的电流足以直接驱动后端数字电路完全不需要模拟放大器。这里有个很关键的点SPAD的科学本质是把一个概率极低的“光子吸收事件”放大成一个高可靠性的“数字事件”。它会触发就是会触发不会出现“信号很弱再等等看”的情况。这个确定性是SPAD能被广泛用于测距和光子计数的底气。1.3 淬灭和恢复为什么SPAD能连续不断探测SPAD工作在高过偏压状态下一旦触发雪崩电流会一直流下去。如果不人为切断它就保持导通状态后续的光子来了也无法再触发新的雪崩。所以SPAD必须配有淬灭电路把一次雪崩“关掉”让器件恢复到能探测下一个光子的状态。最简单的淬灭方式是串一个无源淬灭电阻通常是几百千欧到兆欧级别。雪崩电流流过电阻时产生压降导致二极管两端电压掉到击穿电压以下雪崩自然停止。然后电容通过电阻充电器件逐渐恢复到能再次探测的状态这个过程的时间常数就是死时间。死时间内到达的光子全部丢失所以死时间越长SPAD能承受的最大计数率越低。高性能系统里会用有源淬灭电路检测到雪崩前沿后立即把偏置拉到击穿电压以下再用快速逻辑恢复把死时间从几十微秒压到几纳秒。淬灭速度直接影响SPAD在强光场景下的性能比如近距离测距或者环境光很强时如果死时间太长回波光子来了你还在“休息”测距数据就会稀稀拉拉甚至完全丢失。能连续探测才能谈得上做直方图统计和飞行时间测量。这也是为什么SPAD不是实验室里的孤品而是能大规模用在消费电子里的核心原因。2. SPAD与CMOS工艺iToF到底用的是CMOS还是SPAD2.1 问法就不对SPAD是器件结构CMOS是工艺平台网上经常有人问“iToF是用CMOS还是SPAD工艺”我第一次看到这个问题时愣了一下因为他把两个不同维度的东西放在同一层面对比了。SPAD是一种具体的器件结构描述的是二极管怎么工作、怎么触发雪崩CMOS是一种半导体工艺平台描述的是用什么产线、什么设计规则把电路做出来。SPAD完全可以在CMOS工艺平台上制造而且当前最主流的方向就是CMOS SPAD。你手机里的dToF传感器、很多车载雷达里的面阵SPAD大多都是基于CMOS工艺制造的有的还用了背照式BSI和3D堆叠技术。所以“SPAD工艺”和“CMOS工艺”不是二选一的关系反而是相辅相成的用CMOS产线做SPAD是消费电子时代SPAD能大规模落地的关键。为什么业界的SPAD都要往CMOS上靠原因很简单。第一SPAD输出的是数字脉冲它天然和数字化逻辑电路契合用CMOS工艺可以在同一颗芯片上集成TDC、直方图引擎、甚至完整的微控制器做成一个SoC省掉一堆外部芯片。第二CMOS产线成熟成本低良率可控消费电子量级才能真正接受这个成本。所以当你在选型时听到有人说“我们是SPAD工艺”或者“我们是用CMOS做的”不要直接横向比较。真正要问的是你们的SPAD像素是在哪家代工厂、哪一代工艺上实现的背照式有没有做像素间的隔离怎么处理的这几个问题在后面的内容里都会展开。2.2 主流iToF传感器通常用CMOS工艺但SPAD也能做iToFiToF间接飞行时间法的原理是发射连续或脉冲调制的红外光通过检测反射光和发射信号之间的相位延迟来反推距离。它对像素的核心要求是能高速、线性、低噪声地采样光强波形通常在几个相位窗口里分别积分能量再通过反正切运算算出相位差。目前市面上的主流iToF传感器尤其是手机后摄ToF模组、扫地机里的ToF避障模组很多使用的都是CMOS工艺下的专用ToF像素解调像素。这类像素不是SPAD它是专门为iToF设计的像素结构在CMOS图像传感器产线上制造强调线性度和调制频率。缺点是在弱光下灵敏度有限无法做到单光子量级的探测。那SPAD能不能做iToF答案是能而且已经有不少产品在这么干。SPAD输出的是光子到达事件的时间戳序列只要把这些事件和调制信号做相关运算就能得到相位信息本质上也能算出距离。有些芯片支持混合模式一个像素既支持dToF模式也支持iToF模式靠配置寄存器来切换。这种芯片在近距测距、手势识别这种短距离高精度场景里很有优势。但回到量产成熟度目前纯SPAD iToF还不是主流。原因是SPAD单个像素面积偏大做高分辨率阵列时成本高同时SPAD的响应非线性和死时间会引入相位误差需要复杂校正。所以在“iToF用CMOS还是SPAD工艺”这个问题上最中肯的回答是主流iToF传感器用的是CMOS工艺SPAD也是CMOS工艺上能做的一种器件但它的主场在dToF和其他光子计数应用不是替代传统iToF像素。2.3 背照式、深沟槽隔离、3D堆叠SPAD工艺的三个关键细节SPAD在CMOS工艺上能造出来不代表所有工艺都能把SPAD造好。业界能把SPAD做到量产级别的大多是在背后下了不少苦功核心落在三个东西上。第一个是背照式BSI。SPAD的感光区是耗尽层如果光从正面入射会被金属布线、多晶硅栅、介质层一层层挡住实际到达耗尽区的光子比例很低。为了提升光子探测效率PDE现在高性能SPAD多采用背照式结构芯片衬底被减薄光从芯片背面打进来直接进入耗尽区。这样做能把PDE从正面入射的百分之十几提升到百分之三五十。做系统选型时看到一票SPAD是前照式FSI的话它的弱光性能先打个问号。第二个是深沟槽隔离DTI。SPAD阵列里每个像素都工作在过偏压状态某个像素雪崩时会产生大量红外光子这些光子可能穿到旁边像素里触发假计数这叫光学串扰。另外电学串扰也会通过衬底传播。为了隔离这些串扰芯片设计上要在像素之间挖出深沟槽填入金属或氧化物把相邻像素隔离开。沟槽的深度、宽度、填充材料都直接影响串扰指标这也是SPAD阵列性能拉开差距的地方。第三个是3D堆叠。消费电子要做SPAD阵列像素做小之后没有足够面积放TDC和计数器。主流方案是分成两片晶圆一片做背照式SPAD像素阵列一片用先进工艺做TDC、直方图、信号处理逻辑然后用混合键合工艺垂直堆叠起来。感光层和数字层各用各的工艺互不拖累。这就是为什么有些SPAD传感器能做到百万像素级别分辨率的原因。选型时关注一下芯片是单芯片还是3D堆叠结构能侧面判断它是走量的大厂方案还是实验室级别的验证品。3. 拿到一颗SPAD该怎么用参数、读出和最小测距链路3.1 SPAD最重要的五个参数看懂了才算入了门真正开始接触SPAD之后你会发现它的数据手册不像普通传感器那样列一堆线性度、量子效率、暗电流而是在强调另外几个参数。我整理了一张表方便对照参数全称/含义对系统的影响消费级典型量级PDE光子探测效率入射光子中被转换为有效计数的比例直接决定探测距离和最低可测光强10%~30%DCR暗计数率无光照时单位时间产生的噪声脉冲数量决定系统噪声底和最小可测信号几十到几千cps后脉冲概率一次雪崩后陷阱载流子释放导致的假脉冲概率导致测距偏差和误检5%死时间一次雪崩发生后探测器无法响应的时间长度限制最大计数率10ns~100ns时间抖动光子到达时刻与输出脉冲沿之间的随机误差决定测距精度50ps~500ps FWHMPDE和DCR是一对矛盾。加大过偏压PDE会提高但暗计数率也会跟着猛涨。因此选SPAD不能只看峰值PDE要看“在给定DCR条件下能做到多高的PDE”。这个综合指标才反映真实系统里的表现。死时间和抖动则更多与像素设计和淬灭电路有关。对dToF来说抖动直接决定距离精度。实际系统中抖动不只是SPAD贡献的还有激光器触发抖动、TDC时钟抖动、供电噪声引入的随机误差。做系统链路预算时要把所有抖动源的均方根都加起来而不是只看SPAD手册上有多少ps。等你把链路搭起来再发现抖动超了返工成本很高。3.2 读出电路TDC怎么把光子时刻变成距离SPAD输出的是数字脉冲下一步要把这些脉冲的到达时刻测出来。最核心的电路就是TDC全称时间数字转换器。TDC的本质是个高精度计时器把两个事件之间的时间间隔量化成数字码分辨率能做到几十皮秒到几百皮秒。典型dToF读出流程大概是这样的激光器发射光脉冲的同时产生一个START信号送给TDC。回波光子经过镜头和滤光片到达SPAD触发雪崩脉冲TDC收到STOP信号。TDC输出一个时间码代表光子从发射到接收的飞行时间。距离 光速 × 飞行时间 ÷ 2。TDC的设计里分辨率和量程是核心矛盾。分辨率越高测距精度越好但高分辨率TDC通常需要高速时钟或延迟链功耗和面积都不小。量程要匹配应用扫地机测十几米车载激光雷达要测几十米到两百米量程短了测不到远距离目标量程长了又浪费资源。对于小阵列或单点SPAD更常见的做法是TCSPC时间相关单光子计数。每个激光发射周期只记录一个时间戳几百上千次发射累积成直方图再在直方图里找峰就能从强噪声里提取出微弱回波信号。这就是手机dToF测距模组的底层逻辑单次测量不可靠但统计累积能解决问题。3.3 一个最小配置的SPAD测距链路和改进方向纸上谈兵容易真要让SPAD工作起来需要完整链路。假设我们要做一个室内用的单点SPAD测距模块硬件上大致包括一颗940nm VCSEL激光器和驱动电路一片集成淬灭电路和TDC的SPAD芯片一颗MCU或FPGA负责同步、直方图累积和峰值提取以及一组光学组件——发射端加扩散片提高出光均匀性接收端加窄带滤光片压低环境光干扰。主循环的伪代码大概长这样// 伪代码单点dToF测距主循环 init_tdc(1ns分辨率); init_laser_pulse(10ns_width, 100kHz_repeat_rate); uint32_t hist[HIST_SIZE] {0}; for (int i 0; i PULSES_PER_FRAME; i) { t_start generate_laser_trigger(); t_stop tdc_capture(); // 回波光子时间戳 hist[t_stop - t_start]; // 累积时间戳 } uint32_t peak_bin find_peak(hist); float distance_m (peak_bin * 1e-9 * 3e8) / 2; // 1ns bin这段逻辑看着简单但真正工程化时我踩过的坑一个都不少。比如激光触发的信号必须和TDC的起始信号严格同源否则激光本身的发射延时会变成固定误差偏移你测出来的距离会整体偏大或偏小。这种误差不是靠提高统计次数能解决的必须在电路或代码里补偿。再比如直方图峰提取。现实中直方图往往不是只有一个峰环境光会产生一个宽肩膀近距离有玻璃或者镜面反射时还会出现多个峰。最简单的取最大值策略经常误判。我自己的做法是先估计背景噪声也就是取直方图两侧的样本做平均然后做底噪扣除最后对候选峰做加权重心计算。这套流程做下来测距鲁棒性提升非常明显。4. 真实项目里SPAD系统常见的几个坑4.1 暗计数率随温度飙升不做散热和标定会翻车DCR可以说是SPAD的头号噪声源。它的物理机制是热激发载流子随机触发雪崩温度越高热激发概率指数上升。我测试过一套SPAD原型系统常温23度时DCR大概200cps放进60度高温箱才一会儿DCR直接飙到上万cps。直方图噪声底座抬高了两个数量级原来能稳定测到8米后来3米都勉强。对策分三个层面。第一是散热SPAD附近尽量别放高功耗电路PCB上可以做热隔离槽芯片底部加散热铜皮。第二是算法标定在出厂前记录不同温度下的DCR基线运行时用温度传感查表补偿。第三就得靠芯片级工艺了优化结结构降低暗计数但这个在系统阶段已经改不了只能选型时关注。大多数系统集成商能把前两条做好就已经很能打。4.2 后脉冲你眼前看到的“幽灵峰”可能不是目标后脉冲是SPAD特有的噪声机制雪崩产生的大电流会在耗尽区留下载流子陷阱这些陷阱中的载流子经过几十纳秒到几微秒的延迟后释放出来再次触发一次雪崩。从直方图上看就是真实回波峰后面还跟着一串间距相等、幅度递减的小峰白天看着就像幽灵一样。处理后脉冲有硬件和软件两种路线。硬件上减少死时间可以让陷阱载流子在释放前就被淬灭掉或者做多光子抑制电路在时间窗口内只认第一个到达事件。软件上可以标定后脉冲的时间分布然后从直方图里做逆卷积把假峰减掉。实际项目里后脉冲在低温下更明显所以散热同时也有助于抑制这个问题。4.3 阵列串扰像素之间会互相“传染”单点和迷你阵列SPAD时串扰问题不明显一旦做面阵像素间距小到几十微米串扰就藏不住了。最典型的现象拿强光照射某一个像素旁边的像素暗计数明显变多成像上形成一圈光晕距离图出现颗粒状噪声。串扰分两种。光串扰是SPAD雪崩区发射的近红外光子跑到旁边像素被检测到电串扰是过偏压波动通过衬底耦合到邻像素。设计上最有效的抑制措施就是前面提到的深沟槽隔离DTI。选型SPAD面阵芯片时一定要问数据手册上有没有串扰参数。如果连串扰测试结果都没有量产阶段风险会非常大。4.4 SPAD测试环境和普通传感器完全不一样很多人第一次搭SPAD测试台还在用之前测普通CIS传感器的暗室结果测出来的DCR数据完全不能看。SPAD对测试环境的要求苛刻得多哪怕是门缝一点漏光测试数据就会报废。环境要求包括一个不透光的金属暗箱内部不要用黑布黑布挡不住近红外电接口尽量采用盲插减少开孔供电纹波要压得很低否则SPAD暗计数会给你颜色看。标定PDE也是一件容易出错的事。PDE的标定需要已知强度的光源和经过校准的功率计还要仔细计算光学路径损耗、窗口片透过率、芯片表面反射率。我见过有人把PDE测出59%理论极限都到不了最后发现是功率计计算公式里的辐照面积写错了修正后才回到28%。SPAD参数测试前先把误差链路整体盘一遍再动手无硬件效率反而更高。4.5 直方图处理算法选不好会浪费器件一半的性能直方图看起来只是“找峰”实际工程化时比想象中复杂。真实回波分布往往是环境光噪声底座加上信号峰户外逆光下环境光强度可能比回波信号高几个数量级。这时候单纯增加激光功率也不一定有用因为SPAD本身有最大计数率限制环境光把时间窗口填满了回波计数就会被压制。我自己常用的一套处理流程是先补齐直方图后50%的平均值作为背景估计再扣除底噪然后以噪声标准差几倍作为阈值筛选有效峰最后用质心加权代替直接取最大bin。这套流程不复杂但在变化光照下能大幅提升有效测距率。算法虽然不复杂但少了任何一步SPAD的能力都会被浪费一半以上。5. 选SPAD还是普通ToF像素给你一份工程判断清单5.1 按距离、环境光和应用场景来选别盲目追新如果你正在规划一个ToF方案第一件事不是纠结“iToF用CMOS还是SPAD”而是列需求做比较。我整理了一个简单的方向表应用典型测距范围环境光强度精度要求推荐方向手机后置对焦/测距0.2m~10m中高中等单点或小阵列dToF SPAD扫地机避障0.1m~8m低中中等SPAD dToF或iToF均可车载激光雷达0.1m~200m极高高SPAD面阵或SiPM工业料位计1m~50m中高SPADTCSPC手势识别/AR0.1m~1m中高传统iToF像素更成熟短距离、高精度的场景SPAD天然适合做dToF中距离但希望像素规模大、成本低的场景传统iToF像素反而更有优势。选型时还要记得SPAD是数字器件天然适合低功耗和快速开关但它再强也没法弥补发射功率和光学口径的物理限制。整条链路一起核算才不会给后面埋雷。5.2 评估SPAD供应商时我一般会问三个问题联系SPAD供应商时光看PPT里的理想参数远远不够。我通常会直接问三个问题用来快速筛掉预研团队你们SPAD量产的PDE是在什么过偏压、什么温度条件下测的有没有高低温曲线和批量分布数据DTI结构贯穿了整个外延层还是部分贯穿有没有实测的阵列串扰数据死时间和抖动是在芯片内部量测、还是系统级量测测试用的光源波长是多少这三个问题看起来简单但能逼着对方交出真实数据。真正成熟的SPAD供应商会坦率告诉你测试条件、批次稳定性和温度漂移范围而不是只给一个光鲜亮丽的典型值。工程选型路上数据手册里的典型值只是起点最终要看的永远是分布和边界。6. 最后聊点实在的这几年做了不少和光子探测相关的系统我越来越觉得SPAD最大的价值不在于把“单光子探测”变成什么玄乎的黑科技而在于它把一项原本非常困难的模拟测量变成了数字计数。你不再需要纠结微弱电流的放大噪声只需要关心脉冲有没有来、什么时候来。整个系统的设计思路跟着变了从运放电路设计转成了时间测量和统计信号处理。如果你正准备入坑我的建议很直接先从一颗单点SPAD加带TDC的评估板开始用最简单的直方图把原理跑通再去碰阵列和复杂时序。别一上来就搭几百像素的面阵那会把所有问题都搅在一起出了问题根本分不清是光学、电路还是算法在捣鬼。最后分享一个非常实用的小技巧做SPAD系统调试时给激光触发和TDC起始之间留一个可调的延迟参数。这个参数可以当“时间窗口平移”用调试时快速判断直方图里的峰是系统噪声还是真回波。我至今觉得这是排查SPAD系统异常最快速有效的工具。SPAD这块以后还会有不少新东西出来背照式、3D堆叠、低噪声工艺包括把SPAD塞进更紧凑的消费级模组里每一处都有大量工程细节可以挖。但不管技术怎么演进“把弱到极致的光信号变成可靠数字事件”这个核心逻辑始终不会变。希望这篇基于真实经验写的东西能让你在选型和调参的时候少绕几个圈。
返回列表