2.2.3 折叠Cascode放大器的摆率

两个二极管接法的晶体管\(Q_{12}\)和\(Q_{13}\)在正常工作时截止,对于放大器的工作几乎没有影响。但是他们能共有效的提升数倍摆率[Law, 1983]。为了理解他们的功能,首先考虑没有这两个晶体管时的摆率限制。假定有一个很大的输入差分电压导致\(Q_1\)突然导通,\(Q_2\)突然截止。由于\(Q_2\)截止,\(Q_4\)的所有偏置电流都流到Cascode晶体管\(Q_5\)上,流经n沟道电流镜并流到输出电容。因此输出电压将以线性摆率变化:

\[SR=\frac{I_{D4}}{C_L} \tag{2.2.7}
\]

同时,由于所有的\(I_{bias2}\)流经\(Q_1\),并且这个电流一般设计的比\(I_{D3}\)要大,\(Q_1\)和电流源\(I_{bias2}\)都会进入线性区,导致\(I_{bias2}\)降低直到其等于\(I_{D3}\)。作为结果,\(Q_1\)的漏极电压会接近地。当放大器离开摆率限制时,在放大器重新工作在线性区之前,\(Q_1\)的漏极电压必须要提升回接近于电源的电压。这个额外的提升的时间增大了失真,同时也增大了摆率限制期间的瞬态时间(这在开关电容应用里的放大器中经常出现)。

下一步,我们考虑增加了二极管连接的晶体管\(Q_{12}\)和\(Q_{13}\)之后的情况。他们的主要目的是钳住\(Q_1\)和\(Q_2\)的漏极电压以使得他们在摆率限制期间不要改变过多。其次,更多的细微效应会在摆率限制期间动态增大\(Q_3\)和\(Q_4\)的偏置电流,这个增大的偏置电流使得对负载电容充电和放电的电流值可以变得更大。为了理解偏置电流的电流,考虑一个类似刚才描述的情况,一个大的差分输入导致\(Q_1\)完全打开而\(Q_2\)关断。在这个情况下,二极管连接的晶体管\(Q_{12}\)通过从二极管连接的\(Q_{11}\)流经\(Q_{12}\)的电流而导通。因此\(Q_{11}\)中的电流增大,会导致\(Q_3\)和\(Q_4\)中的偏置电流同步增大,直到\(Q_{12}\)和\(Q_3\)的电流之和等于偏置电流\(I_{bias2}\)。注意到\(Q_4\)中的电流同样增大,因为它等于\(Q_3\)中的电流。\(Q_4\)中增大的偏置电流使得\(C_L\)放电的电流也变得更大。总而言之,不仅是电压偏移变得更小,而且在摆率限制期间对负载电容进行充放电的可用电流也变得更大了。

例题1.

为本节中的折叠Cascode放大器电路设计合适的晶体管尺寸从而满足以下设计参数,同时计算出放大器的单位增益频率(无反馈)以及摆率,要考虑有钳位晶体管和没有的两种情况。

  • 使用下表中的\(0.18\mu m\)的工艺参数,使用\(1.8V\)供电电压,并限制放大器中的总电流耗散不超过\(0.4mA\)

  • 设置输入晶体管与Cascode晶体管中的电流之比为4:1,同时设置\(Q_{11}\)的偏置电流为\(Q_3\)和\(Q_4\)偏置电流的1/10,并在计算功耗时可以将其忽视
  • 最大的晶体管宽度为\(180\mu m\),最大沟道长度为\(0.4\mu m\)
  • 除了输入晶体管,所有晶体管的过驱动电压在\(0.24V\)左右。输入晶体管的宽度被设置在最大值\(180\mu m\)。同时,所有晶体管的宽度应被取在最近的\(2\mu m\)倍数的尺寸上。如果一个大的晶体管要去匹配一个小的晶体管,那么这个大的晶体管应当由若干个小晶体来组成
  • 假定负载电容\(C_L = 2.5pF\)

解答:

整个放大器中的总电流\(I_{total}\),除去偏置网络中的电流\(I_{D3}+I_{D4}\),为\(2(I_{D1}+I_{D6})\)。我们设\(I_{B}=I_{D5}=I_{D6}\),并且根据设计要求有\(I_{D1}=4I_{D6}\),我们有:

\[I_{total}=2(I_{D1}+I_{D6})=2(4I_B+I_B)=10I_B \tag{2.2.8}
\]

由于电流耗散限制在\(0.4mA\),因此我们有:

\[I_{B}=I_{D5}=I_{D6}=\frac{I_{total}}{10}=40\mu A \tag{2.2.9}
\]

根据\(I_B\)的值可以计算出来\(I_{D3}=I_{D4}=5I_{D5}=200\mu A\),\(I_{D2}=I_{D2}=4I_{D5}=160\mu A\)。限制我们设置所有晶体管长度为\(0.4\mu m\),大约两倍于该工艺的最小栅长,这使得我们可以立马通过如下的公式求出大部分晶体管的尺寸:

