PN结

需要满足两个假设:

  • 玻尔兹曼分布,每一个半导体区域都是非简并半导体;
  • 完全电离,忽略温度对PN结的影响

PN结的基本结构

P型半导体:主要载流子是空穴(通过掺入受主杂质,如硼)

N型半导体:主要载流子是电子(通过掺入施主杂质,如磷)

PN结是由P型半导体和N型半导体紧密结合而形成的半导体结,分隔p区和n区的交界面为冶金结

Snipaste_2025-09-14_20-20-59

耗尽层

在结区附近,由于电子和空穴相互扩散并复合,N区留下正电荷,P区留下负电荷,形成一个几乎没有自由载流子的“耗尽层”

假设均匀掺杂并且空间电荷区在边缘处快速截断

Snipaste_2025-09-14_21-00-31

在空间电荷区的电荷密度则可以表示为:
$$
\begin{aligned}&\rho (x)=-eN_a,\quad -x_p<x<0\
&\rho (x)=eN_d,\quad 0<x<x_n
\end{aligned}
$$
根据电荷守恒需要满足 $N_ax_p = N_dx_n$

空间电荷区宽度$W=x_p+x_n$,结合泊松方程可以得到结果:
$$
W=[\frac{2\varepsilon_sV_{bi}}{e}[ \frac{N_a+N_d}{N_aN_d} ]]^{1/2}
$$

内建电势

假设PN结两端没有外加电场,那么整个半导体系统的费米能级应该处处相同,但是p区和n区内导带和价带的位置随着费米能级的变化而变化,所以空间电荷区内的导带和价带会发生弯曲

Snipaste_2025-09-14_20-25-25

n区的电子在进入p区的过程中会遇到一个势垒,阻碍电子继续扩散,扩散与漂移达到平衡后留下的电势差称为内建电势差,记为$V_{bi}$
$$
V_{bi} = |\phi_{Fp}|+|\phi_{Fn}|
$$
n区电子浓度可以表示为:
$$
n_0 = N_c\exp[\frac{-(E_c-E_F)}{kT}] = n_i\exp[\frac{E_F-E_{Fi}}{kT}]
$$
在完全电离的情况下平衡电子浓度(多数载流子浓度)几乎等于施主浓度 $n_0=N_d$

解得
$$
E_F-E_{Fi}= {kT}\ln \frac{N_d}{n_i}
$$
同理
$$
E_{Fi}-E_F={kT}\ln\frac{N_a}{n_i}
$$
$\Delta E = eV$,所以PN的内建电势差大小为
$$
V_{bi}=\frac{kT}{e}\ln(\frac{N_aN_d}{n_i^2})
$$

外加电势

在已有的内建电势基础上,如果在PN结两端增加一个电压值会导致不同的行为

Snipaste_2025-09-14_21-16-21

如果将正极与n区连接(反偏),那么外加电场与内建电场的方向相同,这导致扩散运动更加受限,因此PN结内几乎没有电荷的流动,耗尽层的厚度增大

如果将正极与p区连接(正偏),那么外加电场与内建电场的方向相反,减弱了内建电场的阻碍作用,使得扩散运动加剧,因此有电荷流动的区域更多了,耗尽层的厚度减小

电流

漂移电流 扩散电流
成因(驱动力) 外电场或内建电场 浓度梯度
物理本质 受力定向移动 随机运动的统计结果
方向 电子p→n 电子n→p
典型场景 反向偏压下的二极管电流 正向偏压下的二极管电流
与欧姆定律关系 遵循欧姆定律 不遵循欧姆定律

漂移电流(与外加电场关系密切):
$$
J_{drift}=en\mu_nE+ep\mu_pE
$$
其中$\mu_n,\mu_p$为电子/空穴的迁移率

扩散电流(与PN结属性相关):(电子带负电正,负号抵消,空穴需要带负号)
$$
J_{diff}=eD_n\frac{dn}{dx}-eD_p\frac{dp}{dx}
$$
其中$D_n,D_p$为电子/空穴的扩散系数,$\frac{dn}{dx}/\frac{dp}{dx}$代表浓度梯度

正向偏置下:外加的正向电压会削弱内建电场,这使得多数载流子的扩散变得更加容易,扩散电流急剧增加,并成为总电流的主要部分;漂移电流基本保持不变(因为它取决于少数载流子的数量),此时PN结的电流主要是扩散电流

反向偏置:外加的反向电压会增强内建电场,这极大地阻碍了多数载流子的扩散,使得扩散电流变得微不足道,电流主要由少数载流子在增强的电场下的漂移运动构成。此时PN结的电流主要是漂移电流,但这个电流非常小,也被称为反向饱和电流$I_0$

光电二极管

光电二极管原理

光电二极管是一种特殊设计的PN结,其核心功能是利用PN结的光电效应将光信号转换为电信号

为了有效地接收入射光线,光电二极管将其PN结的表面积设计得相对较大,电极则相对较小,此外,PN结的深度非常浅,通常小于1微米

