开关电容电路曾经非常重要,Themes有一本80年代的书专门围绕开关电容滤波器展开。题目却是信号处理所用的模拟电路。当时开关电容电路的一个重要领域应该就是滤波器设计。但是时过境迁,开关电容电路在滤波器方面的应用显得少了些,而在AD,DA等电路中却成了一些基本构件,这还是得归结与工艺的变化,数字信号处理代替了不少模拟信号处理的领域。
由于开关电容电路成了AD,DA等电路的基本构件,所以我觉得它其实应该和opa设计一样,成为教科书里的基本内容。razavi的书就反映了这个特点,而gray的书似乎就有些反映迟缓了(不知道第五版如何)。
这里就说说开关电容电路里一些常见的问题吧。首先时钟怎么产生?放现在也许是个烂问题,但是放十年前真是一个经典的面试题。其实就是看大家如何理解为什么需要这么设计时钟,特别是关于电荷注入的分析。其次是电路的传输函数。如果简单的只有几个,估计大家都能写出来,无论是背还是电荷守恒推导。但是如果控制信号很多(如CDS电路),或者有环路(如delta-sigma),该如何分析呢?其实我也不会一下子写出来。laker,allen等人的书上给出了一套系统的分析方法,可惜我看过之后仍然记不住,主要是觉得性价比太低,即使记住了用的很少,时间一长就忘了。那套方法我觉得当年是为计算机分析开发的,更注重自洽与规整性。所以我平时记住的唯有正向增益和反相增益两种最常见电路传输函数,其实百分之七八十的电路都不脱离这两种。对于CDS里那么多复杂的,也只好求助于电荷守恒了,好在他们的电路复杂,但规模并不大。而对于delta-sigma,里面一个最重要的问题就是存在hold,因此在整个环路分析中必须小心相位关系(在这里翻船是常事)。再一个问题是建模,主要是速度建模。这方面大家基本方法一致,都是认为先有sr区域,当sr的斜率等于与BW对应的初始SR一致时,转入指数上升区。delta-sigma设计中好几个simulink都是如此建的模型。因此这时候它的建立时间其实是个非线性的。在此基础上,有人提出opa设计的一些原则,有认为要sr大的,有认为可以优先考虑BW的,又有说经验上看,几比几分摊时间的,等等。关于这点,还真不知道哪家的更准确。不过一般sr和BW还是有一定关系的,sr~I/CL,BW~I/vdsat/CL,但是大家一般取输入管vdsat似乎也习惯较小,所以似乎想优化可以,但是范围也不一定会太大。不知道是否有人专门把输入管的vdsat取较大值。说到这里想起来有一个问题,如果是单级opa,输入管的cgd和反馈电容是并联关系,但是如果是多级,输入管的cgd就被用miller效应算成对地电容,为什么会有这么大的变化?开关电容的噪声也是一个问题,大家习惯上就用kt/c去算了。但是为什么说是kt/c,kt/c前面的系数应该是多少,这个kt/c代表什么含义的噪声,能说清楚的估计不多。可以看一下我以前的blog,这种噪声是线性周期时变电路产生的,所以和传统的线性时不变系统产生的噪声有一定差异。所以估算用kt/c也不失为一种简单方法,仿真用pnoise也不错。想了解跟多内容,我觉得understanding delta-sigma ADC的附录可以算一个入门,cadence自带的介绍pnoise或者design guide上的pnoise介绍可以算仿真的入门。最后一个问题就是开关电容电路怎么仿。其实单纯的开关电容电路似乎问的人不多,许多人关心的是共模反馈如果用开关电容电路,原先的opa怎么仿。做法有好几种,一种是用连续时间的行为级直接替换共模反馈,一种是先瞬态让共模反馈建立好,然后用此时的工作点仿真ac(spectre里是在ac仿真处选previous op,而且要让tran先仿真),据说还有一种是用pac,这种我是没用过。从原理上说前两种都是忽略共模反馈本身引入的周期时变特性,只是让它提供一个共模点,而后一种则是把运放当时变电路看待,原理上有本质不同。