参考文献,Design-Oriented Estimation of Thermal Noise in Switched-Capacitor Circuits
- 第一章分析积分器的工作原理,明确了积分时刻和输入/输出等效噪声源的概念;
- 第二章是积分器的直通噪声,被极高增益抑制,OTA有限增益和低OSR下才需要考虑;
- 第三章是积分器的输入等效噪声,核心内容;
- 第四章节分析了积分器系统的总的噪声,这部分需要一定的数学计算,但是实际中我们并不关心积分后的噪声,而是关心积分器的等效输入噪声;
- 第五章复现分析了论文中的一个简单的SDM的噪声分析,只是提供理解思路,意义不大;
- 第六章详细建模仿真了Double Sample积分器的噪声,并结合了SGM58201/52412/52461的实测结果。
最终在#6.3.2 实践计算得到完整的计算 FullyDifferential + (Twin) + Double Sample SDM噪底的计算公式,并在#6.4 实测与仿真验证中得到验证:
- SGM58201测试结果n=4.16,仿真分析n=4.29,BCD工艺γ=1.34
- SGM52412测试结果n=3.25,仿真分析n=3.37,MS工艺γ=0.94
- SGM52461测试结果n=10.28,分析应与SGM58201一致(工艺一致)。猜测原因:当前数据存在随机噪声尖峰,外部滤波或手动移除后,仍存在问题。
VnRMS2=n⋅CinkT⋅OSR2⋅NBW
n=2(1+CinCref+CinCp)⎝⎜⎜⎜⎛1+D⎝⎜⎜⎜⎛1+xx+1+xγgmgm+gm′⎠⎟⎟⎟⎞⎠⎟⎟⎟⎞(21)2
积分器原理图如下:

分析上述电路,每次采样相位Φ1的末端(此时输入信号完成了建立),为nT,(n+1)T,(n+2)T...的状态,而积分相位Φ2的末端为,为(n+1/2)T时刻,积分电容上的电荷满足:
q2(n+21)=q2(n+1)=q2(n)+Cinvin(n)
(额外指出,完成一次完整的采样积分过程,需要经历两个阶段,sample -> integrate以及integrate -> sample,每次都是n=0.5是变化步长,由于后者输出不变,所以才写成了一个等式,列出完整n=0.5的递推表达式,twin double sampling的积分器的传函也是可以准确写出的)
观察到积分相位的电荷和采样相位V−节点的电荷保持不变,将这个过程转换成电压,则有:
vout(n+1)=vout(n)+CintCinvin(n)
(额外指出,这里,我们近似认为V−节点为虚地,电位为零的前提是运放有增益!高频下有限带宽的运放增益很小时,V−节点等于地的假设就有大大打一个问号了,尤其是计算宽频信号,如噪声的积分时,需要明确计算的是Cint两端的电压,还是Vout的电压)
电路的工作相位,包含采样和积分;积分器的噪声,包含逐次积累的噪声,和直通(输出端等效)噪声。

