python 电路仿真spice_PySpice: 使用ngspice进行电路仿真分析-2:ngspice简要介绍-输入文件格式1...

由于PySpice是完全使用ngspice来进行计算分析,所以我们首先介绍如何使用ngspice。ngspice如何下载和安装已经在上一篇文章中介绍,请参考: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的电路

文件名: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,注意,20M和20m是一样的,都不是20兆

u:微micro,

,如10u

n:纳nano,

,如10n

p:皮pico,

,如10p

f:费femto,

,如10f

在ngspice中,任何数值后面跟的非比例后缀都会被忽略,所以10, 10V, 10Volt, 10Hz,这4个都会被转换成10,1000, 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, Vaf或Vbf) Vaf=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节点。可以参考下面的电路图:

【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

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值