模拟电路的仿真.docx
《模拟电路的仿真.docx》由会员分享,可在线阅读,更多相关《模拟电路的仿真.docx(24页珍藏版)》请在冰豆网上搜索。
模拟电路的仿真
文档标识
模拟电路的仿真
版本
v1.0
文档类别
设计部内部资料
完成日期
2003年7月24日
文档状态
修改中、已完成
制作人
冯翰雪
文档编号
培-001
备注
模拟电路的仿真
北京中科微电子技术有限公司·设计部
2003年7月
摘要:
本文介绍了模拟电路仿真的一些基本概念和Cadence的模拟仿真环境。
排版约定
楷体,无衬线字体(楷体,Sans-Serif)
第一次出现的术语。
软件名称。
宋体,等宽字体(宋体,constant-width):
用于例子和普通文本,显示Unix命令,各种代码、文本文件内容等。
粗体等宽字体表示用户输入的Unix命令
1模拟电路仿真基础
1.1模拟分析类型
为了便于分析电路的特性,电路在不同条件下有不同的近似模型。
最为典型的例子就是MOS管的大信号模型和小信号模型:
大信号模型用于分析计算电路的直流工作点、偏置等;小信号模型用于分析电路的频率响应、开环增益等等。
在模拟电路仿真中,也有类似的区分,称为“分析类型”。
不同的分析类型使用不同的近似模型,用于分析电路不同方面的特性。
常见的分析类型有以下几种。
1.1.1直流分析(dc)
直流分析用于确定电路的直流工作点,例如运放偏置电路产生的偏置电流、电压。
做直流分析时认为电容断路、电感短路。
在交流分析、瞬态分析之前自动进行直流分析。
直流分析也可通过扫描某个参数来分析电路的直流传输特性,被扫描的参数可以是电压、电流、频率、温度、元件参数、模型参数等等。
例如,扫描温度参数可以分析电路的温度特性;扫描MOS管栅极电压可以画出MOS的VGS-ID曲线。
1.1.2交流分析(ac)
交流分析主要用于分析电路的频率响应,例如用交流分析可以画出运放的幅频响应曲线、相频响应曲线,计算开环增益、相位裕度等等。
交流分析时,使用器件在直流工作点附近的线性的交流小信号模型进行计算,电路的激励是正弦交流小信号。
交流分析也可以在某一个频率上扫描电路的某个参数,例如分析运放在低频时开环增益随温度的变化。
被扫描的参数可以是频率、温度、元件参数、模型参数等等。
如果被扫描的参数会改变电路的直流工作点,则重新计算直流工作点。
1.1.3瞬态分析(tran)
瞬态分析主要用于分析电路的实时响应。
瞬态分析计算从开始时间到结束时间内电路中各个节点、元件的电压、电流等随时间的变化情况。
如果没有指定初始条件,则使用电路的直流工作点。
1.1.4其他分析类型
以上三类分析是最常用的分析类型。
除此之外,仿真工具还支持很多其他类型的分析。
例如CadenceSpectre还有以下分析类型。
具体说明请参考SpectreReference
●NoiseAnalysis(noise)
●PeriodicSteady-StateAnalysis(pss)
●S-ParameterAnalysis(sp)
●Time-DomainReflectometerAnalysis(tdr)
●TransferFunctionAnalysis(xf)
1.2仿真环境
Cadence的电路仿真工具是Spectre,如图一所示。
其功能类似与SPICE,但具体语法、器件模型等方面有所不同。
Spectre是一个命令行工具,如图一所示。
图一、电路仿真工具——Spectre
电路按照Spectre规定的语法进行描述,这个描述称为网表(netlist)。
网表中还包含描述输入激励、分析类型、选项控制、结果记录等内容的语句。
Spectre程序以网表文件作为输入,根据网表指定的方式进行电路仿真、记录结果。
下面是一个反相器网表的例子。
*#FILENAME:
V2_A_INV1
*schematic/netlist/V2_A_INV1.C.raw
*NetlistoutputforspectreS.
*GeneratedonJul2421:
59:
272003
*globalnetdefinitions
.GLOBALvdd\!
simulatorlang=spectre
*Filename:
motorlib_V2_A_INV1_schematic.s.
*Subcircuitforcell:
V2_A_INV1.
*Generatedfor:
spectreS.
*GeneratedonJul2421:
59:
272003.
m1(zni00)nmosw=3.6e-6l=1.2e-6m=1.0
m0(znivdd\!
vdd\!
)hp0nsw=12e-6l=1.2e-6m=1.0
图二、一个反相器的Spectre网表
网表可以手工编写。
但更方便快捷的方法是用Composer绘制电路原理图(如图三所示),然后用工具自动生成网表。
为了从电路原理图产生符合Spectre语法的网表,要求电路原理图中只使用analogLib库中的元件。
图三、电路图输入工具——Composer
仿真结果可以用ResultsBrowserh,Waveform等工具进行查看。
后者(如图四)可以直接绘制出输出波形。
Cadence还提供了Caculator,帮助设计者对仿真结果进一步分析。
图四、仿真结果查看工具——Waveform
图五、仿真结果计算工具——Calculator
Cadence为模拟、数模混合仿真设计了一个集成开发环境:
AnalogArtist,如图六所示。
在AnalogArtist中可以完成编辑电路原理图,生成网表,设置分析类型,观测波形等等整个模拟电路仿真流程。
图六、模拟电路集成开发环境——AnalogArtist
1.3analogLib
前面提到模拟电路原理图中只能使用analogLib库中的元件。
如图七所示,analogLib库中的元件基本上与Spectre中的器件一一对应,并且可以直接在Composer中设置各个元件的参数。
在用Spectre进行电路仿真时,建议使用单元的spectre和spectreS视图。
常用元件列与下表。
单元名
说明
主要参数
res
电阻
阻值
cap
电容
电容值、初值
ind
电感
电感值、初值
nmos4
NMOS管
模型名、宽、长、倍数
pmos4
PMOS管
模型名、宽、长、倍数
diode
二极管
模型名、结面积、倍数
gnd
地线符号
vdd
电源符号
图七、analogLib
模拟电路必须考虑MOS管的衬偏效应。
因此在电路原理图中要求所有MOS管的衬底有明确的连接,也即必须使用analogLib库中的四端元件nmos4和pmos4,如下图所示:
图八、nmos4,pmos4
rr1(v_rc0)resistorr=10e3m=1.0
图九是电阻R1的属性,在这里可以直接设置电阻的阻值(Resistance)、模型名(Modelname)等等参数。
从电路原理图生成Spectre网表时,就会自动生成如下Spectre语句来描述这个电阻:
图九、电阻的属性对话框
除了基本元器件外,analogLib中还包含了各种电流、电压源,它们常被用作电路的输入激励。
常用的电压源列于下表。
另外,将下表中单元名首字母v改成i即是相应功能的电流源。
单元名
说明
主要参数
vdc
直流电压源
直流电压;交流幅度、相位。
(常用作电路电源)
vpulse
脉冲信号源
高低电平电压值、脉冲宽度、脉冲周期
vsin
正弦信号源
幅度、频率、相位、偏置电压
vpwl
分段线性信号源
时间-电压对数目、(时间、电压)
1.4
器件模型
.modelnmosNMOS
+Level=10
+Tref=27.0
+Npeak=4.3007E+16Tox=2.10000E-08Xj=3.00000E-07
+dl=2.00000E-07dw=5.00000007450581E-08
+SatMod=2SubthMod=2
+BulkMod=1
+Vth0=.7030622Phi=.7705066
……
不同工艺的MOS管参数不同,甚至不同尺寸范围的MOS其参数也不同。
通常成熟的工艺线至少会提供MOS模型。
下面是一个模型定义文件的部分内容,它定义了一个模型名称(Modelname)为“nmos”的NMOS管模型。
在模拟电路原理图中,要为每一个MOS管指定一个模型名。
例如,图八中NMOS管的模型名是“nmos”,PMOS管的模型名是“hp0ns”。
这里的模型名称与模型定义文件中定义的名称一致,而不必与模型定义文件名一致。
2
入门指南
下面以仿真一个简单的运放为例,说明模拟电路仿真的步骤。
2.1预备工作
本文假设工作目录为students用户的主目录/export/home/casic/student/,若不同则需做相应修改。
首先建立工作环境。
执行/export/home/casic/training/analogsim/restart脚本,指定工作目录。
注意,restart脚本要求输入完整的绝对路径,并且路径末尾不加“/”。
该脚本把本教程所需的库、模型等文件拷贝到工作目录的anlaogsim子目录下。
然后进入anlaogsim目录启动icfb。
u60a:
/export/home/casic/student/>/export/home/casic/training/analogsim/restart
Pleaseinputwhereyouwanttosetup:
/export/home/casic/student
Pleasewait....
OK
u60a:
/export/home/casic/student/>cdanalogsim
u60a:
/export/home/casic/student/analogsim>ls-F
cds.liblib/libManager.logmodels/restart*simulation/
u60a:
/export/home/casic/student/analogsim>icfb&
命令列表如下,其中粗体部分为用户的输入。
LibarayManager中有四个库,如图七所示。
analogLib,basic,cdsDefTechLib是Cadence的基本参考库。
analogsim库中包含两个单元:
opamp和opamp_tb。
前者是一个简单的运放;后者是该运放的测试电路。
以下所有操作都在analogsim库中进行。
2.2
第一步:
绘制电路图
以只读方式打开analogsim库中的opamp单元的schematic视图,观察其结构。
单击选中PMOS管M1,“Q”键打开它的属性对话框,如下图所示。
图十、M1的属性对话框
从M1的属性对话框中可见,它是analogLib库中的pmos4单元;宽长比是48/2.4;它的模型名是“hp0ns”。
名为“hp0ns”的PMOS管是在models/目录下名为“hp0ns.m”的文件中定义的。
另外,该目录下的“nmos.m”文件定义了NMOS管模型“nmos”。
然后关闭opamp单元的电路图,打开opamp_tb单元的电路图。
opamp_tb单元的电路图中,U1,U2两个单元是前面查看得opamp单元的实例。
U1和电阻构成一个同相比例运放,闭环增益为5倍,它用于演示瞬态分析的方法。
而U2输入差分正弦小信号,用于演示交流分析的方法。
在Composer中可以直接为电路加上输入激励,这些激励用analogLib库中的相关单元源产生。
opamp_tb单元的电路图中已经设置好这些激励元件的参数,可以逐项查看一下以下各项参数。
●V0是analogLib库中的vdc单元,为整个电路供电,其参数仅需设置“DCVolatage”一项,这里设为“5V”。
●V1是analogLib库中的vpwl信号源,用于产生同相比例运放的输入信号。
其参数设置如下图所示。
V1会产生如图十二所示的电压波形。
图十一、V1的参数设置
图十二、V1产生的波形
●V2,V3也是vdc单元,它们为运放U2设置输入偏置、提供差分输入信号。
其中V2的参数设置如下图。
这里设置了“DCVoltage”作为输入偏置电压,在进行交流分析之前,仿真器用该值计算电路的直流静态工作点;而“ACmagnitude”项是交流分析时输入的交流小信号的幅度。
V3除“ACmagnitude”项为“-10mV”外,其余于V2设置相同。
图十三、V2的参数设置
2.3
第二步:
设置仿真环境
执行Composer的菜单命令“Tools->AnalogArtist”即可直接打开集成开发环境AnalogArtist。
所有仿真环境直接在AnalogArtist中设置。
首先选择后端的模拟器。
执行AnalogArtist的菜单命令“Setup->Simulator/Directory/Host...”将出现如图十四所示的对话框。
在该对话框中可以设置:
●Simulator:
这里选用CadenceSpectre作为后台运行的模拟器,选择“spectreS”项。
●ProjectDirectory:
这里指定存放的仿真数据——如电路网表、仿真结果等——的目录。
建议如图设置。
●HostMode:
因为Spectre在本机运行,故选择“local”项。
图十四、设置仿真器、仿真目录
然后执行菜单命令“Setup->Environment...”弹出“EnvironmentOptions”对话框。
这里需要设置“Include/StimulusFileSyntax”和“IncludeFile”两项内容。
如图十五所示。
#include"/export/home/casic/student/analogsim/models/hp0ns.m"
#include"/export/home/casic/student/analogsim/models/nmos.m"
这一步设置主要是为了指定模型文件的路径。
在文件“~/analogsim/models/inc.v”中包含了模型文件——也即nmos.m,hp0ns.m两个文件——的路径(前面“预备工作”中执行的setup.sh脚本即用于自动生成inc.v文件),其内容类似如下:
该文件中的内容将被合并到最终电路网表文件中,传送给Spectre进行仿真。
图十五、设置Include文件
2.4
第三步:
选择分析类型
AnalogArtist中在菜单命令“Analyses->Choose...”弹出的“ChooseAnalyses”对话框中选择分析类型。
各种分析类型最下方都有一个“Enabled”选项:
,选中后即进行相应的分析。
下面仅以瞬态分析和交流分析为例。
一般情况下,瞬态分析仅需设置结束时间(StopTime)一个参数,如图十六所示。
然后选中“Enabled”选项即可。
图十六、设置瞬态分析
交流分析的设置如图十七所示。
为了绘出运放的频率响应,选择扫描变量(SweepVariable)为“Frequency”,然后设置扫描范围10~500MHz,最后选中“Enabled”选项。
图十七、设置交流分析
2.5
第四步:
指定观测数据
使用“Outputs”菜单下的命令选择观测数据,如图十八所示。
图十八、AnalogArtist的Outputs菜单
首先我们进行瞬态分析仿真,观测运放U1的输入信号Vin和输出Vout,并作出同相比例运放的输入-闭环增益曲线。
执行“Outputs->ToBePlotted->SelectOnSchematic”命令,AnalogArtist自动把电路图抬到前台,这时用鼠标点击电路图中的线网则观测该线网上的电压,点击元件的端口则观测该端口流过的电流(如图十九所示)。
图十九、观测端口电流
这里仅需点击一下“Vin”和“Vout”两个线网。
选择完毕以后按“Esc”键退出命令。
“ToBePlotted”命令将把选中数据的仿真波形直接显示到Waveform中。
然后选择交流分析所需的数据,观测U2的频率响应,绘制幅频响应和相频响应。
执行“Outputs->ToBeSaved->SelectOnSchematic”命令,单击电路图中线网“V+”“V-”“Vac”。
因为不需直接绘出这三个信号的仿真波形,所以只用“ToBeSaved”命令保存仿真结果。
所有被选择的观测数据列于AnalogArtist的Outputs栏内,如下图所示。
图二十、AnalogArtist的Output栏
2.6第五步:
瞬态分析仿真
至此可以运行仿真了。
首先只进行瞬态分析:
选中图十六中的“Enabled”选项,不选中图十七中的“Enabled”选项。
AnalogArtist的Analyses栏如图二十一所示。
图二十一、AnalogArtist的Analyses栏
然后执行菜单命令“Simulation->Run”,在icfb的信息窗口会显示仿真过程信息,仿真完成后icfb显示类似于图二十二。
图二十二、仿真结束后ICFB的显示
AnalogArtist会自动弹出Waveform窗口,绘制前面“ToBePlotted”命令选择的数据的仿真波形,如图二十三所示。
图二十三、瞬态分析的仿真波形
为了得到同相比例运放的增益曲线,需要使用Calculator工具(如图五所示)。
执行AnalogArtist菜单命令“Tools->Calculator”打开Calculator。
首先执行一下Calculator的菜单命令“Options->SetAlgebraic”,该命令将表达式格式设置成代数形式,Calculator默认使用RPN(ReversePolishNotation)表达式。
然后在Calculator上方的输入框中输入:
VT("/Vout")/VT("/Vin")。
其含义是瞬态分析电压值Vout和Vin之比随时间的变化关系。
最后单击Calculator的
按钮(eraseplot),在Waveform中绘制上述表达式的波形。
结果如图二十四所示。
图二十四、运放闭环增益
2.7第六步:
交流分析仿真
下面仿真运放的频率响应。
设置只进行交流分析,AnalogArtist的Analyses栏如下所示。
图二十五、AnalogArtist的Analyses栏
然后选择AnalogArtist菜单命令“Simulation->Run”运行仿真。
待仿真完成后打开Calculator,输入如下表达式:
dB20(VF("/Vac")/(VF("/V-")-VF("/V+")))。
该表达式的含义是交流分析电压值Vac与差分输入(V--V+)之比(取分贝值)随频率的变化关系,最后单击Calculator的“erplot”按钮,即可绘制出运放的频率响应的波特图,如图二十六所示。
图二十六、运放的幅频响应
同样,绘制表达式phase(VF("/Vac"))-phase(VF("/V+")-VF("/V-"))的波形即可得到运放的相频特性。
如所示。
图二十七、运放的相频响应
3
小结
本教程中,我们介绍了模拟仿真的基本概念,包括分析类型、Cadence的相关工具、analogLib库等等。
并以分析运放的闭环增益和频率响应为例,介绍了模拟仿真的流程。
关于模拟仿真进一步的知识,可以参考以下文档。
Openbook中的模拟电路设计相关文档
AnalogArtistSimulationHelp
AnalogArtistMicrowaveDesignHelp
AnalogArtistMixed-SignalSimulationHelp
AnalogArtistParametricAnalysisHelp
AnalogArtistSubstrateCouplingAnalysis(SCA)Help
AnalogArtistSKILLFunctionsReference
AnalogArtistTutorial:
SwitchedCapacitorDesign
AnalogExpressionLanguageReference
CadenceSPICEReference
ComponentDescriptionFormatUserGuide
FunctionalBlockLibraryReference
HSPICE/SPICEInterfaceandSPICE2G.6Reference
SpectreReference
SpectreUserGuide
SpectreHDLReference
SpectreRFHelp
SwitchedCapacitorDesignSystemHelp
Verilog-AReference
4
高级话题
●数模混合仿真
●NetlistforHspice
●高级分析类型
●寄生参数分析
●MonteCarlo分析
●优化