当光电二极管暴露在光线下且光子能量 $h\nu>E_g$ 时,PN结中的价带电子会被激发到导带,产生 电子–空穴对

如果电子–空穴对出现在耗尽层或靠近耗尽层的区域,就会被内建电场(或外加反向偏置电场)迅速分离,电子拉向n区,空穴拉向p区,这些分离的载流子流向外电路,就形成了光电流$I_{ph}$

202509142209

一般情况下,光电流与入射光强成正比:
$$
I_{ph} = e\eta\frac{P_{opt}}{h\nu}
$$

  • $\eta $: 量子效率(有效分离的电子–空穴对与吸收光子数之比)

  • $P_{opt}$: 入射光功率

光电流的方向与二极管正向电流相反,所以二极管方程修改为:
$$
I = I_0(e^{qV/kT}-1)-I_{ph}
$$
绝大多数情况下光电二极管工作在反向偏置状态下,这是因为反偏电压增大可以使耗尽区变宽,载流子能在耗尽区内被电场迅速抽取,减少复合、提高量子效率,此时光电流更大,响应更灵敏
$$
I_{out} = I_{dark}+I_{ph}
$$
缺点:反偏电压增大也会导致暗电流增大,噪声增多

PIN光电二极管

PIN光电二极管是一种结构较传统PN光电二极管有所改进的光电探测器

为了克服PN结的局限,PIN二极管在PN结之间增加了一个几乎未掺杂的本征层(I层)

主要优势在于响应速度快、灵敏度高和暗电流低

  • 响应速度快:I层没有掺杂,电场分布比较均匀,能迅速将光生电子–空穴对加速漂移到电极
  • 灵敏度高:I层加宽了耗尽区,光子有更大几率在耗尽层内被吸收,提高了量子效率
  • 暗电流低:I层杂质和缺陷少,热激发产生的载流子少

APD雪崩光电二极管

PIN光电二极管已经解决了PN结的问题(耗尽层窄、响应慢),具备高速和高量子效率,但PIN没有“内部增益”,产生的光电流直接取决于光功率

在弱光检测(比如远距离光纤通信)中,信号电流可能非常微弱,需要额外的电子放大器,噪声就会成为限制

APD在PIN的基础上,在结区加很强的反向偏置电压(几十伏到几百伏)

光子进入耗尽层,产生电子-空穴对,在强电场作用下,电子和空穴被加速,动能大到足以在碰撞中再电离硅原子,产生新的电子-空穴对。新产生的载流子又被加速,继续产生二次电离。这个过程像“雪崩”一样连锁放大,因此称为雪崩倍增效应

优点:

  • 更高灵敏度:由于有内部雪崩增益,能探测更微弱的光信号
  • 信噪比提升:在前端直接放大光信号,减轻后级电路负担

缺点:

  • 响应速度下降:倍增过程需要时间,APD带宽一般比PIN低一些
  • 倍增噪声:高电场下热激发载流子也会被倍增 → 噪声上升

对比PIN和APD:

特性 PIN 光电二极管 APD 雪崩光电二极管
内部增益 有(10~1000倍)
工作偏压 低(几伏) 高(几十~几百伏)
灵敏度 中等
响应速度 高速 稍低于PIN(雪崩倍增需时间)
噪声 较高(倍增过程有噪声)
应用 一般光检测、光通信 长距离光纤通信,高灵敏度探测,激光雷达

光电二极管的性能指标

光电转换特性

响应度$R$:在特定波长的入射光照射下,光电二极管产生的光电流与入射光功率之比,单位A/W
$$
R = \frac{I_{ph}}{P} [A/W]
$$
衡量光电二极管对光敏感的核心指标,表示光电转换的宏观效率,随波长变化,通常会有一个峰值响应波长

量子效率$\eta$:产生的光电子-空穴对数量与入射的光子数量之比,无单位

表示光电转换的微观效率,越高表明器件内部的光电转换机制越有效,取决于波长和材料,典型硅光电二极管的$\eta \sim 70%- 90%$

是最典型的计算指标,它可以从响应度$R$和波长(λ)计算得出
$$
\eta = \frac{R\cdot h c}{e\lambda}\approx \frac{1240\cdot R}{\lambda} \times 100%
$$
1240的推导

$h$:普朗克常数 ($6.62607015 × 10^{-34} J\cdot s$)

$e$:元电荷 ($1.6\times 10^{-19}C$)

$\lambda$:以nm为单位,所以上下项均$\times 10^9$
$$
\frac{hc}{e} \times 10^9= \frac{6.62607015\cdot10^{-34}\times 3\cdot10^{8}}{1.6\cdot10^{-19}}\times 10^9 \approx 1240
$$
超过材料带隙后($\lambda > \lambda_c$(截止波长),$\eta \rightarrow 0$),响应度急剧下降
$$
\lambda _c = \frac{hc}{E_g}
$$
因为$E_g$的单位为eV,所以计算截止波长可以直接$1240/Eg$

材料 带隙Eg(eV) 截止波长(nm) 常见应用
Si 1.12 1100 可见光/近红外
InGaAs 0.75 1650 通信波段
Ge 0.67 1850 红外探测

