来源:电子资料库

介绍
“使用Electronics Workbench,您可以创建与您在纸上已经熟悉的电路图相同的电路图,此外,您还可以翻转电源开关,使原理图的行为与真实电路一样。对于其他电子模拟器,您可能需要以文本文件的形式输入SPICE节点列表,这是一种电路的抽象表示,除了高级电子工程师之外,其他人都无法胜任。”
这个介绍来自一个叫做虚拟电子工作平台. 使用图形界面,用户可以绘制电路原理图,然后让计算机分析该电路,以图形形式显示结果。它是一种非常有价值的分析工具,但也有其不足之处。首先,当分析复杂电路时,it和其它类似的图形程序往往不可靠,因为从图像到计算机代码的转换并不是我们希望的那样精确。其次,由于其图形要求,它往往需要大量的计算“马力”来运行,以及支持图形的计算机操作系统。第三,这些图形程序可能很昂贵。
但是,在虚拟电子工作平台有一个强壮的(和自由的!)一个名为SPICE的程序,它根据电路组件和连接的文本文件描述来分析电路。用户支付的费用虚拟电子工作平台而其他图形电路分析程序则是方便的“点击”界面,而SPICE则做实际的数学分析。
SPICE本身不需要图形界面,对系统资源的要求也很低。它也是非常可靠的。电子工作台的制造商希望你认为,在SPICE的原生文本模式下使用SPICE是一项适合火箭科学家的任务,但我写这篇文章是为了证明他们是错误的。SPICE对于简单的电路来说相当容易使用,它的非图形界面实际上有助于分析那些难以绘制的电路。我想是编程专家唐纳德·克努斯在谈到计算机应用程序时打趣道:“你看到的就是你得到的一切”。图形可能看起来更吸引人,但抽象界面(文本)实际上更有效。
本文并不是关于如何使用SPICE的详尽教程。我只是想向感兴趣的用户展示如何将其应用于简单电路的分析,作为专有($$$)和buggy程序的替代方案。一旦你学会了基础知识,还有其他教程更适合带你走得更远。使用SPICE——一个最初打算开发集成电路的程序——来分析这里展示的一些非常简单的电路,看起来有点像用链锯切黄油,但它确实有效!
所有选项和示例都已在SPICE版本2g6上在MS-DOS和Linux操作系统上进行了测试。据我所知,这些简单版本的SPICE在大多数情况下都不能正常工作。

SPICE历史
SPICE是一个用来模拟模拟电子电路的计算机程序。它的初衷是开发集成电路,由此得名:S模拟P有程序ntegratedC循环Emphasis.
SPICE的起源可以追溯到另一个叫做CANCER的电路模拟程序。由加州大学伯克利分校的Ronald Rohrer教授和他的一些学生在20世纪60年代末开发的癌症在20世纪70年代初继续得到改善。当Rohrer离开伯克利时,癌症被重新编写并重新命名为SPICE,并于1972年5月作为第1版发布到公共领域。SPICE的第2版于1975年发布(本书中使用的版本2g6是1975年发行版的一个小版本)。伯克利的Donald Pederson教授在决定将SPICE作为一个公共领域的计算机程序发布的过程中发挥了重要作用,他认为所有重大的技术进步都发生在信息自由共享的时候。我要感谢他的远见。
1985年3月,SPICE的第3版(也在公共领域发布)有了重大改进。版本3是用C语言而不是FORTRAN编写的,它包含了额外的晶体管类型(例如MESFET)和开关元件。版本3还允许使用字母顺序的节点标签,而不仅仅是数字。不过,为SPICE版本2编写的指令仍应在版本3中运行。
尽管版本3有额外的功能,我还是选择在本书中使用2g6版本,因为它似乎是最容易获得并在不同计算机系统上运行的版本。

SPICE编程基础
用SPICE编写电路模拟程序非常类似于用任何其他计算机语言编程:您必须在文件中以文本形式键入命令,将该文件保存到计算机的硬盘驱动器中,然后使用能够理解这些命令的程序(编译器或解释器)处理该文件的内容。
在解释的计算机语言中,计算机持有一个称为口译译员翻译你写的程序(所谓的源文件)在执行过程中,动态地转换成计算机自己的语言:
dd6d7169f7784c1fb440240c889404cb?from=pc.jpg
在已编译的计算机语言中,您编写的程序通过一个称为编译程序. 在你编写的程序被“编译”之后,结果可执行文件文件不需要进一步翻译就可以被计算机直接理解。现在,无论计算机上是否安装了编译器软件,都可以在该计算机上“运行”:
97b1c20ca55340edaa24ebf248dddce3?from=pc.jpg
SPICE是一种解释语言。为了使计算机能够理解您键入的SPICE指令,必须安装SPICE程序(解释器):
120a2ee9dfa1474bbab09a82d3547ce4?from=pc.jpg
SPICE源文件通常被称为“netlist”,尽管它们有时被称为“decks”,文件中的每一行都被称为“card”。可爱,你不觉得吗?网络列表是由像你这样的人使用文字处理器或文本编辑器逐行键入指令而创建的。对于任何类型的计算机编程来说,文本编辑器都比文字处理器更受欢迎,因为它们生成纯ASCII文本,而没有用于突出显示文本的特殊嵌入代码(如italic粗体字体),这是解释程序和编译软件无法理解的。
与一般编程一样,为SPICE创建的源文件必须遵循某些编程惯例。它本身就是一种计算机语言,尽管它很简单。我用BASIC和C/C编写了程序,并且有阅读PASCAL和FORTRAN程序的经验,我认为SPICE语言比任何一种语言都简单得多。它与标记语言(如HTML)的复杂程度大致相同,可能不那么复杂。
在使用SPICE分析电路时,需要遵循一系列步骤。这个循环从您第一次调用文本编辑程序并制作网络列表的第一个草稿时开始。下一步是在新的网络列表上运行SPICE,看看结果如何。如果您是SPICE的新手用户,那么您第一次尝试创建一个好的netlist时会遇到一些语法错误。别担心——正如每个计算机程序员都知道的,熟练需要大量的练习。如果您的试运行产生明显不正确的错误消息或结果,则需要重新调用文本编辑程序并修改网络列表。修改网络列表后,需要再次运行SPICE并检查结果。然后,序列看起来像这样:

  • 用文本编辑程序编写一个新的网络列表。将该网络列表保存到您选择的名称的文件中。
  • 在那个网络列表上运行SPICE并观察结果。
  • 如果结果包含错误,请再次启动文本编辑程序并修改网络列表。
  • 再次运行SPICE并观察新结果。
  • 如果SPICE的输出仍有错误,请使用文本编辑程序重新编辑网络列表。根据需要多次重复此编辑/运行循环,直到获得所需的结果。
  • 一旦你“调试”了你的网络列表并得到了很好的结果,再次运行SPICE,只是这次将输出重定向到一个新文件,而不是仅仅在计算机屏幕上观察它。
  • 启动文本编辑程序一个字处理程序,打开刚才创建的SPICE输出文件。修改该文件以满足您的格式化需要,并将这些更改保存到磁盘上和/或打印在纸上。