\[(\frac{W}{L})_i=\frac{2I_{Di}}{\mu_i C_{ox}V_{effi}^2} \tag{2.2.10}
\]

然后我们将晶体管宽度取整到最近的\(2\mu m\)的倍数,除了输入晶体管\(Q_1\)和\(Q_2\),他们的宽度最开始就设置在最大值\(180\mu m\)。这样的设置将这些器件置于亚阈值区的边缘,从而最大化了在给定偏置电流下的跨导。所有晶体管的尺寸如下表所示:

需要注意的是更大的晶体管宽度是通过同样尺寸的更小的晶体管的并联来实现的。\(Q_{11}\)的宽度通过\(I_{D11}=I_{D3}/10=20\mu A=I_{bias,1}\)来确定。\(Q_{12}\)和\(Q_{13}\)的宽度则通过\(Q_{11}\)来确定。

在平方律假设下,输入晶体管的跨导计算为:

\[\sqrt{2I_{D1}\mu_nC_{ox}(W/L)_1}=6.24mV \tag{2.2.11}
\]

然而这大于亚阈值区能够取到的最大跨导:

\[g_{m1(sub-th)}=\frac{qI_{D1}}{nkT}=4mA/V \tag{2.2.12}
\]

因此我们取这个值作为近似,尽管实际跨导肯定会小于这个值。我们可以计算出该放大器的单位增益频率为:

\[\omega_{ta}=\frac{g_{m1}}{C_L}=1.6\times 10^9 rad/s\Rightarrow f_{ta}=255MHz \tag{2.2.13}
\]

没有钳位晶体管下的摆率为:

\[SR=\frac{I_{D4}}{C_L}=80V/\mu s \tag{2.2.14}
\]

当引入钳位晶体管后,在摆率限制下,我们有:

\[I_{D12}+I_{D3}=I_{bias2} \tag{2.2.15}
\]

并且:

\[I_{D3}=10I_{D11} \tag{2.2.16}
\]

以及:

\[I_{D11}=20\mu A +I_{D{12}} \tag{2.2.17}
\]

将\((2.2.17)\)和\((2.2.16)\)代入到\((2.2.15)\)之后求解出\(I_{D11}\)为:

\[I_{D11}=\frac{I_{bias2}+20\mu A}{11} \tag{2.2.18}
\]

则意味着\(I_{D11}\)的值在摆率限制期间为\(30.9\mu A\)并且\(I_{D3}=I_{D4}=10I_{D11}=309\mu A\),这显著大于没有钳位晶体管的摆率。更大的偏置电流使得摆率变为:

\[SR=\frac{I_{D4}}{C_L}=124V/\mu s \tag{2.2.19}
\]

更重要的是从摆率限制状态恢复的时间显著得到了减少。

例题2:

上例中的放大器在仿真后发现其第二极点频率在\(\omega_{eq}=2\pi \times 365MHz\)。当放大器工作在单位增益反馈下时,请选择一个超前电阻\(R_c\)来提供85°的相位裕度。

解答:

没有\(R_c\)的相位裕度为:

\[PM=90°-tan^{-1}(\frac{\omega_t}{\omega_{eq}})=90°-tan^{-1}(\frac{2\pi\times 255MHz}{2\pi \times 365MHz})=55° \tag{2.2.20}
\]

为了增加这\(30°=tan^{-1}(1/1.7)\)的相位裕度,超前补偿零点需要放置在\(1/R_cC_L=1.7\omega_t\)的位置上,由于\(\beta = 1\),我们取\(\omega_t = \omega_{ta}\),因此一个合理的与\(C_L\)串联的\(R_c\)的取值为:

\[R_c = \frac{1}{1.7C_L \omega_t}=\frac{1}{1.7g_{m1}}=147\Omega \tag{2.2.21}
\]