哪部分是直通噪声,哪部分是能够累积下来的噪声呢?对此的答案是:
- 所谓累积噪声,就是Cint两端的电压,这个电压逐渐积累的,电荷不断地从Cin转移到Cint;实现电荷转移需要两个电容有共同节点且有完整的电荷通路;节点一旦悬空,其电荷就不再变化。
- 在采样阶段,由于Cint没有完整的充放电通路,其累计噪声不变;
- 在积分阶段,Cin上的ΔQ,也就是Cin上ΔV的变化,初值采样阶段的KT/C,终值是开关和放大器等效到Cin上的电压。虽然两者是相减关系,但是两者不相关,最终是功率求和的关系;
- 所谓直通,就是在Voutp−Voutn上直接看到的电压;令Cin,Cout上的初始电荷为零,那么在输出端看到的电荷;
- 在积分阶段,由开关和放大器的噪声共同等效到输出,传递函数需要考虑Cload,分别计算开关和放大器噪声的传函(包含零点的二阶表达式);
- 在采样阶段,只有放大器的噪声等效到输出,传函只需要计算放大器的噪声贡献,显然此时Cload也是不可以忽略的;
对于单级放大器,输入对单个管子gm,负载管gml输出阻抗Rout,自身的输出的电容Cout,那么放大器的等效输入噪声(这里认为gm≫gml):
Vni.ota2=(gm4kT⋅γ+gm24kT⋅γ⋅gml)×2=gm8kT⋅γ(1+gmgml)≈gm8kT⋅γ
对于单级放大器组成的积分器,开环增益传递函数为
Hnoise,ota=1+sRout(Cout+Cin+CintCinCint)gmRout=1+sτoAo
那么在这样的闭环下,输出噪声的传递函数为
H=1+βHoHo≈β11+sτ/(Aoβ)1
那么增益为1/β=(Cin+Cint)/Cint,时间常数是τ/(Aoβ)=C0/(gmβ),这里的C0是OTA的等效输出电容。那么等效噪声带宽为
NoiseBandwidth=NBW=4C0gmβ
那么放大器自身的噪声,在输出的噪声等于
Vno,ota,int2=Vni,ota2G2⋅NBW=gm8kTγ(β1)24C0gmβ=βC02kTγ(0)
当工作在采样相位时候,β=1,C0=Cout,那么输出噪声等于
Vno,ota,sample2=Cout2kTγ(1)
计算开关的噪声,相当于计算积分器采样阶段,从输入到输出的传递函数。计算运放对输出噪声的贡献时,做了很多简化,既没有考虑开关的阻抗Rsw,也没有考虑负载电容CL。
计算开关的噪声传递函数,求解V1,2,3,其中V3/Vn,sw就是开关的噪声传函,其中V3/Vn,ota就是开关的噪声传函
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧(Vn,sw−V1)/Rsw=(V1−V2)sCin(V1−V2)/sCin=(V2−V3)sCint(V2−V3)sCint+(V2−Vn,ota)gm=(V3−0)sCload
这个本质是一个二阶传函的问题,积分结果比较大,最好用符号计算工具计算。由于这部分噪声不重要,这里不再进行详细计算。
但是由于积分器的高增益,直通到输入的噪声,去做input refered的是需要去除以积分器的增益的,积分器的增益是非常高的,理想OTA的积分器拥有无限高的DC增益。在有限积分时间、有限的OTA增益下,积分器的增益也非常高(具体在第5章节)有详细的计算。
这部分计算的输入等效噪声,其实是Cin电容上的噪声,而不是Vin的等效输入噪声。换句话说,不是电容输入端单端的等效电压,而是输入电容两端的差分电压。Input等效噪声的计算,要分别考虑采样过程和积分过程。
采样动作时候的采样噪声,在积分时刻会传递到输出端,这里的噪声,包括信号电容,和反馈的采样的电容,那么输出端的噪声为
Vno,sw,sample,s2=CinkT(CintCin)2+CrefkT(CintCref)2
等效到输入电容上,则有
Vni,sw,sample,s2=CinkT+CrefkT(CinCref)2=CinkT(1+CinCref)
这里,多出的支路,额外增加噪声是C_{ref}/C_
积分过程,由于电路相对比较复杂,对电路有一个基本的建模。

通常第一级积分器的电容最大,后级的电容较小,忽略掉Cout的假设,可以让放大器的gm直接把Cint短路掉,可以大大简化计算。这样可以直接写出低通的传递过程
H(s)=1+sτ1=1+s(2rsw+gm1)Cin1
这里τ=(2rsw+1/gm)Cin,等效噪声带宽就是1/(4τ),那么开关贡献的噪声为:
Vni,sw,int,s2=(2rsw+1/gm)Cin2kTrsw
这里,放大器的等效输入噪声,是在电阻1/gm的另一端,因此其作用与开关的噪声的一致,所以有
Vni,ota,s2=(2rsw+1/gm)Cin2kTγ/gm
如果此时除了Cin还包含Cref,为了简化分析,也通常是实际情况,如果每条支路的RC都是成比例的,那么总的RC就是并联的结果:
rsw′Cin′=rsw,in∣∣rsw,ref=Cin+Cref
这样,上面的Vni,sw,int,s2可以改写为
Vni,sw,int,s2=(2rsw′+1/gm)(Cin+Cref)2kTrsw′(CintCin+Cref)2(CinCint)2=(2rsw′+1/gm)Cin2kTrsw′(1+CinCref)=CinkT(1+CinCref)2rsw′+1/gm2rsw′
同理,Vni,ota,s2可以改写为
Vni,ota,s2=CinkT(1+CinCref)2rsw′+1/gm2γ/gm
论文中忽略了负载电容,因为考虑负载电容会导致加积分过程的计算异常复杂(二阶传函积分),难以得到一个“漂亮”的结果。得到的符号解过于复杂也没有意义,因此这里进行数值分析。

考虑负载电容的情况下,积分时刻的开关噪声的传递函数如下:
TFsw=1+(CintCin+CintgmCout+Cin(2Rsw+gm1))s+2RswCingmCouts21+gmCouts=1+((1+k)τ3+τ0)s+1+xxτ0τ3s21+τ3sCout=01+C(2Rsw+gm1)s1=1+τ0s1
这里
τ0=Cin(Rsw+1/gm),τ3=gmCout,x=2Rswgm,k=CintCin
同理,考虑负载电容的情况下,积分时刻的放大器噪声的传递函数如下:
TFgm=1+(CintCin+CintgmCout+Cin(2Rsw+gm1))s+2RswCingmCouts21=1+((1+k)τ3+τ0)s+1+xxτ0τ3s21Cout=01+C(2Rsw+gm1)s1=1+τ0s1=TFsw
开关的噪声,积分的解析解不好求,这里考虑用数值分析。
Cin=Cint=1pF,Rsw=50Ω,x=2Rswgm=0.1 or 10
Mathematica计算结果如下:Cin=C1,Cint=C2,Cout=C3


