编者按:UCLA以电路方向的研究和教学闻名于世界,Behzad Razavi教授和Asad Abidi教授更是世界闻名的电路大师。UCLA的研究生课程模拟集成电路设计(EE215A)正是由Razavi和Abidi两位大师轮流授课。我有幸在UCLA上过两位大师的课,在这里想和大家分享课程的精华部分。两位大师上课的内容略有不同互为补充,所以我们的系列文章中部分笔记内容来自Razavi部分笔记内容来自Abidi。Razavi的EE215A讲义可以在他的主页找到(www.seas.ucla.edu/brweb/teaching.html),不过Razavi上课的风格是发一份讲义然后在关键部分留下空白需要学生自己作笔记以避免学生翘课☺。Abidi的EE215A笔记由卓伟汉整理。讲义的版权归两位教授所有。好了,下面让我们正式开始EE215A的旅程。
我们也准备了本次课程解说的pdf版下载,感兴趣的朋友请在关注矽说(微信号:silicon_talks)后发送消息“215A_pdf1”获取下载链接
第一讲 绪论与线性时不变系统
(Razavi教授打开平板电脑,站到讲台中央对着大家说:”Hello everyone, welcome to EE215A. How are you today? Good? Excellent! Let’s get started…”)
模拟系统是指系统中的信号量在一定范围内连续可变的系统(与之相反,数字系统中信号只能取离散的0或者1)。为什么我们要研究模拟系统?有两大原因。其一,自然世界中的信号本质是模拟的,比如声音和图像。人们需要在将这些模拟信号作一定处理(放大,滤波等等)后使用模数转换器转换为数字信号,才能为后续的数字系统所使用。其二,数字信号在非理想介质中传播时会发生衰减和失真,因此我们需要把这些数字信号当作模拟信号来处理才能在接收端顺利地恢复信号。例如在上图的例子中可以看到数字信号经过USB线缆的衰减到了接收端已经非常难看,需要使用模拟均衡器(equalizer)处理后才能恢复正确的波形。
模拟电路是电子系统中必不可少的一部分,而且也是业界和学术界研究的热点。在2010年-2014年的国际固态半导体电路会议(ISSCC,全球最好的集成电路学术会议,每年都有大批来自工业界和学术界的顶尖成果在该会议中发表,被称为“集成电路界的奥林匹克盛会”)中,和模拟电路相关的论文占到60%以上(这个数字一直到今年的ISSCC都是如此)。从另一方面,这也说明模拟电路的设计存在各种挑战,需要我们不断创新来解决问题。
模拟电路会遇到多方面的挑战。首先,模拟电路需要更多的折中。设计者必须全盘考虑功耗,速度,增益,电源电压才能得到一个最优的设计。第二,模拟电路中的信号是连续的,因此相比数字信号噪声容限(noise margin)更小,更容易受到噪声和串扰的影响。第三,模拟信号对半导体器件的非理想因素(如非线性)很敏感。第四,模拟电路的综合很难使用自动化工具,而是需要设计者手工完成。第五,模拟电路相比数字电路更难建模和仿真。数字电路只需要使用布尔逻辑和延时两个参数即可完成建模,而模拟电路建模需要的参数(增益,带宽,瞬态响应,输入输出阻抗,非线性失真等等)远多于数字电路。因此数字电路仿真最常见的方法是使用带反标延迟的Verilog网表,而模拟电路仿真则需要SPICE网表,复杂度和文件大小远高于晶体管数目相同的数字电路。最后,模拟电路更容易受到工艺,电源电压和温度(PVT)的影响。总之,模拟电路的设计充满挑战,需要设计者认真对待。
(Abidi教授从文具盒中取出一支粉笔,清了清嗓子说:”Let’s begin from fundamentals…”)
大多数模拟电路可以用线性时不变(linear time-invariant, LTI)系统来近似。对于线性系统f(x),需要满足:
f(ax1+bx2)=af(x1)+bf(x2)
我们考虑如下系统
f(x)=x+1
它是不是线性系统呢?我们取a=b=1:
f(x1+x2)= x1+x2+1≠ (x1+1)+(x2+1)= f(x1)+f(x2)
所以它不是线性系统。
对于时不变系统,当输入发生延迟Δt时,输出也相应延迟Δt。
LTI系统可以由冲激响应(impulse response)来定义。当输入x(t)为冲激函数时,我们把系统的输出响应h(t)称为冲激响应。由于任意输入x(t)都可以近似表示为冲激函数序列的和,相应的系统响应可以表示为输入和系统冲激相应的卷积(具体请参考《信号与系统》课本)。
当输入为x(t)=est时,系统响应可以表示为:
其中H(s)是h(t)的拉普拉斯变换,而s=σ+jω。H(s)也常常称为系统的传递函数(Transfer Function)。
一个简单的传递函数的例子是RC串联电路。可以很容易地得到传递函数H(s)=1/(1+SCR)。
讲到这里,我们需要停一下来弄清楚输入信号x(t)=e
st
到底是什么样子的。
x(t)=e
st
=e
(σ+jω)t
= e
σt
e
jωt
,它表示的是包络随时间指数增长(σ>0)或指数衰减(σ<0)或不变(σ=0)的正弦信号。
包络随时间指数变化的正弦信号
其中e
σt
表示包络变化而e
j
ω
t
表示正弦波。我们知道现实中的信号都是实数,那么为什么用复数e
jωt
表示实数信号呢?这其实是为了方便。一个实数信号cosωt可以用复数表示为:
cosωt= e
0t
(e
jωt
+e
-
j
ωt
)/2
即它可以在复频域分解成+ω和-ω两个频率分量的和,而包络参数σ=0。由于系统是线性的,因此它对cosωt的响应可以表示为系统对e
j
ω
t
与e
-
j
ωt
两个激励的响应的和:
y(t)= e
0t
[e
jωt
H(s
1
)+e
-jωt
H(s
2
)]/2
这里s
1
=0+jω,s
2
=0-jω,于是:
y(t)= e
0t
[e
jωt
H(jω)+e
-
jωt
H(-jω)]/2
对于一个响应为实数的系统,其传递函数满足:
H(-jω)= H*(jω)
其中H*(jω)表示H(jω)的共轭。于是
y(t)= e