SLiCAP模拟电路设计简介

SLiCAP模拟电路设计简介
2024年11月21日 11:21 电子产品世界

学习如何使用基于Python的符号模拟器程序SLiCAP设计和验证模拟电路。

本文引用地址:

让我们面对现实吧——从SPICE模拟中提取有用的设计信息可能具有挑战性。如果你是一名模拟设计师,你花了多少时间在SPICE中更改参数,迭代地重新运行程序,并检查数值结果?

在本文中,我们将讨论一个有用的开源Python包,称为SLiCAP(符号线性电路分析程序的缩写)。正如我们将看到的,SLiCAP通过提供设计信息来补充基于SPICE的标准模拟器,而不需要繁琐的试错程序。我们将首先介绍SLiCAP的一些关键功能;然后,我们将通过使用SLiCAP设计和验证一个简单的负反馈电压放大器来演示这些功能。

SLiCAP能做什么?

SLiCAP最大的卖点之一是它能够求解线性电路设计方程。它可以计算直流和动态频率行为的电路解,在后一种情况下,使用拉普拉斯域传递函数、根轨迹分析和零极点分析。符号和数字噪声分析也是可能的。

SLiCAP还具有专用的参数步进功能。许多器件,例如晶体管,表现为非线性。我们可以使用参数步进函数来改变这些组件线性化的操作点。

对于我们这些不太喜欢文档的人来说,SLiCAP也可以在这方面提供帮助。Python应用程序允许我们在后处理脚本中直接使用SLiCAP输出。当我们完成设计过程时,应用程序可以同时生成记录它的HTML页面。

请注意,这是对SLiCAP功能的介绍,而不是一个全面的列表。我们将在本文稍后讨论更多内容,例如与网表生成相关的内容。然而,建议读者查阅SLiCAP手册,以更全面地了解该程序的功能。

手册的“如何使用SLiCAP”部分包括详细的工作流程。我们可以大致概括为:

设置电路网表。

在Python中定义SLiCAP指令。

执行指令。

使用结果来确定电路参数的大小(后处理)和/或验证您的设计。

生成索引HTML报告。

为了更好地理解SLiCAP提供了什么,让我们通过一个设计示例来了解。

利用SLiCAP设计负反馈放大器

在这个例子中,我们将使用SLiCAP的渐近增益模型来设计负反馈放大器的增益和动态行为。然后,我们将使用SLiCAP生成的波特图在频域中评估我们的设计。虽然我们不会深入探讨编码技术,但这个例子应该提供足够的细节来说明程序的底层设计理念。

要求

我们的目标是设计具有以下规格的电压-电压放大器的关键组件:

源到负载的放大系数Av=20 V/V。

–3 dB带宽(fBW)为500 kHz或更大。

为了演示,我们假设负载具有无限阻抗,而电源具有零阻抗。让我们进一步假设所选电路拓扑是具有电阻分压器反馈和高增益运算放大器控制器的负反馈配置。我们最初的设计目标现在归结为:

确定两个电阻器的尺寸。

选择运算放大器。

必须完成上述操作,以满足Av和fBW的要求。

设置SLiCAP网表

为了解决网络问题,SLiCAP需要一个电路网表作为输入。您可以手动创建网表或导入网表——网表语法与SPICE兼容。如果您选择手动创建网表,SLiCAP有许多内置模型,包括运算放大器和晶体管的线性化模型,用于无源和有源元件。

因为阅读原理图比网表文本更容易,所以您可能更喜欢在SPICE中构建原理图并生成网表。如果您选择该路由,则可以将以下任何一种与SLiCAP设备符号一起使用:

KiCad。

LTspice。

gSchem。

莱普顿·埃达。

说明和语法详细信息可以在SLiCAP用户指南中找到。

回到我们的设计示例,我选择在LTspice中生成网表。此过程将生成.cir文件,如图1所示,以及电路拓扑。