分析如下:
- 积分过程,放大器的1/gm与Rsw是噪声源,不严谨地说,那么总的噪声贡献还是kT/C之类的值(实际上1/gm的功率谱密度与Rsw有一个γ的区别)。
- 负载电容实际上是1/gm的并联,频率升高时减小等效串联阻抗等同于提高噪声带宽,同时也有减小1/gm的作用从而减少放大器的噪声贡献;
- 最终的结果,取决于x=2Rswgm
- 当x=0.1时,gm的主导积分器带宽和噪声,因此gm并联C3的影响很大。
- 当x=10时,Rsw主导积分器带宽,因此gm并联C3的影响可以忽略。
- 综上,之前的忽略C3近似计算并不会少算噪声,而且还可以简化运算。
ClearAll["Global`*"]
(*确定基本参数*)
range = 20;
x = 0.1;
rsw = 50;
gm = x/2/rsw;
c1 = 1*10^-12;
c2 = 1*10^-12;
c3 = c3;
k = 1.38*10^-23;
t = 300;
\[Gamma] = 2/3;
(*开关的噪声积分结果*)
eqa1 = (1 - v1)/(2*rsw) == (v1 - v2)*s*c1;
eqa2 = (v1 - v2)*s*c1 == (v2 - v3)*s*c2;
eqa3 = (v2 - v3)*s*c2 == v2*gm + v3*s*c3;
eqa4 = vc1 == v1 - v2;
eqa5 = vc2 == v2 - v3;
ans = Solve[{eqa1, eqa2, eqa3, eqa4, eqa5}, {vc1, vc2, v1, v2, v3}];
swNoiseTF = ans[[1, 1, 2]] // FullSimplify;
swNoiseTF2 = Abs[swNoiseTF /. s -> I*2*\[Pi]*f]^2;
swNoiseSS = 2*4*k*t*rsw;
swNoise = Table[c1/range*i, {i, 0, range, 1}, {2}];
For[i = 0, i <= range, i++,
{
swNoise[[i + 1, 2]] =
Integrate[
swNoiseTF2*swNoiseSS /. c3 -> swNoise[[i + 1, 1]], {f, 0,
Infinity}]
}
]
(*运放的噪声积分结果*)
eqb1 = (0 - v1)/(2*rsw) == (v1 - v2)*s*c1;
eqb2 = (v1 - v2)*s*c1 == (v2 - v3)*s*c2;
eqb3 = (v2 - v3)*s*c2 == (v2 + 1)*gm + v3*s*c3;
eqb4 = vc1 == v1 - v2;
eqb5 = vc2 == v2 - v3;
ans = Solve[{eqb1, eqb2, eqb3, eqb4, eqb5}, {vc1, vc2, v1, v2, v3}];
gmNoiseTF = ans[[1, 1, 2]] // FullSimplify;
gmNoiseTF2 = Abs[gmNoiseTF /. s -> I*2*\[Pi]*f]^2;
gmNoiseSS = 2*4*k*t*\[Gamma]/gm;
gmNoise = Table[c1/range*i, {i, 0, range, 1}, {2}];
For[i = 0, i <= range, i++,
{
gmNoise[[i + 1, 2]] =
Integrate[
gmNoiseTF2*gmNoiseSS /. c3 -> gmNoise[[i + 1, 1]], {f, 0,
Infinity}]
}
]
swgmNoise = Table[c1/range*i*10^12, {i, 0, range, 1}, {2}];
For[i = 0, i <= range, i++,
{
swgmNoise[[i + 1, 2]] = swNoise[[i + 1, 2]] + gmNoise[[i + 1, 2]],
gmNoise[[i + 1, 1]] = gmNoise[[i + 1, 1]]*10^12,
swNoise[[i + 1, 1]] = swNoise[[i + 1, 1]]*10^12,
}
]
ListPlot[{swNoise, gmNoise, swgmNoise},
PlotLegends -> {"sw", "gm", "sw+gm"},
ImageSize -> Medium,
PlotLabel ->
"Noise Power by \!\(\*SubscriptBox[\(C\), \(3\)]\) \
(x=2\!\(\*SubscriptBox[\(g\), \(m\)]\)\!\(\*SubscriptBox[\(R\), \
\(sw\)]\)=0.1)",
AxesLabel -> {"\!\(\*SubscriptBox[\(C\), \(3\)]\)(pF)",
"Power(\!\(\*SuperscriptBox[\(V\), \(2\)]\))"}
]
输入电容上的电压初态是Vni,sw,sample,终态是Vni,sw,int+Vni,ota,虽然两者是相减的关系,但是噪声满足平方求和的关系,最终总的输入噪声:
Vni,s2=Vni,sw,sample2+Vni,sw,int2+Vni,ota2=(CinkT+(2rsw′+1/gm)Cin2kTrsw′+(2rsw′+1/gm)Cin2kTγ/gm)(1+CinCref)=CinkT(1+2rsw′+1/gm2rsw′+2rsw′+1/gm2γ/gm)(1+CinCref)
差分输出OTA下,全差分下包含两套Cin和Cint,放大器的gm噪声贡献保持不变,那么总的输入等效噪声为
Vni,d2=Vni,sw,sample2+Vni,sw,int2+Vni,ota2=(2×CinkT+2×(2rsw′+1/gm)Cin2kTrsw′+(2rsw′+1/gm)Cin2kTγ/gm)(1+CinCref)=CinkT(2+2rsw′+1/gm4rsw′+2rsw′+1/gm2γ/gm)(1+CinCref)
这部分内容,是为了复现论文中求解真正的积分器输出端噪声,计算的积分器如下,C1和C2是采样电容和积分电容,CL是放大器的负载电容,放大器有限增益为A

