SPICE编程与仿真学习笔记:从网表到瞬态分析

这篇文章主要整理我在学习 SPICE 仿真过程中的基础知识,包括网表写法、器件模型、常见分析命令以及波形结果的理解。前半部分是对 SPICE 语法和仿真思路的学习记录,后半部分再用一个 CMOS反相器瞬态仿真实验做简单验证,目的是把理论理解和实际操作对应起来。

一.电路分析(电流镜为负载的共源放大器):

1.基本电流镜

电流镜的基本思想是复制参考电流。参考管采用二极管连接,由参考电流建立栅源电压。由于两管工艺参数和栅源电压相同,相除可得 `IOUT / IREF = (W/L)2 / (W/L)1`。因此,器件尺寸之比等于工作电流与参考电流之比;若两管对称,则 `IOUT = IREF`。电流镜常用于给后续支路提供稳定的偏置电流标准。

2.电路结构

网表核心部分是:

复制代码
M1 2 1 0 0 MOSN w=5u l=1.0u
M2 2 3 4 4 MOSP w=5u l=1.0u
M3 3 3 4 4 MOSP w=5u l=1.0u
R1 3 0 100K
Vdd 4 0 DC 5.0

二.程序一:DC 分析

复制代码
Vin 1 0 DC 5.0

.op
.dc vin 0 5 0.1
.plot dc V(2)
.probe
该 DC 程序用于得到放大器的直流传输特性。由于 M1 为共源放大管、M2 为 PMOS 有源负载,因此电路表现为反相特性:输入电压增大时,M1 导通增强,输出电压从高电平逐渐下降到低电平。

三.程序二:AC 分析

复制代码
CL 2 0 5p
Vin 1 0 DC 1.07 AC 1.0

.op
.ac DEC 20 100 100MEG
.plot ac VDB(2) VP(2)
.probe

AC 分析是在直流工作点附近进行的小信号频率响应分析。通过设置输入源的 DC 偏置与 AC 小信号幅值,并用 .ac 命令扫频,可以得到输出增益和相位随频率变化的曲线。低频增益较大,高频由于电容效应增益下降。

说明:

1.Vin 1 0 DC 1.07 sine(2v 2v 100KHz)

(1).这个"1V"不是说真实电路真的在 1.07V 附近上下摆 1V 还保持线性,而是说 在线性化后的"小信号模型"里,把输入信号幅值规定成 1,方便直接读增益。

SPICE 做了两件事:

第一步:求静态工作点

先用 DC 1.07 求出:每个 MOS 的 𝐼𝐷,每个 MOS 的 𝑉𝐺𝑆,电路各节点静态电压

第二步:在该工作点建立"小信号等效模型"

比如对 MOS 管,SPICE 会把它换成:跨导源:𝑔𝑚,𝑣𝑔𝑠,输出电阻:𝑟𝑜,小信号结电容、寄生电容(如果模型里考虑)这时整个电路变成一个线性电路。所以 .ac 分析的本质不是在原非线性曲线上跑大信号,而是:在工作点对应的小信号等效电路上做频域分析。

(2).小信号等效模型,像模电里的三极管等效电路,随便找个图:

(3).ac 理解:求导后再算频响,像电路里的非线性电阻小信号法,。

2.ac DEC 20 100 100MEG

(1)DEC,对数坐标

如果用线性扫频:100Hz 到 100MHz,低频部分会全挤在左边,根本看不清截止频率附近的变化规律,而对数扫频有两个好处:

好处1:宽频范围好画

100Hz~100MHz 跨很多数量级,对数坐标最自然。

好处2:波特图规律清楚

(2)DEC

3..plot ac VDB(2) VP(2)

(1)AC 1.0 ------则直接把输出看成频率响应。

(2)AC analysis ------H(jω)

(3)AC本质------一阶低通反相放大器

四.程序三:TRAN 瞬态分析

复制代码
Vin 1 0 DC 1.07 sine(2v 2v 100KHz)

.op
.tran .1u 10u
.plot tran V(2) V(1)
.probe

