《gm/ID设计法基本介绍》翻译

news/2025/2/6 1:12:57/文章来源:https://www.cnblogs.com/sasasatori/p/18700375

最近流片很累很焦虑,放松心情找篇讲\(g_m/I_D\)设计法的文档翻译一下:

《A Basic Introduction to the gm/ID-Based Design Methodology》

1. 摘要

该文章向读者介绍了基于\(g_m/I_D\)的设计方法学,用于帮助CMOS模拟电路设计者将晶体管物理参数与小信号模型联系起来,文章的内容适合正在学习模拟集成电路入门课程的大学生阅读。同时,对于有经验的工程师来说,如果他们希望在设计流程中尽早融入技术细节,并实现手工计算与电路仿真之间的高度一致性,本文也具有参考价值。

2. 介绍

历经漫长的成熟之路,CMOS技术已然成为模拟电路设计的卓越平台。它不仅在场效应开关和电荷模式处理方面无可匹敌,更得益于数字消费市场推动的持续工艺改进。然而,设计师们或许会发现,要充分利用这些优势异常艰难。一个主要原因是,若不借助极其复杂的模型,CMOS的行为难以预测,而随着技术的微缩,这种复杂性只会愈发加剧。设计师们在紧迫的工期压力下,不得不将复杂模型融入手工计算,或是陷入密集的Spice仿真设计循环中。这两种策略都不尽如人意,既不够高效,也缺乏愉悦感。

本文旨在向您介绍基于gm/ID的设计方法,这种方法极大地提高了CMOS小信号行为的可预测性,而无需依赖复杂的方程。我们将在后文中更详细地定义\(g_m/I_D\)​这一比率,但此刻,您只需将其视为一个设计变量,它概括了MOS晶体管的偏置条件。或者,更简洁地说:

\[g_m/I_D\approx bias \; point \rightarrow small-signal \; model \]

该方法论的开发将涉及多个步骤。我们将从模拟电路设计的广泛概述开始,了解我们试图解决的问题是什么,以及过去是如何解决这个问题的。然后,我将从定性的角度解释为什么基于\(g_m/I_D\)的方法是解决这个问题的最佳工具。接下来,我们将从定量的角度重新梳理整个讨论。这将包括对晶体管操作的回顾以及我们可用工具的逐步发展。最后,我们将通过一个详细的设计示例来结束讨论。

3. 大图景

3.1 依赖于抽象的模拟设计

下图展示了我们在模拟设计中可以采用的多个抽象层次。得益于抽象化,工作在较高层次上的工程师能够使用线性信号与系统理论进行分析。这是滤波器、增益模块、运放电路等领域的范畴。支配这一领域的数学理论优雅而深刻,往往有着数百年的历史渊源。因此,我们在理解如何运用这些模块方面已经非常娴熟。大多数工程院校都会让学生修读一系列课程,以充分覆盖这一领域的知识。

image

然而,当我们深入到较低的层次时,情况就截然不同了。虽然我们能够轻松地使用运算放大器构建一个增益为两倍的电路,但要设计运算放大器本身却非常困难。每个晶体管应该多大?需要多少偏置电流?这些底层决策往往难以明确,主要有两个原因。首先,晶体管的行为是非线性的,而经典的信号与系统分析在应用于非线性系统时会失效。其次,技术的进步比我们制定规则的速度还要快。这里可没有数百年的历史积淀!因此,我们并没有一套既简洁到适合手工计算,又精确到能与Spice仿真相匹配的晶体管方程。

3.2 使底层设计变得可控

如果我们能够将晶体管转化为适合信号与系统理论的器件,底层设计就会变得更加容易。正如你所知,我们通过用一些理想元件来近似每个晶体管来实现这一点,这些元件统称为小信号模型。图2展示了一个基本且常见的MOSFET小信号模型。它还强调了\(g_m/I_D\)(或其前身\(V_{ov}\),另一个偏置变量,即经典的过驱动电压\(V_{gs}-V_{T}\))在设计过程中所起的转换作用。当然,使用小信号模型的缺点是它们会引入误差,正如所有近似方法都必须面对的那样。但与使用信号与系统技术带来的好处相比,这种缺点微不足道。如果没有这些技术,我们将无法理解增益、带宽、频率响应、极点和零点等概念!

image

因此,下图很好地展示了基于\(g_m/I_D\)的设计方法在整个设计流程中的位置。顶层是抽象的“信号与系统”世界,我们对这里非常熟悉。底层是物理晶体管,它们最终必须按照我们的期望运行。而位于中间的则是\(g_m/I_D\)的,这是一个中间偏置变量,能够很好地弥合抽象与物理之间的鸿沟。在我们继续讨论的过程中,请记住这张图。

image

3.3 为什么\(g_m/I_D\)\(V_{ov}\)更好

基于\(V_{ov}\)的设计方法(我们稍后会详细讨论)早在基于\(g_m/I_D\)的设计方法出现之前就已经存在。正如我们已经提到的,\(V_{ov}\)\(g_m/I_D\)都是能够反映晶体管偏置点状态的量。那么,这两种方法有何不同呢?

当CMOS设计师选择采用基于\(V_{ov}\)的设计策略时,他们实际上默认了长沟道模型的有效性。我相信你对长沟道模型并不陌生(我们也会在后面的章节中回顾它)。当我们第一次学习如何分析MOSFET时,我们被展示了如何用基础微积分推导出这个模型。不幸的是,使得这个推导如此简洁的大多数假设在当今的小尺寸工艺中都不再成立。因此,基于\(V_{ov}\)的方法论不再能够设计出符合预期行为的电路。为了挽救这个模型,设计师们尝试通过引入短沟道效应和各种基于不同物理假设(有时只是一厢情愿)的曲线拟合项来修补它。但最终,基于\(V_{ov}\)的设计只会变得越来越困难且不准确。

我们的新策略——基于\(g_m/I_D\)的设计——并不依赖于长沟道模型的有效性。事实上,除了仿真结果之外,它不依赖于任何其他东西的有效性。这种方法是基于查找表的。其核心理念是,支配MOSFET行为的方程过于复杂,以至于我们必须摒弃它们,转而使用一些表格或图表。由于这些图表是通过Spice中的器件仿真生成的,因此它们比长沟道模型所能达到的精度要高得多。