要“运行”SPICE“程序”,您需要在终端提示界面输入命令,例如在MS-DOS、UNIX或MS Windows DOS提示符选项中可以找到的命令:
spice < example.cir
单词“spice”调用spice解释程序(前提是计算机上安装了spice软件!)“<”符号将源文件的内容重定向到SPICE解释器,并且示例.cir是此回路示例的源文件的名称。文件扩展名“.cir“不是强制性的;我看到了”.输入“(用于“输入”)和普通的.txt文件“工作也不错。它甚至可以在netlist文件没有扩展名的情况下工作。SPICE不在乎你给它起什么名字,只要它的名字与你计算机的文件系统兼容(例如,对于旧的MS-DOS机器,文件名的长度不能超过8个字符,扩展名为3个字符,不能有空格或其他非字母数字字符)。
当输入此命令时,SPICE将读取示例.cir文件,分析该文件指定的电路,并将文本报告发送到计算机终端的标准输出(通常是屏幕上,您可以在屏幕上看到它滚动)。一个典型的SPICE输出是多个屏幕的信息,因此您可能需要稍微修改一下命令来查看它:
spice < example.cir | more
复制代码
这个替代方法将SPICE的文本输出“管道”到“more”实用程序,该实用程序一次只允许显示一个页面。这意味着(在英语中)SPICE的文本输出在一个屏幕满后停止,并等到用户按下键盘键显示下一个充满文本的屏幕。如果您只是测试示例电路文件并希望检查任何错误,这是一个很好的方法。
spice < example.cir > example.txt
复制代码
第二种方法(上面)将SPICE的文本输出重定向到另一个名为示例.txt,可以查看或打印。此选项对应于前面列出的开发周期的最后一步。本文作者建议,只有在证明示例电路网络表工作正常之后,才使用这种“重定向”到文本文件的技术,这样就不会浪费时间在“调试”阶段调用文本编辑器来查看输出
一旦将SPICE输出存储在.txt文件文件,您可以使用文本编辑器或(更好的是!)一种文字处理器,用于编辑输出,删除任何不必要的横幅和信息,甚至指定替代字体来突出显示标题和/或数据,以获得更精美的外观。当然,如果您愿意,您可以将输出打印到纸上。由于SPICE的直接输出是纯ASCII文本,因此无论SPICE是否安装在计算机上,这样的文件在任何计算机上都是可以解释的。此外,纯文本格式确保文件将非常小,与图形屏幕截图文件生成“点击”模拟器。
SPICE需要的netlist文件格式非常简单。netlist文件只不过是一个包含多行文本的纯ASCII文本文件,每行描述一个电路元件或特殊的SPICE命令。电路结构是通过给每条线路中每个元件的连接点分配编号来指定的,这些元件之间的连接由公共编号指定。检查以下示例电路图及其相应的SPICE文件。请记住,电路图的存在只是为了使模拟更容易被人类理解。SPICE只了解网络列表:
5ed10ffc3fd54e3eaa99118a5c4781b5?from=pc.jpg
Example netlist
  • v1 1 0 dc 15
  • r1 1 0 2.2k
  • r2 1 2 3.3k     
  • r3 2 0 150
  • .end
  • 复制代码
    上面显示的源文件的每一行都在这里解释:

    • 第1版表示蓄电池(电压源1),正极端子编号为1,负极端子编号为0,直流电压输出为15伏。
    • r1表示电阻器R one在图中,连接在点1和点0之间,值为2.2kΩ。
    • r2级表示电阻器R two在图中,连接在点1和点2之间,值为3.3 kΩ。
    • 第3页表示电阻器R three在图中,连接在点2和点0之间,值为150 kΩ。
    SPICE电路描述中的电气公共点(或“节点”)共享公共编号,这与连接大型电路中公共点的导线通常共享公共线标签的方式相同。
    为了模拟这个电路,用户需要在文本编辑器中输入这六行文本,并将它们保存为具有唯一名称的文件(例如示例.cir). 一旦网络列表被组合并保存到一个文件中,用户就可以使用前面显示的命令行语句之一来处理该文件(spice < example.cir),并将在其计算机屏幕上接收此文本输出:
    1*******10/10/99 ******** spice 2g.6 3/15/83 ********07:32:42*****
  • 0example netlist   
  • 0****   input listing                 temperature =   27.000 deg c
  • v1 1 0 dc 15   
  • r1 1 0 2.2k     
  • r2 1 2 3.3k     
  • r3 2 0 150      
  • .end   
  • *****10/10/99 *********  spice 2g.6  3/15/83 ******07:32:42******
  • 0example netlist   
  • 0****   small signal bias solution     temperature =   27.000 deg c
  •   node   voltage     node   voltage
  • (  1)   15.0000    (  2)    0.6522
  •      voltage source currents
  •      name       current
  •      v1       -1.117E-02
  •      total power dissipation   1.67E-01  watts
  •          
  •         job concluded
  • 0         total job time            0.02
  • 1*******10/10/99 ********  spice 2g.6  3/15/83 ******07:32:42*****
  • 0****   input listing                 temperature =   27.000 deg c
  • 复制代码
    SPICE首先打印输出顶部使用的时间、日期和版本。然后列出输入参数(源文件的行),然后显示从每个节点(参考号)到接地(总是参考号0)的直流电压读数。后面是通过每个电压源的电流读数列表(在本例中只有一个,v1)。最后,打印总功耗和以秒为单位的计算时间。
    SPICE提供的所有输出值都以科学记数法显示。
    上面显示的SPICE输出列表对大多数人的口味来说有点冗长。对于最后的陈述,最好删去所有不必要的文字,只留下重要的部分。下面是相同输出的示例,重定向到文本文件(spice < example.cir > example.txt),然后使用文本编辑器明智地进行裁剪,以便最终演示并打印:
    example netlist   
  • v1 1 0 dc 15   
  • r1 1 0 2.2k     
  • r2 1 2 3.3k     
  • r3 2 0 150      
  • .end   
  • node    voltage    node     voltage
  • (  1)   15.0000    (  2)    0.6522
  • voltage source currents
  • name       current
  • v1       -1.117E-02
  • total power dissipation   1.67E-01  watts
  • 复制代码
    SPICE的一个优点是输入和输出格式都是纯文本,这是最通用、最容易编辑的电子格式。实际上任何计算机将能够编辑和显示这种格式,即使SPICE程序本身并不驻留在该计算机上。如果用户愿意,他或她可以自由地使用字处理程序的高级功能,使输出看起来更漂亮。甚至可以在输出的行之间插入注释,以使读者更清楚。

    命令行界面
    如果您以前在命令行shell环境中使用过DOS或UNIX操作系统,您可能想知道为什么我们必须在单词“spice”和要解释的网表文件名之间使用“<”符号。为什么不直接输入文件名作为命令“spice”的第一个参数呢?答案是SPICE可以选择交互式模式,通过计算机的标准输入(stdin),网络列表的每一行都可以被解释。如果您只需在提示下键入“spice”并按[输入],SPICE将开始解释您在其中输入的任何内容(live)。
    对于大多数应用程序,最好将您的网络列表工作保存在一个单独的文件中,然后让SPICE在准备好后解释该文件。这是我鼓励使用SPICE的方式,所以这是本课中介绍SPICE的方式。为了在命令行环境中以这种方式使用SPICE,我们需要使用“<”重定向符号将netlist文件的内容定向到标准输入(stdin),然后SPICE可以处理该输入。

    电路元件
    请记住,本教程并不是详尽无遗的,而且SPICE语言中所有元素的描述都以简明的形式记录在这里。SPICE是一个功能非常强大的软件,有很多选项,我只将其中的一些记录下来。
    全部SPICE源文件中的组件主要由每行中的第一个字母标识。识别字母后面的字符用于将某个类型的一个组件与另一个相同类型的组件(r1、r2、r3、rload、rpullup等)区分开来,并且不需要遵循任何特定的命名约定,只要组件标识字母和区别名称中使用的字符不超过8个。
    例如,假设您正在用“上拉”和“下拉”电阻器模拟数字电路。名字rpullup是有效的,因为它有七个字符长。名字rpulldown,但是,是9个字符长。这可能会导致SPICE解释网络列表时出现问题。
    如果源文件中没有其他类似名称的组件,那么实际上可以避免组件名称超过8个字符。SPICE只关注每行第一个字段的前8个字符,因此rpulldown实际上被解释为rpulldow结尾的“n”被忽略了。因此,SPICE会将第一个字段中具有前8个字符的任何其他电阻器视为同一个电阻器,定义了两次,这将导致错误(即。rpulldown1和rpulldown2会被解释为相同的名字,rpulldow ).
    还应该注意的是,SPICE忽略了字符大小写,因此r1和R1被SPICE解释为同一个。
    SPICE允许在指定组件值时使用度量前缀,这是一个非常方便的特性。然而,SPICE使用的前缀约定与标准公制符号有些不同,主要是因为netlist仅限于标准ASCII字符(排除了前缀“micro”的希腊字母,如µ),而且SPICE不区分大小写,所以“m”(是“milli”的标准符号)和“m”(是“Mega”的标准符号)的解释是相同的。以下是SPICE网络列表中使用的几个前缀示例:
    r1 1 0 2t(电阻器r1,2t=2兆欧=2兆欧)
    r2 1 0 4g(电阻器r2,4g=4千兆欧姆=4 GΩ)
    r3 1 0 47meg(电阻器r3,47兆欧=47兆欧=47兆欧)
    r4 1 0 3.3k(电阻器r4,3.3k=3.3千欧=3.3千欧)
    r5 1 0 55m(电阻器r5,55m=55毫欧=55兆欧)
    r6 1 0 10u(电阻器r6,10u=10微欧姆10µΩ)
    r7 1 0 30n(电阻器r7,30n=30纳米欧姆=30 nΩ)
    r8 1 0 5p(电阻器r8,5p=5皮欧=5 pΩ)
    r9 1 0 250f(电阻器r9,250f=250毫微欧=250 fΩ)
    在指定组件值时也允许使用科学符号。例如:
    r10 1 0 4.7e3(Resistor R10, 4.7e3 = 4.7 x 103ohms = 4.7 kilo-ohms = 4.7 kΩ)
    r11 1 0 1e-12(Resistor R11, 1e-12 = 1 x 10-12ohms = 1 pico-ohm = 1 pΩ)
    单位(欧姆、伏特、法拉兹、亨利等)由指定的元件类型自动确定。SPICE“知道”上面所有的例子都是“欧姆”,因为它们都是电阻(r1,r2,r3,…)。如果它们是电容器,那么这些值将被解释为“法拉德”,如果是电感器,那么“亨利”等。

    无源元件
    电容器
    General form:  c[name] [node1] [node2] [value] ic=[initial voltage]
  • Example 1:     c1 12 33 10u
  • Example 2:     c1 12 33 10u ic=3.5
  • 复制代码
    评论:“初始条件”(ic=)变量是电容器的电压,单位为volts在直流电分析开始时。这是一个可选值,如果未指定,则假定启动电压为零。只有当.tran调用分析选项(使用uic“选项)

    电感器
    General form:  l[name] [node1] [node2] [value] ic=[initial current]
  • Example 1:     l1 12 33 133m
  • Example 2:     l1 12 33 133m ic=12.7m
  • 复制代码
    评论:“初始条件”(ic=)变量是电感器的电流,单位为安培在直流电分析开始时。这是一个可选值,如果未指定,则假定启动电流为零。只有在调用.tran analysis选项时,SPICE才会解释电感器的启动电流值。

    电感耦合(变压器)
    General form:  k[name] l[name] l[name] [coupling factor]
  • Example 1:     k1 l1 l2 0.999
  • 复制代码
    评论:表示0和0之间的完美耦合系数(包含0)将只允许表示1和1之间的完美耦合值。指定耦合电感器(l1,l2或l2,l1)的顺序无关紧要。

    电阻器
    General form:  r[name] [node1] [node2] [value]
  • Example:       rload 23 15 3.3k
  • 复制代码
    评论:如果你想知道,在SPICE中没有关于电阻功耗额定值的声明。所有的部件都被假定是不可摧毁的。真希望现实生活能如此宽容!

    活性成分
    所有半导体元件的电气特性必须以“一行”开头.型号,它告诉SPICE该设备将如何工作。中没有显式定义的任何参数.型号卡将默认为SPICE中预先编程的值。但是.型号卡片必须包含,并至少指定型号名称和设备类型(d、npn、pnp、njf、pjf、nmos或pmos)。

    二极管
    General form:  d[name] [anode] [cathode] [model]
  • Example:       d1 1 2 mod1
  • 复制代码
    二极管型号:
    General form:  .model [modelname] d [parmtr1=x] [parmtr2=x] . . .
  • Example:       .model mod1 d
  • Example:       .model mod2 d vj=0.65 rs=1.3
  • 复制代码
    参数定义:
    is=饱和电流(安培)
    rs=结电阻(单位:欧姆)
    n=排放系数(无单位)
    tt=运输时间(秒)
    cjo=零偏压结电容(法拉)
    vj=结电位(伏特)
    m=级配系数(无单位)
    eg=活化能(电子伏特)
    xti=饱和电流温度指数(无单位)
    kf=闪烁噪声系数(无单位)
    af=闪烁噪声指数(无单位)
    fc=正向偏置耗尽电容系数(无单位)
    bv=反向击穿电压(伏特)
    ibv=击穿电压下的电流(安培)
    评论:型号名称必须以字母开头,而不是数字。例如,如果计划为1N4003整流二极管指定型号,则不能使用“1N4003”作为型号名称。另一种选择可能是“m1n4003”。

    晶体管,双极结——BJT
    General form:  q[name] [collector] [base] [emitter] [model]
  • Example:       q1 2 3 0 mod1
  • 复制代码
    BJT晶体管型号:
    General form:  .model [modelname] [npn or pnp] [parmtr1=x] . . .
  • Example:       .model mod1 pnp
  • Example:       .model mod2 npn bf=75 is=1e-14
  • 复制代码
    上面显示的模型示例非常不具体。为了精确地模拟真实的晶体管,需要更多的参数。拿这两个例子来说,对于流行的2N2222和2N2907晶体管+“)字符表示SPICE中的行延续标记,当您希望在文本编辑器中将单行(卡片)拆分为两行或多行时:
    Example:       .model m2n2222 npn is=19f bf=150 vaf=100 ikf=.18
  • +                     ise=50p ne=2.5 br=7.5 var=6.4 ikr=12m
  • +                     isc=8.7p nc=1.2 rb=50 re=0.4 rc=0.4 cje=26p
  • +                     tf=0.5n cjc=11p tr=7n xtb=1.5 kf=0.032f af=1
  • Example:       .model m2n2907 pnp is=1.1p bf=200 nf=1.2 vaf=50
  •   +                     ikf=0.1 ise=13p ne=1.9 br=6 rc=0.6 cje=23p
  •   +                     vje=0.85 mje=1.25 tf=0.5n cjc=19p vjc=0.5
  •   +                     mjc=0.2 tr=34n xtb=1.5
  • 复制代码
    参数定义:
    is=传输饱和电流(安培)
    bf=理想最大正向β(无单位)
    nf=正向电流发射系数(无单位)
    vaf=正向早期电压(伏特)
    ikf=正向β高电流衰减角(单位:安培)
    ise=B-E泄漏饱和电流(安培)
    ne=B-E泄漏排放系数(无单位)
    br=理想最大反向β(无单位)
    nr=反向电流发射系数(无单位)
    bar=反向早期电压(伏特)
    ikrikr=反向β-高电流衰减角(安培)
    Isc=B-C泄漏饱和电流(安培)
    nc=B-C泄漏排放系数(无单位)
    rb=零偏基极电阻(单位:欧姆)
    irb=基本电阻一半值的电流(安培)
    rbm=高电流下的最小基极电阻(单位:欧姆)
    re=发射极电阻(单位:欧姆)
    rc=集电极电阻(单位:欧姆)
    cje=B-E零偏压耗尽电容(法拉)
    vje=B-E内置电势(伏特)
    mje=B-E连接指数因子(无单位)
    tf=理想正向传输时间(秒)
    xtf=渡越时间偏差相关系数(无单位)
    vtf=B-C电压与传输时间的关系,单位:伏特
    itf=高电流参数对传输时间的影响,单位:安培
    ptf=f=1/(渡越时间)(2)(pi)Hz时的多余相位,单位为度
    cjc=B-C零偏压耗尽电容(法拉)
    vjc=B-C内置电势(伏特)
    mjc=B-C结指数因子(无单位)
    xjcj=连接在基节点中的B-C耗尽电容分数(无单元)
    tr=理想反向运输时间(秒)
    cjs=零偏压集电极-基板电容(法拉)
    vjs=基板结内置电势(伏特)
    mjs=基板结指数因子(无单位)
    xtb=正向/反向β温度指数
    eg=温度对传输饱和电流影响的能隙(电子伏特)
    xti=影响传输饱和电流的温度指数(无单位)
    kf=闪烁噪声系数(无单位)
    af=闪烁噪声指数(无单位)
    fc=正向偏置耗尽电容公式系数(无单位)
    评论:与二极管一样,为特定晶体管类型指定的型号名称必须以字母开头,而不是数字。这就是为什么上面给出的2N2222和2N2907类型的BJT分别命名为“m2n2222”和“q2n2907”。
    如您所见,SPICE允许对晶体管特性进行非常详细的规范。上面列出的许多特性远远超出了刚学电子学的学生的范围和兴趣,除了知道SPICE用来模拟BJT晶体管的方程外,这些特性甚至没有任何用处。对于那些有兴趣在SPICE中学习晶体管建模的人,可以参考其他书籍,比如Andrei Vladimirescu的SPICE(ISBN 0-471-60926-9).

    JFET,结场效应晶体管
    General form:  j[name] [drain] [gate] [source] [model]
  • Example:       j1 2 3 0 mod1
  • 复制代码
    JFET晶体管型号:
    General form:     .model [modelname] [njf or pjf] [parmtr1=x] . . .
  • Example:          .model mod1 pjf
  • Example:          .model mod2 njf lambda=1e-5 pb=0.75
  • 复制代码
    参数定义:
    vto=阈值电压(伏特)
    β=跨导参数,单位:安培/伏特2
    λ=信道长度调制参数,单位为1/V
    rd=漏极电阻(单位:欧姆)
    rs=电源电阻(单位:欧姆)
    cgs=零偏置G-S结电容(法拉)
    cgd=零偏置G-D结电容(法拉)
    pb=栅极结电位(伏特)
    is=栅极结饱和电流(安培)
    kf=闪烁噪声系数(无单位)
    af=闪烁噪声指数(无单位)
    fc=正向偏置耗尽电容系数(无单位)

    MOSFET,晶体管
    General form:  m[name] [drain] [gate] [source] [substrate] [model]
  • Example:       m1 2 3 0 0 mod1
  • 复制代码
    MOSFET晶体管型号:
    General form:  .model [modelname] [nmos or pmos] [parmtr1=x] . . .
  • Example:       .model mod1 pmos
  • Example:       .model mod2 nmos level=2 phi=0.65 rd=1.5
  • Example:       .model mod3 nmos vto=-1   (depletion)
  • Example:       .model mod4 nmos vto=1    (enhancement)
  • Example:       .model mod5 pmos vto=1    (depletion)
  • Example:       .model mod6 pmos vto=-1   (enhancement)
  • 复制代码
    评论:为了区分增强模式和耗尽模式(也称为耗尽增强模式)晶体管,模型参数“vto必须指定“(零偏压阈值电压)。它的默认值是零,但P沟道晶体管的正值(例如1伏)或N沟道晶体管的负值(-1伏)将指定该晶体管为损耗(也称为耗尽增强 )模式设备。相反,P沟道晶体管上的负值或N沟道晶体管上的正值将指定该晶体管为增强模式设备
    请记住,增强模式晶体管通常是关闭的器件,必须通过施加栅极电压来打开。耗尽模式晶体管通常是“开”的,但可以被“掐断”,也可以通过施加栅极电压来增强到更高水平的漏电流,因此又称为“耗尽增强”mosfet。“的”vto参数指定MOSFET传导的阈值栅电压。

    有源
    交流正弦波电压源(使用.AC卡指定频率时):
    General form:  v[name] [+node] [-node] ac [voltage] [phase] sin
  • Example 1:     v1 1 0 ac 12 sin
  • Example 2:     v1 1 0 ac 12 240 sin   (12 V ∠ 240o)
  • 复制代码
    评论:这种指定交流电压源的方法可以很好地工作,如果你使用多个不同相位角的电源,但都在同一频率。如果需要在同一电路中指定不同频率的源,则必须使用下一种方法!
    不使用交流正弦波电源时:
    General form:  v[name] [+node] [-node] sin([offset] [voltage]
  • +               [freq] [delay] [damping factor])
  • Example 1:     v1 1 0 sin(0 12 60 0 0)
  • 复制代码
    参数定义:
    offset=直流偏置电压,将交流波形偏移指定的电压。
    voltage=波形的峰值或峰值交流电压值。
    freq=频率(赫兹)。
    delay=时间延迟,或波形的相位偏移,以秒为单位。
    damping factor=用于产生衰减幅度波形的数字。
    评论:如果使用多个频率不同的电源,这种指定交流电压源的方法效果很好。但是,表示相移是很棘手的,因此必须使用延迟因素
    直流电压源(使用.DC卡指定电压时):
    General form:  v[name] [+node] [-node] dc
  • Example 1:     v1 1 0 dc
  • 复制代码
    评论:如果你希望有SPICE输出电压在引用节点0时,必须使用.直流电分析选项,要使用此选项,必须以这种方式指定至少一个DC源。
    直流电压源(不使用.DC卡指定电压时):
    General form:  v[name] [+node] [-node] dc [voltage]
  • Example 1:     v1 1 0 dc 12
  • 复制代码
    评论:这里没什么值得注意的!
    脉冲电压源
    General form:  v[name] [+node] [-node] pulse ([i] [p] [td] [tr]
  • +              [tf] [pw] [pd])<code></code>
  • 复制代码
    参数定义:
    i=初始值
    p=脉冲值
    td=延迟时间(所有时间参数以秒为单位)
    tr=上升时间
    tf=下降时间
    pw=脉冲宽度
    pd=周期
    示例1:v1 1 0脉冲(-3 3 0 0 0 10 m 20 m)
    评论:例1是一个在-3到3伏之间振荡的完美方波,上升和下降时间为零,20毫秒周期,50%的占空比(3伏持续10毫秒,然后-3伏持续10毫秒)。
    交流正弦波电流源(使用.AC卡指定频率时):
    General form:  i[name] [+node] [-node] ac [current] [phase] sin
  • Example 1:     i1 1 0 ac 3 sin        (3 amps)
  • Example 2:     i1 1 0 ac 1m 240 sin   (1 mA ∠ 240o)
  • 复制代码
    评论:这里(和下一个例子中)同样的注释适用于交流电压源。
    交流正弦波电流源(不使用.AC卡指定频率时):
    General form:  i[name] [+node] [-node] sin([offset]
  • +              [current] [freq] 0 0)
  • Example 1:     i1 1 0 sin(0 1.5 60 0 0)  
  • 复制代码
    直流电流源(使用.DC卡指定电流时):
    General form:  i[name] [+node] [-node] dc
  • Example 1:     i1 1 0 dc
  • 复制代码
    直流电流源(不使用.DC卡指定电流时):
    General form:  i[name] [+node] [-node] dc [current]
  • Example 1:     i1 1 0 dc 12
  • 复制代码
    评论:尽管书上都说直流电流源的第一个节点是正节点,但我在实践中并没有发现这一点。实际上,SPICE中的直流电流源推动电流的方向与电压源(电池)的方向相同消极的先指定节点
    脉冲电流源
    General form:  i[name] [+node] [-node] pulse ([i] [p] [td] [tr]
  • +              [tf] [pw] [pd])<code></code>
  • 复制代码
    参数定义:
    i=初始值
    p=脉冲值
    td=延迟时间
    tr=上升时间
    tf=下降时间
    pw=脉冲宽度
    pd=周期
    例1:i1 1 0脉冲(-3m 0 0 17m 34m)
    评论:例1是在-3 mA和3 mA之间振荡的完美方波,上升和下降时间为零,34毫秒周期,占空比为50%(3 mA持续17 ms,然后-3 mA持续17 ms)。
    电压源(取决于):
    General form:  e[name] [out+node] [out-node] [in+node] [in-node]
  • +               [gain]
  • Example 1:     e1 2 0 1 2 999k
  • 复制代码
    评论:相依电压源很适合用来模拟运算放大器。示例1显示了这样一个源如何配置为用作电压跟随器,将连接到输出端(节点2)的输入端反转以获得负反馈,而非反转输入端将进入节点1。增益被设置为任意高的值999000。不过,需要注意的是:SPICE不会将独立电源的输入视为负载,因此只与独立电压源的输入相连的电压源将被解释为“开路”。有关这一点的详细信息,请参阅运算放大器电路示例。
    当前来源(从属):

    分析选项
    交流分析:
    General form:  .ac [curve] [points] [start] [final]
  • Example 1:     .ac lin 1 1000 1000<code></code>
  • 复制代码
    评论:[曲线]字段可以是“lin”(线性)、“dec”(十进制)或“oct”(倍频程),指定频率扫描的(非线性)线性。指定频率扫描中要执行分析的点的数量(对于十进位扫描,是每十年的点数;对于倍频程,是每倍频程的点数)。[start]和[final]字段分别指定扫描的起始频率和结束频率。最后一个注意事项:“开始”值不能为零!
    直流分析:
    General form:     .dc [source] [start] [final] [increment]
  • Example 1:        .dc vin 1.5 15 0.5
  • 复制代码
    评论:如果要打印或绘制两个非零节点之间的任何电压,.dc卡是必需的。否则,默认的“小信号”分析只输出每个非零节点和节点0之间的电压。
    瞬态分析:
    General form:  .tran [increment] [stop_time] [start_time]
  • +                    [comp_interval]
  • Example 1:     .tran 1m 50m uic
  • Example 2:     .tran .5m 32m 0 .01m<code></code>
  • 复制代码
    评论:示例1的增量时间为1毫秒,停止时间为50毫秒(如果只指定了两个参数,则为增量时间停止时间分别为)。示例2的增量时间为0.5毫秒,停止时间为32毫秒,开始时间为0毫秒(启动时无延迟),计算间隔为0.01毫秒。
    开始时间的默认值为零。瞬态分析总是存在于时间零点,但数据存储只发生在开始时间和停止时间之间。数据输出间隔为增量时间或(停止时间-开始时间)/50,取最小值。但是,计算间隔变量可用于强制计算间隔小于其中任何一个。对于较大的总间隔计数itl5变量.选项卡可以设置为更高的号码。“的”uic选项告诉SPICE“使用初始条件”
    绘图输出:
    General form:  .plot [type] [output1] [output2] . . . [output n]
  • Example 1:     .plot dc v(1,2) i(v2)
  • Example 2:     .plot ac v(3,4) vp(3,4) i(v1) ip(v1)
  • Example 3:     .plot tran v(4,5) i(v2)<code></code>
  • 复制代码
    评论:SPICE不能在一个单点上处理超过8个数据点请求.绘图或.打印卡片。如果请求超过8个数据点,请使用多个卡!
    另外,在使用SPICE版本3时,有一个重要的警告:如果您正在执行交流分析,并且您要求SPICE绘制一个如示例2所示的交流电压,则五(3,4)命令将只输出真实的一个长方形复数的分量!SPICE版本2输出极地的复数的量:如果只要求一个量,则是一个更有意义的量。为了强迫SPICE3给你极性的大小,你必须重写.打印或.绘图论据本身:虚拟机(3,4) .
    打印输出:
    General form:  .print [type] [output1] [output2] . . . [output n]
  • Example 1:     .print dc v(1,2) i(v2)
  • Example 2:     .print ac v(2,4) i(vinput) vp(2,3)
  • Example 3:     .print tran v(4,5) i(v2)<code></code>
  • 复制代码
    评论:SPICE不能在一个单点上处理超过8个数据点请求.绘图或.打印卡片。如果请求超过8个数据点,请使用多个卡!
    傅里叶分析:
    General form:  .four [freq] [output1] [output2] . . . [output n]
  • Example 1:     .four 60 v(1,2)<code></code>
  • 复制代码
    评论:这个.4个卡依赖于.tran卡片存在于卡片组的某个地方,有适当的时间段来分析适当的周期。另外,如果.绘图分析不是和.4个分析,即使全部.tran参数在技术上是正确的。最后.4个只有在交流电源的卡线中指定了交流电源的频率时,分析选项才起作用,并且在一个.交流分析选项行
    它有助于在.tran卡片分析精度更高。对规定的电压或电流进行傅里叶分析,直至第9次谐波,[频率]规范为分析频谱的基本频率或起始频率。
    其他:
    General form:  .options [option1] [option2]
  • Example 1:     .options limpts=500
  • Example 2:     .options itl5=0
  • Example 3:     .options method=gear
  • Example 4:     .options list
  • Example 5:     .options nopage
  • Example 6:     .options numdgt=6
  • 复制代码
    评论:使用此卡可以指定许多选项。也许刚开始使用SPICE的人最需要的是limpts“设置。当运行需要打印或绘制超过201个点的模拟时,必须增加此计算点限制,否则SPICE将终止分析。上面给出的例子(limpts=500)告诉SPICE分配足够的内存,以便在指定的任何类型的分析(直流、交流或瞬态)中处理至少500个计算点。
    在示例2中,我们看到一个迭代变量(itl5)设置为0的值。实际上有六个不同的迭代变量可供用户操作。它们控制求解非线性方程组的迭代循环极限。变量itl5设置瞬态分析的最大迭代次数。类似于limpts变量,itl5通常需要在.tran卡。设置itl5值为0将完全关闭限制,允许计算机无限迭代周期(无限时间)来计算分析。警告:这可能导致模拟时间过长!
    例3带有“method=gear设置SPICE使用的数值积分方法。默认值是“梯形”而不是“齿轮”,梯形是对曲线下面积的简单几何近似,通过将曲线切片为梯形来近似形状。“gear”方法基于二阶或更好的多项式方程,以C.W.gear命名(刚性常方程的数值积分,报告221,伊利诺伊大学计算机科学系,乌尔巴纳)。Gear积分法对计算机的要求更高(计算上“昂贵”),有时会给出与梯形法稍有不同的结果。
    “的”列表“示例4中显示的选项给出了所有电路元件及其在最终输出中各自值的详细摘要。
    默认情况下,SPICE将在输出中插入ASCII分页符控制代码,以分离分析的不同部分。指定“nopage“选项(例5)将阻止这种分页。
    “的”数量“示例6中显示的选项指定在使用其中一个时输出的有效位数”.打印“数据输出选项。SPICE默认精度为4个有效数字。
    宽度控制:
    General form:  .width in=[columns] out=[columns]
  • Example 1:     .width out=80
  • 复制代码
    评论:这个.宽度卡片可以用来控制分析后文本输出行的宽度。当使用.绘图卡。默认值为120,除非使用此命令将其设置为80,否则这可能会导致80个字符的终端显示出现问题。

    Quirks
    “垃圾进来,垃圾出去。”
    匿名
    SPICE是一个非常可靠的软件,但它确实有一些小的怪癖,需要一些人去适应。我所说的“怪癖”是指要求用户以特定的方式编写源文件,以便它能够正常工作而不发出错误消息。我愿意是指SPICE的任何一种错误,它会产生错误或误导性的结果:更恰当地称之为“bug”。说到bug,SPICE也有一些缺陷。
    这些怪癖中的一些(或全部)可能是SPICE版本2g6独有的,它是我唯一广泛使用的版本。它们可能在以后的版本中被修复。

    良好的开端
    SPICE要求源文件以电路描述“deck”中的第一个“card”以外的内容开头。源文件中的第一个字符可以是换行符、标题行或注释:必须有某物在第一个指定文件行的组件之前。如果没有,SPICE将完全拒绝进行分析,声称“deck”中存在严重错误(例如不正确的节点连接)

    好结局
    SPICE要求.结束源文件末尾的行不能以换行符或回车符结尾。换言之,当你完成键入时”.结束“你不应该打[输入]键盘上的键。文本编辑器上的光标应该立即停在.结束“别再往前走了。如果不注意这个怪癖,将会导致缺少。结束卡“分析输出结尾处的错误消息。实际的电路分析不受这个错误的影响,所以我通常忽略这个消息。然而,如果你想要得到一个“完美”的输出,你必须注意这个特性。

    必须有节点0
    在对回路节点进行编号时,您可以有很大的自由度,但是必须在你的网络列表的某个地方有一个节点0,这样SPICE就可以工作了。节点0是回路接地的默认节点,它是在单个节点位置指定的所有电压的参考点。
    当SPICE执行简单的直流分析时,输出将包含电路中所有非零节点的电压列表。所有这些电压读数的参考点(接地)为节点0。例如:
    node    voltage    node     voltage
  • (  1)   15.0000    (  2)    0.6522
  • 复制代码
    在该分析中,节点1和接地(节点0)之间的直流电压为15伏,节点2和接地(节点0)之间的直流电压为0.6522伏。在这两种情况下,相对于另一个节点,节点0处的电压极性为负(换句话说,节点1和节点2相对于节点0都是正的)。

    避免开路
    SPICE不能处理任何类型的开路。例如,如果网络列表指定了一个具有开放电压源的电路,SPICE将拒绝执行分析。这类错误的一个主要例子是将电压源“连接”到电压相关源(用于模拟运算放大器)的输入端。SPICE需要看到电流的完整路径,所以我通常会绑一个高值电阻(称之为rbogus!) 跨电压源作为最小负载。

    避免某些元件回路
    SPICE不能处理电路中某些不间断的元件回路,即电压源和电感器。以下循环将导致SPICE中止分析:
    1b80da79f129427b903571a7cb70fcd1?from=pc.jpg
    netlist
  • l1 2 4 10m
  • l2 2 4 50m
  • l3 2 4 25m
  • 复制代码
    9b2891e6778348338f6fdbc7b59b95b2?from=pc.jpg
    netlist
  • v1 1 0 dc 12  
  • l1 1 0 150m
  • 复制代码
    81f380031da8474cac416a64acb3357c?from=pc.jpg
    netlist
  • c1 5 6 33u  
  • c2 6 7 47u
  • 复制代码
    SPICE无法处理这些情况的原因源于它执行直流分析的方式:将所有电感器视为短路,将所有电容器视为开路。由于短路(0Ω)和开路(无限电阻)包含或产生数学无穷大,计算机根本无法处理它们,因此如果出现任何这些情况,SPICE将停止分析。
    为了使这些元件配置为SPICE所接受,必须在适当的位置插入适当值的电阻器,以消除相应的短路和开路。如果需要串联电阻,请选择一个非常低的电阻值。相反,如果需要并联电阻,则选择一个非常高的电阻值。例如:
    为了解决并联电感器的问题,在每个有问题的电感器上串联一个非常低的电阻。
    11c0feb33d794b17b7c991cd9fc90882?from=pc.jpg
    original netlist
  • l1 2 4 10m
  • l2 2 4 50m
  • l3 2 4 25m
  • 复制代码
    fixed netlist
  • rbogus1 2 3 1e-12
  • rbogus2 2 5 1e-12
  • l1 3 4 10m
  • l2 2 4 50m
  • l3 5 4 25m
  • 复制代码
    极低电阻电阻R假象1和R假象2(每一个只有1微微欧姆的电阻)“打破”存在于L one,我 two,还有我 three. 在这里选择非常低的电阻是很重要的,这样电路操作就不会受到“固定”的实质性影响
    为了固定电压源/电感回路,将一个极低值的电阻器与两个元件串联。
    dea7585107994cf18f7dcc04e6593fc9?from=pc.jpg
    original netlist
  • v1 1 0 dc 12
  • l1 1 0 150m
  • 复制代码
    fixed netlist
  • v1 1 0 dc 12
  • l1 2 0 150m
  • rbogus 1 2 1e-12
  • 复制代码
    与前面的并联电感器示例一样,重要的是使校正电阻(R伪造的)电阻非常低,因此不会对电路的运行产生实质性的影响。
    为了固定串联电容器电路,其中一个电容器必须有一个电阻分流。SPICE要求每个电容器都有一个直流电流通路进行分析。
    b221b2ea20bd48778aaa3883583b7a4e?from=pc.jpg
    original netlist
  • c1 5 6 33u
  • c2 6 7 47u
  • 复制代码
    fixed netlist
  • c1 5 6 33u
  • c2 6 7 47u
  • rbogus 6 7 9e12
  • 复制代码
    R伪造的9兆欧的值为C提供直流电流路径 one(大约在C two)不会严重影响电路的工作。

    电流测量

    虽然在SPICE中打印或绘制电压很容易,但输出电流值要困难一些。通过声明适当的电路节点来指定电压测量值。例如,如果我们想知道导线连接在节点4和节点7之间的电容器上的电压,我们可以得出.打印声明如下:
    6cb8aa6f8cd747e9872c850023dc42ff?from=pc.jpg
    c1 4 7 22u
  • .print ac v(4,7)
  • 复制代码
    但是,如果我们想让SPICE测量现在的通过那个电容器,就不那么容易了。SPICE中的电流必须与电压源有关,而不是任意分量。例如:
    4f784dd017aa4be4b7d947a0cb936ab1?from=pc.jpg
    c1 4 7 22u
  • vinput 6 4 ac 1 sin
  • .print ac i(vinput)
  • 复制代码
    这个.打印该卡指示SPICE打印通过电压源V的电流输入,正好与节点4和节点7之间通过电容器的电流相同。但是如果我们的电路中没有这样的电压源来作为电流测量的参考呢?一种解决方案是在电路中插入一个分流电阻,然后测量其两端的电压。在这个例子中,我选择了一个1Ω的分流电阻值来产生1伏特每安培电流通过C one :
    0e7d99a030cc47fa9c69a7f0a930319a?from=pc.jpg
    c1 4 7 22u
  • rshunt 6 4 1
  • .print ac v(6,4)
  • 复制代码
    然而,在我们的电路中插入一个足够大的额外电阻,使电压降到预定的电流范围内,可能会对事情产生不利影响。对于SPICE来说,一个更好的解决方案是这样的,尽管在现实生活中人们永远不会寻求这样一个当前的测量解决方案:
    524745eab4864184b9c4056524694bf1?from=pc.jpg
    c1 4 7 22u
  • vbogus 6 4 dc 0
  • .print ac i(vbogus)
  • 复制代码
    插入一个零伏的“假”直流电压源根本不影响电路的工作,但它为SPICE提供了一个方便的地方来进行电流测量。有趣的是,V伪造的当我们要测量交流电流时是直流电源!SPICE将输出交流电流读数的事实取决于交流电“规范.打印卡什么的都没有
    还应该注意的是,SPICE为电流测量分配极性的方式有点奇怪。以以下电路为例:
    978aeffc4e214d37ae81ebff9929a55f?from=pc.jpg
    example   
  • v1 1 0   
  • r1 1 2 5k
  • r2 2 0 5k  
  • .dc v1 10 10 1  
  • .print dc i(v1)
  • .end   
  • 复制代码
    在总电压为10伏,总电阻为10千欧的情况下,SPICE可能会告诉你,通过电压源V将有1毫安(1e-03)的电流 one但实际上SPICE会输出消极的1毫安(-1e-03)!SPICE将直流电压源负端(正常方向)的电流视为电流的负值,而不是电流的正值。有时,我会在直流电路中加入一个“假”电压源,只是为了让SPICE输出a积极的当前值:
    a64ea115a609406cb6ca7894bc14b11d?from=pc.jpg
    example
  • v1 1 0      
  • r1 1 2 5k   
  • r2 2 3 5k        
  • vbogus 3 0 dc 0   
  • .dc v1 10 10 1   
  • .print dc i(vbogus)     
  • .end   
  • 复制代码
    注意V伪造的定位为使电路电流进入其正侧(节点3)并退出其负侧(节点0)。此方向将确保电路电流的输出值为正。

    傅里叶分析
    当对波形执行傅立叶(频域)分析时,我发现有必要使用.打印或.绘图分别是卡片。如果不打印或绘图,SPICE将在分析期间暂停片刻,然后在输出“初始瞬态解”后中止作业
    同时,在分析由脉冲源函数,你必须给波形一些有限的上升和下降时间,否则傅里叶分析结果将是错误的。由于某些原因,一个完美的方波,其上升/下降时间为零,会产生显著的即使根据SPICE的Fourier分析选项得到的谐波,这对于真实的方波是不正确的。

    电路和网络列表示例
    以下电路是SPICE 2g6的预测试网络列表,必要时提供简短说明。请随意“复制”和“粘贴”任何网络列表到您自己的SPICE源文件中进行分析和/或修改。我的目标有两个:给出SPICE网表设计的实例,以进一步理解SPICE网表的语法,并说明SPICE网表在分析简单电路时是多么的简单和紧凑。
    这些示例的所有输出列表都已“修剪”了无关信息,使您尽可能简洁地呈现SPICE输出。我这样做主要是为了节省文档空间。典型的SPICE输出包含很多标题和摘要信息,这些信息不一定与手头的任务密切相关。所以,当你自己运行一个模拟时,如果你发现输出不是确切地就像我在这里展示的一样!

    多源直流电阻网络,第1部分
    b52fdb9072bc4ee6a6572f41675c6224?from=pc.jpg
    没有.直流电卡和a.打印或.绘图卡,这个网络列表的输出将只显示节点1、2和3的电压(当然是指节点0)。
    网络列表:
    Multiple dc sources
  • v1 1 0 dc 24
  • v2 3 0 dc 15
  • r1 1 2 10k
  • r2 2 3 8.1k
  • r3 2 0 4.7k
  • .end
  • 复制代码
    输出:
    node    voltage    node     voltage   node    voltage
  • (  1)   24.0000    (  2)    9.7470    (  3)   15.0000
  • 复制代码
    voltage source currents
  • name       current
  • v1       -1.425E-03
  • v2       -6.485E-04
  • 复制代码
    total power dissipation   4.39E-02  watts
    复制代码
    多源直流电阻网络,第2部分
    e5b4308a45e64de597403bff18419fec?from=pc.jpg
    通过添加.直流电分析卡和指定源V one从24伏到24伏一步(换句话说,24伏稳定),我们可以使用.打印卡片分析,打印出任意两点之间的电压。奇怪的是,当.直流电当调用analysis选项时,每个节点(接地)的默认电压打印输出将消失,因此我们必须在.打印卡看他们在所有
    网络列表:
    Multiple dc sources
  • v1 1 0
  • v2 3 0 15
  • r1 1 2 10k
  • r2 2 3 8.1k
  • r3 2 0 4.7k
  • .dc v1 24 24 1
  • .print dc v(1) v(2) v(3) v(1,2) v(2,3)
  • .end
  • 复制代码
    输出:
    v1           v(1)        v(2)        v(3)        v(1,2)      v(2,3)
  • 2.400E+01    2.400E+01   9.747E+00   1.500E+01   1.425E+01  -5.253E+00
  • 复制代码
    RC时间常数电路
    bc9ddf1a683243dfb80ea672b1ae03c7?from=pc.jpg
    对于直流分析,必须规定任何无功分量(C或L)的初始条件(电容器的电压、电感器的电流)。这是由每个电容器卡的最后一个数据字段提供的(ic=0). 要执行DC分析.tran ("瞬变“)必须指定分析选项,第一个数据字段指定时间增量(以秒为单位),第二个数据字段指定总分析时间跨度(以秒为单位),并且uic告诉它在分析时“使用初始条件”。
    网络列表:
    RC time delay circuit
  • v1 1 0 dc 10
  • c1 1 2 47u ic=0
  • c2 1 2 22u ic=0
  • r1 2 0 3.3k
  • .tran .05 1 uic
  • .print tran v(1,2)
  • .end
  • 复制代码
    输出:
    time          v(1,2)         
  • 0.000E+00     7.701E-06
  • 5.000E-02     1.967E+00
  • 1.000E-01     3.551E+00
  • 1.500E-01     4.824E+00
  • 2.000E-01     5.844E+00
  • 2.500E-01     6.664E+00
  • 3.000E-01     7.322E+00
  • 3.500E-01     7.851E+00
  • 4.000E-01     8.274E+00
  • 4.500E-01     8.615E+00
  • 5.000E-01     8.888E+00
  • 5.500E-01     9.107E+00
  • 6.000E-01     9.283E+00
  • 6.500E-01     9.425E+00
  • 7.000E-01     9.538E+00
  • 7.500E-01     9.629E+00
  • 8.000E-01     9.702E+00
  • 8.500E-01     9.761E+00
  • 9.000E-01     9.808E+00
  • 9.500E-01     9.846E+00
  • 1.000E+00     9.877E+00
  • 复制代码
    简单交流正弦波电压的绘制与分析
    09419c461dbf47a6b0c9800fb3d46612?from=pc.jpg
    本练习演示了如何正确设置正弦波电压源的瞬时值.绘图功能(作为瞬变分析)。不足为奇的是,这一组中的傅立叶分析也需要.tran(瞬态)分析选项应在适当的时间范围内指定。在这个特定的甲板上的时间范围允许傅里叶分析,精度相当低。进行瞬态分析的基频周期越多,傅里叶分析的精度就越高。这不是调侃,而是波形的基本原理。
    网络列表:
    v1 1 0 sin(0 15 60 0 0)
  • rload 1 0 10k
  • * change tran card to the following for better Fourier precision
  • * .tran 1m 30m .01m     and include .options card:
  • * .options itl5=30000
  • .tran 1m 30m
  • .plot tran v(1)
  • .four 60 v(1)
  • .end
  • 复制代码
    输出:
    time      v(1)     -2.000E+01  -1.000E+01    0.000E+00    1.000E+01  
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • 0.000E+00  0.000E+00 .         .             *             .       .
  • 1.000E-03  5.487E+00 .         .             .       *     .       .
  • 2.000E-03  1.025E+01 .         .             .             *       .
  • 3.000E-03  1.350E+01 .         .             .             .    *  .
  • 4.000E-03  1.488E+01 .         .             .             .      *.
  • 5.000E-03  1.425E+01 .         .             .             .     * .
  • 6.000E-03  1.150E+01 .         .             .             . *     .
  • 7.000E-03  7.184E+00 .         .             .         *   .       .
  • 8.000E-03  1.879E+00 .         .             .  *          .       .
  • 9.000E-03 -3.714E+00 .         .        *    .             .       .
  • 1.000E-02 -8.762E+00 .         . *           .             .       .
  • 1.100E-02 -1.265E+01 .     *   .             .             .       .
  • 1.200E-02 -1.466E+01 .  *      .             .             .       .
  • 1.300E-02 -1.465E+01 .  *      .             .             .       .
  • 1.400E-02 -1.265E+01 .     *   .             .             .       .
  • 1.500E-02 -8.769E+00 .         . *           .             .       .
  • 1.600E-02 -3.709E+00 .         .        *    .             .       .
  • 1.700E-02  1.876E+00 .         .             .  *          .       .
  • 1.800E-02  7.191E+00 .         .             .         *   .       .
  • 1.900E-02  1.149E+01 .         .             .             . *     .
  • 2.000E-02  1.425E+01 .         .             .             .     * .
  • 2.100E-02  1.489E+01 .         .             .             .      *.
  • 2.200E-02  1.349E+01 .         .             .             .    *  .
  • 2.300E-02  1.026E+01 .         .             .             *       .
  • 2.400E-02  5.491E+00 .         .             .       *     .       .
  • 2.500E-02  1.553E-03 .         .             *             .       .
  • 2.600E-02 -5.514E+00 .         .     *       .             .       .
  • 2.700E-02 -1.022E+01 .         *             .             .       .
  • 2.800E-02 -1.349E+01 .    *    .             .             .       .
  • 2.900E-02 -1.495E+01 .  *      .             .             .       .
  • 3.000E-02 -1.427E+01 .   *     .             .             .       .
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • 复制代码
    fourier components of transient response v(1)   
  • dc component =  -1.885E-03
  • harmonic   frequency    fourier    normalized    phase     normalized
  • no            (hz)     component    component    (deg)    phase (deg)
  • 1          6.000E+01   1.494E+01     1.000000   -71.998       0.000
  • 2          1.200E+02   1.886E-02     0.001262   -50.162      21.836
  • 3          1.800E+02   1.346E-03     0.000090   102.674     174.671
  • 4          2.400E+02   1.799E-02     0.001204   -10.866      61.132
  • 5          3.000E+02   3.604E-03     0.000241   160.923     232.921
  • 6          3.600E+02   5.642E-03     0.000378  -176.247    -104.250
  • 7          4.200E+02   2.095E-03     0.000140   122.661     194.658
  • 8          4.800E+02   4.574E-03     0.000306  -143.754     -71.757
  • 9          5.400E+02   4.896E-03     0.000328  -129.418     -57.420
  • total harmonic distortion =      0.186350  percent
  • 复制代码
    简单交流电阻电容电路
    4ca4a1c626274704a240fa4a087ce25c?from=pc.jpg
    这个.交流卡指定交流分析点,从60Hz到60Hz,在一个点上。当然,这张卡片对于多频率分析更有用,在多频率分析中,可以分步分析一系列频率。这个.打印该卡输出节点1和节点2之间的交流电压,以及节点2和接地之间的交流电压。
    网络列表:
    Demo of a simple AC circuit
  • v1 1 0 ac 12 sin
  • r1 1 2 30
  • c1 2 0 100u
  • .ac lin 1 60 60
  • .print ac v(1,2) v(2)
  • .end
  • 复制代码
    输出:
    freq          v(1,2)      v(2)        
  • 6.000E+01     8.990E+00   7.949E+00
  • 复制代码
    低通滤波器
    94cd5243e0814ff98b3d1d3075df93c0?from=pc.jpg
    这个低通滤波器阻断交流,把直流电传输到R负载电阻器。典型的用于抑制整流电路纹波的滤波器,它实际上有一个谐振频率,从技术上讲,它是一个带通滤波器。然而,不管怎样,它都可以很好地通过直流和阻断高频谐波产生的交直流整流过程。它的性能是用一个从500赫兹到15千赫的交流电源来测量的。如果需要.打印卡可以用.绘图以图形方式显示4节点的交流电压。
    网络列表:
    Lowpass filter
  • v1 2 1 ac 24 sin
  • v2 1 0 dc 24
  • rload 4 0 1k
  • l1 2 3 100m
  • l2 3 4 250m
  • c1 3 0 100u
  • .ac lin 30 500 15k
  • .print ac v(4)
  • .plot ac v(4)
  • .end
  • 复制代码
    freq          v(4)            
  • 5.000E+02     1.935E-01
  • 1.000E+03     3.275E-02
  • 1.500E+03     1.057E-02
  • 2.000E+03     4.614E-03
  • 2.500E+03     2.402E-03
  • 3.000E+03     1.403E-03
  • 3.500E+03     8.884E-04
  • 4.000E+03     5.973E-04
  • 4.500E+03     4.206E-04
  • 5.000E+03     3.072E-04
  • 5.500E+03     2.311E-04
  • 6.000E+03     1.782E-04
  • 6.500E+03     1.403E-04
  • 7.000E+03     1.124E-04
  • 7.500E+03     9.141E-05
  • 8.000E+03     7.536E-05
  • 8.500E+03     6.285E-05
  • 9.000E+03     5.296E-05
  • 9.500E+03     4.504E-05
  • 1.000E+04     3.863E-05
  • 1.050E+04     3.337E-05
  • 1.100E+04     2.903E-05
  • 1.150E+04     2.541E-05
  • 1.200E+04     2.237E-05
  • 1.250E+04     1.979E-05
  • 1.300E+04     1.760E-05
  • 1.350E+04     1.571E-05
  • 1.400E+04     1.409E-05
  • 1.450E+04     1.268E-05
  • 1.500E+04     1.146E-05
  • 复制代码
    freq       v(4)  1.000E-06     1.000E-04    1.000E-02    1.000E+00
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • 5.000E+02  1.935E-01 .             .             .        *    .
  • 1.000E+03  3.275E-02 .             .             .   *         .
  • 1.500E+03  1.057E-02 .             .             *             .
  • 2.000E+03  4.614E-03 .             .           * .             .
  • 2.500E+03  2.402E-03 .             .         *   .             .
  • 3.000E+03  1.403E-03 .             .       *     .             .
  • 3.500E+03  8.884E-04 .             .      *      .             .  
  • 4.000E+03  5.973E-04 .             .    *        .             .  
  • 4.500E+03  4.206E-04 .             .   *         .             .   
  • 5.000E+03  3.072E-04 .             .  *          .             .   
  • 5.500E+03  2.311E-04 .             .  *          .             .  
  • 6.000E+03  1.782E-04 .             . *           .             .   
  • 6.500E+03  1.403E-04 .             .*            .             .  
  • 7.000E+03  1.124E-04 .             *             .             .  
  • 7.500E+03  9.141E-05 .             *             .             .   
  • 8.000E+03  7.536E-05 .            *.             .             .   
  • 8.500E+03  6.285E-05 .            *.             .             .
  • 9.000E+03  5.296E-05 .           * .             .             .   
  • 9.500E+03  4.504E-05 .           * .             .             .  
  • 1.000E+04  3.863E-05 .          *  .             .             .   
  • 1.050E+04  3.337E-05 .          *  .             .             .  
  • 1.100E+04  2.903E-05 .         *   .             .             .   
  • 1.150E+04  2.541E-05 .         *   .             .             .  
  • 1.200E+04  2.237E-05 .        *    .             .             .  
  • 1.250E+04  1.979E-05 .        *    .             .             .  
  • 1.300E+04  1.760E-05 .        *    .             .             .  
  • 1.350E+04  1.571E-05 .       *     .             .             .  
  • 1.400E+04  1.409E-05 .       *     .             .             .  
  • 1.450E+04  1.268E-05 .       *     .             .             .  
  • 1.500E+04  1.146E-05 .      *      .             .             .   
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • 复制代码
    多电源交流网络
    6d8f817a9a0d4782973493005356ad06?from=pc.jpg
    SPICE的一个特点是它不能处理由串联电压源和电感组成的电路中的任何回路。因此,V one-我 one-我 two-五 two-五 one是不可接受的。为了避开这个问题,我不得不插入一个低的-回路中某个地方的电阻,用来把它分解。因此,我们有R伪造的在3到4之间(电阻为1微微欧姆)和V two在4和0之间。上面的电路是原来的设计,下面的电路有R伪造的插入以避免SPICE错误。
    d423c31873bc402fb6d08294da4e00e4?from=pc.jpg
    网络列表:
    Multiple ac source
  • v1 1 0 ac 55 0 sin
  • v2 4 0 ac 43 25 sin
  • l1 1 2 450m
  • c1 2 0 330u
  • l2 2 3 150m
  • rbogus 3 4 1e-12
  • .ac lin 1 30 30
  • .print ac v(2)
  • .end
  • 复制代码
    输出:
    freq          v(2)            
  • 3.000E+01     1.413E+02
  • 复制代码
    交流移相演示
    4530727135584eb59c9d6b851bba05f5?from=pc.jpg
    通过各支路的电流由各分流电阻器(1安培=1伏到1Ω)上的电压降指示,由输出五(1,2)和五(1,3)合同条款.打印卡。通过每个支路的电流相位由输出的每个分路电阻器上的电压降相位表示副总裁(1,2)和副总裁(1,3)术语.打印卡
    网络列表:
    phase shift
  • v1 1 0 ac 4 sin
  • rshunt1 1 2 1
  • rshunt2 1 3 1
  • l1 2 0 1
  • r1 3 0 6.3k
  • .ac lin 1 1000 1000
  • .print ac v(1,2) v(1,3) vp(1,2) vp(1,3)
  • .end
  • 复制代码
    输出:
    freq          v(1,2)      v(1,3)      vp(1,2)     vp(1,3)     
  • 1.000E+03     6.366E-04   6.349E-04  -9.000E+01   0.000E+00
  • 复制代码
    变压器电路
    579bd77dbb9549eabbd58c732b103e8e?from=pc.jpg
    SPICE将变压器理解为一组相互耦合的电感器。因此,要在SPICE中模拟变压器,必须将一次绕组和二次绕组指定为单独的电感器,然后指示SPICE用一个“k“指定耦合常数的卡。对于理想的变压器模拟,耦合常数应为1。但是,SPICE不能处理这个值,所以我们使用0.999之类的值作为耦合因子。
    请注意全部的绕组电感器对必须与其自身耦合k卡,以便模拟正常工作。对于双绕组变压器,单绕组k卡就够了。对于三绕组变压器,三个k必须指定卡(链接L1和L2,L2和L3,还有L1和L3 ).
    L1/L2电感比为100:1,降压变压比为10:1。在120伏的电压下,我们可以看到12伏的电压 two弯曲的。L1/L3电感比100:25(4:1)提供了2:1的降压变压比,这应该给我们60伏特的L3绕组电压为120伏
    网络列表:
    transformer                                                                     
  • v1 1 0 ac 120 sin      
  • rbogus0 1 6 1e-3
  • l1 6 0 100      
  • l2 2 4 1
  • l3 3 5 25      
  • k1 l1 l2 0.999  
  • k2 l2 l3 0.999  
  • k3 l1 l3 0.999  
  • r1 2 4 1000     
  • r2 3 5 1000     
  • rbogus1 5 0 1e10
  • rbogus2 4 0 1e10
  • .ac lin 1 60 60
  • .print ac v(1,0) v(2,0) v(3,0)  
  • .end  
  • 复制代码
    输出:
    freq          v(1)        v(2)        v(3)            
  • 6.000E+01     1.200E+02   1.199E+01   5.993E+01<code></code>
  • 复制代码
    在本例中,R假象0是一个非常低值的电阻,用于切断V的源/电感回路 one/我 one. R假象1和R假象2在每个隔离电路上提供接地直流通路所需的非常高的电阻。一次侧电路也是直接接地的。没有这些地面参考,SPICE会产生错误!

    全波桥式整流器
    d570167146494983a0f8d8a302913044?from=pc.jpg
    二极管,就像SPICE中的所有半导体元件一样,必须对其进行建模,这样SPICE才能知道它们应该如何工作的所有细节。幸运的是,SPICE附带了一些通用模型,而二极管是最基本的。注意.型号卡片上只写着d“作为通用二极管模型模式1. 同样,由于我们在这里绘制波形,我们需要在一张卡中指定交流电源的所有参数,并使用.tran选项
    网络列表:
    fullwave bridge rectifier
  • v1 1 0 sin(0 15 60 0 0)
  • rload 1 0 10k
  • d1 1 2 mod1
  • d2 0 2 mod1
  • d3 3 1 mod1
  • d4 3 0 mod1
  • .model mod1 d
  • .tran .5m 25m
  • .plot tran v(1,0) v(2,3)
  • .end
  • 复制代码
    输出:
    legend:
  • *: v(1)   
  • +: v(2,3)  
  •     time      v(1)   
  • (*)--------- -2.000E+01  -1.000E+01   0.000E+00   1.000E+01  2.000E+01
  • (+)--------- -5.000E+00   0.000E+00   5.000E+00   1.000E+01  1.500E+01
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • 0.000E+00  0.000E+00 .       +            *            .           .
  • 5.000E-04  2.806E+00 .       .      +     .   *        .           .
  • 1.000E-03  5.483E+00 .       .            +      *     .           .
  • 1.500E-03  7.929E+00 .       .            .     +   *  .           .
  • 2.000E-03  1.013E+01 .       .            .           +*           .
  • 2.500E-03  1.198E+01 .       .            .            .  * +      .
  • 3.000E-03  1.338E+01 .       .            .            .    *  +   .
  • 3.500E-03  1.435E+01 .       .            .            .     *    +.
  • 4.000E-03  1.476E+01 .       .            .            .      *    +
  • 4.500E-03  1.470E+01 .       .            .            .      *    +
  • 5.000E-03  1.406E+01 .       .            .            .     *   + .
  • 5.500E-03  1.299E+01 .       .            .            .   *  +    .
  • 6.000E-03  1.139E+01 .       .            .            . *+        .
  • 6.500E-03  9.455E+00 .       .            .         + *.           .
  • 7.000E-03  7.113E+00 .       .            .   +    *   .           .
  • 7.500E-03  4.591E+00 .       .           +.    *       .           .
  • 8.000E-03  1.841E+00 .       .   +        . *          .           .
  • 8.500E-03 -9.177E-01 .       .  +        *.            .           .
  • 9.000E-03 -3.689E+00 .       .        *+  .            .           .
  • 9.500E-03 -6.380E+00 .       .    *       . +          .           .
  • 1.000E-02 -8.784E+00 .       . *          .        +   .           .
  • 1.050E-02 -1.075E+01 .      *.            .            .+          .
  • 1.100E-02 -1.255E+01 .   *   .            .            .     +     .
  • 1.150E-02 -1.372E+01 .  *    .            .            .        +  .
  • 1.200E-02 -1.460E+01 . *     .            .            .           +
  • 1.250E-02 -1.476E+01 .*      .            .            .           +
  • 1.300E-02 -1.460E+01 . *     .            .            .           +
  • 1.350E-02 -1.373E+01 .  *    .            .            .        +  .
  • 1.400E-02 -1.254E+01 .   *   .            .            .     +     .
  • 1.450E-02 -1.077E+01 .      *.            .            .+          .
  • 1.500E-02 -8.726E+00 .       . *          .       +    .           .
  • 1.550E-02 -6.293E+00 .       .    *       . +          .           .
  • 1.600E-02 -3.684E+00 .       .        x   .            .           .
  • 1.650E-02 -9.361E-01 .       .      +    *.            .           .
  • 1.700E-02  1.875E+00 .       .      +     . *          .           .
  • 1.750E-02  4.552E+00 .       .           +.    *       .           .
  • 1.800E-02  7.170E+00 .       .            .   +    *   .           .
  • 1.850E-02  9.401E+00 .       .            .         + *.           .
  • 1.900E-02  1.146E+01 .       .            .            . *+        .
  • 1.950E-02  1.293E+01 .       .            .            .   *  +    .
  • 2.000E-02  1.414E+01 .       .            .            .     *    +.
  • 2.050E-02  1.464E+01 .       .            .            .     *     +
  • 2.100E-02  1.483E+01 .       .            .            .      *    +
  • 2.150E-02  1.430E+01 .       .            .            .     *    +.
  • 2.200E-02  1.344E+01 .       .            .            .    *   +  .
  • 2.250E-02  1.195E+01 .       .            .            .  *+       .
  • 2.300E-02  1.016E+01 .       .            .           +*           .
  • 2.350E-02  7.917E+00 .       .            .     +   *  .           .
  • 2.400E-02  5.460E+00 .       .            +      *     .           .
  • 2.450E-02  2.809E+00 .       .      +     .  *         .           .
  • 2.500E-02 -8.297E-04 .       +            *            .           .
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • 复制代码