输出端的噪声的功率谱密度:
Svo=Svin⋅∣H∣2+Svout
对这个公式的理解,应该结合上面这张图来看,Schreier 定义的一个周期,是Phase1末到下一个Phase1末,即 nT ~ (n+1)T,第二项 Svout 是最后一个采样相位的直通噪声,第一项 Svin⋅∣H∣2 是此前积分相位的累积输出噪声。
当放大器的gm主导速度时,采样时刻,直通的输出的噪声主要取决于放大器的贡献,见#2.1.3 采样相位
Svout=2fsVno,ota,sample2=2fsCout2kTγ
等效输入噪声,见#4.2.1 开关/放大器/电容设计,
Svin=2fsVni,s2=2fsCin2kT(1+x+11/6)
有限增益的传递函数,在Finite-Gain-Integrator-Transfer-Function这篇文章李做了详细分析,结论如下
H=CfCi1+A1(1+CfCi)−(1+A1)z−1z−1k=CfCi, μ=A11+μ(1+k)−(1+μ)z−1kz−1
原文(Design-Oriented Estimation of Thermal Noise in Switched-Capacitor Circuits)犯了一个错误,在计算 Svout 时候,电容按照 Cout+C1C2/(C1+C2)
计算,正确的应该只有 Cout 自己。
原文的计算结果是
N02=3.13×10−6arctan[2003×tan(2OSRπ)]+OSR5.61×10−9
正确的的计算结果应是
N02=3.13×10−6arctan[2003×tan(2OSRπ)]+OSR5.61×10−9×2
ClearAll["Global`*"]
(*基本参数*)
u1 = 1/1000;
k1 = 1;
gm = 1.47*10^-3;
\[Gamma] = 2/3;
x = 0.1;
cout = 0.5*10^-12;
c1 = 0.97*10^-12;
c2 = 0.97*10^-12;
k = 1.380649*10^-23;
t = 300;
fs = 100*10^6;
(*衍生参数*)
(*c0=c1*c2/(c1+c2)*0+cout*)
\[Beta] = 1;
c0 = c1*c2/(c1 + c2) + cout;
(*\[Beta]=c2/(c1+c2);*)
(*基本公式*)
vni2 = 2*k*t/c1*(1 + (1/6)/(1 + x));
vno2 = 2*k*t*\[Gamma]/(\[Beta]*c0);
svin = vni2/\[Pi];
svo = vno2/\[Pi];
(*传递函数*)
h0 = z^-1/(1 + u1*(1 + k1) - (1 + u1)*z^-1);
h1 = h0 /. {z -> Exp[I*\[Omega]]};
h2 = (Abs[h1])^2;
(*积分公式*)
Integrate[(h2*svin + svo), {\[Omega], 0, \[Pi]/osr},
Assumptions -> {osr > 1, \[Omega] > 0}] // FullSimplify
为了研究建立时间分配的问题,令x=2rsw′gm,单端输出积分器可以化简为
Vni,s2=CinkT(1+2rsw′+1/gm2rsw′+2rsw′+1/gm2γ/gm)(1+CinCref)=CinkT(1+x+1x+x+12γ)(1+CinCref)=CinkT(x+1x+1+x+2γ)(1+CinCref)=Cin2kT(1+x+1γ−1/2)(1+CinCref)γ=2/3Cin2kT(1+x+11/6)(1+CinCref)(2)
差分输出积分器可以化简为
Vni,d2=CinkT(2+2rsw′+1/gm4rsw′+2rsw′+1/gm2γ/gm)(1+CinCref)=CinkT(2+x+12x+x+12γ)(1+CinCref)=CinkT(x+12x+2+2x+2γ)(1+CinCref)=Cin4kT(1+x+1γ/2−1/2)(1+CinCref)γ=2/3Cin4kT(1−x+11/6)(1+CinCref)(3)
当x≫1,此时rsw主导建立时间,此时的噪声最小,但是也仅仅小1/6或者1/3而已。当x≪1,也就是gm主导建立时间时,此时的功耗最小,这也是通常的策略。所以主要的设计过程,是在满足噪声和建立时间要求下去求解gm,联立以下等式,有:
⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧x=2rswgmτ=(2rsw+gm)CinVni,s2=Cin2kT(1+x+11/6)(4)
求解gm,Cin,rsw,有:
gm=τVni2kT(2x+37)(5)
这里求解建立时间对精度的影响,为了满足N bit 1/2 LSB的建立精度,需要有:
e−τt=e−2fsτ1−2fsτ12fsττ≪2−(N+1)≪−(N+1)ln2≪(N+1)ln21≪2ln2(N+1)fs1(6)
设计过程
- 根据建立精度N和采样频率fs,确定时间常数τ,公式(6)
- 根据噪底Vni2和时间常数τ,令x<0.1,确定放大器的gm,公式(5)
- 最后确定输入电容的大小Cin,公式(3)或者(4)
差分下噪声功率恶化了
Vni,se2Vni,d2=1+1+x1/62×(1−1+x1/6)x≪17/610/6=710
信号功率提高
Vi,se2Vi,d2=22=4
信噪比提高了
10log1010/74=4.47 dB