光谱响应范围:光电二极管能够有效探测的光波长范围,通常定义为响应度下降到峰值一半时所对应的波长范围,决定了该二极管适用于哪个波段的应用

噪声特性

暗电流$I_d$:在无光照时,给光电二极管施加反向偏压时流过的电流,主要由热激发或缺陷引起

是光电二极管主要的内部噪声源,暗电流越小,探测微弱信号的能力越强

它对温度非常敏感,温度每升高10°C,暗电流大约增加一倍

噪声等效功率$NEP$:单位带宽下,当输出信号的信噪比SNR为1时,所需入射到探测器上的光功率
$$
NEP =\frac{I_{noise}/\sqrt {\Delta f}}{R}[W/\sqrt{Hz}]
$$
单位中的$\sqrt{Hz}$是因为噪声与测量带宽的平方根成正比

$NEP$值越小,说明探测器探测微弱光信号的能力越强,性能越好

噪声电流的来源主要有以下三类:

散粒噪声(Shot noise):来自光生载流子的量子统计特性,是基本的量子噪声
$$
i^2_{shot} = 2q(I_{ph}+I_{dark})\Delta f
$$
热噪声(Johnson noise或Thermal noise):来源于探测器和负载电阻$R_L$
$$
i_{th}^2 = \frac{4kT}{R_L}\Delta f
$$
1/f噪声:这种噪声在低频时非常显著,其功率谱密度与频率成反比

总噪声电流(均方根值):(主要考虑散粒噪声和热噪声)
$$
I_{noise} = \sqrt{i_{shot}^2 +i_{th}^2 }
$$

$$
NEP=\frac{\sqrt{2q(I_{ph}+I_d)\Delta f+\frac{4kT}{R_{L}}\Delta f}}{R}
$$

在低光功率下,探测器噪声主要由热噪声决定,随着光电流增大,散粒噪声成为主导

暗电流噪声在低温下可忽略,但在红外探测器中不可忽视

参数:$R_L=1k\Omega,T=300K,I_{dark}=1nA,\Delta f=1MHz$

202510051503

探测率$D^$:消除探测器面积对$NEP$的影响,便于比较不同尺寸探测器的性能而引入的归一化指标
$$
D^
= \frac{\sqrt{A}}{NEP}[cm\cdot \sqrt {Hz}/W]
$$
$A$是探测器的有效感光面积,$D^*$越大,探测弱信号的能力越强

响应速度特性

光电探测器接收到光信号时,产生光生电流,但由于结电容与负载电阻,输出电压不是瞬时变化的,而是一个RC滤波后的结果

电路模型:光电二极管 = 理想电流源 + 并联结电容 $C_j$ + 负载电阻 $R_L$

在频域中,系统相当于一个一阶低通滤波器
$$
H(f)=\frac{1}{\sqrt{1+(2\pi fR_LC_j)^2}}
$$
结电容$C_j$:光电二极管PN结的电容,与外接负载电阻共同决定了电路的RC时间常数,从而影响响应速度,结电容越小,响应速度越快

在反向偏置应用中,结的耗尽宽度增加,从而有效地降低结电容并提高响应速度

带宽(BW)$\Delta f$:指探测器的响应度下降到其最大值的$\sqrt 2$(约70.7%,即-3dB)时的调制频率
$$
\Delta f=\frac{1}{2\pi R_{L}C_{j}}
$$
小电容+小负载电阻→更高带宽

带宽越大,探测器能够处理的信号频率就越高,适合高速光通信、激光雷达等应用

响应时间$\tau_r /\tau_f$:从光信号到电信号的延迟,指器件对光强变化的响应速度,与结电容、外部负载阻抗$R_L$密切相关

带宽和上升时间之间有一个近似的换算关系,如果手册只给了其中一个,另一个可以通过计算估算
$$
\tau_r \approx \frac{0.35}{\Delta f} \qquad \Delta f\approx \frac{0.35}{\tau_r}
$$
实际参数参考:

参数 符号 典型值
负载电阻 $R_L$ $1k\Omega$
结电容 $C_j$ $10pF$
光电流幅值 $I_{ph}$ $10\mu A$
带宽 $\Delta f$ $\approx 15.9 MHz$

信噪比SNR

表达式:
$$
SNR = \frac{I_{ph}}{I_{noise}}
$$
弱光区域($RP_{opt}\ll I_{dark}$),噪声主要由暗流决定:
$$
{SNR}\approx\frac{RP}{\sqrt{2qI_{dark}\Delta f}}\propto P
$$
强光区域($RP_{opt}\gg I_{dark}$),噪声主要来自光生电流自身的散粒噪声:
$$
{SNR}\approx\frac{RP}{\sqrt{2qRP\Delta f}}=\sqrt{\frac{RP}{2q\Delta f}}\propto \sqrt P
$$
带宽增大,SNR同步降低

温度降低,噪声减少,SNR提高

  • 弱光时,加大光功率能显著提升SNR
  • 光功率越来越强后,SNR仍然增加,但增速减缓

