| |
///////////////////////////////////////////////////////////////////////////////////////////////////////
原文在这里。版权归原作者。
///////////////////////////////////////////////////////////////////////////////////////////////////////
关于SPICE的(项目主页)叙述,wikipedia有详细的介绍(这里):
SPICE
的全名為「積體電路模擬的程式」(Simulation Program with Integrated Circuit
Emphasis),是一种用于电路描述与仿真的语言与仿真器软件,用于检测电路的连接和功能的完整性,以及用于预测电路的行为。主要用于模拟电路和混合
信号电路的仿真。由此我們便可以清楚地了解:SPICE這套程式原先發展的目的是為了模擬電子系統中日益重要的積體電路。
由於積體電路不如傳統電路一般。可以在麵包板(breadboard)或印刷電路板(Printed circuit board)上做實驗來驗證設計結果。
為了提高積體電路正式生產時的良率(yield)及降低成本,勢必要在進入實際製程階段前對其電路特性做「檢查」,確保性能在規格範圍之內。
说到底,在电子电路教学实验中,我们会涉及到设计一个目标既定电路:
a.可以直接焊接电路,不过比较高风险高消耗,简单电路可以,复杂电路就显得笨拙;
b.可以用上面提到“面包板”,把元件插上去,然后用小电线一个接一个地连接,这个比a要高明的多,可是成本会增加;
c.可以使用模拟箱,呵呵,这个就更高级的了,直接把IC元件插到底座,接上电线,打开关就行了,当然比b方案成本高;
d.可以使用计算机模拟,呵呵,这个方法是这个调侃日志的主题;
/***照片中在实验室里设计电路的小伙子,正是1982年在俄勒冈州立大学就读大四的19岁黄仁勋。应该是用“面包板”做电路仿真***/
/***“面包板”做电路仿真时代应该结束,要大规模使用计算机仿真,当然,并行,所以,有CUDA应用到电路仿真开发***/
回 到SPICE这个「積體電路模擬的程式」上,这个是加州大学伯克莱分校电子电气计算中心的研究员在1975年开发出来的电路仿真软件。这个软发展到今天已 经是相当成熟,当前版本是spice3f5。这个版本尽管有一些Bugs,但是很多商业公司追随着SPICE的更新而推出不同的商业版本,例 如:OrCADPSpice(OrCAD)、HSPICE(Meta-Software)、IS-SPICE(intusoft)、IG- SPICE(A. B.Associates)、I-SPICE(NCSS timesharing)。其中很多都已经移植到其他平台,unix,bsd,GNU/Linux,solaris,hp-unix和windows等, 哦,对了,还有Apple的Mac。
更应该注意一个细节问题:BSD在开发SPICE那时,就已经Open Source么?
经 过小小的考证(所以,我说这个文章是“调侃”),原来大家非常熟悉的BSD License最早可能1982年(注意SPICE项目是在1975年开发完成),换句话说,在1975年到1982之间这段时间,SPICE是BSD研 究员专用的玩意,而可能1982年之后Open了(这个纯粹推测)。FSF(Free Software Foundation)在整个计算机软件工业始终扮演诙谐幽默的角色。在FSF的关怀下,GNU计划有一个电路仿真工具叫做GNUcap的项目(项目主页)。我们知道理查德·斯托曼(Richard Matthew Stallman)在1983年9月27日宣布GNU计划(尽管很多认为GNU计划真正开始在1984年),而GNUcap的0.11版本是在1993.07.26(历史版本),不难推算,GNUcap可能在1991或者1992发布的,那时正直MS DOS行销的年代,所以大家会发现,怎么会有PSpice的DOS版本,哦哦,原来PSpice这么悠久的历史的了。
历史就是这样演绎:
“Gnucap is the Gnu Circuit Analysis Package.
The
primary component is a general purpose circuit simulator. It performs
nonlinear dc and transient analyses, fourier analysis, and ac analysis.
Spice compatible models for the MOSFET (level 1-8), BJT, and diode are
included in this release.
Gnucap is not based on Spice, but some of the models have been derived from the Berkeley models.”
关键位在最后一句,呵呵,明白人都知道,早年GNUcap和Spice没有很大关系,可能是之后Spice用BSD License了,才有关系。这样,就可以肯定,Spice早年封闭的授权体。
所以,现在在世人面前就有两个电路仿真程序,一个是加州大学伯克莱分校的Spice,一个是FSF的GNUcap,而他类似的项目都是这两个的延伸发展。当然,电子&半导体工业界更趋向Spice,毕竟用了30多年,又BSD了,所以有了上面这么多商业版本。
而在我的Debian GNU/Linux下,编译安装了最新的GNUcap0.36和NGspice(项目主页):
NGspice is a mixed-level/mixed-signal circuit simulator. Its code is based on three open source software packages: Spice3f5, Cider1b1 and Xspice.NGspice is part of gEDA project, a full GPL'd suite of Electronic Design Automation tools.
NGspice直接是基于Spice开发的程序,有一定的工业说服力和符合行业标准 (完全没有鄙视GNUcap,只是GNUcap需要更长远的取长补短的发展,除了Free Sotfware更要符合电路“实际”,就好像R和SPSS,SAS在工业上的应用)。这里,小星就用NGSpice简单执行一个example例子,见 笑:
a.在Debian上用apt-get安装,必须添加&使用testing和unstable版本的non-free源(很可能是开发者的许可证问题没有让NGSpice进入main仓库),然后执行:sudo apt-get install ngspice
*建议到Debian的NGSpice上(这里)下载源代码编译安装(./configure --prefix=/usr/ || make || sudo make install)。
b.当前目录新建文件夹,执行:mkdir test | cd test
c.在test目录下编写一下main.deck文本(右边是对应的电子电路图,如果你慢慢对着代码和图,你一定明白代码说什么东东):
A Berkeley SPICE3 compatible circuit
.tran 1e-5 2e-3
vcc vcc 0 12.0
vin 1 0 0.0 ac 1.0 sin(0 1 1k)
ccouple 1 base 10uF
rbias1 vcc base 100k
rbias2 base 0 24k
q1 coll base emit generic
rcollector vcc coll 3.9k
remitter emit 0 1k
.model generic npn
.end
d.在目录下执行:ngspice main.deck //参考结果如下图:
e.继续执行:listing //参考结果如下图:
f.继续执行:rusage //参考结果如下图:
g.继续执行:run //参考结果如下图:
h.继续执行:plot v(1) base //参考结果如下图:
h.继续执行:plot vcc coll //参考结果如下图:
这里就不再展开“调侃”了,如果感兴趣,请浏览NGSpice项目主页,小星电邮:ghxandsky@gmail.com,欢迎交流。
PS:考研关键位,也写这个文章;明天要做三份数学模拟卷,我要更进化! ^_^