^2ndOrderCircuit
- OSR=32,
- 输入信号的功率0.25V2(-6.0 dBV)
- 预期13bit的也就是SNR=6.02*13+1.76=80.02 dB
- 总噪声功率10(−6−80)/10V2=(50.1μV)2
- 分配75%的噪声给热噪声 vthermal2=(43.1μV)2
- 分配25%的噪声给量化噪声,则需要一个5bit的Quantiser对于给定的前馈结构;
-
第一级积分器的输入等效噪声
Vni,12=Cs1kT1+x7/3+2x, x=2rswgm≪1
-
第一级积分器的输出等效噪声,这里处于相位Φ1,Cf1,Cf3并联后与Cf2串联。
Vno,12=Co1kT34, Co1=Cs2+Cf2+Cf1+Cf3Cf2(Cf1+Cf3)
-
第二级积分器的输入等效噪声
Vni,22=Cs2kT1+x7/3+2x, x=2rswgm≪1
输出等效噪声
Vno,22=Co2kT34, Co2=Cs2+Cf3+Cf1+Cf2Cf3(Cf1+Cf2)
-
量化器的三个SC支路的噪声,这些都是采样噪声,等效到Cf1的输入端,则有
Vn32=Cf12kT(1+Cf1Cf2+Cf1Cf3)

-
第一级输入到v的传递函数,低频时等于1
NTFi1=1+H(2+H)H(2+H)=1+2H+H2H2+2H=2z−1−z−2
-
第一级输出到v的传递函数,低频有一阶抑制能力
NTFo1=1+H(2+H)2+H=1+2H+H2H+2=(1−z−1)(2−z−2)
-
第二级输入到v的传递函数,低频有一阶抑制能力
NTFi2=1+H(2+H)H=1+2H+H2H=z−1(1−z−1)
-
量化器输入到v的传递函数,二阶抑制能力
NTF3=NTFo2=1+H(2+H)1=1+2H+H21=(1−z−1)2
从拓扑中看Vn3和Vno2到Q的直通传递是一样的都是1,但是从电路实现看到确实1/4,所以需要额外将Q赋予4倍的增益;

计算结果与代码计算结果相当,代码用了一阶级数近似解去计算数值解
Ni12No12Ni22No22N32=vni,12OSR1=7.2×10−2×Cs1kT=vno,123OSR3π2=1.3×10−4×Co1kT=vni,223OSR3π2=2.3×10−4×Cs2kT=vno,225OSRπ4=7.7×10−7×Co2kT=vn325OSRπ4=4.6×10−6×Cf1kT
ClearAll["Global`*"]
(*传递函数*)
z = Exp[I*\[Omega]];
ntfni1 = 2 z^-1 - z^-2;
ntfno1 = (1 - z^-1)*(2 - z^-2);
ntfni2 = (z^-1)*(1 - z^-1);
ntfno2 = (1 - z^-1)^2;
ntfn3 = (1 - z^-1)^2;
(*积分结果*)
ppni1 = Series[
pni1/\[Pi]*
Integrate[(Abs[ntfni1])^2, {\[Omega], 0, \[Pi]/osr},
Assumptions -> {osr > 1, \[Omega] > 0}], osr -> Infinity] //
Normal;
ppno1 = Series[
pno1/\[Pi]*
Integrate[(Abs[ntfno1])^2, {\[Omega], 0, \[Pi]/osr},
Assumptions -> {osr > 1, \[Omega] > 0}], osr -> Infinity] //
Normal;
ppni2 = Series[
pni2/\[Pi]*
Integrate[(Abs[ntfni2])^2, {\[Omega], 0, \[Pi]/osr},
Assumptions -> {osr > 1, \[Omega] > 0}], osr -> Infinity] //
Normal;
ppno2 = Series[
pno2/\[Pi]*
Integrate[(Abs[ntfno2])^2, {\[Omega], 0, \[Pi]/osr},
Assumptions -> {osr > 1, \[Omega] > 0}], osr -> Infinity] //
Normal;
ppn3 = Series[
pn3/\[Pi]*
Integrate[(Abs[ntfn3])^2, {\[Omega], 0, \[Pi]/osr},
Assumptions -> {osr > 1, \[Omega] > 0}], osr -> Infinity] //
Normal;
(*数值计算*)
x = 0.1;
ppni1 = ppni1 /. {osr -> 32, pni1 -> k*T/cs1*(7/3 + 2*x)/(1 + x)} //
N // ScientificForm
ppno1 = ppno1 /. {osr -> 32, pno1 -> k*T/co2*(4/3)} // N //
ScientificForm
ppni2 = ppni2 /. {osr -> 32, pni2 -> k*T/cs2*(7/3 + 2*x)/(1 + x)} //
N // ScientificForm
ppno2 = ppno2 /. {osr -> 32, pno2 -> k*T/co2*(4/3)} // N //
ScientificForm
ppn3 = ppn3 /. {osr -> 32, pn3 -> k*T/cf1*(2*4)} // N //
ScientificForm
可以看到只有输入级的噪声主导最终的噪声,因此有
7.2×10−2×Cs1kTCs1Cs1≤vthermal2=(43.1μV)2≥7.2×10−2×vthermal2kT≥0.16pF
针对Differential Double Sampling Integrator的情况,给出了详细的建模与仿真方法。
如下图所示,全差分+Double Sampling积分器,设计参数如下:
Cin=Cref=Cint=1 pFgm=1 mS,Cota,in=10 fF, Cota,in=10 fFfs=1 MHz, fchop=250 kHz Rsw=50 Ω, Rsw,chop=5 Ω, Rsw,reset=5 Ω, Csw,r=Csw,r=1 fFx=2Rswgm=0.1γ=2/3, k=1.38×10−23, T=300K

