PSpice模型创建
PSpice模型是对电路元器件的数学描述,是进行电路仿真分析的前提条件,它的精度和速度直接影响电路分析结果的精确度和仿真速度。因此,在进行PSpice仿真之前,需要有相应元器件的适当PSpice模型,如合适的直流模型、交流小信号模型、瞬态分析模型、噪声模型、温度模型等等。
在电路设计的过程中,如果直接调用软件自带模型库中的元件模型参数,不一定能够满足各种不同的实际设计需要,这时就需要修改元件模型参数。此外,对于新创建的元件,则需要用户自己设置适当的PSpice模型参数。
1、PSpice模型参数的修改
PSpice模型修改比较简单:可以直接选择元件,然后右击选择Edit PSpice model,即可打开PSpice模型编辑器,编辑所需修改的参数,存盘即可。
其中:Models List栏用以显示模型名称;Simulation Parameters栏用以修改设置模型参数;Model Text栏用以显示模型描述语言,当然这里只能读取,不可以在此进行编辑。
2、PSpice模型的创建
为了满足具体设计需要,设计者往往需要创建自己的元件库,要进行PSpice仿真,就必须对新建元件进行模型设置,新建模型,有两种主要方式:
1Model 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栏,用以设置曲线特定点的对应XY值;曲线显示区可以实时显示电压、电流等模型典型特性曲线;Parameters栏用以编辑模型特定参数范围。
    3)完成模型参数设置后,保存,而后执行File/Model Import WizardCapture)弹出Model Import WizardSpecify 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,就可以进行模型调用了。
3、PSpice宏模型的创建
随着集成技术的发展,集成电路规模越来越大,集成度越来越高,芯片中的底层元件越来越多,分析软件受现实因素限制,进行晶体管级的大规模电路仿真分析是很不现实的,因此宏模型应运而生。
宏模型是指在一定精度范围内,电子系统的端口输入输出特性的简化等效模型,可以是一组等效电路、数学函数或一张数据表格,大大简化了原电路复杂度,加快了电路仿真分析计算的速度。由于电路不同的等效模型,不同的宏模型由此产生:电路简化宏模型、电路特性宏模型、表格特性宏模型以及数学函数宏模型等,其中PSpice仿真支持行为级宏模型、数学宏模型和表格宏模型。
1、行为级宏模型创建
行为级宏建模即电路模拟行为建模(editor barABM),经常采用的是字电路形式来描述,例如执行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),