图1左:LTspice中的电路拓扑和原理图捕获 右:SLiCAP网表创建图1左:LTspice中的电路拓扑和原理图捕获 右:SLiCAP网表创建

内置设备模型(上述.model语句中的OV)用作放大器的控制器。输出端的电压源由输入端子之间的差分电压控制,模拟电压反馈运算放大器的小信号动态行为。

模型参数可用于确定输入和输出阻抗以及电压增益的属性。因为我们想保持这个例子简单,所以我们使用了一个高度理想化的运算放大器模型。它的积分电压增益等于

2

π

G

B

s

2πGBs

,其中GB是运算放大器的增益带宽乘积。

设计方法与渐近反馈模型

在我们运行SLiCAP模拟之前,让我们检查一下我们将用于负反馈放大器的两步设计方法。

在第一步中,我们通过将运算放大器替换为零器(具有无限电流、电压、跨导和跨阻抗增益的理想放大器)来确定理想增益。如果回路增益参考变量选择正确,则这与渐近增益A∞(s)一致。通过假设控制器增益为无穷大,可以找到渐近增益。

在第二步中,我们确定控制器的非理想性的影响,包括有限的增益和带宽限制。该信息嵌入拉普拉斯域伺服函数S(S)中,可以通过以下方程找到:

其中L(s)是环路增益。

源到负载增益G(s)是渐近增益和伺服增益的乘积:

简而言之,步骤1告诉您如何根据所需的传递函数设计反馈网络。步骤2告诉您如何选择控制器的性能方面(如增益和带宽),以便源负载增益G(s)仍然可以接受。这种方法的优点在于将反馈网络的设计与控制器的设计分开。

有关两步设计方法和渐近反馈模型的更多信息,请参阅Anton Montagne的“结构化电子设计:放大器设计的概念方法”。这本书可以在网上免费下载PDF。

定义和执行指令

让我们从SLiCAP设计过程中中断的地方继续。到目前为止,我们已经通过网表定义了电路。下一步将定义SLiCAP指令,为我们感兴趣的特定性能方面提供信息。这就是Python编码的开始。

定义指令的第一步是创建指令对象的实例,并将电路对象分配给指令。如图2中的代码片段所示,这意味着将之前创建的.cir网表文件连接到指令。

图2创建SLiCAP指令实例并将其连接到.cir网表文件图2创建SLiCAP指令实例并将其连接到.cir网表文件

请记住,我们感兴趣的是设计源到负载的传递函数G(s),使直流电压增益为Av=20,带宽fBW=500 kHz。因此,我们希望获得符号设计方程。因此,我们将模拟类型设置为符号。由于这些需要是拉普拉斯域传递函数,我们还将数据类型设置为拉普拉斯。

电源电压和负载(检测器)电压也需要定义。我们还希望使用渐近增益模型作为设计方法,这要求我们定义一个环路增益参考变量。这将是用作控制器的运算放大器模型的电压控制电压源。

上述所有指令属性都已编码,如图3所示。

图3 用Python编写SLiCAP指令属性并执行指令图3 用Python编写SLiCAP指令属性并执行指令

在执行指令之前,我们还有最后一步要完成,即定义增益类型。回想一下上一节,源到负载的传递、渐近增益和伺服增益之间存在关系。此外,伺服增益取决于环路增益。这就是为什么在图3中,我们对每种增益类型执行一次指令。

使用SLiCAP输出进行设计

现在我们已经运行了模拟,我们可以使用结果来促进我们的设计过程。图4显示了运行Python脚本生成的HTML报告的一部分。

图4生成的HTML报告的片段,显示了不同增益类型的电压放大器传递函数图4生成的HTML报告的片段,显示了不同增益类型的电压放大器传递函数

正如预期的那样,渐近增益(A∞)仅取决于电阻反馈比。由于电压增益要求(Av=20),该比率已经固定。

另一方面,环路增益表现为积分器,单位增益频率等于GB和电阻反馈比的乘积。我们还可以从图4的输出中观察到,环路增益的单位增益频率将决定伺服函数的带宽S(S)和源到负载的传输带宽G(S)。

