分析dmp文件使用表空间_PySpice: 使用ngspice进行电路仿真分析-2:ngspice简要介绍-输入文件格式1...

本文详细介绍了ngspice的输入文件格式,包括标题行、结束行、电路元素描述、比例后缀、基本行如.model、.subckt等。还列举了各类电路元件的表示方式及参数,并提供了实例解析。此外,提到了子电路定义和全局节点声明,以及如何导入元件库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于PySpice是完全使用ngspice来进行计算分析,所以我们首先介绍如何使用ngspicengspice如何下载和安装已经在上一篇文章中介绍,请参考:

dc lin:PySpice: 使用ngspice进行电路仿真分析-1:安装​zhuanlan.zhihu.com

本文介绍的内容的完整资料,可以参考官方文档:

http://ngspice.sourceforge.net/docs/ngspice-31-manual.pdf​ngspice.sourceforge.net

ngspice本质上可以视为一个黑盒子工具,我们提供输入文件,它进行计算分析,把结果输出文件,本文首先介绍这个输入文件的格式:

【1】 输入文件是文本文件,满足:

  • 输入文件的第一行作为标题,无需作任何修饰
  • 最后一行必须以.end作为结尾
  • 中间是各种电路元素的描述行

【2】 电路元素(circuit element,或称device instances

每个电路元素都必须以一行(称为instance line)表示,包括:

  • 名字(name) ,注意第一个字符决定了元素的类型,如下表2-1
  • 连接的电路节点(circuit node
  • 元素的参数 (values of parameters)

表2-1: 元素的类型字符

  • A: XSPICE code model,例: A1
  • B: Behavioral(arbitrary) source,例:B1
  • C: 电容(Capacitor), 例:C1
  • D: 二极管(Diode),例:D1
  • E: 电压控制电压源(voltage-controlled voltage source, VCVS),例E1
  • F: 电流控制电流源(current-controlled current source, CCCS), 例F1
  • G: 电压控制电流源(voltage-controlled current source, VCCS),例G1
  • H: 电流控制电压源(current-controlled voltage source, CCVS), 例H1
  • I: 电流源current source,例I_input, I1
  • J: 结型场效应晶体管(junction field effect transistor, JFET),例J1
  • K: 耦合型互感电感(Coupled (Mutual) Inductors), 例:K1
  • L: 电感(inductor),例:L1
  • M:金属氧化物场效应晶体管(Metal oxide field effect transistor (MOSFET)),如M1
  • N:GSS数字装置(Numerical device for GSS) ,如:N1
  • O: 有损传输线(Lossy transmission line) ,如: O1
  • P: 耦合多导体线(CPL)(Coupled multiconductor line (CPL) ),如P1
  • Q: 双极结晶体管(BJT)(Bipolar junction transistor (BJT) ),如Q1
  • R: 电阻( Resistor),如:R1, R2
  • S: 电压控制开关(Switch (voltage-controlled)) ,如:S1
  • T:无损传输线(Lossless transmission line) ,如:T1
  • U: 均布电阻电容线路(Uniformly distributed RC line) ,如:U1
  • V: 电压源(Voltage source),如:V1, Vinput
  • W:电流控制开关(Switch (current-controlled)) ,如:W1
  • X:子电路(Subcircuit) ,如X1
  • Y:单损耗传输线(TXL)(Single lossy transmission line (TXL)) , 如:Y1
  • Z: Metal semiconductor field effect transistor (MESFET)金属半导体场效应晶体管(mesfet), 如:Z1

不同的元素节点有自己的不同参数,见下面的说明。

例1:如下文件描述了图2-1的电路

e24fa18ba72e45dd3de5e2f17a340a64.png

文件名:1.cir

RC Circuit Transient Response
*resistor connected between nodes 1 and 2
r1 1 2 1k
*capacitor connected between nodes 2 and 0
c1 2 0 1u
*piecewise linear input voltage
vin 1 0 pwl(0 0 10ms 0 11ms 5v 20ms 5v)
*transient analysis for 20ms, step size 0.02ms
.tran 0.02ms 20ms
*defining the run-time control functions
.control
run
*plotting input and output voltages
plot v(1) v(2)
.endc
.end

【3】比例后缀(scale factor suffix)

ngspice中的数值,可以是整数或者浮点数(和C语言一致),为了很好的表示非常大或非常小的值,可以在数值后面加上下面的后缀,参见表3-1:

表3-1:ngspice使用的比例后缀

  • T:太tera,
    ,例:
    20T
  • G: 吉Giga
    ,例:
    20G
  • Meg:兆Mega
    ,例:
    20Meg
  • K:千Kilo
    ,例:
    20K
  • mil:密尔Mil
    ,如:
    20mil
  • m:毫milli
    ,如
    20m,注意,20M20m是一样的,都不是20兆
  • u:微micro
    ,如
    10u
  • n:纳nano
    ,如
    10n
  • p:皮pico
    ,如
    10p
  • f:费femto
    ,如
    10f

ngspice中,任何数值后面跟的非比例后缀都会被忽略,所以10, 10V, 10Volt, 10Hz,这4个都会被转换成101000, 1k, 1K, 1K_Omega都是表示1000


【4】基本行 basic line

【4.1】 .title 标题行

每个文件的第一行就是标题行,无需做任何说明修饰,但是,也可以在任一行(只能一行)最左边加.title.TITLE来指定是标题行,标题行的内容会作为输出文件的最上面的显示。


【4.2】.end结束行

如题。


【4.3】注释

注释分两种,一是整行注释,在行首加*,另一种是行尾注释,是加$//,下面是示例:

* 这是整行注释
C1 = 10pF  $这是电容,是行尾注释
R1 = 4Meg  //这也是行尾注释

【4.4】.model器件模型device models

指定器件模型,可以把它赋予给多个器件,其语法是:

.model 器件模型名称 type (参数1=值1  参数2=值2 ... )

比如,下面我们建立一个npn三极管的器件模型mod1,设置其放大倍数bf(Ideal maximum forward beta)是50倍,工作时饱和电流(Transport saturation current) Is=1e-13安培,正向俄利电压(Forward Early voltage, VafVbfVaf=50 V:

.model MOD1 npn ( bf=50  is=1e-13  vaf=50)

由于一些模型的参数非常多,一行放不下,ngspice支持在新行的第一列加+标识,可以指定新行还是属于上一行的内容,参考下例:

.MODEL t2n2222a NPN
+ ISS= 0.        XTF= 1.             NS  = 1.00000
+ CJS= 0.        VJS= 0.50000        PTF = 0.
+ MJS= 0.        EG = 1.10000        AF  = 1.
+ ITF= 0.50000   VTF= 1.00000        F   = 153.40622
+ BR = 40.00000  IS = 1.6339e-14     VAF = 103.40529
+ VAR= 17.77498  IKF= 1.00000        IS  = 4.6956e-15
+ NE = 1.31919   IKR= 1.00000        ISC = 3.6856e-13
+ NC = 1.10024   IRB= 4.3646e-05     NF  = 1.00531
+ NR = 1.00688   RBM= 1.0000e-02     RB  = 71.82988
+ RC = 0.42753   RE = 3.0503e-03     MJE = 0.32339
+ MJC= 0.34700   VJE= 0.67373        VJC = 0.47372
+ TF = 9.693e-10 TR = 380.00e-9      CJE = 2.6734e-11
+ CJC= 1.4040e-11 FC = 0.95000       XCJC= 0.94518 

ngspice支持的model type参见下表4-1:

  • R: Semiconductor resistor model
  • C: Semiconductor capacitor model
  • L: Inductor model
  • SW: Voltage controlled switch
  • CSW: Current controlled switch
  • URC: Uniform distributed RC model
  • LTRA: Lossy transmission line model
  • D: Diode model
  • NPN: NPN BJT model
  • PNP: PNP BJT model
  • NJF: N-channel JFET model
  • PJF: P-channel JFET model
  • NMOS: N-channel MOSFET model
  • PMOS: P-channel MOSFET model
  • NMF: N-channel MESFET model
  • PMF: P-channel MESFET model
  • VDMOS: Power MOS model

【4.5】 .subckt子电路(subcircuits

子电路定义了一个电路的模块(赋予一个名字),然后可以以器件的方式把它加入到实际电路中作为一个实体元素,参见下例:

* 实际电路中的元件:
xdiv1 10 7 0 vdivide //xdiv1是元件名,vdivide是子电路名 
* 子电路定义:
.subckt vdivide 1 2 3
r1 1 2 10K
r2 2 3 5K
.ends 

上面的电路中,子电路的1节点对应于主电路的10节点,2节点对应主电路的7节点,3节点对应主电路的0节点。可以参考下面的电路图:

4dca4908109a6e377b875da4b300eb79.png

【4.6】.global全局节点定义

这里定义的节点可以在本文件的任何电路和子电路中访问。

例:

.GLOBAL gnd vcc

【4.7】.include导入命令

把文件粘贴到该行,看下例:

.INCLUDE /users/spice/common/bsim3-param.mod

【4.8】.lib导入元件库

该指令导入文件中的指定的元件库,语法:

.lib filename libname

示例:

.LIB /users/spice/common/mosfets.lib mos1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值