如下图所示,
- 模型包含输入电容,输出电容,增益为g_m(R_{top}|R_{bot})=1G=180\ \text
- 注意输入对的源端是接在一起的,且输出有CMFB,从而实现完整的全差分OTA
- 热噪声源用1/gm的电阻和增益为γ的VCVS,1/f噪声用RC低通模拟。

全差分积分器,输入端CIN上的等效输入噪声如下,非Double Sample,也就是#3.4 总的等效输入噪声的计算结果,这里的rsw′相当于rsw,in∣rsw,ref的并联结果
Vni,d2=Vni,sw,sample2+Vni,sw,int2+Vni,ota2=(2×CinkT+2×(2rsw′+1/gm)Cin2kTrsw′+(2rsw′+1/gm)Cin2kTγ/gm)(1+CinCref)=CinkT(2+2rsw′+1/gm4rsw′+2rsw′+1/gm2γ/gm)(1+CinCref)
带入电容比例关系,让gm主导,Cint两端的噪声功率谱密度如下,其实这也是输出端的噪声,因为此时增益为1
PSDCint=2fsVni,d2(CintCin)2≈2fsCin4kT(1+γ)≈fsCin8kT(1+γ)
ring -> tb_integrator_noise2

- 复位开关
- 积分电容上的复位开关,噪声设置为零,其余开关是有噪声的;
- 复位开关在P1相位工作,可以清掉之前积分的噪声,这样就可以得到单次积分的结果,从而方便求出输入等效噪声;
- 删除复位开关,则输出噪声是一个积分的结果,是输出等效噪声乘以积分器的传递函数,再加上输出等效噪声。
- PSS仿真设置
- Fundamental Frequency = 1MHz/4 (斩波频率)
- Number of Harmonics = 4000
- PNOISE设置
- Sweep Range = [1Hz, 1MHz],实际只需要fs/2=500KHz, 设置1M是为了看到离散导致的重复
- Sampled Noise,采样时刻在@(negedge,p2)-1ns,用3个VCVS得到
(Vcint,top,p−Vcint,top,n)−(Vcint,bot,p−Vcint,bot,n)
从而获得了等效输入端噪声的积分结果,忽略掉了等效输出噪声。

