【原创】模拟电路分析 - EDA软件(Linux应用专题)
在“模拟电路分析”那个帖子里,是我整理的以前学习模拟电路中的一些日记,重点放在分析上,对日记中所使用的软件和工具没有太多说明。一般现在的电路分析里都会有专门的课程讲EDA软件,怎么使用这些软件并不复杂,它们只是工具,协助使用者在电路分析时绘制电路并模拟电路的运行情况,协助使用者在电路设计时建立电路模型,提前评估设计的结果。但它们不能替代实际动手制作,尤其是模拟电路,有太多的环境因素是EDA软件无法模拟的,只有动手作出实物才会知道结果。
这里对EDA及相关软件作些说明:
EDA:Electronic design automation
电子设计自动化,使用过CAD的人都知道,CAD可以在使用者作出真实的模具、建筑之前,能在计算机上模拟出其结构、参数。EDA是针对电路设计者的“CAD”。
通常它有两个核心部分:
电路设计(电路绘制)
电路模拟
针对电路设计内部划分的不同领域,有人用EDA软件作模拟电路,有人作模拟IC电路,有的作数字电路等等。
目前常见的EDA软件主要有:
NI(国家仪器)的Multisim
Cadence的PSPICE(这个软件是被几经倒手收购,落入Cadence的)
其它的我不提了,网上到处都是,选这两个是有代表性的。
Multisim可以说是目前最好用的电路设计和模拟工具,很多教科书包括清华的电子工程课程里都提到使用Multisim作教学实验。
对于PSPICE,得首先了解SPICE,它的全称是:Simulation Program with Integrated Circuit Emphasis,着重于集成电路的模拟程序。
SPICE最早是在Berkeley被研发出来的,当时要解决的问题是集成电路设计中遇到的一些非线性问题,是个开源项目。它把电路抽象为节点和节点间的关系,使用符号构成了电路分析的基础,这样就可以在符号层对电路作模拟计算。
SPICE先后被研发出3个版本,最后一个版本定义了电路的抽象层为netlist,将元件和元件关系都以netlist文件格式表示,这个很关键,很多从SPICE衍生出的免费和商业软件都支持标准的netlist文件,具有一定的通用性。
PSPICE前面的这个P表示Personal,它的意思是可以在PC上运行的SPICE软件,这个对SPICE的普及起到很重要的作用。
目前我们在linux下用的是 NG-SPICE。其实,所有的这类模拟软件都采用了这种节点和节点连接列表的思想。
虽然SPICE的原始创意是为了解决集成电路的问题,但目前SPICE衍生出的软件并不局限于IC,包括普通的板级(board-level)制作(就是目前我在“模拟电路分析”帖子里提到晶体管放大电路和PCB这类东西)、数字电路、DSP等,工具这个东西还是趋向于功能整合化,将凡是涉及电路设计方面的都纳入到软件里。
但下面的内容我介绍的都是linux下的EDA软件,由于大多是开源的,有的也有windows版本,可以作为学习工具。 第一个要介绍的是gEDA,我在“模拟电路分析”帖子里提到的。
要注意,gEDA并不是linux下最好的EDA软件,比它好用的我在后面会一一介绍。把它放在第一位的原因是:它linux下的典型SPICE,被拆分为若干程序,通过这些程序的划分,我们能比较清楚得了解SPICE的机制。很多国外的电路教程里都是直接使用SPICE的命令行和配图来讲解电路分析的,比如附图1是一个低通滤波器的原理图,附图2是它的SPICE格式表示。
在linux(我用的是Fedora13)下安装完gEDA套件后,会在主菜单中显示安装的套件项。主要是:
Circut and PCB design,里面包括:gEDA Attribute Editor、gEDA Schematic Editor、PCB Designer
Circut Simulation,里面包括:Analog Waveform Viewer、Spice Simulation Frontend
在电路分析中我们最常打开的软件是gEDA Schematic Editor和Spice Simulation Frontend,其它的软件大多是被动调用,还有的运行在后台根本没有图形界面。
gEDA Schematic Editor用来绘制电路,标注元件参数(gEDA Attribute Editor虽然是专门用来标注元件参数的,但很不好用,基本上是个摆设)
Spice Simulation Frontend是用来打开已绘制好的电路,并根据设定条件作模拟分析,分析的结果会调用Analog Waveform Viewer来显示 gEDA Schematic Editor
这个东西很简单,一般只要用两个功能:
1、选择元件(Component),放到图上
2、用导线(Net)将元件串起来
3、其它功能大家可以自己动手试试
附件一是选择元件和导线的工具栏
元件栏被分为很多类型(附图2),通常我这里只用三个栏位:
Basic devices:选择电阻、电容、电感
Power rails:选择接地(切记,gEDA的电路中是一定要有接地的,否则netlist都无法生成)
Spice simulation elements:选择晶体管、电源和信号源
元件添加后,鼠标双击元件,可以打开属性窗口(附图3),修改参数,一般电阻、电容、电感线圈、电源、信号源等基本元件都只要添加和修改属性中的value,它们分别对应:
电阻:阻值,单位是欧姆
电容:容值,单位是法
电感线圈:电感,单位是亨
电源:直流恒压电源和交流恒压源是伏特,直流恒流源和交流恒流源是安培
信号源:和电源类似,但交流信号源还强调频率和相位差
对于晶体管类元件,要添加和修改的属性有两个(附图4):
model-name:指明元件型号,这个型号必须参考SPICE的元件库,我在这里附上了一个自己作的元件库repository.txt(gEDA是不自带元件库的,主要原因是电子器件产商没有向这个开源项目提供,而其它的像multisim都是其公司从元件商那里花钱购买的元件库参数)
file:元件库文件的全路径
添加完元件后,用导线将它们联起来,双击导线可以修改导线的标题,这个标题很重要。在multisim中,测量某个点的电压、电流值时,通常是在原理图上添加电压、电流表和示波器,并指定将这些测量仪器接在哪根导线上。NG-SPICE里是不用这个过程的,直接在元件和导线列表中选择要测哪个元件或者哪根导线的电压或电流值,而导线在未注明标题时,它们会被SPICE生成器自动分配1、2、3这样的数字,不方便我们分析,所以添加标题后我们能明确要观察的点。
[ Edited byRoamvalley on 2010-7-17 16:08 ] Spice Simulation Frontend
gEDA Schematic Editor(简称gschem)画好电路原理图后,保存的文件为sch格式,这个格式并不通用,为gschem专有。
用Spice Simulation Frontend(简称ngspice)打开后,可以转化为netlist,ngspice会在sch的同目录自动生成一个netlist文件,后缀是ckt,大家可以在文本模式下查看它的内容。
spice本身是有命令行的,ckt其实就是命令行的内容。
附图是ngspice的主体界面和使用示意 Analog Waveform Viewer
在ngspice里打开示波器后,可以选择要观察的各元件、导线波形 通过手机上网,发帖乱码。现在改一下。
[ Edited byls400 on 2010-7-17 21:23 ] 我做时的步骤:gschem-->grnum-->gnetlist-->gspiceui
做好后的sch文件用gspiceui打开无法自动转换。
[ Edited byls400 on 2010-7-17 21:27 ] 1、打开一个命令行终端,运行一下这个命令:
ngspice
看看是不是能正常运行。
2、你把三极管的file属性删除,看看是不是因为repository.mod文件的格式有错,导致ngspice解析bb.sch文件出错。
3、你的系统现在默认的文字编码是什么?使用这个命令行:
export|grep -i LANG
看看是不是utf8
回复 #7 ls400 的帖子
你是用命令行先生成了netlist文件再用ngspice打开的?不是直接在ngspice里打开bb.sch?你的bb.sch我打开了,是好的,附件上是我的,但要注意修改三极管的file属性,否则ngspice打开会报错。 gnetlist -g spice-sdb -o aa.net aa.sch
这个命令应该是不要手动运行的,ngspice在打开bb.sch文件后,选择运行模拟器,就会自动生成这个netlist,名称应该是bb.ckt Posted by ls400 on 2010-7-17 20:45 http://www.ibmnb.com/images/common/back.gif
我做时的步骤:gschem-->grnum-->gnetlist-->gspiceui
做好后的sch文件用gspiceui打开无法自动转换。
[ Edited byls400 on 2010-7-17 21:27 ]
用gspiceui直接打开sch后,把界面发我看看,并且有没有什么错误提示信息? 第二个要介绍的是Qucs
这个软件适合板级(Board level)的电子电路实验,它同gEDA的最大区别在于:
1、单一的软件,不像gEDA分成若干个程序,使用者无须考虑在不同程序间互相传递文件,避免了很多使用上的问题,
2、有默认的元件属性,gEDA没有为非线性元件(主要是晶体管)提供默认参数,导致初次使用时就要自己添加元件库,很多人在这个阶段就因为找不到元件库放弃了gEDA
所以它比gEDA好用,但距离multisim之类的软件还有很大差距。 Qucs的文件结构
Qucs是以项目(Project)的方式组织所有文件的,一个项目里包含了主要以下文件:
1、电路图软件Schematics
2、输出图形Data Display
3、输出数据集Datasets
下面我用一个低通无源滤波的例子来演示Qucs的使用过程。(虽然Qucs支持VHDL和Verilog,但这里不说明了)
这个例子取自http://www.allaboutcircuits.com/vol_2/chpt_8/2.html
A、创建项目,取名叫Low-pass,见附图lowpass
B、项目创建好后,Qucs会创建一个框架目录,并默认新建一个空的schema文件,见附图lowpass2
C、选择component栏,从这里可以选择各类元件,件附图lowpass3这里我们主要使用的有:
Lumped components:基本元件,包括电阻、电容、电感、接地等等
Sources:各种电源、信号源
Simulations:模拟类型,不同于gEDA,Qucs把模拟类型也当作了一个元件
Diagrams:输出图形,有好多种电子电路中常用的图示法
D、根据低通无源滤波电路,创建了原理图,附图lowpass4
[ Edited byRoamvalley on 2010-7-18 11:08 ] E、开始模拟,见附图lowpass5,此时qucs会打开一个空界面,原因是我们还没有设置输出的表现形式
F、从component栏里打开diagrams元件类型,选择我们熟悉的笛卡尔坐标系,标注要观察的点:output,见附图lowpass6
G、最后输出的图形,见lowpass7
[ Edited byRoamvalley on 2010-7-18 11:18 ] 这张图是针对第12楼的放大电路模拟后,获得的输出图形 Qucs的元件库
这点很重要,gEDA没有元件库,所以每次要模拟新的晶体管时,都必须到网上搜寻,很麻烦。
目前Qucs的元件我没数过,大致翻了一下,应该不下千种元件。附图1是打开元件库,附图二是使用元件库里的BJT设置了一个平衡输出电路,附图三是这个电路的模拟结果。 mark,有空时好好拜读。 mark一下 如此好贴,放在这里真是有点浪费了 好贴子,可惜插图都看不见了 没有别的eda软件了? 这么好的帖子插图居然被吃了,看不了图哦。。。 网上这种教程很少啊,谢谢楼主了!
页:
[1]