总结表格

性能指标 单位 值越..越好 简单描述
响应度 $A/W$ 光电转换的宏观效率
量子效率 光电转换的微观效率
暗电流 $A$ 无光时的噪声
带宽 $Hz$ 能处理的信号最高频率范围
噪声等效功率 $W/\sqrt{Hz}$ 能探测到信号的最小光功率
比探测率 $cm\cdot \sqrt {Hz}/W$ 标准化的探测能力
材料 光谱范围 暗电流 速度 成本 特点与适用场景
可见到近红外(350~1100nm) 低(pA) 高速(小面积ps,常规ns) 成熟工艺,线性好,通用型
黑硅 可见到近红外(400~1200+nm) 低到中等(pA-nA) 中高速(ns) 中等 具有更高的量子效率,适用于低光照
锗Ge 近红外(800~1800nm) 高(~2–200 mA/cm²) 低速(ns-$\mu s$) 光纤通信,需低温操作
砷化铟镓InGaAs 近红外(900~1700nm) 低(pA-nA) 高速(ps) 中等 光纤通信主力,LIDAR
扩展型砷化铟镓 InGaAs 近红外(1000~2600 nm) 高($\mu A$) 高速 光谱分析,需要热电制冷
砷化锑化铟InAsSb 近红外至中红外 高($\mu A$-mA) 中低速 高温工作能力,适合 MWIR应用(气体探测、光谱、热成像等)
碲化镉汞MCT(HgCdTe) 近红外至中/远红外 高(温度依赖强) 中等到低速 非常高 最顶级的红外探测,通常需要制冷与复杂封装/校准

性能计算

常见手册参数包括:受光面积、响应度(典型值)、光谱响应范围、暗电流(最大值)、结电容

以滨松光子的S1226-5BK硅光电二极管为例

参数表如下:

参数名称 数据
受光面 $2.4 \times 2.4 mm$
光谱响应范围 $320\sim 1000nm$
最大灵敏度波长 $720nm$
响应度(典型值) $0.36A/W$
暗电流(最大值) $5pA$
上升时间(典型值) $0.5 \mu s$
结电容(典型值) 160pF
噪声等效功率(典型值) $2.5\times10^{-15} W/Hz^{1/2}$

有效接收面$A = 2.4^2 = 5.76mm^2=0.0576cm^2$

量子效率:(720nm处)
$$
\eta = \frac{1240R}{\lambda}=1240\times 0.36/720 = 62%
$$

计算比探测率
$$
D^* = \frac{\sqrt{A}}{NEP_{spec}} \approx 9.6\times 10^{13}cm\cdot \sqrt {Hz}/W
$$

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import numpy as np
from ipywidgets import interact, FloatLogSlider, FloatSlider

# --- 物理常数 ---
h = 6.62607015e-34 # 普朗克常数 (J·s)
c = 2.99792458e8 # 光速 (m/s)
q = 1.60217663e-19 # 基本电荷 (C)
k = 1.380649e-23 # 玻尔兹曼常数 (J/K)

# 受光面积,响应度,暗电流,结电容,负载电阻,光照功率,温度,波长,反向电压
def photodiode_analysis(A_mm2=5.76, R=0.36, Id=5e-12, Cj_pF=160, RL=1e3, P_uW= 10,
T=298, lambda_nm=720, Vb_mV=10):
# --- 单位换算 ---
A = A_mm2 * 1e-2 # mm² → cm²
Cj = Cj_pF * 1e-12 # pF → F
P = P_uW * 1e-6 # uW → W
Vb = Vb_mV * 1e-3 # mV → V

# --- 基本参数 ---
eta = 1240 * R / lambda_nm # 量子效率(简算)
tau_r = 2.2 * Cj * RL # 上升时间
BW = 0.35 / tau_r # 带宽 (Hz)
BW_str = f"{BW/1e6:.2f} MHz" if BW > 1e6 else f"{BW/1e3:.2f} kHz"

# --- 噪声计算 ---
Iph = R * P # 光电流 (A)
ishot = np.sqrt(2 * q * (Iph + Id) * BW) # 散粒噪声
itherm = np.sqrt(4 * k * T / RL * BW) # 热噪声
Inoise = np.sqrt((ishot**2 + itherm**2))

# --- 探测性能 ---
NEP = Inoise / (R*np.sqrt(BW)) # 噪声等效功率(W/√Hz)
D_star = np.sqrt(A) / NEP # 探测率 (cm·√Hz/W)
SNR = Iph/Inoise
SNR_dB = 20 * np.log10(SNR)

# --- 输出 ---
print("----- 光电二极管性能计算结果 -----")
print("\n--- 性能参数 ---")
print(f"光功率 P = {P*1e6:.2f} µW")
print(f"负载电阻 RL = {RL/1e3:.1f} kΩ")
print(f"结电容 Cj = {Cj_pF:.2f} pF")
print(f"光电流 Iph = {Iph*1e6:.2f} µA")
print(f"量子效率 η = {eta*100:.1f}%")
print(f"带宽 BW = {BW_str}")

