SPICE中的直流扫描分析是一种可以仿真电子电路的功能,在该电路中,发生器的电压或电流值是逐渐变化的。通过这一程序,可以在一张图表中获得一个或多个所需值的变化趋势。对于这种类型的仿真,x轴不代表时间,而是代表可变电压的值,而y轴代表设计人员所需的任何其他量。
通过该指令,可以在仿真电路时逐步改变发生器的电压或电流值,从而评估其对电路行为的影响。.DC指令的分析用途广泛,包括评估电路工作特性、识别最佳工作点和设计优化。其一般使用语法如“.DC srcnam Vstart Vstop Vincr”,其中:
例如,如果要以1V的增量对0V至5V的输入电压进行扫描分析,可以在电路描述文件中使用以下命令:
.DC VIN 0V 5V 1V
在这种类型的仿真中,电容器被视为开路,而电感器被视为短路。一旦定义了电路和扫描参数,SPICE就会运行仿真并生成一个数据集,表示指定范围内每个电压或电流值的电路响应。这些数据可用于创建图表、分析电路行为和评估电子元件的性能。它还可用于绘制晶体管的特性曲线或测试不同的电源电压电平。
考虑一个由以下两个元器件组成的电路(见图1):
如果电阻器功耗超过15W,则会损坏。设计人员想知道,在不烧毁该元件的情况下,可以施加多大的电压。该问题可以通过欧姆定律或普通瞬态仿真(使用.TRAN指令)来解决,但在这种情况下,就必须测试发生器的各种电压值,直到达到相当于15 W的最大功耗值。有了.DC指令,一切就都变得更加简单和快捷。检查电路的各个元件:
图1:该电路由发生器和电阻器组成。
开始仿真时会显示电阻器消耗的功率值,如下所示,该值等于:
其中P是功耗,V是元器件两端的电压,I是流过元器件的电流。
由于施加到元器件上的电压没有固定值,而是从最小值到最大值线性增加,因此可以在图2中观察到电阻器功耗呈二次趋势的图表。从图中可以很快发现,为使电阻器消耗的功率不超过15W的发生器电压最大值为70.356236V。更高的电压值会导致电阻器损坏。
在ngspice软件中,正如我们在前几期课程中所看到的,操作步骤稍显复杂,但仍然有效。对于上述相同的电路,需要在扩展名为“.CIR”的文本文件中键入以下SPICE源代码:
* DC directive
V1 R 0 12
R1 R 0 330
.control
dc V1 0 100 1
plot V(R)*(V(R)/330)
.endc
.end
请注意,分配给V1的12V电压与仿真本身无关,但由于它是强制参数,因此无论如何都必须指定。使用以下命令执行脚本会生成图3中的图表:
source sweep01.cir
在脚本中,电流值是通过电压除以电阻来间接计算的,因为它不能以简单的方式直接计算。使用以下指令可以获得相同的结果:
plot v(R)*-i(v1)或者plot -v1#branch*v(R)
强烈建议查阅ngspice官方手册。可以看出,两条曲线完全相同,并且x轴还是代表电压值而不是时间值。
图3:使用ngspice生成的电阻功耗图
第二个例子很有趣,因为它可以让我们找出晶体管基极的正确极化,从而使集电极上的电压等于VCC/2。通常,基极和集电极电压保持固定,而基极电阻变化,但在本例中,实际上是为晶体管基极供电的发生器电压是未知的。主要电路图如图4所示,是一种经典的不带温度补偿的共发射极放大器。组成电路的元件如下:
图4:共发射极放大器原理图
该图包含以下SPICE指令,旨在执行直流扫描仿真:
.dc V2 0 12 0.1
该指令中可以读到以下内容:
如前所述,仿真的目的是找到V2发生器的正确极化电压,使得电路的输出电压v(out)等于VCC/2,即等于6V。运行仿真会生成图5中的可观察图表,其中可以看出,发生器V2的电压必须为3.5537632V,输出电压才恰好为6V。该图表包含以下内容信息:
图5:直流扫描仿真在一种解决方案中测试了0V至12V之间的所有V2电压。
LTspice的NETLIST SPICE导出生成以下文本文件:
* The correct polarization of a transistor
V1 N001 0 12V
R1 N002 N004 220k
Q1 out N004 0 0 2N2222
R2 N001 out 2.2k
V2 N002 0 12
V3 N003 0 SINE(0 2mV 100)
C1 N004 N003 47µF
.model NPN NPN
.model PNP PNP
.lib C:\Users\calim\Documents\LTspiceXVII\lib\cmp\standard.bjt
.dc V2 0 12 0.1
* ?
.backanno
.end
在ngspice中,程序非常相似。就元器件而言,NETLIST是相同的。与LTspice的一些不同之处在于晶体管模型的定义和显示图形的操作命令。插入软件的脚本如下:
* The correct polarization of a transistor
V1 N001 0 12V
R1 N002 N004 220k
Q1 out N004 0 0 2N2222
R2 N001 out 2.2k
V2 N002 0 12
V3 N003 0 SINE(0 2mV 100)
C1 N004 N003 47µF
.model 2N2222 NPN(is=1e-14 vaf=100 bf=200 ikf=0.3 xtb=1.5 br=3 cjc=8e-12 cje=25e-12 tr=100e-9 tf=400e-12 itf=1 vtf=2 xtf=3 rb=10 rc=.3 re=.2)
.control
dc V2 0 12 0.1
plot v(out)
.endc
.end
启动电路仿真后,会生成一个与之前的图表几乎完全相同的图表,如图6所示。在该图表中,可以通过单击图表上的所需的精确点来读取正确的极化电压。相同的报告证明仿真在软件内部产生了121行数据。0V到12V之间的间隔数量(间隔大小为0.1V)正好是121,包括初始零点。
图6:使用ngspice,直流扫描仿真也会检查V2在0V和12V之间的所有电压。
要逐个获取这些点并将其输入到电子表格中,只需键入以下指令,即可获得如图7所示的数据列表:
print v(out)
其中,第一列标识电压V2,该电压遵循恒定的线性增加。第二列标识电路的输出电压。
图7:使用“print”指令,可以逐个显示所需的值。
通过在LTspice和ngspice中运行输出信号的瞬态仿真,并将电压V2设置为3.5537632V,可以观察到正弦输出信号恰好位于GND和VCC之间的中间位置,图8中用LTspice和ngspice生成的波形图清楚地表明了这一点。
图8:电压V2设置为3.5537632V时,输出信号位于GND和VCC之间。
有关此主题的更多信息将在本系列的下一部分中介绍。
(原文刊登于EDN姊妹网站Power Electronics News,参考链接:Guide to Spice Simulation for Circuit Analysis and Design – Part 5: The DC Sweep Analysis,由Ricardo Xie编译。)
用于电路分析和设计的SPICE仿真指南-第1部分:简介和网表
用于电路分析和设计的Spice仿真指南-第3部分:时间常数的进一步研究
用于电路分析和设计的Spice仿真指南–第4部分:用于多重仿真的.STEP指令