- 仿真得到的功率谱密度(56.22f V2/Hz)与计算(55.75f V2/Hz)结果一致,
- 1/f噪声被chop到了250KHz, 并在750KHz发生了重复
- 这里基本忽略了chop开关的噪声贡献,因为积分阶段放大器等效阻抗主导。
- 输入chop开关,叠加到了运放上,4kT(Rsw,chop+γ/gm)
- 输出chop开关,和输出等效噪声一样,被积分器的高低频增益抑制。
手算代码
ClearAll["Global`*"]
(*基本参数*)
k = 1.38*10^-23;
t = 27 + 273.15;
rsw = 50;
gm = 0.001;
cin = 1*10^-12;
cref = 1*10^-12;
cint = 1*10^-12;
fs = 1*10^6;
\[Gamma] = 2/3;
(*并联电阻计算*)
rsw2 = rsw*rsw/(rsw + rsw);
(*计算功率*)
pn1 = k*t/(cin)*(1 + cref/cin)*2;
pn2 = k*t/(cin)*(1 + cref/cin)*(2*rsw2)/(2*rsw2 + 1/gm)*2;
pn3 = k*t/(cin)*(1 + cref/cin)*(2*\[Gamma]/gm)/(2*rsw2 + 1/gm);
(*计算功率谱密度,单位fV^2/Hz,ans=55.7536*)
ssoutFull = (pn1 + pn2 + pn3)/(fs/2)*10^15
(*简化计算,,ans=55.2276*)
ssoutSimple = 8*k*t*(1 + \[Gamma])/(fs*cin)*10^15
当MOD存在增益Cin/Cref,数字会去补偿调这个增益,那么Full-Scale到VREF的ADC的零输入噪声,是否会有影响呢?解答这个问题需要去求解Vout,G=1/Vn,i的传递函数。
放到整个sigma-delta ADC中分析等效输入噪声,我们就需要考虑Cin和Cref的比例以及Double Sample了,下面的公式中:
- 第1项表示积分器总的输入为零;
- 第2项表示ADC系统的最终的输出电压是什么;
- 第3项保证了当Dout=1时,意味着输入信号就是Vref,也就是Full-Scale到Vref上去;
- 第4项我们去Vin=0时的Vout,其实求出的就是ADC的噪声。
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧(Vref×2)×Dfb×Cref=((Vin×2)+Vn,i)×CinVout=Dout×Vref→Dout=VrefVoutDout=Dfb×Cin×2Cref×2→Dfb=DoutCrefCinVin=0
把各种关系代入到第一个表达式,得到
2Vref×VrefVout×CrefCin×CrefVout=Vn,i×Cin=2Vn,i
这样得到一个0.5的增益衰减。另外一种方法,因为Vout/Vin的增益一定是1,我们只需将Vn,i等效到Vin上即可。可以知道通过Double Sample,积分器对信号的增益是2Cin/Cint,而对等效输入噪声的增益是Cin/Cint。
所以等效输入噪声
Vni,dd2≈Cin4kT(1+γ)×(21)2=CinkT(1+γ)
完整表达式为
Vni,dd2=Cin2kT(1+CinCref)(1+γ)(21)2
需要注意的是,实际中需要考虑如下:
- 在TSMC 180nm BCD工艺中,γ是一个超过1的数值,而非2/3
- 放大器的噪声并非只有输入对gm贡献,负载管和CHOP开关甚至cascode的贡献并不能忽略
Vni,dd2=Cin2kT(1+CinCref)(1+γ(1+gmgm′))(21)2
- 输入寄生电容Cp对反馈系数的影响
Vni,dd2=Cin2kT(1+CinCref+Cp)(1+γ(1+gmgm′))(21)2
- 开关贡献,我们令x=2rsw′gm≪1后,直接忽略了开关的贡献,即使x=0.1这意味着开关仍有相比OTA约1/10的贡献,但是这也会让OTA噪声有1/10的衰减,后者的影响会更大,见#4.2.1 开关/放大器/电容设计
Vni,dd2=Cin2kT(1+CinCref+Cp)⎝⎜⎜⎜⎛1+x+1x+x+1γ(1+gmgm′)⎠⎟⎟⎟⎞(21)2
- 寄生参数导致实际积分器的环路带宽下降,从而减少噪声贡献。例如上述分析中,我们没有考虑第一级积分器的负载电容,详见#3.3 积分过程:负载电容,因为负载电容会导致公式变得不漂亮,但是负载电容本身会导致OTA贡献的噪声下降。初次之外还有其它限制带宽的寄生,最终还是会有一个衰减系数
Vni,dd2=CinkT2(1+CinCref+Cp)⎝⎜⎜⎜⎛1+D⎝⎜⎜⎜⎛x+1x+x+1γ(1+gmgm′)⎠⎟⎟⎟⎞⎠⎟⎟⎟⎞(21)2
那么经过OSR倍的SINC滤波器后,最终的RMS噪声为,可以认为是一个n倍的KTC噪声:
Vni,sdm,rsm2=2fsVni,dd2⋅OSRfs⋅NBW=n⋅CinkT⋅OSR2⋅NBW
以58201的测试结果为例,ADC自身在OSR=12800时的输入等效RMS噪声为0.865uV,滤波器的等效噪声带宽系数为0.5(SINC4+SINC1),采样电容为1.8pF
Vn,rms2=1.8×10−12×128004.16×1.38×10−23×300=(0.865μV)2≈(0.865μV)2
这里得到n=4.16
第一步,去验证γ到底是多少?通过将SGM58201 OTA1放大器短接成单位负反馈(VDD=3V,VCM=1.5V),Noise Contribution Instance List只选择输入管,关闭fliker noise,通过noise仿真得到差分输出的噪声功率铺密度,得到
γ=8kTgmSn=8×1.38×10−23×(273.15+27)304.488μ×145.8433a≈1.34
第二步,配置好CIN/CREF/CINT,打开所有instance的噪声贡献,还是在单位增益1的情况下,积分1-100GHz的输出噪声,得到的噪声是CINT电容上的,最后除以(CIN/CINT)^2得到输入等效噪声。

通过print->noise summary 观察输入管的噪声占比,得到