print("\n--- 噪声与探测性能 ---")
print(f"散粒噪声 Ishot = {ishot*1e9:.3f} nA")
print(f"热噪声 Itherm = {itherm*1e9:.3f} nA")
print(f"总噪声 Inoise = {Inoise*1e9:.3f} nA")
print(f"NEP = {NEP:.2e} W/√Hz")
print(f"D* = {D_star:.2e} cm·√Hz/W")
print(f"SNR = {SNR:.2f} ({SNR_dB:.2f} dB)")


# 交互控件定义
interact(
photodiode_analysis,
A_mm2=FloatSlider(value=5.76, min=1, max=20, step=0.01, description='受光面积 (mm²)'),
R=FloatSlider(value=0.36, min=0.1, max=0.9, step=0.01, description='响应度 (A/W)'),
Id=FloatLogSlider(value=5e-12, base=10, min=-12 ,max=-6, step=0.1, description='暗电流 (A)'),
Cj_pF=FloatSlider(value=160, min=10, max=1600, step=1, description='结电容 (pF)'),
RL=FloatLogSlider(value=1e3, base=10, min=1, max=9, step=1, description='负载电阻 (Ω)'),
P_uW = FloatSlider(value=10, min = 1, max = 1000,step=1,description='光照功率(uW)'),
T=FloatSlider(value=298, min=77, max=300, step=1, description='温度 (K)'),
lambda_nm=FloatSlider(value=720, min=320, max=1200, step=1, description='波长 (nm)'),
Vb_mV=FloatSlider(value=10, min=1, max=100, step=1, description='反向电压 (mV)')
);

硅vs石墨烯

特性 硅 (Silicon) 石墨烯 (Graphene)
响应速度 ns~ps ps~fs
波长范围 350nm~1100nm(可见-近红外) 极宽(UV–可见–IR–THz)(紫外-中红外)
量子效率 高(可达80–95%) 单层低(~2–3%),需要光学谐振腔/波导耦合
暗电流 极低(pA–nA) 较高(μA–mA),噪声大
工艺成熟度 极其成熟,成本低 工艺尚不成熟,一致性差
主要应用 消费电子、太阳能电池、传统光通信 高速光通信、宽带光谱探测、前沿科学研究

CCD与CMOS

CCD

CCD全称是Charge Coupled Device(电荷耦合器件),是一种将光信号转换为电信号的半导体成像器件

工作可以分为四个主要过程:

  1. 光电转换:光照射到CCD表面后,光敏区内的硅吸收光子,激发出电子-空穴对,电子会被电场吸入势阱中,空穴则被排走,每个像素对应一个光敏单元

  2. 电荷积累(积分):在曝光时间内,电子被困在各自像素的势阱中,曝光结束后,每个像素中储存的电荷量代表了该像素的亮度

  3. 电荷转移(耦合):通过改变栅极电压,电子从一个势阱被推送到下一个势阱,所有像素的电荷依次沿列传输,再沿行移动,最后汇聚到输出放大器

    逐像素移送保证了极高的一致性和低噪声,但代价是读出速度受限

  4. 信号读出与放大:每个像素的电荷在输出端放大并转换为电压信号,再经过模数转换器(ADC)变成数字信号输出,最终形成图像数据

202510051737

根据电荷传输方式的不同,CCD可分为几种:

  • 全帧转移(Full-Frame CCD):整个阵列都是光敏区,需要机械快门控制曝光

    转移期间如果没有机械快门来阻挡入射光,会继续产生电子,导致拖影,损坏图像

    优点:感光效率高,噪声最低,结构简单;

    缺点:读出速度较慢,不能用于视频或快速拍摄

    6389311791916204761318908
  • 帧转移(Frame-Transfer CCD):传感器分为两个相等的部分:有源成像阵列和遮光存储阵列,曝光后整帧电荷被快速转移到存储区

    在读取存储区域时,光敏区可以立即开始集成下一帧,从而实现比全帧CCD更高的帧速率

    优点:无需机械快门,避免拖影,曝光和读出实现并行;

    缺点:存储区占据芯片面积,感光面积减少,成本与功耗高

    6389311795906633476230955
  • 交错转移(Interline CCD):每列像素旁有独立存储区,曝光结束后,电子迅速转移到相邻的存储区。存储区被遮光,因此可在下一次曝光时同时读出上一帧

    这种方式可以实现电子快门,无需机械部件

    优点:快速曝光控制,无拖影,读出速度快,支持视频帧率;

    缺点:光敏区被存储区挤占,填充因子降低(感光面积减少),需要微透镜引导光线集中到感光区

    6389311799526847239503801

微透镜的作用:当光线射入时,微透镜会把原本可能落在“非感光区”的光线重新聚焦到有效感光部分,有效光捕获率可以从 30–40% 提升到接近 90%

制作方式包括光刻+热重流,让光刻胶在加热下自然形成半球形,现代技术中也会用离子束刻蚀或纳米压印方法形成更精确的形状;透镜材质需具备高透光率、低吸收率,并能耐高温工艺