可以说,我们大多数人在想到使用查找表时都会感到有些不适应。随着廉价且强大的计算设备的出现,我们的电气工程师已经逐渐疏远了滤波器表、对数表、三角函数表等工具。然而,我们当前对公式的依赖只是行业中的一个短暂潮流。正如真空管电路设计师曾经(并且仍然)使用电子管曲线一样,我们正在重新发现基于表格的设计在特定情况下的价值,尤其是在它是最高效的“计算”手段时。

下图以并列的方式对比了基于\(V_{ov}\)的设计和基于\(g_m/I_D\)的设计。在这两种情况下,我们都需要关于目标工艺的物理信息。毕竟,目标工艺的能力显然会极大地影响晶体管的性能。对于长沟道模型,技术数据必须仅限于最基本的参数,例如迁移率\(μ\)和氧化层电容\(C_{ox}\),否则手工计算将变得难以处理。因此,初始设计可能只能达到数量级的精度,直到设计师对该工艺有了“感觉”。与此同时,基于\(g_m/I_D\)​的方法利用来自目标工艺的完整Spice模型,生成的初始结果只需稍作调整即可。

image

4. 更详细的图景

现在,我希望我们重新开始尝试解决设计问题,但这次从更定量的角度出发。当然,尽管我们采用了截然不同的方法,最终仍会得出相同的结论。

一位聪明但缺乏经验的工程师会如何着手设计电路呢?当然,我倾向于采用一种我正在研究的方法,但如果我们能在不知道答案的情况下解决设计问题,这无疑是非常有价值的。

首先,让我们退一步思考:我们完成的设计会是什么样子?或者说,什么是完成的设计?在本文的语境中,它是一份网表。最终,我们只是想要一个文件,其中包含所有晶体管、电阻、电容等的规格,并说明它们是如何连接在一起的。当然,在现实世界中,电路必须被制造出来,设计师还必须警惕仿真本身的局限性,以及仿真结果与实际测量性能的一致性,但这些问题是本文范围之外的。

如果我们的最终目标是生成一份网表,为什么不从网表开始逆向推导呢?我们需要哪些信息来“填补空白”?作为参考,以下是Hspice中实例化一个晶体管的一行代码:

\[M1\; drn\; gat\; src\; blk \;nchmodel \; L=0.18u\; W=10u \]

那么,我们可以填补哪些空白呢?换句话说,我们如何设计一个晶体管?显然,阈值电压 \(V_T\),迁移率 \(μ\)、氧化层电容 \(C_{ox}\) 以及其他常见的晶体管参数并不在我们能够直接指定的参数范围内。事实上,除了端子的连接方式外,看起来我们只能选择宽度 \(W\) 和长度 \(L\)

这就是全部了吗?电路设计仅仅是决定每个晶体管的大小吗?既是也不是。除了一些高级选项(如源极或漏极共享,或多指栅极结构)外,\(W\)\(L\) 确实是我们能够明确指定的唯一晶体管特性。你只需将它们连接在一起,正确地调整尺寸,几乎就完成了整个设计。真的!

那么,一种可能的设计方法可能是直接使用 \(W\)\(L\) 作为设计变量。这个过程大致如下:

  1. 假设你有一个可用的电路拓扑结构。
  2. 猜测一组 \(W\)\(L\) 的值(可能还包括 \(R\)\(C\))。
  3. 在 Spice 中进行仿真。
  4. 检查设计是否满足所有规格要求。
  5. 如果不满足,修改 \(W\)\(L\)(可能还包括 \(R\)\(C\)),然后回到步骤 3。

注意:这种迭代过程有时被称为“Spice Monkeying”(盲目仿真),强烈不建议使用这种方法。然而,在面对紧迫的截止日期时,无论经验丰富的设计师还是新手,都很容易陷入这种盲目仿真的状态!

然而,这种策略尽管诱人,但在实践中效果并不理想。首先,仿真所需的时间过长,使得运行太多仿真变得不切实际(即使你自动化了这一过程也是如此)。更重要的是,依赖Spice的设计方法是一种盲目的探索,完全缺乏直觉。Spice适合用于分析设计和进行最终调整,但在一个开放式的任务中,它并不擅长帮助你在无数的拓扑结构、尺寸和偏置点之间做出选择。

所有这些都在下图所示的简化设计流程中得到了总结。最内层的循环,粗略地称为“手工计算”阶段,是我们做出重大决策的最佳机会。如果我们拥有有意义且准确的小信号模型,我们就可以在这个内层循环中做出明智且自信的决策,而无需频繁依赖仿真。让我们看看是否能够在小信号模型和实际晶体管行为之间建立一种可靠的桥梁。

image

4.1 回顾长沟道模型

在我们进一步定量讨论MOSFET行为时,长沟道模型是最好的工具。当然,我刚才已经告诉过你,这个模型并不完善,但为了明确起见,我并不是主张完全抛弃它。尽管推导过程可能过于简化,但它通常仍然能提供正确的直觉;而我们不希望失去这一点。此外,在讨论晶体管建模时,它也是一个很好的起点。

长沟道模型试图描述漏极电流 \(I_D\) 与端电压 \(V_{ds}\)\(V_{gs}\) 之间的关系。下图中的曲线图是展示这些关系最常用的方式之一。这个图与你可能见过的其他图略有不同之处在于,它使用了 \(V_{ov}\) 而不是 \(V_{gs}\)\(V_{ov}\) 被称为过驱动电压,其定义如下:

\[V_{ov}=V_{gs}-V_T \]

image

\(V_{ov}\) 告诉你沟道的反型程度,并且比 \(V_{gs}\) 更容易使用,部分原因是它隐藏了对阈值电压 \(V_T\) 的依赖。反型(之所以称为反型,是因为沟道中的材料,例如 p 型,开始表现得像相反类型的材料,例如 n 型)可以粗略地理解为“开启程度”。正是因为它控制着反型的水平,我们可以将 \(V_{ov}\) 视为一个偏置变量。有时,\(V_{ov}\) 非常小的条件被称为弱反型,而较大的 \(V_{ov}\) 可能导致强反型。

图6中还标注了三个工作区域:截止区、线性区和饱和区。我们将快速回顾每个区域。

