本文为我自己的学习笔记,是Cadence Virtuoso系列的第二篇文章,也是入门系列的文章,采用的软件版本是Cadence Virtuoso IC617。其他文章请点击上方,看我制作的Cadence Virtuoso专栏内容。
本文主要记录了如何用Cadence Virtuoso IC617和工艺参数设计有源负载差动对(俗称五管OTA)。这将帮助学习者理解工艺参数在运放设计中的作用,以及为后续引入 gm/Id 设计方法做好铺垫。
五管OTA的主拓扑由五只晶体管组成。注意,这里不考虑深n阱工艺等特殊工艺,所以,所有的N-MOS的B端接到GND,所有的P-MOS的B端接到VDD。
两只输入管 M1 和 M2 为N-MOS,互相对称,构成差分输入结构,其跨导gm和增益相关。
M3 和 M4 两只P-MOS构成有源电流镜,互相对称,其中 M4 的 D 端接输出,而 M3 的 D 端和 G 端相连,这就构成了单端输出结构。
最后的 M5 决定了尾电流,其需要另外接一个电流基准。
在输出端还需要接上 pF 级别的负载电容。
以一个例题举例,题目要求如下:
S R = I 5 C L ( I 5 = I S S ) SR={I_5 \over C_L}\quad (I_5=I_{SS}) SR=CLI5(I5=ISS)
P = V D D ∗ I 5 P=V_{DD}*I_5 P=VDD∗I5
R o u t = 2 ( λ n + λ p ) I 5 R_{out}={2 \over (\lambda _n +\lambda _p)I_5 } Rout=(λn+λp)I52
f − 3 d B = 1 2 π R o u t C L f_{-3dB}={1 \over 2\pi R_{out} C_L} f−3dB=2πRoutCL1
A v = g m 1 , 2 R o u t Av=g_{m1,2}R_{out} Av=gm1,2Rout
V I C M R − M A X = V D D − V S G 3 , 4 + V T N V_{ICMR-MAX}=V_{DD}-V_{SG3,4}+V_{TN} \\\quad\\ VICMR−MAX=VDD−VSG3,4+VTN
V I C M R − M I N = V D 5 , s a t + V G S 1 , 2 V_{ICMR-MIN}=V_{D5,sat}+V_{GS1,2} VICMR−MIN=VD5,sat+VGS1,2
在之前的文章中,已经把工艺参数仿真出来了,可以点击以下链接查看仿真方法。
用Cadence Virtuoso IC617仿真工艺库参数
仿真出来的参数如下。
其中Kx代表衬底的参数。
K
x
=
μ
x
C
o
x
\quad\quad K_x=\mu_xC_{ox}
Kx=μxCox
首先确定尾电流 ISS 的取值,即 I5 ,才能确定各个晶体管的尺寸。
S R = I 5 C L ⩾ 20 V / μ s ⇓ I 5 ⩾ 40 μ A SR={I_5 \over C_L} \geqslant 20V/\mu s \\\dArr\\ I_5\geqslant 40\mu A SR=CLI5⩾20V/μs⇓I5⩾40μA
f − 3 d B = 1 2 π R o u t C L = ( λ n + λ p ) I 5 4 π C L ⩾ 1 0 6 ⇓ I 5 ⩾ 113 μ A f_{-3dB}={1 \over 2\pi R_{out} C_L} ={(\lambda _n +\lambda _p)I_5 \over 4\pi C_L} \geqslant 10^6 \\\dArr\\ I_5\geqslant 113\mu A f−3dB=2πRoutCL1=4πCL(λn+λp)I5⩾106⇓I5⩾113μA
P = V D D ∗ I 5 ⩽ 0.5 m W ⇓ I 5 ⩽ 200 μ A P=V_{DD}*I_5 \leqslant 0.5mW \\\dArr\\ I_5 \leqslant 200\mu A P=VDD∗I5⩽0.5mW⇓I5⩽200μA
综合以上计算,得出 I5 的取值范围如下。
113
μ
A
⩽
I
5
⩽
200
μ
A
113\mu A \leqslant I_5 \leqslant 200\mu A
113μA⩽I5⩽200μA
由于左边范围由转换速率和截止频率约束,右边范围由功耗约束,为了更好接近指标,取值可以稍微靠右,选取以下数值。
I
5
=
180
μ
A
I_5 = 180\mu A
I5=180μA
以下关系式成立,可以代入Av的计算公式中。
g
m
1
,
2
=
2
K
n
(
W
L
)
n
1
,
2
I
1
,
2
I
1
,
2
=
1
2
I
5
g_{m1,2}=\sqrt{ 2K_n \Big ({W \over L} \Big)_{n1,2} I_{1,2}} \quad\quad I_{1,2}={1 \over 2}I_5
gm1,2=2Kn(LW)n1,2I1,2
I1,2=21I5
可以得到以下结果。
(
W
L
)
n
1
,
2
=
A
v
2
(
λ
n
+
λ
p
)
2
I
5
4
K
n
≈
25.25
\Big ({W \over L} \Big)_{n1,2}= {A_v^2 {(\lambda _n +\lambda _p)}^2 I_5 \over 4 K_n }\approx25.25
(LW)n1,2=4KnAv2(λn+λp)2I5≈25.25
以下关系式成立。
V
S
G
3
,
4
=
2
I
3
,
4
K
p
(
W
L
)
p
3
,
4
+
∣
V
T
P
∣
I
3
,
4
=
1
2
I
5
V_{SG3,4}=\sqrt{ {2I_{3,4} \over K_p( {W\over L} )_{p3,4}} }+\lvert V_{TP} \rvert \quad\quad I_{3,4}={1 \over 2}I_5
VSG3,4=Kp(LW)p3,42I3,4
+∣VTP∣I3,4=21I5
同时对公式移项。
V
I
C
M
R
−
M
A
X
=
V
D
D
−
V
S
G
3
,
4
+
V
T
N
⇓
V
S
G
3
,
4
=
V
D
D
+
V
T
N
−
V
I
C
M
R
−
M
A
X
=
1.16
V
V_{ICMR-MAX}=V_{DD}-V_{SG3,4}+V_{TN} \\\dArr\\ V_{SG3,4}=V_{DD}+V_{TN}-V_{ICMR-MAX}=1.16V
VICMR−MAX=VDD−VSG3,4+VTN⇓VSG3,4=VDD+VTN−VICMR−MAX=1.16V
最后得出。
(
W
L
)
p
3
,
4
≈
3.5
\Big ({W \over L} \Big)_{p3,4} \approx3.5
(LW)p3,4≈3.5
以下关系式成立。
V
G
S
1
,
2
=
2
I
1
,
2
K
n
(
W
L
)
n
1
,
2
+
V
T
N
I
3
,
4
=
1
2
I
5
V
D
5
,
s
a
t
=
V
G
S
5
−
V
T
N
=
2
I
5
K
n
(
W
L
)
n
5
V_{GS1,2}=\sqrt{ {2I_{1,2} \over K_n( {W\over L} )_{n1,2}} }+V_{TN} \quad\quad I_{3,4}={1 \over 2}I_5 \\\quad\\ V_{D5,sat}=V_{GS5}-V_{TN}= \sqrt{ {2I_5 \over K_n( {W\over L} )_{n5}} }
VGS1,2=Kn(LW)n1,22I1,2
+VTNI3,4=21I5VD5,sat=VGS5−VTN=Kn(LW)n52I5
代入进以下公式。
V
I
C
M
R
−
M
I
N
=
V
D
5
,
s
a
t
+
V
G
S
1
,
2
=
0.8
V
V_{ICMR-MIN}=V_{D5,sat}+V_{GS1,2}=0.8V
VICMR−MIN=VD5,sat+VGS1,2=0.8V
最后得出。
(
W
L
)
n
5
≈
25.7
\Big ({W \over L} \Big)_{n5} \approx25.7
(LW)n5≈25.7
同时得出 VGS5 ,也就是尾电流晶体管的直流偏置电压。
V
G
S
5
=
V
b
=
0.575
V
V_{GS5}=V_b=0.575V
VGS5=Vb=0.575V
根据以上结果,汇总成下表。
1,2 | 3,4 | 5 | |
---|---|---|---|
W/L | 25.25 | 3.5 | 25.7 |
选取最小栅长180nm的两倍作为晶体管栅长,定以下尺寸。晶体管栅长的最小步进是10nm,也就是说,只能是180nm,190nm这样取值,而不能取185nm,会导致W/L的实际取值和计算稍微有点偏差。
1,2 | 3,4 | 5 | |
---|---|---|---|
W | 9.1u | 1.26u | 9.3u |
L | 360n | 360n | 360n |
W/L | 25.28 | 3.5 | 25.8 |
在Cadence Virtuoso IC617里绘制器件内部的原理图。同时,设置Pin脚,即将其作为一个完整的模块进行仿真。电源接口设置为“inputOutput”双向接口,其他的就设置为“input”或“output”。注意,pin的名字不要和其他的网络标号同名,在部分工艺库中是不区分大小写的,所以字母一样但大小写不一样也不行,保存的时候会报Error。
设计好子模块后,生成单独的器件。
名字选择默认的即可,默认的为当前原理图的名字。
这里设置的是Pin脚的朝向,按照一般的习惯设置即可。
默认出来的器件有点丑,但是引脚的位置都是我们上一步设置过的。
可以自己改一下器件的线条,能好看点(可选)。
把原理图和器件图都保存后,可以在库管理菜单中看到,这个OTA器件,不仅有常见的原理图,还多了个器件选项。
新建一个原理图,用于测试。
命名为OTAtest。
按照正常的插入器件的方式,选择库,选取器件。
插入到原理图中的器件。
按照原理,将电路连接好。
注意,vsin这个电压源,只设置AC magnitude幅值参数,不设置频率。
依次设置仿真类型,选择ac仿真,频率从1000到10M(这样出来的X轴为非线性,比较直观),输出点选择in和out,具体设置比较简单,略过。
点绿色图标开始仿真,出来仿真结果。添加一个vout=10mv的marker标记。从中得到输出大致为800mV,而输入为10mV,增益Av=80,特征频率ft=50MHz(即vin=vout),而f-3db会比ft略大。
尾电流大致为88.5uA。
从上面的测试结果可以看出,能达到基本的指标,但是还存在一定的问题。其中最突出的是,在设计过程中,设计的尾电流I5为180uA,而仿真出来的尾电流仅为88.5uA,相差较大,但也能很好满足指标。
若想继续提高尾电流,在Vb不变的情况下,应该提高M5的W/L。因为在实际设计中,这是一个有源电流镜,其W/L直接与电流在一定范围内成线性关系。
以上的设计也告诉了我们,通过工艺参数去设计电路是不太靠谱的,同时大部分的工艺库都不会给出衬底的参数,即un和Cox,就是计算中用到的Kn。当遇到大型工程时这些问题会变得更加复杂。所以我们需要用gm/Id来设计运放,这将在以后的文章中记录。