可以分为线阵CCD面阵CCD

  • 线状CCD一般只有一排或几排像素,用于颜色分离,不能一次获取整个画面,而是通过移动被拍对象(或移动CCD本身)逐行扫描图像,分辨率高但需要机械扫描系统

  • 面状CCD拥有二维像素阵列,可以一次性采集整幅图像,无需移动。快门打开时,整个二维像素阵列同时曝光,然后电荷被逐行读出,一次曝光即可获取完整图像,但读出速度相对较慢(现代CMOS已改善)

在光谱CCD中,想要的是光的能量分布,也就是不同波长的强度,就意味着它需要一个维度记录波长

在典型的光谱仪中,光线从狭缝(slit)进入,经过光栅或棱镜被色散开,按照波长展开成一条光谱

2c5def29-8af9-466d-84c0-95ccea2159bd

CCD上看到的不是整幅图像,而是一条光谱带,横轴是波长,纵轴(对应狭缝高度)几乎是恒定的,只包含那个点的少量空间信息

CMOS

与CCD一样,目标都是把光子变成电子信号

工作原理:

  1. 光电转换:光线经顶部微透镜和滤色片聚焦到光电二极管(与CCD类似),生成电子,电子被收集在电荷阱中,电荷数量与光强度成正比

  2. 电荷积累:电子在电荷阱中累积一段曝光时间

  3. 信号读出与CCD最大的不同,每个像素不仅有光敏区,还有读出电路

    像素电路通常由3~5个晶体管组成,称为3T/4T像素结构

    电荷被转化为电压信号,由像素内部的放大晶体管放大

    行列扫描电路按顺序选则每行像素,逐列读出,每个像素信号都在片上完成放大与数字化

  4. 信号处理:芯片上可以直接集成图像信号处理(ISP)模块,执行曝光控制、去噪、白平衡、Gamma校正等操作

常见像素电路的结构有两种:

  • 3T像素:复位晶体管、放大晶体管、选择晶体管

    结构简单,但噪声较大,灵敏度略低

  • 4T像素:在3T基础上增加一个转移门,可将电荷从光电二极管转移到独立的浮动扩散区,这让其能实现电子快门,并且支持低噪声读取(CDS)

    现代高端 CMOS 图像传感器几乎都采用4T架构

正照式CMOS(FSI)

早期结构,如刚刚所述,光线要穿过:微透镜;彩色滤光片;经过金属布线层(信号与供电线路);抵达光电二极管

问题在于金属布线遮光严重


背照式CMOS(BSI)

  1. 先在硅片正面完成所有电路制造(包括晶体管、金属布线等);
  2. 将晶圆与支撑基片粘合(防止在加工时破裂);
  3. 从背面化学机械抛光(CMP)或刻蚀,薄化硅基底,厚度降至几微米;
  4. 在背面重新沉积抗反射层、微透镜和彩色滤光片

光线从背面直接照入硅基底,先抵达光电二极管,再往下是电路层

光线不再被金属层遮挡,使得光子利用率提升50%以上

202510052103

堆栈式CMOS(Stacked)

堆叠式传感器将图像传感器和信号处理电路分离成两层晶圆

  • 上层:像素阵列——负责感光;

  • 下层:逻辑电路——负责信号放大、模数转换、缓存等;

两层通过TSV(Through-Silicon Via, 硅通孔)实现垂直连接

使用堆栈式技术,人们研究出了一种新的拜耳排列RGBW

其中,RGB对应常见的红绿蓝,W对应白,对亮度感光,这样传感器的低光感光能力就大大提升


制造 BSI 和 Stacked 传感器的工艺非常苛刻:

  • 硅片要薄到几微米,任何应力不均都会导致晶圆翘曲或裂纹;
  • TSV 互连要求纳米级精度,否则信号延迟和噪声都会显著上升;
  • 微透镜、滤光片、背照层的排列需与光路完全匹配,否则边缘像素会产生角度光偏差

对比

对比项 CCD CMOS
读出方式 电荷逐级转移(串行) 各像素独立读出(并行)
放大位置 芯片边缘的单一放大器 每个像素内置放大器
功耗
速度
噪声 低(因为共享放大器) 略高(因每像素独立放大)
成本 低,可大规模集成
集成度 仅感光部分 可集成ADC、ISP、控制电路
主要噪声来源 光子噪声、暗电流噪声 读出噪声、光子噪声
暗电流噪声、FPN(固定模式噪声)
优点 极高的图像质量和线性响应
噪声低,暗电流小
像素一致性好,适合科学级成像
低功耗、高速度
支持片上集成(SoC化),成本低
可电子快门、高速连拍
更适合移动设备
缺点 电荷逐级传输导致读出速度受限
功耗高、成本高
电源与驱动时序要求严格
电路复杂,制造良率要求高
噪声影响大

噪声模型

光子(散粒)噪声

光是量子化的,光子抵达感光区的数量是随机的,遵循泊松分布

即使光强恒定,单位时间内入射光子的数量也有统计波动