注意:这是以 N 沟道为中心的回顾。你需要应用通常的反转规则来得到 P 沟道的关系。

截止区:条件为\(V_{ov}<0\)(等效于\(V_{gs}<V_T\)),此时沟道没有反型,因此没有电流流动:

\[I_D=0 \]

线性区:条件为\(V_{ov}\geq 0\)\(V_{ds}<V_{dsat}\)(长沟道模型下\(V_{dsat}=V_{ov}\)),存在沟道反型,但\(I_{D}\)收到\(v_{ds}\)的严重影响:

\[I_D=\frac{1}{2}\mu C_{ox}\frac{W}{L}[2V_{ov}V_{DS}-V_{DS}^2] \]

当晶体管被用作开关时,线性区总是需要关注的。在这种情况下,你还可以定义其导通电阻:

\[R_{on}\approx \frac{\partial V_{ds}}{\partial I_D} \]

饱和区:条件为\(V_{ov}\geq 0\)\(V_{ds}\geq V_{dsat}\)\(I_D\)变为单纯的栅电压的函数,\(V_{ov}\)(而不是\(V_{ds}\)):

\[I_D=\frac{1}{2}\mu C_{ox}\frac{W}{L}V_{ov}^2 \]

饱和区是信号路径中大多数晶体管(除了开关)的理想工作区域。事实上,在本文的剩余部分,我们将几乎完全在饱和区进行操作。只要每个晶体管有足够的电压裕度,即我们保持 \(V_{ds}\geq V_{dsat}\)​,我们就可以采用以饱和区为中心的观点,如下图所示。需要注意的是,随着 \(V_{ov}\) 的增加,不仅 \(I_D\) 会增加,\(g_m\) 也会由于平方关系而增长。换句话说,\(g_m\)\(V_{ov}\) 的函数。请将这张图牢记在心。

image

4.2 基于\(V_{ov}\)​的设计方法学的介绍

现在我们已经介绍了 \(V_{ov}\),我们可以将其发展为设计变量。请记住,我们最终需要将其与之前讨论的小信号模型联系起来。我们将首先处理模型中的第一个元素 \(g_m\),它是 \(I_D\)\(V_{ov}\) 曲线的斜率。

\[g_m= \frac{\partial I_D}{\partial V_{ov}}=\mu C_{ox}\frac{W}{L}V_{ov} \]

通过一些代数运算,我们可以推导出一个有趣的方程,正如你可能已经认识到的,这个方程包含了我们正在研究的两个偏置变量:

\[\frac{g_m}{I_D}=\frac{2}{V_{ov}} \]

我现在提到这一点有两个原因。首先,它让你了解$ g_m/I_D$和 \(V_{ov}\)​ 之间的关系。我们稍后会看到,这个方程并不完善,因为这些项之间的实际关系要复杂得多。但现在,只需记住这两个量在某种程度上是相似的。

提到这个方程的第二个原因是为了定义跨导效率,它只是 \(g_m/I_D\) 的另一种说法。如果你理解它的含义,这个名称是恰当的。我喜欢给它赋予直观的单位 \(mS/mA\)(而不是简化为 \(1/V\)),因为它抓住了这个术语的精髓。它告诉你,当你投入一定的 \(I_D\)(以 \(mA\) 为单位)时,你能获得多少 \(g_m\)(以 \(mS\) 为单位)。

回到 \(g_m\) 本身,让我们看看可以推导出的一些表达式,并尝试理解它们的意义。以下是我们目前所知道的:

\[g_m=\mu C_{ox}\frac{W}{L}V_{ov}=\frac{2I_D}{V_{ov}} \]

这是什么意思?\(g_m\)\(I_D\) 成正比吗?如果你想要更高的跨导,是否必须投入更多的电流?这似乎是合理的。但 \(V_{ov}\) 呢?现在我们遇到麻烦了,因为在一个表达式中它在分子,而在另一个表达式中它在分母!

为了继续前进,让我们假设我们可以将 \(V_{ov}\) 设置为任何我们想要的常数。此外,我们将把 \(V_{ov}\) 看作一个旋钮,可以用来确定晶体管的行为。我们本可以选择其他旋钮,比如 \(I_D\)\(W/L\),但 \(V_{ov}\) 最终会证明是比这些更好的选择。

让我们通过一个例子来说明为什么恒定的 \(V_{ov}\) 是一个很好的选择。在下图中,我们将使 M1 工作在 \(V_{ov}=300mV\) 的条件下。这是一个合理的值,也是一个任意的选择。同样,假设 \(I_D=1mA\)。我们该如何分析这个电路呢?

image

M1 的漏极电流为 \(1mA\),叠加在其上的是一些信号电流 \(i_s\),它是 \(v_{in}\) 的函数。是什么样的函数?我们假设它是基于 \(g_m\) 的线性函数。事实上,我们期望的是这样的关系:

\[v_{out}=-i_s\cdot R=-v_{in}\cdot g_m\cdot 1k\Omega \]

并且由于我们已知\(V_{ov}\)\(I_D\),我们可以知道\(g_m\)

\[g_m=2I_D/V_{ov}=\frac{2\cdot 1mA}{300mV}=6.7\frac{mA}{V} \]

\[\frac{v_{out}}{v_{in}}=-6.7\frac{mA}{V}\cdot 1k\Omega = -6.7\frac{V}{V} \]

事实上,我们可以使用\(I_D\)来产生任意我们想要的增益,例如我们想要前期放大一倍:

\[g_m=2I_D/V_{ov}=\frac{2\cdot 2mA}{300mV}=13.4\frac{mA}{V} \]

\[\frac{v_{out}}{v_{in}}=-13.4\frac{mA}{V}\cdot 1k\Omega = -13.4\frac{V}{V} \]

多么轻松!一旦我们将 \(V_{ov}\) 设为常数,我们就可以通过调整 \(I_D\) 来编程增益。CMOS 模拟设计真是太简单了。

嗯,并不完全如此。尽管稍后当我们完成基于 \(g_m/I_D\) 的设计时,你可能会稍微有这种感觉!但我们还没有达到那一步。我们所做的事情显然存在一个很大的问题。如果你在仔细关注,你可能已经发现了。如果我们可以随意设置 \(V_{ov}\),那么为什么不把它设为零呢?这不是理想值吗?我的意思是,如果以下关系成立:

