运放的设计是基础,但是对于初学者来说,总有一道跨不过去的坎,那就是怎么分析怎么仿真。这也许怪不得初学者,市面上的基本教科书除了allen的书提到用L和C对运放构成直流闭环AC开环的测试电路之外,其他的书对此都没有具体提。如果老师再不提这个事情,那学生自然就一直是一头雾水了。
我个人觉得对于运放,可以用开环思考闭环仿真这几个字来总结。先说闭环仿真,这基本上是大家的共识。主要原因就是opa如果开环来仿真,就需要在输入端加入一个offset来补偿,否则由于比较大的增益,输出不是为高就是为低,运放的工作点也就不正常了。所以在仿真时我们一定要让电路在直流构成闭环电路,使其工作点正常。至于交流,由于我们一般是要测开环特性,所以AC下开路也是很常见的。为了实现这个直流闭环交流开环,其实有很多方法可以用,比如之前提到的LC电路,或者RC,或者spectre下有特殊的器件。当然了,现在最流行的应该还是spectre下直接用stb方法,就不用考虑那么多了。
这次blog的讨论重点其实主要在前一项:开环思考。如何分析opa的静态工作点,各个器件该如何选择,各个器件大小和电路静态工作点的关系等等,其实是我们分析opa的第一步。我最开始的时候也常常犯晕(其实现在见到新结构也会犯晕),不过如果用合适的分析方法,就可以将这个过程简单化。首先我们应该认为电路工作在开环模式下(如果一开始就认为opa像仿真或者实际使用那样是闭环,那么在分析中就会把反馈引进来,输出就会反过来影响输入,从而把事情搞复杂)。其次,把电路里的节点分为高阻节点和低阻节点。高阻节点就是节点的对地电阻为高,比如两个mos的漏相连接。低阻就是节点对地电阻为低,比如mos的源和漏连接。一般来说,低阻节点的电压是可以容易确定,而高阻节点的电压却是不确定的。举个例子,比如一个反相器,输出就是高阻节点,它的电压与输入有关系,但是如果我们说输入是3v,输出电压的范围也是很大的,从1v到4v都有较大可能。(有反应快的应该已经看出,这里其实也和增益有关系)。那么在实际电路中,高阻节点的电压到底是什么呢?我们先考虑理想情况,就是电路如果没有任何系统offset,那应该是什么样子的。在这种情况下,先考虑最后一级,输出应该是中间电平。而要输出中间电平,上下的电流应该是一样的。其他高阻节点呢?以通常的两级运放为例,第一级的输出(电流镜的输出)根据对称性,应该和相应的电流镜输入电压相同。这个电压又决定了第二级放大级的电流。所以要实现零系统offset,应该设计第二级放大级的大小使得电流与第二级电流源的电流一致。那么非理想情况呢?非理想情况下,得考虑mos的输出内阻,得考虑电流镜匹配有误差,等等等等,还得考虑我们未必按照前面所说设计管子大小。那么这时候开环运放就有了系统offset。这时候该怎么考虑呢?我们这时得考虑反馈了。反馈的最终目的是让运放工作正常。那么这时候运放的输出就会被反馈固定在中间电平。要实现这一目标,系统的各个部分电压都会发生多多少少的变化。对于低阻节点,该变化很小,但对于高阻节点,该变化却可能很大。所以此时我们不如倒着想这个事情:输出节点电压固定,反过来确定上下电流应该一致,反过来确定第一级的输出电压,反过来确定第一级的输入应该有一定的电压差,这就是系统offset了。
举两个例子做说明吧。一个是典型的classAB设计,就是用浮动电流源对输出级偏置。其实这个电路就是开环给输出级上下两个偏置,如果一切都理想,输出级的电流就等于是被一个电流镜偏置,所以静态电流是可控的。当然了,在实际中这个条件其实有时满足的并不好,所以系统offset必然会产生,从而进一步调整直流电流和上下两个管子的偏置电压。我常常碰到的情况就是理论上p和n管各自流过一半电流,但是如果按照理想的尺寸带入,可能并不是对半分。这就可以等效理解为和前端有了offset一样的效果。所以这时候可以调整一下尺寸,尽量对半分,使得当前端真正有信号时,也不会压缩可用摆幅。
另一个是allen书中提到的classAB。电路原始形态就是在两个输出管上各加一个运放构成的负反馈,减小输出电阻。理想情况下输入是电压v1,输出也会是电压v1。但是考虑有运放offset,那么上下的opa就会竞争,输出到底是v1+offset1还是v1+offset2,显然就是个问题。这里的主要问题就是在开环时输出被两个运放反馈控制,其实是个低阻点。最后为了实现输出是某个值,就必须有一个或者两个运放失去自己高增益的特性才可以,而这就意味着之前的假设不成立,输出级的电流可能变化很大。这个电路在80年代的jssc上出现,后来有好几篇对这个结构的改进,核心就是不要让两个opa去竞争控制一个节点的电压值,而是引入另一个调节机制,让某一个运放具有一定的适应能力。