若平均光子数为$N_p$,则光子数的标准差为$\sigma_{ph}=\sqrt{N_p}$

信噪比SNR为
$$
SNR_{ph} = \frac{N_p}{\sqrt{N_p}} = \sqrt{N_p}
$$
光子噪声是信号相关噪声:信号越强,绝对噪声增大,但信噪比(信号质量)反而越好

在高亮度时,光子噪声是主要限制因素

无法通过电路消除,只能通过增加光通量或曝光时间提升SNR,长时间曝光或多张照片堆栈可以得到更纯净图像的根本原因

图像表现:亮部平滑,暗部颗粒明显

暗电流噪声

当没有光照时,热激发会在光电二极管中产生电子,暗电流随温度强烈变化,近似指数规律:
$$
I_{dark} \propto T^3 e^{-\frac{E_g}{kT}}
$$
注意:这里$I_{dark}$是指单位时间产生电子数量

暗电流的产生也是一个随机过程,类似于光子到达,同样遵循泊松分布

每单位时间积累的暗电荷数量$N_d=I_{dark}\cdot \Delta t$,与温度曝光时间密切相关
$$
\sigma_{dark} = \sqrt{N_d} = \sqrt{I_{dark}\cdot \Delta t}
$$
主要影响长曝光、高温条件下的成像,表现为热噪点或背景发光

可通过冷却或像素级暗场校正减弱

读出噪声

读出噪声来自电子信号转换链:光电二极管电荷 → 像素放大器 → 模拟缓冲 → ADC

每次读出图像,都会叠加一层固定的读出噪声,它是传感器的“底噪”

主要包含以下几种噪声机制:

  1. 热噪声:电阻产生的随机电压
  2. 1/f噪声:低频漂移噪声
  3. 采样保持噪声(kTC noise):电容复位时产生的随机电荷

数学模型(简化)
$$
\sigma_{read}^2 = \sigma_{amp}^2 + \sigma_{kTC}^2 + \sigma_{ADC}^2
$$
其中每一项都近似高斯分布(Gaussian),因此读出噪声总体服从正态分布

在图像的极暗区域或阴影部分表现为随机的、细密的“盐粒状”噪点(椒盐噪声)

主要影响极弱光、短曝光或高ISO(高增益)的情况

降噪手段包括:

  • 双采样去除kTC噪声(在像素复位后和曝光后各读一次,两次相减)
  • 避免过高的数字增益(ISO)
  • 多帧平均

固定模式噪声

FPN是空间不均匀性噪声:不同像素的响应、偏置电压、放大器增益略有差异

不是随机的,而是固定的结构性误差,在暗场或均匀照明下仍存在

分为两类:

  • Offset FPN(偏置型):零照度时的输出偏差
  • Gain FPN(增益型):对亮度响应不同

对于第 $i$ 个像素
$$
S_i=g_i\cdot N_p+o_i
$$
其中

  • $g_i$:增益误差
  • $o_i$:偏置误差

整个图像的噪声方差可表示为:
$$
\sigma_{F P N}^{2}=\sigma_{g}^{2} N_{p}^{2}+\sigma_{o}^{2}
$$
偏置误差主导暗场噪声,而增益误差主导亮场噪声

暗图中表现为“条纹”或“亮点”;均匀照明下表现为亮度不一致

校正方式:暗场帧减法、平场校正、像素偏差映射

总噪声

$$
\sigma_{total}^2 = \sigma_{ph}^2 + \sigma_{dark}^2 + \sigma_{read}^2 + \sigma_{FPN}^2\
\text{SNR} = \frac{N_p}{\sqrt{\sigma_{total}^2}}

$$

噪声类型 主导条件 图像表现 改善策略
光子噪声 光照充足 亮区随机颗粒感 增加总进光量(长曝光、大光圈)
暗电流噪声 长曝光、高温 暗区随机噪点、热像素 降温、拍暗场校准
读出噪声 极弱光、短曝光 极暗区/阴影区细密噪点 降低增益(降低ISO),多帧平均
FPN 所有情况都存在 固定条纹、”脏屏”感 硬件片上校正、拍平场/暗场校准

代码语言

光子噪声体现为给光场施加泊松分布;

暗电流噪声体现为光场叠加一个泊松分布矩阵;

读出噪声体现为光场叠加一个高斯分布矩阵;

固定模式噪声体现为光场读出前叠加增益误差矩阵;

参数设计

在低光成像(例如夜视、显微、星光成像)下:

  • 光子数 ≈ 10–200e⁻

  • 暗电流 ≈ 10–100e⁻/s

  • 曝光时间 ≈ 10–50ms

  • 读出噪声 ≈ 10–30e⁻

  • FPN ≈ 10–20%

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import numpy as np
import matplotlib.pyplot as plt

# --- 参数设置 ---
rows, cols = 64, 64
exposure_time = 0.03 # s
photo_flux = np.linspace(10, 200, rows*cols).reshape(rows, cols) # 模拟亮度梯度
dark_current = 50 # e⁻/s
gain_mean = 1.0 # 平均增益为1
gain_std = 0.15 # 固定模式噪声增大到15%
read_noise_std = 20 # 读出噪声