(1+gmgm′)=20.76%+20.76%1≈2.4
第三步,通过将放大器输入端的理想Buffer对比积分总噪声,从而求出C_p/C_
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧P(1+34+CinCp)=S1P(1+34)=P2⇒CinCp=P2P1(1+34)−(1+34)
最终得到
CinCp=36.134438.2587×(1+34)−(1+34)≈0.137
第4步,验证以上参数是否能够自洽仿真中得到的OTA贡献的等效输入噪声,仿真得到的是38.2587nV^2,结果基本吻合
Vni,ota2=CinkT(1+CinCref+CinCp)(γ⋅gmgm+gm′)=1.8pkT(1+34+0.137)(1.34×2.4)=36.56 nV2≈38.2587 nV2
第5步,路径开关阻抗导致的噪声衰减,上述仿真中我们并没有引入开关,实际上积分路径上的开关是比较多的,包括放大器,这些都会导致实际带宽的下降,从而减少最终的噪声,当我们给每条支路加入3.5k的阻抗(信号源,引脚,PATH,MUX,2-3个开关,mod_swr标注的典型值为1.5k)后以及600fF的负载电容(第二级的采样电容以及寄生)后,仿真得到的噪声锐降到29.4275nV^2,所以得到以下衰减系数

D=38.258729.4275=0.769
第6步,忽略掉开关贡献的噪声,计算等效的n是否可以对应测试结果4.16,发现基本吻合
n=2(1+CinCref+CinCp)⎝⎜⎜⎜⎛1+D⎝⎜⎜⎜⎛1+xx+1+xγgmgm+gm′⎠⎟⎟⎟⎞⎠⎟⎟⎟⎞×(VsVn)2=2×(1+34+0.137)×(1+0.769×(0+1.34×2.4))×(21)2=4.29
Twin Double Sample,Cin=3pFx2,Cref=3pFx2x4/3,OSR=4096,VnRMS=0.78uV,使用的SINC5+SINC1滤波器:
VnRMS2n=n⋅CinkT⋅OSR2⋅NBW=2⋅NBW⋅kTVnRMS2⋅Cin⋅OSR=2×0.5×1.38×10−23×3000.74μ2×3p×2×4096=3.25
积分器为 Fully-Differential Twin Double Sample,一个简便算法是直接将twin的采样和反馈电容乘以2后,当成Double Sample计算即可。
实际仿真SGM52412 OTA1,得到该放大器(Mixed-Signal)的gamma=0.94,假设其余参数直接拿58201的参数代入计算,发现基本一致。
n=2(1+CinCref+CinCp)⎝⎜⎜⎜⎛1+D⎝⎜⎜⎜⎛1+xx+1+xγgmgm+gm′⎠⎟⎟⎟⎞⎠⎟⎟⎟⎞×(VsVn)2=2×(1+34+0.137)×(1+0.769×(0+0.94×2.4))×(21)2=3.37
需要注意的是,SGM52421,Cp/Cin应该比较大,gm′/gm也应该比较大(发现CHOP开关占比较大),这样会导致噪声偏高;x=2rsw′gm相比58201较高(gm提高16倍,而mod_swr尺寸只增大4倍),1/(1+x)起到了抑制作用,抵消了前者的变化。
积分器为 Fully-Differential Twin Double Sample,一个简便算法是直接将twin的采样和反馈电容乘以2后,当成Double Sample计算即可
CinCref=300f×(0(2)+3+3)×2=3600f=300f×8×2=4800f
我们发现CREF/CIN=4/3与SGM58201一致,所以仍然n=4.29拿来使用,采样速率是1MHz,最慢的输出速率是1KHz,因此OSR是1000;使用的是SINC3滤波器,因此NBW为0.275。根据下表,计算得出ADC的噪底在2.55uV左右
VnRMS,DOR=1k,Vref=2.4V=2×Gain×2ENOBVREF=2×1×219.342.4=2.55μVVnRMS,mod,DOR=1k,Vref=4V=2×Gain×2ENOBVREF=2×1×220.094=2.53μV

用以上数据,我们去计算n大概是10.28,远超过4.29和同为twin-double sample的SGM52412。
VnRMS2n=n⋅CinkT⋅OSR2⋅NBW=2⋅NBW⋅kTVnRMS2⋅Cin⋅OSR=2×0.275×1.38×10−23×3002.55μ2×3.6p×1000=10.28
竞品的数据数据如下,4V-REF=19.6(19.34),2.4V-REF=20.4(20.09),我们仍然差了0.3个bit,不出意外,这应该不是我们的真实水平。

当前测试结果存在噪声尖峰(时域上非周期地出现一个非常大的误差),当前数据存在随机噪声尖峰,外部滤波或手动移除后,仍存在问题。预估MOD真实水平如下:
Vn,RMS=4.29×3600fkT×10002×0.275=1.65μV
ENOB=log2∣∣∣∣∣∣2×Vn,RMS×GainVref∣∣∣∣∣∣=log2∣∣∣∣∣2×1.65μ×12.4∣∣∣∣∣=19.97
竞品要求为:
VnRMS=2×219.62.4V=2.13μV