\[g_m=\frac{2I_d}{V_{ov}} \]

那么 \(V_{ov}=0\)​ 将使电路的效率无限大!当然,这会引发你的怀疑,因为每当你试图使电路效率无限大时,都应该引起警觉。我们一定做错了什么,但错在哪里呢?

这实际上是一个非常基本的问题。我们一直在忽略速度。我们的晶体管有多快?我们能用 \(V_{ov}\) 来表示速度吗?答案当然是肯定的,而且推导过程非常简单。首先,我们定义:

\[f_T=(\frac{1}{2\pi})\frac{g_m}{C_{gs}} \]

这通常被称为截止频率,它是回答“这个晶体管有多快?”这个问题的关键。在饱和区,\(Cgs=\frac{2}{3}C_{ox}WL\)。如果我们将其代入长沟道模型,可以得到:

\[f_T=\frac{1}{2\pi}\frac{g_m}{C_{gs}}=\frac{1}{2\pi}\frac{2\mu V_{ov}}{3L^2} \]

好的,猜猜怎么着。现在我们知道为什么我们不能把\(V_{ov}\)设置的非常小了,因为它会限制速度。我们可以得到一个\(g_m\) vs. \(f_T\)的权衡,如下图所示:

image

让我们更仔细地研究这两者的关系。早些时候,我们决定将 \(V_{ov}\) 作为一个旋钮来调整晶体管。当时我告诉你这是一个任意的决定,但现在看来,这可能也是一个很好的选择。我们关心的两个参数,\(g_m\)\(f_T\)(可以粗略地理解为增益和带宽),都以非常简单的方式依赖于 \(V_{ov}\)。更棒的是,这两个参数在 \(V_{ov}\) 上存在冲突,这意味着我们可以找到一个最优值并做出设计选择。例如,如果我们能接受一个较慢的设计,那么我们可以使用较低的 \(V_{ov}\),这将产生较高的跨导效率(即低功耗)。另一方面,如果电路需要快速响应,我们必须以较高的 \(V_{ov}\) 运行,并接受较低的跨导效率(即高功耗)。

这确实是问题的核心。\(V{ov}\) 之所以有用,正是因为它让你能够管理模拟设计中最需要的两个参数之间的权衡。可以把它想象成下图中的螺丝刀。对于一个固定的电流 \(I_D\),我们可以使用 \(V_{ov}\) 来决定是将这笔电流投资用于 \(g_m\)(以获得更高的增益)还是用于 \(f_T\)(以获得更高的带宽)。

现在,我们希望将所有这些重新融入设计流程中。我们希望能够用一个可以在信号与系统分析中使用的小信号模型来近似一个非线性的晶体管。我们可以通过一个例子来说明如何做到这一点。

使用前面例子中的电路(共源放大器),假设我们需要500MHz的带宽和10倍的增益。一个可能的设计流程如下,可以对照于下图中逐步跟随:

  1. 为了获得所需要的增益,我们必须有:

    \[g_m = 10\frac{V}{V}/1k\Omega=10mA/V \]

  2. 对于500MHz的输入极点,我们需要:

    \[C_{gs}=\frac{1}{2\pi\times 300\Omega \times 500MHz}=1.1pF \]

  3. 我们可以很容易的计算出所需的截止频率:

    \[f_T=\frac{g_m}{C_{gs}}=\frac{10mS}{1.1pF}=9.4GHz \]

  4. 这意味着(通过对照下图中的④):

    \[V_{ov}\geq 75mV \]

  5. 这意味着(通过对照下图中的⑤):

    \[g_m/I_D \leq 26mS/mA \]

  6. 因此最终有:

    \[I_D=\frac{g_m}{g_m/I_D}=\frac{10mS}{26mS/mA}=385uA \]

image

确实非常简单。不仅如此,我们还知道我们的设计是高效的。如果选择更大的 \(V_{ov}\),晶体管的性能会超出需求,导致功耗浪费。而如果选择更小的 \(V_{ov}\),晶体管的性能将无法满足设计要求,导致设计目标无法实现。

需要注意的是,\(r_o\) 尚未确定,因此从技术上讲,相比之前所述的小信号模型还稍显不足。在本文中,我们不会在 \(V_{ov}\) 的背景下讨论 \(r_o\)。稍后,当我们引入基于 \(g_m/I_D\) 的设计方法时,我们将研究由于 \(r_o\) 带来的限制。

总结来说,使用基于 \(V_{ov}\) 的设计方法找到最佳工作点比直接使用 \(W\)\(L\) 进行蛮力设计要直观得多。通过 \(V_{ov}\) 的思维方式,可以更容易地处理 \(g_m\)\(C_{gs}\) 和偏置之间的相互依赖关系,而不是试图独立管理这些参数。唯一真正的问题,正如我们之前指出的,是长沟道模型并不准确。

4.3 基于\(V_{ov}\)的设计的局限性

我们一直在暗示,长沟道模型过于简单,无法使基于 \(V_{ov}\) 的设计变得可靠——即使我们用额外的希腊字母来修补模型。现在是时候提供一些确凿的证据了。

第一个证据是简单的常识:你认为为什么 Spice 在仿真过程中会使用几十个晶体管参数?你认为它会忽略除其中 2 或 3 个参数之外的所有参数吗?当然不会!因此,如果 \(μ\)\(C_{ox}\)​ 被证明与整个 Spice 模型一样完整,我们应该感到震惊(而建模工程师应该感到尴尬)。

下面两张图展示了这一事实:

在下图中,我们比较了实际的在Spice中反正的传导效率曲线和长沟道预测模型。对于大的\(V_{ov}\),长沟道模型仅仅偏移了25%,不算太坏。当时对于小的\(V_{ov}\)来说,这个值几乎没有意义,尤其是在\(V_{ov}=0\),如果按照长沟道模型来说这里有着无限的传导笑傲率。

image

下图这展示了长沟道模型在预测\(f_T\)上也没有做的更好。并且这两个图中模型预测的有效区域几乎没有交集(一个在\(V_{ov}>0.2V\)时比较有效,一个这是在\(V_{ov}<0.2V\)时比较有效)。