TRAN 分析用于观察电路的时域响应。通过给输入端施加正弦信号,并使用 .tran 命令设定仿真时间范围,可以同时观察输入与输出波形。由于该电路是反相结构,并且输入摆幅较大,输出会出现明显非线性甚至近似翻转的现象。

五.实验-用 Tanner 做一个 CMOS 反相器的瞬态验证

实验软件是 Tanner 里的 S-Edit + T-Spice,它就是 SPICE 体系在集成电路设计里的具体工具。

  1. S-Edit 是画电路图的工具。你在里面把晶体管、电阻、电源、输入源摆出来,再给它连线、标节点。

  2. T-Spice 是真正做仿真计算的引擎。它会读 S-Edit 导出的网表,然后根据网表和模型库计算输出。

  3. 和 SPICE 是什么关系

SPICE 是一类电路仿真方法/语言/思想;T-Spice 是这类方法的一个具体实现。你可以直接理解成:

  • SPICE = 规则和语言
  • T-Spice = 按这套规则跑计算的程序

4.S-Edit 是画电路和导网表的前端,T-Spice 是执行 SPICE 仿真的引擎。实验课就是利用这套工具,把电路图转换成网表,再通过仿真验证它的时域或频域行为。

画电路:

导出 SPICE 网表:

打开 T-Spice-加仿真命令-1. 加 VDD 电源(恒定电压)-2. 加 IN 输入脉冲-3. 加瞬态仿真命令-4. 加输出打印:

生成命令代码:

复制代码
* SPICE netlist written by S-Edit Win32 7.03
* Written on May 29, 2026 at 13:46:19

* Waveform probing commands
.probe
.options probefilename="D:\TannerWork\inv\inv.dat"
+ probesdbfile="D:\TannerWork\inv\inv.sdb"
+ probetopmodule="Module0"
.include "D:\Tanner\TSpice70\models\ml2_125.md"
vvdd Vdd Gnd 5
Vin IN Gnd PULSE (0 5 5n 1n 1n 50n 100n)
.tran/op 10n 200n method=bdf
.print tran v(IN) v(OUT)

* Main circuit: Module0
M1 OUT IN Gnd Gnd NMOS L=2u W=22u AD=66p PD=24u AS=66p PS=24u 
M2 OUT IN Vdd Vdd PMOS L=2u W=22u AD=66p PD=24u AS=66p PS=24u
* End of main circuit: Module0
.end

网表详解:

反相器仿真结果:

从仿真结果可以看出,输入信号翻转时,输出端能够实现明显的反相响应,说明 CMOS 反相器的基本逻辑功能正确。输出波形在边沿处存在一定延迟和过渡过程,这与 MOS 管导通/截止切换以及器件寄生参数有关,也说明实际电路并非理想开关模型。

相关推荐
江苏世纪龙科技1 小时前
科鲁兹虚拟系统破解汽车实训“三难“:工位少、组织难、评价弱
学习
小拉达不是臭老鼠1 小时前
Unity数据持久化_Json
学习·unity
.千余2 小时前
【C++】C++核心语法:函数重载与缺省参数原理与避坑
c语言·开发语言·c++·经验分享·笔记·git·学习
段一凡-华北理工大学2 小时前
工业领域的Hadoop架构学习~系列文章03:MapReduce编程模型深度解读
大数据·人工智能·hadoop·学习·架构·高炉炼铁·高炉智能化
元气少女小圆丶2 小时前
SenseGlove Nova 2+Unity开发笔记3
笔记·unity·游戏引擎
bush42 小时前
嵌入式linux学习记录三
学习
霸道流氓气质2 小时前
Spring AI Alibaba 学习路线图:从入门到精通
人工智能·学习·spring
Engineer邓祥浩2 小时前
宏观认知(二):AI项目落地与团队协作——吴恩达《AI for Everyone》Week2学习笔记
人工智能·笔记·学习
中屹指纹浏览器2 小时前
隐性风控:解析指纹浏览器IP与环境参数冲突BUG及全套适配方案
经验分享·笔记