|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
(来源:EETOPBBS 作者:mouseliu)
: p( C7 t. F( _: I' }- m' R8 ?' h8 C4 x1 e; [; R4 b: j$ i( d1 }* `
先说点废话:
& e4 l. D& G4 s2 r3 }: J2 \5 z好久以来都有一种混日子的感觉,每天都是浑浑噩噩,时间一长,人的上进心就被慢慢消磨掉了。% b; Z( E7 X q. P$ m
笔者认识到这个问题已经很久了,近日终于下定决心准备自己做点东西,但是苦于害怕自己毅力不够,不能坚持很多。于是就想到来论坛,用鼠标键盘记录下个中历程,与各位看官分享,想必与各位看官的交流和学习也能在客观上对我起到一种督促的作用。
9 g) h {) L, g
) H7 U7 h! m/ x' T) X我选了一个ADC的课题,打算做一个12bit 100MHz pipeline ADC,之前也曾拜读过论坛里面有些大大的高作,但大多都是show-off性质的帖子,贴上测试结果,却又不肯透露自己的设计思路和方法。当然,很多东西属于商业秘密,不便公开也是可以理解的。本人的这个东西只是自己工作之余的一些知识积累,不存在保密的问题。况且我个人也非常想要和论坛里面的兄弟们交流学习。因此,在接下来的1个多月里面,我会尽量详细地把我自己的设计思路和方法与大家分享,希望各位大大多加指导。
) g4 W, y) U* X- }) X2 B& q* q ~- |( n6 {1 d4 }7 c
再说两句废话,在我看来,做模拟的,最重要的就是概念清晰,概念错了,做再多的计算和推导也枉然。与一般工程师交流和与高手交流的区别在,一般工程师会给你一堆公式一堆计算直到把你和他都整晕;而高手更多地会用简单的公式和语言引导你正确地理解概念。什么叫“茅塞顿开”?大抵也就是对某个概念的理解又上了一个层次罢了。
! o5 T& I- J$ N! A9 D: @4 c. P4 Y6 G7 c3 e
时间预算:到过年,有限时间1.5个月。电路+仿真时间比较紧张,但是我大概已经捉摸了一段时间,系统架构和一些细节的东西已经有些积累,所以时间定为1.5个月。layout年后再整吧。 v/ D* g5 f0 w$ n. R- n
Process:HJTC 0.18um8 ~. \! O, d8 m3 K+ X# x
Power:1.8V
8 z0 ^; Y$ x3 e# o4 `resolution: 12bit; `8 O0 N) {% f( H U7 Z! g
speed:100MHz" y b: \! T6 ]. T( U9 @% R. o
ENOB>10bit @ ~ Nyquist frequency
) h: u0 u4 H7 W" z8 ACircuit :ADC Core + integrated Vref buffer without off-chip cap- D6 K: D" ?4 [4 y& U
FOM:<0.5pj/conv3 J" X; g% \5 Y
Architecture:
~7 ~6 w# d5 {! y/ _ 2.5bit/stage,- y. R! S7 \% e2 ]/ d
opamp-sharing & capacitor sharing for SH and MDAC1,
" }1 k+ _" B# | ^5 w opamp-sharing for MDAC2&MDAC3
9 ]0 O) l8 K9 E9 G opamp-sharing for MDAC4&MDAC5
9 K+ U* h1 p/ f/ E' P**************************************************$ m8 o$ B$ }6 X- x2 K1 p0 A9 o
**************************************************
, K" i Q- n% q7 G第一部分:系统设计:$ D5 r; a2 X; r( x5 n3 d
**************************************************- Z- c- e. l! p* \6 j& h/ R
1.reference的确定9 Z: a$ y* n) H, Y w, q6 M
Vrefp=0.9+0.4=1.3V8 e4 ?- |0 u5 ]* r! m4 H
Vcmo=0.9 Z! g4 a' K- T9 a8 W
Vrefn=0.9-0.4=0.5V+ \: i( o' b8 e/ ~1 F3 U; x
Vrefp-Vrefn=0.8V$ C$ Q: ?) {; f5 F: z+ H7 u
VFS=1.6VPP
0 a7 V: X) R' [% G* T0 [$ _5 p/ L5 b. u$ h" O( ^3 O8 ? Q9 |- q
**************************************************
5 u, u; I1 F: \+ [2. opamp DC gain的确定
4 M* Z7 r$ v, T: n# |7 ]. R7 Z( U4 @$ u. G; c) k" F& g" i
每一级的有限增益误差小于当前级后面所剩位数的1/2LSB,各级的有限增益误差要求是:
$ g/ T# e. Z+ x1 c; A0 bMDAC1,后面还有10位精度,delta<1/2^11,等效到输入的误差<delta/4=1/2LSB
" U' n) q, }! N8 L5 G. Z% _7 z) m$ `MDAC2,后面还有8位精度,delta<1/2^9,等效到输入的误差<delta/4^2=1/2LSB7 j% N6 y* N" P! J, {+ F. m
MDAC3,后面还有6位精度,delta<1/2^7,等效到输入的误差<delta/4^3=1/2LSB
) K3 q* p6 y, J7 W+ xMDAC4,后面还有4位精度,delta<1/2^5,等效到输入的误差<delta/4^4=1/2LSB2 x; d: b' x/ ^ F1 A
MDAC5,后面还有2位精度,delta<1/2^3,等效到输入的误差<delta/4^5=1/2LSB. M1 ~6 ~( }0 K" b @$ ?
3 z" X* I+ i% r2 X* `9 l
对于MDAC1,忽略opamp的输入寄生电容,beta=0.25,gain=4,
7 D9 \- ]. C* S1 r& H$ r9 O9 y 输出opamp的有限增益误差 delta=1/(beta*A1)=4/A1
% ~7 m' O: ]- @) l/ f 等效到输入,误差为delta/gain=delta/4=1/A1,令1/A1<1/2LSB,得到A1>2/LSB=2^13,故A1>78dB
& }& o9 V3 W, `6 U+ S2 L1 e# H* J7 t/ m) q* a# I' O5 J2 ]
对于MDAC2,考虑到opamp的输入电容,beta=1/5,gain=4^2, m5 X& H' Q. e& }8 j8 a
输出opamp的有限增益误差 delta=1/(beta*A2)=5/A1/ h; }8 U8 [6 \# Q( h8 v: J3 v
等效到输入,误差为delta/gain=delta/4^2=5/(16*A2),令5/(16*A2)<1/2LSB,得到A2>5/8/LSB=5/8*2^12,故A2>68dB5 Q# A+ d9 n, ^
% A) o- e5 |/ j% i$ \( |7 r
对于MDAC3,考虑到opamp的输入电容,beta=1/5,gain=4^3,% `: H! s# ^3 Y* I, w3 C" s
输出opamp的有限增益误差 delta=1/(beta*A3)=5/A1
7 Y& ?4 D- |8 X" y. Q: b 等效到输入,误差为delta/gain=delta/4^3=5/(48*A3),令5/(64*A3)<1/2LSB,得到A3>5/32/LSB=5/32*2^12,A3>56dB& J* Z- d3 I" U; D, C
+ K F. l% ~ S( M同理,
; p2 v1 |7 W+ {对于MDAC4,A4>44dB: ?. [8 v) o5 f% B
对于MDAC5,A4>32dB: k8 i$ d8 `5 \+ {9 q' ~' H
3 [4 ?! _) t) u到此,应该可以估计各级OP的结构了
! U3 R7 D0 f# YSH/MDAC1: gainboost
( n c m* {' C& Y/ v+ x0 e* _MDAC2/MDAC3: 普通foled cascode可能不一定够,搞不好需要gainboost
. ~5 L% C2 u: c4 I: O. J. GMDAC4/MDAC5: folded cascode
! F, P r6 v8 I*****************************************************************
6 ]4 p# @, w0 n) k3. opamp的GBW的要求8 u m* C* ]; P( d, z
计算标准:各级建立误差等效到输入端必须小于0.5LSB
* A: [- c; k6 @6 q' ^" h6 C3 \各级建立误差等效到输入为delta=exp(-t/tao)/gain<1/2^(N+1),其中tao=1/omega=1/(2*pi*beta*fu), - q. _/ x, J: k+ U; f9 m7 s1 S
t=1/(2*fs)*0.8=0.4/fs
) c/ \# M+ V2 \- E2 p推导得到beta*fu>ln(2^13/(gain)/(0.8*pi)*fs9 ^/ U. c) x- ?; q# G
====================================================
8 w4 |3 j4 m) V/ s; k) J对于MDAC1:gain=4,beta*fu>303MHz
) o2 Z# Z2 T+ U, p) a. z0 ]对于MDAC2:gain=4^2,beta*fu>248MHz
) `; q' \8 D5 D& N5 k; I, W对于MDAC3:gain=4^3,beta*fu>193MHz7 N' ]8 g( p" z) N( t4 t3 [
对于MDAC4:gain=4^4,beta*fu>138MHz
) l/ k. k7 w0 C" E: p$ ]对于MDAC5:gain=4^5,beta*fu>83MHz) U$ H) }3 o3 s( E5 T8 D6 Q7 j' c
=====================================================/ w2 E- O9 ]# |
计算的时候没有考虑Non-overlap time,slew rate时间20%,具体设计的时候需要根据实际情况微调。
/ }( i5 t8 _- ^& K- g******************************************************************, u1 Q" {9 [" _! H: Z3 C: j( T6 W+ W* m
4. 从Noise的角度确定各级电容的值
) [9 Q& V }1 t3 |LSB=VFS/2^12=1.6/2^12=390uV
* r: q8 x3 r* b' W量化噪声LSB^2/12=12.7e-9,换算到电压为112uV/ r1 k' W7 e( i% W! ?+ F% `9 a r
对于KT/C noise ,定义1pF电容的KTC噪声为单位噪声,Nu=KT/1pF, 换算成电压是64.5uV
: P6 v' d! }* G6 f p& Q+ w在本设计中电容取值分配如下:
; @( Z, f3 \! _( T# ?0 p7 FSH------->2.3pF, 等效KTC noise power=Nu/2.3+ i2 b- d* ~7 N# _9 s7 v
MDAC1->2.3pF, 等效KTC noise power =Nu/2.3. W1 q9 |! Q- B; U3 \
MDAC2-->0.8pF,等效KTC noise power =1.25*Nu/gain^2=1.25*Nu/4^2=0
6 X6 F: W- q. c- e4 X8 b5 I1 I7 g" @& FMDAC3-->0.5pF,等效KTC noise power =2*Nu/gain^2=2*Nu/16^2=0
# f# p! a* E7 D, T7 ^8 ^MDAC4-->0.5pF,等效KTC noise power =0
2 \% y9 x4 ^, C5 ?9 M7 tMDAC5-->0.5pF,等效KTC noise power =0: {7 _$ n. u' e6 h7 M
D7 i3 f$ Y) m$ L9 NTotal Noise power for single ended=(1/2.3+1/2.3)*Nu=Nu
+ i5 h! c+ B; a3 _7 CTotal Noise power for differential ended = 2*Nu换算成电压,Vn=sqrt(2*Nu)=91uV
' x2 P5 C; x- e这个噪声比量化噪声小一点点,基本可以接受了,就这么定了。5 W% b8 m( J; U; \6 l9 `
======================================
. ]) Z$ o3 l# G# K( A当然,仅仅考虑KTC噪声就定电容是非常不应该的。至少还有2个东西需要考虑,一个是opamp的噪声,另一个是电容的mismatch K1 d& S/ V0 _% X" t( W _
对于12bit的ADC,电容的Mismatch可能更容易成为瓶颈,后面再作分析。另外,由于opamp的等效噪声也是与KT/CL呈正比,增加电容能够客观上增加CL,从而减小opamp的噪声,然而带来的坏处也显而易见,功耗增加。因此,电容的选择可能需要几次重复迭代了。
0 M6 Y# h7 |' s% A************************************************************4 E- R9 E5 D" g! S. N/ n7 O
4 从Mismatch的角度出发确定各级电容的值
7 I- T' b& q/ L+ k===============================================+ G: J2 z# n7 F1 _5 `4 I7 M
(1)电容基本信息0 p4 d: O5 ?/ m% B, ?
" p: R) T3 p4 }" {0 M3 m% a. vType | MIM | 单位容值 | 1fF/um^2 +/-15% | Fringing cap | 0.075fF/um | TC | 40ppm/C | VC | 30ppm/V |
0 Y# z, z) E% U) R j1 s |
( g( t2 Z. q7 [% b | ================================================
# g4 z, o( F) T; Q$ G5 c# n
$ ] T3 x+ A' U(2)电容的Mismatch参数
3 j' j. [- i& q) I. y3 J
+ J& U4 ~; H+ ?8 F! c
+ H9 s( Q0 ?, u# a电容尺寸 | mismatch | 10um*10um | 0.0933% | 15um*15um | 0.0646% | 20um*20um | 0.0658% | 25um*25um | 0.0402% | 以上数据是从Foundry的design rule中摘抄出来的mismatch参数,可以看到20*20的电容的mismatch反而比15*15的要差,这个基本上要归因于测试误差了,大可不必太过在意。
# |6 O9 ~' q% @ u* |电容的mismatch与面积均方根呈反比,面积越大,mismatch越小。) E0 E8 A6 N2 v3 D- B7 G' d
/ }. {+ o3 G* R- p5 W: }) r对于SH和MDAC1,采样电容分为4个,每个的单位尺寸为24um*24um,则采样电容=2.3pF
* x, W5 b9 }6 O假定Foundry给的这个值是1sigma值,则24um*24um的mismath=0.05%,则3sigma=0.15%,先有个感性认知吧。% O2 j$ @' D+ v! M2 A. J2 o$ Q- X
===================================================
5 o' |9 o9 ^; p8 q: `' }(3) 关于mismatch的几个基本概念假设单位电容Cu对应的相对标准偏差为sigma( |" E5 s, h! N
1个Cu比上1个Cu,相对标准偏差是sqrt(2)*sigma
7 R# ~9 s2 u; V/ R0 e4个Cu的相对标准偏差是0.5*sigma
4 c2 u% `7 D9 N B- w7 |4个Cu比上1个Cu,此时的相对标准偏差为sqrt(1+1/4)*sigma=1.06*sigma
/ |7 d" l- e( z% H2个Cu比上2个Cu,此时的相对标准偏差为sqrt(1/2+1/2)*sigma=sigma3 q( f+ E% U, \2 h+ V' E
看官们别小看上面这几个例子,概念不清晰不一定会算的噢。如有算错,还请指点。
. `: Q8 ?- y, t& N===================================================5 F1 ]7 i; D; y
(4) 多bit MDAC可以提升pipelined adc的线性度. C% z. B7 J/ O7 d8 S
随着pipelined adc的resolution的不断提升,电容的mismatch可能成为线性度的瓶颈。
% ~5 Y0 F9 ^2 l, d对于N<10bit时,通常采用1.5bit/stage的流水线结构;6 j: z7 h( f7 Z/ d
当N〉12bit时,在没有cap mismatch calibration 的情况下,往往提升头1~2级MDAC的位数,这可以降低对cap mismath的要求。
9 G, U2 \- ], E; ?* {8 U# fDNL=(Gideal-G)/Gideal*1/2*2^N/Gideal (LSB); ?! c4 W: K4 _7 e
从上式可以看出,对于N=12# n& s/ P# ]7 A5 g1 f, \2 I2 J
对于1.5bit/stage, Gideal=2,(Gideal-G)/Gideal的3sigma值为3*sigma(simga为单位电容的相对标准偏差). o N& y( r9 H1 n7 o9 J
DNL=2^10*3*simga (LSB)' |$ J- Y% V- t m3 B2 R0 x* {' H
令DNL<0.5LSB,则要求sigma<1/(3*2^11)这要求也忒高了,基本不可能
- o6 L# R7 L8 Z4 @: M+ w
) L5 C2 ~; r7 q X2 t. K) z对于2.5bit/stage, Gideal=4,(Gideal-G)/Gideal的3sigma值为3*sqrt(2)/2*sigma(simga为单位电容的相对标准偏差)) @) j7 [( c( z. D
DNL=2^9*3*sqrt(2)/2*simga (LSB)% A, h9 @) t9 i e8 ^5 j- x3 J
令DNL<0.5LSB,则要求sigma<1/(2^9*3*sqrt(2))=0.046%! m/ N$ L5 b7 g! a( W/ D6 e
- @6 K: y9 ?0 C0 F
呵呵,也就是说对于12bit adc而言,如果采用2.5bit/stage,考虑3个sigma的偏差,则对采样电容的单位电容(4个单位电容组成采样电容)的相对标准偏差的1sigma值的要求是0.046%,刚好落在24*24um^2附近。有木有?' I" s+ W9 a/ \+ E" b8 f4 b# k
所以,SH和MDAC1单位电容就取24um*24um了,既满足噪声要求,又满足mismatch对线性度的要求,同时又不至于余量太多浪费功耗。$ U, {7 I0 X0 W- h, ~9 T
=========================================================
/ ~, s- y! v z1 O( F接下来还要考虑MDAC2的采样电容的值,从mismatch的角度,0.8pF的电容是否够?DNL=(Gideal-G)/Gideal*1/2*2^N/Gideal (LSB)) K, a/ A2 e. t+ L; m) m
从上式可以看出,对于N=10
. x! }5 |) w% P' v- P, B对于2.5bit/stage, Gideal=4,(Gideal-G)/Gideal的3sigma值为3*sqrt(2)/2*sigma(simga为单位电容的相对标准偏差)0 A! m1 a4 q8 f
DNL=2^7*3*sqrt(2)/2*simga (LSB)' o: ^0 u: M; }1 `3 `' ~
令DNL<0.5LSB,则要求sigma<1/(2^7*3*sqrt(2))=0.18%0 p9 y! |) |4 \4 B% [& S [
也就是说对于10bit adc而言,如果采用2.5bit/stage,考虑3个sigma的偏差,则对采样电容的单位电容(4个单位电容组成采样电容)的相对标准偏差的1sigma值的要求是0.18%,10um*10um的单位电容就足以达到这个匹配精度了。此时总的采样电容为0.4pF,本设计取0.8pF,应该是绰绰有余了。
# C s1 C# Y) ?- M/ ]***********************************************************
6 v" ]( k* g$ r! K后面各级的采样电容就直接取为0.4pF应该就差不多了,具体不再计算 |
|