image

你可能已经注意到,上面两幅图中包含了一个\(V_{ov}\)为负值的区域,这个区域也被称为亚阈值区。长沟道模型预测,当\(V_{ov}\leq 0\)时,\(I_D=0\),这意味着我们不应该将MOSFET偏置在接近阈值电压\(V_T\)的区域,因为它可能会关闭。然而,上图中的仿真数据表明,\(g_m/I_D\)实际上会随着进入亚阈值区而继续上升,这意味着这可能确实是一个有用的偏置点。真的是这样吗?

事实上,亚阈值区和弱反型区在低功耗设计中非常重要。上图解释了其中的权衡,即亚阈值区的晶体管速度较慢。但请记住,在新技术中,它们并没有那么慢。事实上,它们的速度通常比我们需要的要快得多,这使得设计者可以用一部分速度来换取低功耗。对于当今许多受功耗限制的设计来说,亚阈值区操作是必不可少的,而一个不能适应这一区域的模型是无用的。

这一切意味着什么?这意味着,尽管\(V_{ov}\)在理论上是一个非常好的设计变量,但在实践中它并不适用。如果长沟道模型是准确的,那么基于\(V_{ov}\)的设计将会非常有效,我们也就没有必要寻找其他方法。但长沟道模型并不准确,因此我们需要一个新的设计变量:一个在精神上与\(V_{ov}\)​相似,但能在手工计算和仿真之间提供更好一致性的变量。

4.4 基于\(g_m/I_D\)设计方法学的介绍

首先,假设我们尝试将\(V_{ov}\)保留为设计变量。我们可以通过仿真来观察\(V_{ov}\)如何影响跨导效率和截止频率(\(f_T\)),类似于之前两幅图中所做的那样。利用这两张图,我们当然可以找到最适合我们需求的\(V_{ov}\)值。

幸运的是,有人已经提出了一个更好的方法,能够将这些信息简洁地整合在一起。回想一下,\(V_{ov}\)\(g_m/I_D\)是相似的、与偏置相关的量。如果它们如此相似,也许我们可以去掉其中一个。一个巧妙的技巧是直接绘制\(f_T\)\(g_m/I_D\)的关系图,如图14所示。这张图可以让你清楚地看到,提高跨导效率会以牺牲\(f_T\)为代价。换句话说,我们绕过了\(V_{ov}\)这个中间变量。从现在开始,\(g_m/I_D\) 将是我们唯一需要的偏置变量。

顺便提一下,下图中的亚阈值区在哪里?你可以通过查看之前的图来找到一些线索。亚阈值区是我们预期会找到最高传导效率值的区域。换而言之,它位于下图的最右侧。它的确切起点在哪里重要吗?当然不重要!我们知道\(g_m/I_D\),也知道\(f_T\)。我们所处的区域无关紧要。事实上,除了线性区(我们必须始终小心对待)之外,当我们使用基于\(g_m/I_D\)的设计方法时,所有工作区域都变得透明。

image

让我们再次以之前的单管放大器电路为例进行设计。同样,假设我们需要一个500MHz的信号带宽、增益为10,并且希望尽可能降低功耗。我们可以按照下图的步骤来完成设计。

  1. 为了获得所需要的增益,我们必须有:

    \[g_m = 10\frac{V}{V}/1k\Omega=10mA/V \]

  2. 对于500MHz的输入极点,我们需要:

    \[C_{gs}=\frac{1}{2\pi\times 300\Omega \times 500MHz}=1.1pF \]

  3. 所需的截止频率:

    \[f_T=\frac{g_m}{C_{gs}}=\frac{10mS}{1.1pF}=9.4GHz \]

  4. 根据下图中的查找,这意味着:

    \[g_m/I_D\leq 17.5mS/mA \]

  5. 最终:

    \[I_D=\frac{g_m}{g_m/I_D}=\frac{10mS}{17.5mS/mA}=570\mu A \]

image

简单。当然,我们之前看过的基于\(V_{ov}\)的方法也是如此。重要的区别在于这些新关系是准确的。 下图是\(f_T\)\(g_m/I_D\)设计图的更完整(实际上是最终)版本。它结合了沟道长度\(L\)对晶体管速度的影响。包括了从工艺最小值到相当大的值的几种长度。我们将在后面的章节中解释如何创建此图表。 让我们仔细看看下图。对于任何给定的\(g_m/I_D\)值,较大的L总是意味着较慢的晶体管。这意味着,如果我们没有其他限制,我们应该始终选择可用的最短长度晶体管(即工艺最小值)。这也意味着我们可能需要考虑其他限制。这个限制是\(r_o\),我们现在将讨论它。

image

下图明确地展示了\(r_o\)在晶体管电路中的位置。如你所知,\(r_o\)只是与\(R_L\)并联的另一个负载。在实际应用中,我们通常希望\(r_o\)远大于\(R_L\),以便可以忽略\(r_o\),或者我们会使\(R_L\)非常大(可能使用电流源代替实际的电阻器),以尽可能获得更大的增益。这里我们研究第二种情况。让我们看看当\(R_L\)趋近于无穷大时会发生什么。

image

下图有效地说明了这种情况。当\(r_o\)成为主导的电阻负载时,整体增益受到我们称之为晶体管本征增益的限制。本征增益是\(g_m\)\(r_o\)的乘积,它告诉我们可能获得的最高(电压)增益。

\[Intrinsic\;Gain = g_mr_o(\frac{V}{V}) \]

image

在实践中,了解本征增益比了解\(r_o\)本身更为方便(我们稍后将明白其中的原因)。在数学上,它们几乎是等价的。也就是说,你可以像并联电阻那样并联增益。例如,如果一个电路的理想增益为10,而你使用的晶体管的本征增益为100,那么净增益将下降约10%。我们可以利用本征增益的概念来创建另一个设计图表。下图与之前的\(f_T\)\(g_m/I_d\)关系图类似,不同之处在于本征增益是纵轴变量。与\(f_T\)\(g_m/I_d\)关系图一样,它是针对\(g_m/I_D\)绘制的,并且针对几种不同的沟道长度进行了绘制。

两张图共同构成了一个非常强大的设计工具。它们不仅在晶体管实现中极为有用,而且还允许设计者理解目标技术中可用晶体管的能力。

