第10章 蒙特卡洛分析
章节概述
10.1. 仿真设置 152
10.1.1 输出变量 153
10.1.2 运行次数 153
10.1.3 使用分布 153
10.1.4 随机数种子 154
10.1.5 保存数据来源 154
10.1.6 MCLoad/Save 154
10.1.7 更多设置 154
10.2. 添加公差值 155
10.3. 练习 156
练习1 156
练习2 161
蒙特卡洛分析本质上是一种统计分析,它根据指定的统计分布,在指定的公差范围内随机变化器件模型参数,从而计算电路的响应。例如,迄今为止所遇到的所有电路都是使用固定元件值进行仿真的。然而,分立实际元件(如电阻器、电感器和电容器)都具有指定的公差,因此当你选择一个10 kΩ 1%的电阻器时,实际测量的电阻值可能介于9900到10,100 Ω之间。电路中的其他分立元件和半导体也会存在公差,因此所有元件公差的综合作用可能导致电路响应与预期的电路响应产生显著偏差。这种情况在滤波器设计中尤为明显,应用的元件公差可能导致与所需的滤波器响应发生偏离。
蒙特卡洛分析的作用是提供统计数据,以预测在指定的公差范围内随机变化的模型参数或元件值(方差)所产生的影响。生成的值遵循统计学上定义的分布。电路分析(直流、交流分析或瞬态)会重复指定次数,每次蒙特卡洛运行都会生成一组新的随机生成的元件或模型参数值。运行次数越多,每个元件值在其公差范围内的所有可能取值被用于仿真的机会就越大。为了覆盖公差范围内尽可能多的可能元件值,进行数百次甚至数千次蒙特卡罗运行是很常见的。
实际上,蒙特卡洛能够预测通过将元件或模型参数值调整到其指定的公差范围,来提高电路的鲁棒性或良率。
尽管蒙特卡洛分析的结果可以在PSpice波形查看器(Probe)中以一组分散的波形形式显示,但性能分析可用于生成和显示统计数据的直方图以及统计数据的汇总。这为蒙特卡洛分析的统计结果提供了更直观的表示。
10.1. 仿真设置
蒙特卡洛分析需与其他分析(交流分析、直流分析或瞬态分析)结合运行。通过属性编辑器为原理图中的元件设置公差,并在仿真配置文件中创建所需的分析。对于图 10.1中的带通滤波器,已在电阻器和电容器上添加了元件公差,并在电路中显示。通过执行从10Hz到100 kHz的交流扫描来分析电路响应。蒙特卡洛分析将首先使用所有标称值进行一次初始分析,然后根据指定的蒙特卡罗运行次数,使用随机生成的元件值进行后续多次分析。
10.1.1 输出变量
您需要指定一个节点电压或一个独立电流或电压源。在此示例中,输出变量是 V(输出)。
10.1.2 运行次数
这是交流分析、直流或瞬态分析的运行次数。探针中最多可显示400个波形。然而,对于打印结果,最大运行次数现已从2000增加到10,000。第一次运行是标称运行,不应用任何公差。
10.1.3 使用分布
模型参数偏差在标称值到公差范围之间的取值由概率分布曲线确定。默认情况下,该分布曲线为均匀分布,即每个值被选中的概率相等。另一种选项是高斯分布,即通常所用的钟形曲线。
制造。与公差范围的外边缘相比,元件值更可能取分布在中心附近的值。
您还可以使用指定偏差和相关概率的坐标对来定义自己的概率分布曲线,其中偏差范围为 -1 到 +1,概率范围为 0 到 1。更多详细信息请参见 PSpice A/D 参考指南中的 doc\pspcref\pspcref.pdf。
10.1.4 随机数种子
与大多数随机数生成器一样,需要一个初始种子值来生成一组随机数。该值必须是1到32,767之间的奇整数。如果未指定种子数值,则使用默认值17,533。
10.1.5 保存数据来源
此功能允许您从选定的运行中保存数据。例如,如果只想查看标称运行的电路响应,请选择“无”。如果要保存所有运行,请选择“全部”。如果想从标称运行开始每隔三次运行保存一次,即第四次、第七次、第十次等,请选择“每隔”,然后在运行框中输入3。如果要保存前几个运行的数据,请选择“前几个”,然后在运行框中输入3。如果要保存第三次、第五次、第七次和第十次运行的数据,请选择“运行(列表)”,并在运行框中输入3, 5, 7, 10。已保存的运行将在探针中显示。
10.1.6 蒙特卡洛加载/保存
PSpice 现在具有历史支持功能,可让您将蒙特卡洛运行中随机生成的模型参数或元件值保存到文件中,供后续分析使用。
10.1.7 更多设置
此选项允许您指定整理函数,这些函数将应用于输出波形并返回单个结果值。例如,最大值函数用于搜索并返回波形的最大值。Y最大值函数返回与标称运行波形和当前波形之间差异最大的值对应的值。上升和下降函数用于搜索波形首次越过设定阈值的时刻。对于每个函数,您可以指定希望应用这些函数的范围。图10.3显示了可用的整理函数。
整理函数总结如下:YMAX:查找与标称运行的最大差值;MAX:查找最大值;MIN:查找最小值;RISE_EDGE:查找第一次上升阈值 crossing;FALL_EDGE:查找第一次下降阈值 crossing
10.2. 添加公差值
现在可以在属性编辑器中为离散的R、L和C元件添加公差,因为这些元件现在包含容差属性。输入公差值时,必须包含%符号,例如10%。
在早期的OrCAD版本中,为分立元件添加公差的唯一方法是使用通用 Breakout元件,这样可以编辑PSpice模型。例如,要为电阻添加公差,必须使用Breakout库中的Rbreak元件,编辑模型(右键单击 > 编辑PSpice模型),然后向PSpice模型中添加公差语句。Rbreak的默认模型定义如下:
.model Rbreak RES R=1
其中Rbreak是可以在原理图上更改的模型名称,RES是PSpice模型类型,R 是电阻倍增系数。您可以添加两种类型的公差:dev和lot,如下所示:
.model Rmc1 RES R =1 lot = 2% dev=5%
此处,模型名称已更改为 Rmc1,并在模型语句中添加了两种容差类型。器件容差(dev tolerance)会使具有相同模型名称(在此示例中为 Rmc1)的器件的容差值彼此独立变化,而批次容差(lot tolerance)则会使具有相同模型名称的器件的容差值同步变化。
Dev 与对所有电阻器应用标准5%容差相同,其中每个具有相同模型名称的电阻器将被分配一个独立于其他同型号电阻器的随机电阻值。
Lot 是指所有具有相同模型名称的电阻器被视为一组,并且会同步变化,变化幅度可达 ±2%。这主要用于集成电路(IC)设计中,其中温度变化会同等应用于元件组。因此,Rmc1 的综合总容差可能高达 ±7%。
一个同时使用 lot 和 dev 的示例是单列直插式(SIL)或双列直插式(DIL)电阻排;每个电阻都有定义的器件容差,因此每个随机生成的电阻值都将彼此不同。如果温度升高,批次容差将确保所有电阻值按相同比例增加。
如上所述,只有分立元件具有可编辑的容差属性,该属性可在属性编辑器中进行修改。如果您希望为晶体管的Bf添加特定制造商的公差,以观察其对电路性能的影响,则必须编辑晶体管模型,并将例如dev容差添加到Bf模型参数中,如下所示:
.model Q2N3906 PNP (Is =1.41f Xti=3 Eg =1.11 Vaf =18.7
Bf =180.7 dev =50% Ne =1.5 Ise=0
在此示例中,已为晶体管的 Bf 添加了 50% 的器件容差,默认分布为均匀分布。
然而,Bf 的分布更可能是高斯分布,因此您应添加 dev/gauss =12.5%,因为 PSpice 将高斯分布限制为 ±4σ:
.model Q2N3906 PNP (Is =1.41f Xti=3 Eg =1.11 Vaf =18.7
Bf =180.7 dev/gauss =12.5% Ne=1.5 Ise =0
10.3. 练习
练习1
图 10.4 显示了一个萨伦和凯 1500赫兹带通滤波器电路。将在电阻器和电容器上添加公差,并进行蒙特卡洛分析以预测通带频率的统计变化。
- 绘制图 10.4中的电路。如果您使用的是演示光盘,请使用eval库中的 ua741 运算放大器;否则,可在opamp库中找到 LF411 运算放大器。执行元件搜索将导致从不同制造商获取 LF411 运算放大器,使用哪一种均可。V1 是来自AC source 库的 V源,用于交流分析,而电源符号是来自Place> Power 的 VCC_CIRCLE 符号,分别重命名为 +12V 和 -12V。
注意
运行 LF411 的元件搜索时,请确保搜索部件指向<安装目录>\Tools\Capture>库> PSpice库(参见 第 5 章,练习 3)。
-
需要为所有电阻器添加5%公差。按住控制键并选择电阻器R1、R2和R3,然后右键单击>编辑属性。在属性编辑器中,如图公差行(或列),如图10.5所示,并右键单击>编辑。在编辑属性值对话框(图10.6)中输入5%并单击确定。
-
要在原理图上显示元件公差,请选择整个TOLERANCE行,如图10.5所示,右键单击> Display ,然后在显示属性(图10.7)中选择仅值并单击确定。
-
通过为电容器C1和C2分配10%的公差,重复步骤2。
-
创建一个名为AC Sweep的PSpice仿真配置文件,用于进行从100至10kHz的交流对数扫描,每十倍频程50个点(图10.8)。在蒙特卡洛/最坏情况的选项框中选择。
输出变量为V(输出),运行次数为50。所使用的分布为均匀分布,并且您将通过保持随机数种子框为空来使用默认随机种子设置。您的蒙特卡洛仿真设置应如图10.9所示。
- 在输出节点放置分贝电压标记(PSpice >标记 >高级>电压的分贝幅度),然后运行仿真。
注意
蒙特卡罗运行次数可能会产生大型数据文件。由于我们只关心输出节点,因此可以设置仿真以仅收集原理图上标记的显示波形数据。在仿真配置文件中,选择探针窗口选项卡,并确保选中了打开的原理图上的所有标记。
-
启动PSpice时,会显示可用运行列表(图10.10)。选择 全部 并单击确定。
-
图10.11 显示了带通滤波器响应,其中心频率存在分布。打开输出文件,查看>输出文件{ “Output File” } 并向下滚动以查看每次蒙特卡洛运行的结果。在文件底部,您将看到每次运行的统计结果汇总以及与标称值的偏差。
然而,为了更清楚地了解中心频率的分布情况,您可以使用性能分析来显示表示统计生成数据的直方图。第12章将更详细地介绍性能分析,但目前,练习2中介绍了带通滤波器进行性能分析所需的步骤。
练习2
-
在探针中,从顶部工具栏选择 轨迹 >性能分析。 在 性能分析窗口底部,单击 向导, 然后在下一个窗口中单击 下一步。 您将看到如图10.12所示的测量列表。
-
选择 CenterFrequency测量并单击 Next。
-
在 Measurement Expression窗口(图10.13)中,输入要搜索的轨迹名称为 V(输出)。或者,您可以单击 Nameof trace to search图标并搜索轨迹名称 V(输出)。
如图所示,输入测量时下降的分贝值为 3。滤波器的中心频率将在蒙特卡洛标称运行(未应用元件公差)的最大值两侧 3分贝处进行测量。在性能分析向导中单击 Next。
- 带通电路的标称轨迹波形将被显示(图10.14)。这是使用元件标称值得到的仿真响应。该轨迹显示了从波形上提取测量值的两个点。在此情况下,中心频率定义为从最大值下降3分贝处。这样显示可让您确认是否看到了正确的电路响应,并且在波形上的正确位置进行了测量。
作为轨迹变量,两侧各下降 -3dB 进行测量)
-
在性能分析向导中单击下一步。
-
现在将显示直方图(图 10.15),以表示生成的统计数据以及统计数据的摘要。
-
将电阻容差更改为1%,电容容差更改为5%,然后重新运行仿真。像之前一样使用中心频率测量进行性能分析。结果如图 10.16所示。
注意
由于公差显示在原理图上,因此无需使用属性编辑器来更改容差值。只需在原理图上双击公差值并输入新的公差值即可。
- 运行另一次性能分析,但这次使用带宽测量。
注意
在探针中可以更改显示的直方图数量。选择工具 > 选项 > 直方图分区。
滤波器规格
滤波器的增益由以下公式给出:
$$
|G| = \frac{R3}{2R1}
$$
$$
|G| = \frac{150 \times 10^3}{2 \times 1.5 \times 10^3} = 50 \quad (10.1)
$$
或以分贝表示:
$$
|G|
{dB} = 20 \log
{10} 50 = 34 \, \text{dB}
$$
通带中心频率由以下公式给出:
$$
f = \frac{1}{2\pi C} \sqrt{\frac{R1 R2}{R1 + R2}} \cdot \frac{1}{\sqrt{R3}}
$$
其中 $ C1 = C2 = C $
$$
f = \frac{1}{2\pi \times 10 \times 10^{-9}} \sqrt{\frac{1.5 \times 10^3 \times 1.5 \times 10^3}{1.5 \times 10^3 + 1.5 \times 10^3}} \cdot \frac{1}{\sqrt{150 \times 10^3}}
$$
$$
f = 1501 \, \text{Hz}
$$
-3dB 带宽由以下公式给出:
$$
f = \frac{1}{\pi C R3}
$$
$$
f = 212.2 \, \text{Hz} \quad (10.3)
$$
6310

被折叠的 条评论
为什么被折叠?