这些观察结果为我们的设计奠定了基础。由于电阻比已经由Av要求固定,很明显,电路的带宽只能通过改变所选运算放大器的增益带宽积来设计。

接下来,让我们使用Python作为计算器来完成我们的设计。图5显示了当我们使用设计方程来确定电阻器的尺寸以使Av=20时产生的HTML输出。

图5 生成的HTML报告的片段,显示了基于Av要求的R1计算图5 生成的HTML报告的片段,显示了基于Av要求的R1计算

基于这个电阻分压比,我们在选择R1和R2时有一个自由度。在这种情况下,我们选择R1并根据给定的公式计算R2。一般来说,我们会添加限制设计自由度的噪声和功耗要求,但这些超出了这个简单示例的范围。

最后,图6显示了用于确定运算放大器最小增益带宽乘积的HTML输出。

图6生成的HTML报告的片段,显示带宽要求的最小GB计算图6生成的HTML报告的片段,显示带宽要求的最小GB计算

顺便说一句,您可能已经注意到上图中的“环路增益极点乘积”。虽然我们不会在本文中讨论它,但我之前提到的教科书第11章对环路增益极点积的概念(和重要性)进行了深入的解释。

SLiCAP中的设计验证

我们最初的设计目标——正确确定R1、R2和GB的大小——现在已经实现。然而,我们仍需验证这三个参数是否满足性能要求。为此,我们在SLiCAP中使用选定的参数值运行数值模拟。然后,SLiCAP Python包将为我们一直在研究的不同增益类型创建波特图:

渐近增益。

环路增益。

伺服增益。

源到负载的转换(简称为增益)。

图7和图8分别显示了震级和相位波特图。

图7 SLiCAP为R1=190 kΩ,R2=10 kΩ,GB=10 MHz生成的幅度波特图图7 SLiCAP为R1=190 kΩ,R2=10 kΩ,GB=10 MHz生成的幅度波特图
图8 SLiCAP生成的R1=190 kΩ、R2=10 kΩ、GB=10 MHz的相位波特图图8 SLiCAP生成的R1=190 kΩ、R2=10 kΩ、GB=10 MHz的相位波特图

源到负载的传输具有Av=20的直流幅度(约等于26dB)和fBW=500kHz的带宽,这意味着满足了要求。其他增益类型对应于我们之前发现的拉普拉斯传递函数。超出带宽的G(s)和s(s)的一阶衰减来自环路增益中的一阶积分器,环路增益本身来自运算放大器的电压增益。

总结

我们在本文中使用的模型非常简单,可能太简单了,无法准确地表示一个真实的应用程序。更现实的示例电路可能包括以下任何或所有内容:

负载阻抗。

源阻抗。

运算放大器输入和输出阻抗。

运算放大器电压增益中的额外极点和零点。

在设计过程的第一部分,诀窍是了解在环路增益中引入主导极点和/或零点的模型组件。这应该返回有限阶环路增益传递函数,有助于确保零极点位置满足带宽要求。稍后,我们可以在数值模拟中增加复杂性,以验证整个电路。

尽管简单,但我们的设计示例准确地反映了SLiCAP的结构化设计理念。在更实际的层面上,它表明SLiCAP能够在相当短的时间内呈现有助于元件选择、验证电路和记录过程的方程。总而言之,SLiCAP为模拟电子工程师提供了一个绝佳的机会,可以加快和自动化他们的一些放大器设计。

新浪科技公众号
新浪科技公众号

“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

创事记

科学探索

科学大家

苹果汇

众测

专题

官方微博

新浪科技 新浪数码 新浪手机 科学探索 苹果汇 新浪众测

公众号

新浪科技

新浪科技为你带来最新鲜的科技资讯

苹果汇

苹果汇为你带来最新鲜的苹果产品新闻

新浪众测

新酷产品第一时间免费试玩

新浪探索

提供最新的科学家新闻,精彩的震撼图片