image

举个例子,假设你想要一个增益至少为50的电路。快速浏览本征增益图表后,你会发现这绝对是可行的。选择最小沟道长度\(L = 0.18um\)可能风险太大,因为它没有留出余量,但\(L = 0.28um\)可能足够保守。那么,如果我们想要一个增益为100的电路呢?这次快速查看图表会发现,我们无法通过单个晶体管实现这一目标。我们可能需要使用多级电路,或者尝试使用共源共栅(cascode)电路来增加增益。这些都是我们可以解决的问题。重要的是,我们现在已经了解了这些信息。我们不必浪费时间尝试用单个晶体管实现设计,结果却通过多次Spice仿真发现这是不可能的。

总之,这两张图表基于\(g_m/I_D\)作为设计变量,提供了晶体管行为的完整描述。我们知道\(f_T\)\(g_mr_o\)如何受到\(g_m/I_D\)\(L\)的影响。因此,我们可以为任务选择最佳的\(L\)\(g_m/I_D\)。由于这些图表是基于仿真的,我们有信心它们是准确的。

在继续之前,需要提醒一点。请注意,\(r_o\)非常依赖于\(V_{ds}\)。图表中提供的值是基于\(V_{ds} = V_{DD}/2\)的情况。如果\(V_{ds}\)开始下降到接近\(V_{dsat}\)​(换句话说,如果你的设计没有足够的裕量),那么本征增益可能会显著下降(可能下降4到5倍)。

最后,我想介绍一张新的图表。前两副是设计图表,而这张新图表(下图所示)是偏置图表。你可以使用之前的图表来确定\(L\)\(g_m/I_D\)的值。然后,我们可以轻松地使用下图查找在我们所需的\(g_m/I_D\)值下偏置晶体管所需的\(W\)值。\(W\)?没错!当我们使用这张图表时,其他所有参数都已经确定。我们从增益要求中知道了\(L\),我们选择了\(g_m/I_D\)以确保特定的\(f_T\),而\(I_D\)的选择则是为了得到正确的\(g_m\)值。剩下的唯一变量就是\(W\)了。

image

4.5 对于\(g_m/I_D\)方法的一个更深入的理解

基于\(g_m/I_D\)的设计方法的神奇之处在哪里?例如,为什么无论你做什么,特定的\(g_m/I_D\)值总是会导致相同的\(f_T\)?这难道不奇怪吗?虽然理解这一点并不是使用该方法的关键,但对其工作原理有一个直观的理解是值得的。一个简单的思维实验实际上可以很容易地解释这一点。

想象一下,晶体管的跨导(\(g_m\))和漏极电流(\(I_D\))之间的关系是固定的,这意味着\(g_m/I_D\)的比值反映了晶体管的工作状态。这个比值与晶体管的偏置条件密切相关,而偏置条件又决定了晶体管的性能参数,如\(f_T\)(截止频率)。因此,无论你如何调整其他参数(如沟道长度\(L\)或宽度\(W\)),只要\(g_m/I_D\)的值保持不变,\(f_T\)也会保持不变。这是因为\(g_m/I_D\)直接反映了晶体管的内部工作状态,而这些状态决定了其高频性能。

通过这种方式,\(g_m/I_D\)方法提供了一种简单而强大的设计工具,使设计者能够在不依赖复杂计算的情况下,快速确定晶体管的关键性能参数。

下图展示了晶体管电路的演变过程。 假设我们测量电路\(a\)中晶体管的\(g_m\)\(C_{gs}\)。逻辑上,因为端点电压和偏置电流保持不变,电路\(b\)中的每个晶体管也会有相同的\(g_m\)\(C_{gs}\)值。但是,由于它们是并联工作的,复合行为表现为\(I_D\)\(g_m\)\(C_{gs}\)的加倍。关键在于,因为这三者一起缩放,电路\(b\)整体上具有与电路\(a\)完全相同的\(g_m\)-to-\(I_D\)\(g_m\)-to-\(C_{gs}\)(即\(f_T\))比率。事实上,无论我们并联多少个,我们总会得到相同的\(g_m/I_D\)\(f_T\)。在继续之前,请确保你理解这一点。 接下来,我们需要从电路b过渡到电路c。我认为你应该觉得这很自然。例如,在电流镜中,我们期望可以使用宽度比来创建特定的电流比。事实上,有时这些比率是通过并联单元元件实现的。

最后,为了完成这个思想实验,我们必须同意可以将这个想法推广到任意比例,而不仅仅是整数。这种推广意味着\(g_m\)\(I_D\)\(C_{gs}\)都与\(W\)线性相关。如果\(W\)增加25%,那么我们预计\(g_m\)\(I_D\)\(C_{gs}\)也会增加25%,这始终保持了\(g_m\)-to-\(I_D\)\(g_m\)-to-\(C_{gs}\)的相同比率。 本征增益也以同样的方式缩放。电路\(b\)的复合行为表现为电路\(a\)的两倍\(g_m\),但它也将两个\(r_o\)并联。你得到两倍的\(g_m\),但只有一半的\(r_o\),导致复合本征增益与电路\(a\)中的晶体管完全相同。无论我们并联多少个,本征增益都会相同。因此,像\(f_T\)一样,如果我们将本征增益绘制为\(g_m/I_D\)的函数,那么它就会与\(W\)无关。正是这种宽度无关性使得本征增益在设计便利性方面优于\(r_o\)

这就是基于\(g_m/I_D\)设计方法的思考方式。我们基本上表征了宽度为\(W\)的单个晶体管。对于这个器件,我们扫描栅极电压并测量得到的\(g_m\)\(I_D\)\(C_{gs}\)\(r_o\)值。一旦我们知道了宽度为\(W\)的晶体管这些参数之间的关系,我们就可以依靠线性缩放来确定宽度为\(\alpha W\)的晶体管的行为。 这就是全部内容。只要所有参数都随\(W\)缩放,那么\(g_m/I_D\)方法就会成立。当然,我们也知道这些比率并不完美。两个并联的宽度为\(W\)的晶体管的性能与一个宽度为\(2W\)的晶体管并不完全相同,但它们的差异在几个百分点以内。记住:我们只期望在10-20%的准确率完成我们的设计,因为最终的调整将在Spice中完成。而且这比依赖长沟道模型要接近得多。