模拟集成电路设计系列博客——2.2.3 折叠Cascode放大器的摆率的更多相关文章

  1. Flutter 即学即用系列博客——03 在旧有项目引入 Flutter

    前言 其实如果打算在实际项目中引入 Flutter,完全将旧有项目改造成纯 Flutter 项目的可能性比较小,更多的是在旧有项目引入 Flutter. 因此本篇我们就说一说如何在旧有项目引入 Flu ...

  2. Django 系列博客(七)

    Django 系列博客(七) 前言 本篇博客介绍 Django 中的视图层中的相关参数,HttpRequest 对象.HttpResponse 对象.JsonResponse,以及视图层的两种响应方式 ...

  3. Django 系列博客(一)

    Django 系列博客(一) 前言 学习了 python 这么久,终于到了Django 框架.这可以说是 python 名气最大的web 框架了,那么从今天开始会开始从 Django框架的安装到使用一 ...

  4. ARM的体系结构与编程系列博客——ARM处理器系列介绍

    ARM处理器系列介绍 现在到了3月,过年过得过于舒服了.系列博客也停更了近半月,我果然是个慢(lan)性(gui)子,那么趁着到校的第一天晚上,就写一篇博客来继续我的系列博客了!众所周知,ARM处理器 ...

  5. 窥探Swift系列博客说明及其Swift版本间更新

    Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...

  6. Flutter 即学即用系列博客——05 StatelessWidget vs StatefulWidget

    前言 上一篇我们对 Flutter UI 有了一个基本的了解. 这一篇我们通过自定义 Widget 来了解下如何写一个 Widget? 然而 Widget 有两个,StatelessWidget 和 ...

  7. Flutter 即学即用系列博客——04 Flutter UI 初窥

    前面三篇可以算是一个小小的里程碑. 主要是介绍了 Flutter 环境的搭建.如何创建 Flutter 项目以及如何在旧有 Android 项目引入 Flutter. 这一篇我们来学习下 Flutte ...

  8. Flutter 即学即用系列博客——09 MethodChannel 实现原生与 Flutter 通信(二)

    前言 上一篇我们讲解了如何通过 EventChannel 实现 Android -> Flutter 的通信. 并且也看到了 Flutter 内部 EventChannel 源码也是对 Meth ...

  9. Flutter 即学即用系列博客——09 EventChannel 实现原生与 Flutter 通信(一)

    前言 紧接着上一篇,这一篇我们讲一下原生怎么给 Flutter 发信号,即原生-> Flutter 还是通过 Flutter 官网的 Example 来讲解. 案例 接着上一次,这一次我们让原生 ...

  10. Flutter 即学即用系列博客——08 MethodChannel 实现 Flutter 与原生通信

    背景 前面我们讲了很多 Flutter 相关的知识点,但是我们并没有介绍怎样实现 Flutter 与原生的通信. 比如我在 Flutter UI 上面点击了一个按钮,我希望原生做一些处理,那么原生怎么 ...

随机推荐

  1. GAMES 103 动画基础作业1 impulse 浅浅解析

    简介 impulse 简单而言就是脉冲. 脉冲就是, 在碰撞的时候给一个脉冲. 导致其速度和角速度改变. pipeline Q&A 简述Vi 和 ViNew Vi 就是碰撞点速度的均值 ViN ...

  2. iga 入门之 强解表达式和 弱解表达式

    简介 摘自 流体力学数值方法 弱解几分表达式 对Galerkin几分表达式(1-76)式进行分布几分,然后将自然边界条件带入表达式中,由此所获得的几分表达式,将作为Galerkin法求解的出发点.此时 ...

  3. 选择ETL工具需要注意什么技术性问题?

    在大数据时代,数据的处理成为了一项关键任务.ETL(Extract-Transform-Load)工具,作为一种数据处理工具,被广泛应用于数据抽取.转换和加载的过程中.ETL工具是数据集成的重要组成部 ...

  4. ETL怎么实现文件处理

    在现代企业及各类组织的日常运作中,数据作为一种关键的信息资源,其管理和分析能力直接影响到决策效率与准确性.文件作为数据的主要载体,承载着从运营报告.客户记录.交易明细等各种类型的数据信息.这些海量且多 ...

  5. 首次进入Mysql修改密码报“The MySQL server is running with the --skip-grant-tables option so it cannot execute”--九五小庞

    第一次安装完mysql,修改默认密码的时候,报"The MySQL server is running with the --skip-grant-tables option so it c ...

  6. cookie、session与token的真正区别-九五小庞

    发展史1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住 ...

  7. unity代码编译时间分析工具

    https://github.com/needle-tools/compilation-visualizer 工具2 Editor Iteration Profiler (EIP) 地址: https ...

  8. 我的代码背叛了我?为什么 a=1, b=2,最后x和y都等于0?

    随着多核架构的普及,并发编程已成为开发者不可或缺的核心技能.在学习过程中,开发者常会遇到这样的困惑:正确编写的单线程代码,为何在并发环境下可能瞬间失效?看似有序的语句执行后,为何结果却混乱不堪?这些问 ...

  9. element-ui表单验证遇到v-if时不生效

    最近发现,element-ui表单验证遇到v-if时不生效 比如登录页面可能含有手机号登录和邮箱登录等多种方式 我通过一个属性,比如type来去决定用户使用哪种登录方式,再展示具体表单,发现部分字段无 ...

  10. px 和 rem已经过时?

    从 px 的绝对统治,到 rem 成为响应式设计的事实标准,我们似乎已经找到了完美的解决方案. 然而,如果你最近观察一些顶尖科技公司的前端代码库或设计系统,你会发现一个新的趋势正在悄然兴起:px 和  ...