1.1.3 Cascode电流镜

Cascode电流镜是一种高输出阻抗电流镜,其基本结构如下图所示:

首先从\(Q_2\)漏极看进去的输出阻抗仅为\(r_{ds2}\),其分析和基本电流镜非常一样。因此可以认为\(Q_4\)是一个带有\(r_{ds2}\)的源极退化电阻的电流源,利用之前的\((1.1.10)\)公式,可以得到:

\[r_{out}=r_{ds4}[1+R_{s}(g_{m4}+g_{s4}+g_{ds4})] \tag{1.1.14}
\]

其中\(R_s=r_{ds2}\),因此输出阻抗为:

\[r_{out}=r_{ds4}[1+R_{s}(g_{m4}+g_{s4}+g_{ds4})] \\
\approx r_{ds4}[1+R_{s}(g_{m4}+g_{s4})] \\
\approx r_{ds4}(r_{ds2}g_{m4}) \tag{1.1.15}
\]

因此输出阻抗倍增了\(g_{m4}r_{ds2}\)的倍数,即一个单管MOS放大器的增益上限,其值可以在10到100之间,根据管子尺寸,电流,以及使用的工艺条件而决定。这个典型的输出阻抗的增长可以用于实现大低频增益的单级放大器。

使用Cascode的电流镜的一个坏处是,它降低了晶体管进入线性区前的最大输出信号摆幅,为了理解这种降低,可以假定有一个n沟道MOS管处于饱和区,其漏源电压必须大于\(V_{eff}\),\(V_{eff}\)的定义是:

\[V_{eff}=V_{GS}-V_{th} \tag{1.1.16}
\]

其值由下式求出:

\[V_{eff}=\sqrt{\frac{2I_D}{\mu_nC_{ox}(W/L)}} \tag{1.1.17}
\]

如果我们假设所有的晶体管的尺寸与电流相同,则其都有相同的\(V_{eff}\),因此所有的管子都有相同的栅源电压\(V_{GS}=V_{eff}+V_{tn}\),因此:

\[V_{G3}=V_{GS1}+V_{GS3}=2V_{eff}+2V_{tn} \tag{1.1.18}
\]

且:

\[V_{DS2}=V_{G3}-V_{GS4}=V_{G3}-(V_{eff}+V_{tn})=V_{eff}+V_{tn} \tag{1.1.19}
\]

因此\(Q_2\)的漏源电压比最小的饱和区漏源电压需求要大出一个\(V_{tn}\),由于使得\(Q_4\)不进入线性区的最小输出电压\(V_{D4}\)可以由\(V_{DS2}+V_{eff}\)给出,最小的允许的输出电压\(V_{out}\)可以由下图给出:

\[V_{out}>V_{DS2}+V_{eff}=2V_{eff}+V_{tn} \tag{1.1.20}
\]

再次比\(2V_{eff}\)大出了一个\(V_{tn}\),这种信号的摆幅损失对于最大供电电压可能只有\(1V\)甚至更小的现代工艺来说是一种严重的缺点。

例题:

考虑如上所示Cascode电流镜,\(I_in=100\mu A\)且每个晶体管宽长比为\(W/L=10\mu m/0.4\mu m\),假定使用下表的\(0.35\mu m\)参数,求出电流镜的\(r_{out}\),假定体效应为\(0.2g_{m}\),同时计算出让晶体管都保持在饱和区的最小输出电压\(V_{out}\)。

解答:

假定\(I_{out}=I_{in}\),则可以求出:

\[g_{m4}=\sqrt{2\mu _nC_{ox}(W/L)I_{out}}=0.97mA/V \tag{1.1.21}
\]

以及有:

\[r_{ds4}=r_{ds2}=\frac{0.4\mu m}{(0.16\mu m/V)(100\mu A)}=25k\Omega \tag{1.1.22}
\]

现在利用公式\((1.1.15)\),可以求出输出阻抗:

\[r_{out}=25k\Omega[25k\Omega(0.97mA/V+0.2\times 0.97mA/V+1/25k\Omega)]=753k\Omega \tag{1.1.23}
\]

为了找到最小输出电压,我们首先确定\(V_{eff}\):

\[V_{eff}=\sqrt{\frac{2I_{out}}{\mu_nC_{ox}(W/L)}}=0.205V \tag{1.1.25}
\]

因此可以求出最小输出电压\(V_{out}=2V_{eff}+V_{tn}=0.98V\),与基本电流镜例题相比,其输出阻抗增大了30倍,但是其输出摆幅下降了\(0.76V\)。

模拟集成电路设计系列博客——1.1.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. 前端开发系列117-进阶篇之ast && render

    本文将讨论 AST 转换为 渲染字符串并最终调整为 render 渲染函数的具体过程,这样的讨论有益于我们加深对常见的模板引擎其工作机制以及Vue等前端框架的理解 . 在上图中简单画出了这篇文章的代码 ...

  2. leetcode 1406

    简介 国服第一的刷题视频 参考链接 https://www.bilibili.com/video/BV1W54y197NM?from=search&seid=16875469481128889 ...

  3. robots.txt 简单解析

    简介 robots.txt 是一个规范,对于执行正常操作的爬虫理应遵守的规范. 例子 博客园例子 https://www.cnblogs.com/robots.txt User-Agent: * Al ...

  4. PostgreSQL 数据库中 ETL 操作的实战技巧

    在当今数字化时代,数据已成为企业最为宝贵的资产之一,而数据库则是存储与管理这些关键数据的核心.PostgreSQL 作为一款功能强大的开源关系型数据库,在众多领域都发挥着重要作用.今天,就让我们深入探 ...

  5. unity text mesh pro 缺字

    解决方案 把图集大小从1024改成2048,因为汉字太多了,1024的图集本来就装不下导致的部分缺字 做字体的我们先根据原始字体创建一个 Font Asset 这个为静态,复制一个做动态,修改动态的图 ...

  6. 仅一个 Python 文件,狂揽近 2 万 Star「GitHub 热点速览」

    朋友们,GitHub 热点速览并没有"停更"哦! 最近断更,是因为榜单几乎被大模型"霸占":GLM-4.5(智谱).Step3(阶跃星辰).Intern-S1( ...

  7. 解密prompt系列58. MCP - 工具演变 & MCP基础

    作为结构化推理的坚定支持者,我一度对MCP感到困惑:Agent和工具调用的概念早已普及,为何还需要MCP这样的额外设计呢?本文就来深入探讨MCP,看看它究竟解决了什么问题. 我们将分几章解析MCP:本 ...

  8. 抱怨一下中文网站的环境_文件无法从本地复制到服务器 windows报错0x80070032

    原文永久链接:https://forum.piwind.com/d/33-bao-yuan-yi-xia-zhong-wen-wang-zhan-de-huan-jing-wen-jian-wu-fa ...

  9. 解锁硬件潜能:Java向量化计算,性能飙升W倍!

    机器相关的编译优化 与机器相关的编译优化常见的有指令选择(Instruction Selection).寄存器分配(Register Allocation).窥孔优化(Peephole Optimiz ...

  10. JavaSE-数组中生成随机数(Random)

    数组中生成随机数(Random) 要通过随机数索引来访问数组中的某一个元素,可以使用Java中的 Random 类来生成一个随机数,然后用这个随机数作为索引来访问数组.以下是一个示例代码,展示了如何实 ...