5. 一个顶层到底层的设计例子

在前两节中,我们已经介绍了基于\(g_m/I_D\)的设计方法。现在,我想做一个完整的设计示例,这样你就可以确切地看到它是如何使用的。

5.1 问题描述

你需要在0.18µm工艺中设计一个差分放大器。该放大器必须具备以下特性:

  1. 增益大约10
  2. 带宽大约\(200MHz\)
  3. 驱动\(1pF\)负载
  4. \(300\Omega\)源驱动
  5. 最低可能的功耗

5.2 确定工艺特征

第一步是表征工艺目标,这意味着我们需要创建一些设计和偏置图表(注意,在这种情况下,上一节介绍的三个图表是基于这个工艺目标生成的,所以我们将直接引用它们)。你将通过仿真以创建这些图表的电路如下图所示。 为了填充曲线,你需要在监测晶体管的同时扫描电压源,并且需要对各种沟道长度重复该扫描。可以使用以下(Hspice)代码行来访问所需的“内部”晶体管特性。

image

.probe gmid = par('gmo(m1)/i(m1)')
.probe ft = par('gmo(m1)/(2*3.14*cggbo(m1))')
.probe gmro = par('gmo(m1)/gdso(m1)')
.probe idw = par('i(m1)/w(m1)')

使用诸如Matlab之类的绘图工具,你可以从包含所有扫描数据的filename.SWO文件中读取所有这些变量,并创建类似于之前的图表。此外,在我们进行过程中,参考这些图表将有助于你习惯于选择这些值。

5.3 选择拓扑

下图展示了一个我们可以用于此设计的候选电路。这个拓扑结构能工作吗?我们可以相当有信心地认为它可以。根据之前的\(g_m/I_D\)\(g_m r_o\)图,我们可能需要一个比最小长度更长的沟道和至少10的\(g_m/I_D\),以确保本征增益(其可靠性不是很高)不是主要的增益决定因素,但即使在这些条件下,\(g_m/I_D\)\(f_T\)图也显示我们仍然可以实现高\(f_T\)​。

image

实际上,我们可以首先确定\(L\),因为我们对本征增益有严格的限制。例如,我们可以选择\(L = 0.22\mu m\),这将使本征增益保持在大约50(对于适中的\(g_m/I_D\)值),这意味着给整体增益的留的设计裕度可以做到80%。

\[L=0.22\mu m \]

接下来我们可以计算\(R\)的值。这是一个简单的信号与系统计算。每个电阻与\(1_{pF}\)的电容负载形成一个极点,我们希望该极点在\(200MHz\)

\[R=\frac{1}{2\pi \times C\times 200MHz}\approx 800\Omega \]

既然知道了\(R\),我们就可以计算出获得10的增益所需的\(g_m\)

\[g_m=\frac{10}{R}=12.5mS \]

不幸的是,\(200MHz\)的极点并不是我们系统中的唯一极点。每个\(300\Omega\)的输入电阻与\(C_{gs}\)形成一个次要极点,如果它位于\(200MHz\)极点附近,可能会使频率响应复杂化。为了防止这个次要极点影响频率响应,我们可以将其推到更高的频率。例如,超过主极点10倍的裕量应该可以使我们的电路保持近似的单极行为。这确定了\(C_{gs}\)的值。

\[C_{gs}=\frac{1}{2\pi \times 300\Omega \times 2GHz}\approx 265pF \]

已知了\(g_m\)\(C_{gs}\),我们可以计算截止频率:

\[f_T=\frac{1}{2\pi}\frac{g_m}{C_{gs}}=\frac{1}{2\pi}\frac{12.5mS}{265pF}\approx 7.5GHz \]

注意到我们已知了\(L\)\(f_T\),我们就可以确定\(g_m/I_D\)的值,这可以简单的从\(f_T\)设计图表中读出:

\[g_m/I_D=16.5mS/mA \]

由于我们同时知道了\(g_m\)\(g_m/I_D\),我们可以确定\(I_D\)

\[I_D=\frac{g_m}{g_m/I_D}=\frac{12.5}{16.5}\approx 0.76mA \]

当然,我们的电流源需要提供双倍的电流,因为我们需要为两个晶体管供电。最后一步是确定\(W\)的值,以确保我们在所需的跨导效率 \(16.5 mS/mA\) 下工作。根据偏置图表,跨导效率为 \(16.5 mS/mA\) 且长度为 \(0.22 \mu m\) 时,对应的电流密度为 \(6.5 \mu A/μm\)。因此,我们可以计算出 \(W\)

\[W=\frac{0.76mA}{6.5\mu A/\mu m}=117\mu m \]

最终的设计如下图所示:

image

频率响应图如下图所示:

image

你觉得我们的设计怎么样?增益有点低。我们的目标是10倍(\(20dB\)),但实际只达到了约8.5倍。此外,带宽也没有完全达到\(200MHz\)。这是怎么回事呢?

首先,这两个不足都很容易解释。我们预计增益会低于目标值,因为在手工计算中没有考虑有限的输出电阻 \(r_o\)。记得我们当时计算的固有增益只有大约50倍。我们本可以更保守一些,也许将增益目标提高20%左右。带宽不足的原因也很容易理解。首先,\(C_L\) 并不是我们需要驱动的唯一电容负载!与 \(C_L\) 并联的还有晶体管本身的漏极电容。此外,次级极点仅比主极点高10倍左右,这使得它的影响虽然小,但仍然不可忽视。

总结来说,增益不足是因为忽略了 \(r_o\) 的影响,而带宽不足则是由于漏极电容和次级极点的存在。这些因素在设计过程中都需要更仔细地考虑和优化。

基于 \(g_m/I_D\) 的设计方法实际上表现得非常好。我们已经了解到一些在下次设计迭代中可能需要考虑的因素(例如,可以根据 \(W\) 估算漏极电容,并在初始阶段考虑固有增益的限制)。但这种方法确实正确地预测了我们应该预期的结果。例如,从仿真输出文件中,我们可以读取 Hspice 计算的实际 \(g_m\)\(C_{gs}\) 值。

gm 12.6378m
cgtot 264.2388f