# --- 生成噪声 ---
N_ph = np.random.poisson(photo_flux) # 光子噪声
N_dark = np.random.poisson(dark_current * exposure_time, (rows, cols)) # 暗电流噪声
G = np.random.normal(gain_mean, gain_std, (rows, cols)) # 固定模式噪声
N_read = np.random.normal(0, read_noise_std, (rows, cols)) # 读出噪声

# --- 输出信号 ---
signal = G * (N_ph + N_dark) + N_read
ideal_signal = photo_flux * gain_mean # 理想信号

# --- 结果展示 ---
fig, axs = plt.subplots(1, 2, figsize=(10, 4))
axs[0].imshow(ideal_signal, cmap='gray'); axs[0].set_title("Ideal Image")
axs[1].imshow(signal, cmap='gray'); axs[1].set_title("With Noise")
for a in axs: a.axis('off')
plt.tight_layout(); plt.show()

# --- SNR 计算 ---
signal_mean = np.mean(ideal_signal)
noise_std = np.std(signal - ideal_signal)
SNR = 20 * np.log10(signal_mean / noise_std)
print(f"平均信噪比 ≈ {SNR:.2f} dB")
# 平均信噪比 ≈ 11.24 dB
2025100522200

交互代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact, FloatSlider, IntSlider, Layout
np.random.seed(42)
# --- 模拟函数 ---
def simulate_cmos(
photon_flux_rate, # 光子通量率
exposure_time, # 曝光时间 (s)
dark_current_rate, # 平均暗电流率
prnu_std, # 乘性增益标准差 (0.01 for 1%)
dsnu_std, # 暗电流的非均匀性
read_noise_std # 读出噪声标准差
):
"""
模拟CMOS传感器成像过程,并更精确地建模各种噪声源。
单位说明:
- 光子/暗电流相关的都是速率 (e-/pixel/s)
- 噪声都以电子数 (e-) 为单位
"""
# --- 参数设置 ---
rows, cols = 128, 128
# 模拟高斯光斑的光子通量率图
x = np.linspace(-1, 1, cols)
y = np.linspace(-1, 1, rows)
X, Y = np.meshgrid(x, y)
photon_flux_map = photon_flux_rate * np.exp(-4 * (X**2 + Y**2))

# 理想信号(平均光电子数),无任何噪声
mean_photons = photon_flux_map * exposure_time
# 暗电子数
dark_current_map = np.random.normal(dark_current_rate, dsnu_std, (rows, cols))
dark_current_map[dark_current_map < 0] = 0 # 暗电流不能为负
dark_electrons = dark_current_map * exposure_time

# --- 生成噪声 ---
# 光子散粒噪声
N_ph = np.random.poisson(mean_photons)
# 暗电流散粒噪声
N_dark = np.random.poisson(dark_electrons)
# 读出噪声
N_read = np.random.normal(0, read_noise_std, (rows, cols))
# 固定模式增益误差
gain_map = np.random.normal(1.0, prnu_std, (rows, cols))

# --- 输出信号 ---
final_signal = gain_map*(N_ph + N_dark) + N_read

# --- 结果展示 ---
fig, axs = plt.subplots(1, 2, figsize=(12, 5))
# 理想图像现在是纯粹的光子信号
im1 = axs[0].imshow(mean_photons, cmap='gray')
axs[0].set_title("Ideal Image (Photon Signal Only)")
fig.colorbar(im1, ax=axs[0], shrink=0.8)

im2 = axs[1].imshow(final_signal, cmap='gray')
axs[1].set_title("Image with All Noise Sources")
fig.colorbar(im2, ax=axs[1], shrink=0.8)

for ax in axs:
ax.axis('off')
plt.tight_layout()
plt.show()

# --- SNR 计算 ---
signal_mean = np.mean(mean_photons)
noise_std = np.std(final_signal - mean_photons)
SNR = 20 * np.log10(signal_mean / noise_std)
print(f"平均信噪比 ≈ {SNR:.2f} dB")

# --- 交互界面 ---
interact(
simulate_cmos,
photon_flux_rate=IntSlider(value=10000, min=100, max=20000, step=100, description='光子通量率 (ph/s)', style=style, layout=layout),
exposure_time=FloatSlider(value=0.1, min=0.001, max=1.0, step=0.005, description='曝光时间 (s)', style=style, layout=layout),
dark_current_rate=FloatSlider(value=1, min=0.1, max=30, step=0.1, description='暗电流率 (e-/s)', style=style, layout=layout),
prnu_std=FloatSlider(value=0.01, min=0.0, max=0.05, step=0.001, description='PRNU 标准差 (%)', style=style, layout=layout, readout_format='.3f'),
dsnu_std=FloatSlider(value=0.5, min=0.0, max=10, step=0.1, description='DSNU 标准差 (e-/s)', style=style, layout=layout),
read_noise_std=FloatSlider(value=2, min=1, max=30, step=1, description='读出噪声 (e-)', style=style, layout=layout)
);