...wd...PSpice模型创立PSpice模型是对电路元器件的数学描述,是进展电路仿真分析的前提条件,它的精度和速度直接影响电路分析结果的准确度和仿真速度因此,在进展PSpice仿真之前,需要有相应元器件的适当PSpice模型,如适宜的直流模型、交流小信号模型、瞬态分析模型、噪声模型、温度模型等等在电路设计的过程中,如果直接调用软件自带模型库中的元件模型参数,不一定能够满足各种不同的实际设计需要,这时就需要修改元件模型参数此外,对于新创立的元件,则需要用户自己设置适当的PSpice模型参数一、 PSpice模型参数的修改PSpice模型修改比拟简单:可以直接选择元件,然后右击选择Edit PSpice model,即可翻开PSpice模型编辑器,编辑所需修改的参数,存盘即可其中:Models List栏用以显示模型名称;Simulation Parameters栏用以修改设置模型参数;Model Text栏用以显示模型描述语言,当然这里只能读取,不可以在此进展编辑二、 PSpice模型的创立为了满足具体设计需要,设计者往往需要创立自己的元件库,要进展PSpice仿真,就必须对新建元件进展模型设置,新建模型,有两种主要方式:1、Model Editor模型编辑 〔1〕执行Cadence/Release 16.3/PSpice Accessories/Model Editor命令,进入模型编辑器界面,执行File/New命令,如以以下图: 〔2〕点击符号,弹出新建模型的New Model对话框,如以以下图:在该对话框中选择设置,Model Name填写模型名称;选择Use Device Characteristic Curves表示用硬件的典型曲线来描述模型;选择Use Templates表示用软件自带样本进展参数的修改设置;From Model用以选择模型类型。
选择Use Device Characteristic Curves,再确定模型,点击OK即可进入模型编辑器窗口,其中可以设置元件的所有相关仿真参数设定,编辑器会以曲线形式将参数设定后的模型特性实时显示出来‘ 其中Reverse Leakage栏,用以设置曲线特定点的对应X、Y值;曲线显示区可以实时显示电压、电流等模型典型特性曲线;Parameters栏用以编辑模型特定参数范围 〔3〕完成模型参数设置后,保存,而后执行File/Model Import Wizard〔Capture〕弹出Model Import Wizard:Specify Library对话框,输入创立的模型库*.lib文件,输出模型*.olb文件,即为所创立的模型自动分配模型的Capture符号,便于原理图绘制仿真 〔4〕回到Capture原理图中,调用刚刚创立的*.olb库文件,即可调用新建的元件PSpice模型,如以以下图: 〔5〕此后假设想对该元件进展参数修改,即可直接右击选择Edit PSpice Model命令,即可进入模型编辑器中进展参数调整2、 模型文本编辑 元器件模型参数还可以采用文本形式进展编辑设置,即直接将模型参数从键盘输入,新建文本文件,用以下描述语言输入元件模型参数:* 0627 D model.MODEL 0627 D+ IS=1.0000E-15+ RS=1.0000E-3+ CJO=1.0000E-12+ M=.3333+ VJ=.75+ ISR=100.00E-12+ BV=100+ IBV=100.00E-6+ TT=5.0000E-9模型参数描述文本设置完成后,保存为*.lib文件格式即可,然后再在Model Editor中可以可以将该文件分配到Capture元件库文件*.olb,就可以进展模型调用了。
三、 PSpice宏模型的创立随着集成技术的开展,集成电路规模越来越大,集成度越来越高,芯片中的底层元件越来越多,分析软件受现实因素限制,进展晶体管级的大规模电路仿真分析是很不现实的,因此宏模型应运而生宏模型是指在一定精度范围内,电子系统的端口输入输出特性的简化等效模型,可以是一组等效电路、数学函数或一张数据表格,大大简化了原电路复杂度,加快了电路仿真分析计算的速度由于电路不同的等效模型,不同的宏模型由此产生:电路简化宏模型、电路特性宏模型、表格特性宏模型以及数学函数宏模型等,其中PSpice仿真支持行为级宏模型、数学宏模型和表格宏模型1、 行为级宏模型创立行为级宏建模即电路模拟行为建模〔ABM〕,经常采用的是字电路形式来描述,例如执行Edit PSpice Model即可对芯片编辑宏模型,以下为74AS168芯片的行为级宏模型,:*---------* 74AS168 Synchronous 4-bit Up/Down Decade Counters** The ALS/AS Data Book, 1986, TI* JSW 7/27/92 Remodeled using LOGICEXP, PINDLY, & CONSTRAINT devices*.SUBCKT 74AS168 CLK_I U/DBAR_I ENPBAR_I ENTBAR_I LOADBAR_I+ A_I B_I C_I D_I QA_O QB_O QC_O QD_O RCOBAR_O+ OPTIONAL: DPWR=$G_DPWR DGND=$G_DGND+ PARAMS: MNTYMXDLY=0 IO_LEVEL=0*UAS168LOG LOGICEXP(17,15) DPWR DGND+ CLK_I U/DBAR_I ENPBAR_I ENTBAR_I LOADBAR_I A_I B_I C_I D_I+ QA QB QC QD QABAR QBBAR QCBAR QDBAR+ CLK U/DBAR ENPBAR ENTBAR LOADBAR A B C D RCOBAR DA DB DC DD EN+ D0_GATE IO_AS00 IO_LEVEL={IO_LEVEL}+ LOGIC:+ CLK = { CLK_I }+ ENPBAR = { ENPBAR_I }+ ENTBAR = { ENTBAR_I }+ U/DBAR = { U/DBAR_I }+ LOADBAR = { LOADBAR_I }+ A = { A_I }+ B = { B_I }+ C = { C_I }+ D = { D_I }+ UD = { ~U/DBAR }+ LOAD = { ~LOADBAR }+ EN = { ~ENTBAR & ~ENPBAR & LOADBAR }+ IA4 = { ~((QABAR & U/DBAR) | (QA & UD)) }+ IB4 = { ~((QBBAR & U/DBAR) | (QB & UD)) }+ IC4 = { ~((QCBAR & U/DBAR) | (QC & UD)) }+ ID4 = { ~((QDBAR & U/DBAR) | (QD & UD)) }+ IB5 = { ~(U/DBAR & ID4) }+ IC5 = { ~(QCBAR & UD & QDBAR) }+ IA1 = { A & LOAD }+ IA2 = { EN ^ ( LOADBAR & QA) }+ IB1 = { B & LOAD }+ IB2 = { ~(EN & IA4) & LOADBAR & QB }+ IB3 = { IA4 & EN & IC5 & IB5 & QBBAR }+ IC1 = { C & LOAD }+ IC2 = { ~(EN & IA4 & IB4) & LOADBAR & QC }+ IC3 = { ~(QC & LOADBAR) & EN & IA4 & IB4 & IC5 }+ ID1 = { D & LOAD }+ ID2 = { ~(EN & IA4) & LOADBAR & QD }+ ID3 = { ~(QD & LOADBAR) & EN & IA4 & IB4 & IC4 }+ DA = { IA1 | IA2 }+ DB = { IB1 | IB2 | IB3 }+ DC = { IC1 | IC2 | IC3 }+ DD = { ID1 | ID2 | ID3 }+ RCOBAR = { ~((U/DBAR & IA4 & ID4 & ~ENTBAR) | (~ENTBAR & UD &+ IA4 & IB4 & IC4 & ID4)) }*UDFF DFF(4) DPWR DGND $D_HI $D_HI CLK DA DB DC DD+ QA QB QC QD QABAR QBBAR QCBAR QDBAR D0_EFF IO_AS00*UAS168DLY PINDLY (5,0,10) DPWR DGND+ RCOBAR QA QB QC QD+ CLK ENPBAR ENTBAR U/DBAR LOADBAR A B C D EN+ RCOBAR_O QA_O QB_O QC_O QD_O+ IO_AS00+ MNTYMXDLY = {MNTYMXDLY} IO_LEVEL = {IO_LEVEL}+ BOOLEAN:+ CLOCK = { CHANGED_LH(CLK,0) }+ CNTENT = { CHANGED(ENTBAR,0) }+ PINDLY:+ RCOBAR_O = {+ CASE(+ CNTENT, DELAY(1.5NS,-1,9NS),+ CHANGED(U/DBAR,0) & TRN_LH, DELAY(2NS,-1,12NS),+ CHANGED(U/DBAR,0) & TRN_HL, DELAY(2NS,-1,13NS),+ CLOCK & TRN_HL, DELAY(2NS,-1,13NS),+ CLOCK & TRN_LH, DELAY(3NS,-1,16.5NS),+ DELAY(3NS,-1,16NS)+ )+ }+ QA_O QB_O QC_O QD_O = {+ CASE(+ CLOCK & TRN_LH, DELAY(1NS,-1,7NS),+ CLOCK & TRN_HL, DELAY(2NS,-1,13NS),+ DELAY(2NS,-1,13NS)+ )+ }+ FREQ:+ NODE = CLK+ MAXFREQ = 75MEG+ WIDTH:+ NODE = CLK+ MIN_LOW = 6.7NS+ MIN_HIGH = 6.7NS+ SETUP_HOLD:+ DATA(4) = A B C D+ CLOCK LH = CLK+ SETUPTIME = 8NS+ WHEN = { LOADBAR!='1 ^ CHANGED(LOADBAR,0) }+ SETUP_HOLD:+ DATA(2) = ENPBAR ENTBAR+ CLOCK LH = CLK+ SETUPTIME = 8NS+ WHEN = { CHANGED(EN,8NS) & (LOADBAR!='0 ^ CHANGED(LOADBAR,0)) }+ SETUP_HOLD:+ DATA(1) = U/DBAR+ CLOCK LH = CLK+ SETUPTIME = 8NS+ WHEN = { EN!='0 ^ CHANGED(EN,0) }+ SETUP_HOLD:+ DATA(1) = LOADBAR + CLOCK LH = CLK+ SETUPTIME = 8NS*.ENDS*行为级宏模型即将子系统内电路以网表的形式描述出来,描述该子系统的内部行为模型子电路。
按照以上语言的描述方式,可以对任意系统进展行为级宏建模注意:输入文件语法还是有比拟严格的标准的简单来说,文件构造是由注释,子电路模型声明,参数声明,函数声明,电路构造声明,完毕声明构成子电路声明必须由关键字.subckt起始,描述子电路名、端口名和顺序;参数声明由.param起始,描述参数名和参数值;函数声明由.func起始,描述函数名和函数解析式;电路构造声明由电路构造关键字C电容,R电阻,E电压源,F电流源,G电导,Q晶体管, D二极管,X子电路等起始,描述元件名、连接节点、元件值完毕声明是关键字.ends要注意每一行不得超过132个char,超过的要用行内连接符+ 移动到下一行去,否则在分析时会报错2、 数学宏模型的创立数学宏模型就是以简单的数学函数来描述电路输入输出之间的关系,而对内部电路如何连接、如何运行不予详细描述例如:低通滤波器数学宏模型可直接用3、 表格宏模型的创立非线性普遍存在于模拟电路中,有时,即使所有元件都是线性的,输入输出之间的关系也可能是非线性的这时可以将电路或元件端口的测试数据制成表格,在仿真分析时,计算机可以直接查询其测量数据,获得复杂元件的特性模拟量,在保证精度的前提下,使计算速度大大加快。
Gtunnel node1 node2 table{V〔node1,node2〕}={〔0,0〕〔0.01,2.153m〕〔0.02,2.973m〕〔0.03,4.567m〕〔0.04,5.155m〕……} 表格宏模型在OrCAD中符号为TABLE,当设置其属性时,按该元件图形符号下方标注的数据对形式,输入各数据对即可建设宏模型时,要注意以下两点:(1) 宏模型是在一定精度范围内准确模拟电路特性;(2) 宏模型的构造应尽量简单、复杂度尽量低四、动态系统仿真 动态系统仿真即利用OrCAD行为级宏模型,将动态系统各个单元〔子系统〕用abm.olb中的模型来表示,通过设置各单元的属性来模拟其特性,再以一定的方式将各单元连接起来,用以完成整个系统的功能模拟 例如以以下图,是传递函数的系统连接,调用abm.olb库中的宏模型,ETABLE为表格宏模型,Elaplace为数学函数模型完成动态系统绘制后,调整各个子系统宏模型的参数设置,就可以对这个动态系统进展仿真了,对于该系统动态系统时域仿真的结果如以以下图 通过观察系统输出波形,则可对系统宏模型参数进展调整,以到达最正确系统。