这表明 \(g_m/I_D\)​ 方法在设计过程中提供了可靠的指导,尽管在实际设计中还需要进一步优化和调整以更好地满足目标性能。通过结合仿真结果和设计经验,我们可以在未来的迭代中进一步提高设计的精度和性能。

正如你所看到的,这些值与我们的预期非常接近。换句话说,对于这种设计方法,我们没有什么可抱怨的!未能达到设计目标完全是我们的问题。这种方法无法弥补设计过程中明显的疏忽。我们仍然需要考虑诸如米勒电容、漏极电容、馈通效应等因素。但这些都可以通过信号与系统分析来加以考虑。现在,借助基于 \(g_m/I_D\) 的设计方法,我们可以确信在信号与系统分析中使用的小信号参数将在最终设计中得到正确的实现。

最后,你还可以尝试更复杂的方法。我一直在以图表的形式展示 \(g_m/I_D\) 设计数据,但你没有理由不能将这些数据导入到你喜欢的数学软件中作为表格使用。一旦你可以通过编程从查找表中检索这些数据,你就可以自由地采用各种设计流程。你甚至可以围绕整个设计过程构建一个优化引擎,以最大化某些特定的性能参数。

6. 结论

总之,基于 \(g_m/I_D\) 的设计方法是目前我们拥有的最佳工具,能够将小信号参数(如 \(g_m\)\(f_T\))与物理参数(如 \(W\)\(L\)\(V_{gs}\))联系起来。它简洁地封装了 \(g_m\)\(f_T\) 之间的权衡关系,并能够非常准确地预测仿真性能。此外,它还能让设计者了解目标技术的局限性,从而在设计周期的早期阶段帮助推动架构决策。最后,这些数据可以以表格形式导入数学软件中,使设计者能够使用复杂的优化算法,从而兼具基于方程的设计方法的优势,同时提供更精确的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/879330.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

个人英语学习笔记基于B站英语的平行世界语法课程

导读 语言学习没有捷径,只要听说读写这四大行长期日复一日的练习就行了,兴趣是最重要的,兴趣就是高效学习的基础和长期坚持下去的动力。 0基础开始痛苦学习大半年英语,没兴趣的结果就是词汇量是上去了,但是英语的听说读写水平还不如学了一年的日语。😅 该笔记基于此课程…

PostgreSQL:数据库迁移与版本控制

title: PostgreSQL:数据库迁移与版本控制 date: 2025/2/6 updated: 2025/2/6 author: cmdragon excerpt: 在现代软件开发中,数据库作为应用程序的核心组件之一,数据的结构和内容必须能够随着业务需求的变化而调整。因此,数据库迁移和版本控制成为了确保数据一致性、完整性…

Servlet基础

什么是Servlet、Servlet的架构、Servlet任务、Servlet的基本使用、Servlet的生命周期、Servlet API中主要接口及实现类、Servlet的部署(注册与映射)、缺省Servlet与启动时加载配置、ServletConfig与ServletContext、request和response什么是Servlet基础 Java Servlet 是运行在…

GNURadio模块学习——Source and Sink类

介绍GNU Radio中常见的 Source 与 Sink 模块,包括流程图端口、音频输入输出、虚拟连接、文件读写、ZMQ跨流程图通信,以及随机信号源、固定信号源、噪声源等常见信号源和时域、频域、星座图等信号展示工具。Source and Sink Pad(流程图端口) 当该流程图是hierarchical block…

【C++】gflag使用指南

一、什么是gflags? gflags 是一个用于定义命令行参数的 C++ 库,它由 Google 开发并开源。通过 gflags,你可以轻松地在你的程序中添加各种类型的命令行选项,包括整数、布尔值、字符串等,并且可以为这些选项设置默认值。此外,gflags 还提供了强大的帮助信息生成功能,使得用…

【C++】Google benchmark理解与应用

一、介绍 Google Benchmark 是一个用于 C++ 的微基准测试库。它旨在帮助开发者编写出更高效、更具表现力的基准测试代码。通过使用 Google Benchmark,可以方便地测量函数或代码片段的性能,并且能够生成详细的报告。 二、安装与配置 2.1 安装 在Ubuntu环境中安装Google Benchm…

LRU浅析

LRU算法LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使…

20250205 省选模拟赛 T3

20250205 省选模拟赛 T3 Description 设计一个 \(n\times n\) 的 01 矩阵,使得从 \((1,1)\) 走到 \((n,n)\) 且只能向右或下走且只经过为 \(1\) 的格子的方案数为 \(X\)。 \(n \leq 24\) 时得满分。\(X \leq 10^9\)。 Solution 基于 \(2\) 进制的构造方法我们称从左上到右下的…

Automa:自动化浏览器工作流

🏷️仓库名称:AutomaApp/automa 🌟截止发稿星数: 14340 (今日新增:33) 🇨🇳仓库语言: Vue 🤝仓库开源协议:Other 🔗仓库地址:https://github.com/AutomaApp/automa引言 Automa是一个浏览器扩展,允许用户通过连接模块来自动化浏览器任务。它消除了重复性任务的需…

本地部署DeepSeek教程

本地部署DeepSeek教程 步骤 本地部署DeepSeek教程步骤 1 安装Ollama 2 下载DeepSeek模型 3 可视化图文交互界面Chatbox(可选)1 安装Ollama 访问Ollama官网下载Ollama,默认安装即可。安装完成后打开终端(我这里是windows系统),输入: ollama help即可查看ollama选项,且可…

OpenLDAP篇-安装OpenLDAP服务01

1、OpenLDAP统⼀⽤户认证系统 1.1 为什么需要OpenLDAP 在没有OpenLDAP统⼀⽤户认证系统的环境中,往往会⾯临如下问题:1、当⽤户需要访问多台服务器时,管理员需要在每台服务器上⼿动创建账户。如果员⼯离职,还需逐台删除账户,整体操作繁琐且容易出现遗漏的情况,因此存在较…

集训3 20240127

集训3 20240127 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A: 题目大意:给定 \(n\) ,两个人轮流可以使 \(n\) 减去一个任意小于它且与它互质的数,求最后甲能否取胜 #include<bits/stdc++.h>using namespace std;int main() {long long n;cin&g…