3、激励源设计:脉冲源、分段线性源、正弦源的参数设置与实际波形生成
做电路仿真,说白了就是给电路“喂信号”,看它怎么反应。激励源就是那个喂信号的手。我见过不少新手,电路搭得挺漂亮,结果激励源参数设错了,仿真出来的波形完全不是那么回事。
今天咱们就把三种最常用的激励源——脉冲源(PULSE)、分段线性源(PWL)和正弦源(SINE)——的参数设置和波形生成彻底聊透。
核心观点:激励源参数的本质,是用数学表达式去描述一个随时间变化的电压或电流波形。你描述得越精确,仿真结果就越可信。
3.1 脉冲源(PULSE)—— 数字世界的节拍器
脉冲源是我用得最多的激励源,没有之一。做数字电路、开关电源、时钟树分析,都离不开它。
它的参数列表长这样:
PULSE(V1 V2 TD TR TF PW PER)
每个参数的含义,我列个表:
| 参数 | 含义 | 典型值 | 注意 |
|---|---|---|---|
| V1 | 低电平电压 | 0V | 可以是负值 |
| V2 | 高电平电压 | 5V / 3.3V / 1.8V | 与电路逻辑电平匹配 |
| TD | 延迟时间 | 0s / 10ns | 让波形从某个时刻才开始跳变 |
| TR | 上升时间 | 1ns | 实际电路不可能瞬间跳变 |
| TF | 下降时间 | 1ns | 通常 TR = TF |
| PW | 脉冲宽度 | 50ns | 高电平持续的时间 |
| PER | 周期 | 100ns | 必须 ≥ PW + TR + TF |
我的习惯:做时钟仿真时,我会把 TR 和 TF 设为周期的 1/10 左右。太陡了仿真容易不收敛,太缓了又不像数字信号。折中一下,刚刚好。
举个例子,生成一个 10MHz 的时钟:
PULSE(0 3.3 0 1n 1n 48n 100n)
这个波形什么样?0V 到 3.3V,延迟 0,上升 1ns,下降 1ns,高电平保持 48ns,周期 100ns。算一下占空比:48/100 = 48%,接近 50%。
注意:PER 必须大于 PW + TR + TF。如果你设 PER = 50ns,PW = 48ns,TR = TF = 1ns,那 PW + TR + TF = 50ns,刚好等于 PER。这时候下一个脉冲的上升沿会紧贴上一个脉冲的下降沿,波形会变成一个三角形波,而不是方波。我刚开始学的时候踩过这个坑。
3.2 分段线性源(PWL)—— 想怎么变就怎么变
有时候你需要一个不规则的波形,比如上电时序、斜坡信号、或者某个芯片手册里给的特定波形。这时候 PWL 就派上用场了。
它的语法很直观:
PWL(t1 v1 t2 v2 t3 v3 ...)
说白了就是给出一系列时间-电压点,仿真器自动在相邻点之间做线性插值。
举个例子,模拟一个芯片上电过程:
PWL(0 0 10u 0 10.1u 3.3 20u 3.3)
这个波形:0~10μs 保持 0V,10μs 到 10.1μs 这 100ns 内从 0V 线性上升到 3.3V,然后保持 3.3V 到 20μs。
我曾经在项目中用 PWL 模拟过一个传感器的输出信号。那个传感器的输出波形手册上给了 20 个采样点,我一个个敲进去,仿真结果和实测几乎一模一样。那一刻的感觉,嗯,很爽。
小技巧:很多仿真器支持 PWL 文件导入。你可以把波形数据存成 .txt 或 .csv 文件,然后用 PWL FILE="waveform.txt" 的方式加载。这样就不用手敲几十个点了。
PWL 还有一个变体——重复模式。有些仿真器支持 PWL REPEAT FOREVER ... ENDREPEAT 这样的语法,可以让一段波形无限循环。适合做周期性不规则信号。
3.3 正弦源(SINE)—— 交流分析的灵魂
做交流小信号分析、滤波器测试、振荡器仿真,正弦源是标配。
它的参数格式:
SINE(VOFF VAMPL FREQ TD PHASE DF)
参数说明:
| 参数 | 含义 | 典型值 |
|---|---|---|
| VOFF | 直流偏置电压 | 0V / 1.65V |
| VAMPL | 交流幅度(峰值) | 1V / 0.1V |
| FREQ | 频率 | 1kHz / 1MHz |
| TD | 延迟时间 | 0s |
| PHASE | 初始相位(度) | 0° / 90° |
| DF | 阻尼因子 | 0(无衰减) |
举个例子,生成一个 1kHz、幅度 1V、偏置 0V 的正弦波:
SINE(0 1 1k 0 0 0)
这个波形就是标准的 sin(2π·1000·t),从 0 开始,峰值 ±1V。
关键区别:VAMPL 是峰值,不是峰峰值。如果你想要一个从 -1V 到 +1V 的正弦波,VAMPL 设 1V,VOFF 设 0V。如果你想要 0V 到 2V 的正弦波,VAMPL 设 1V,VOFF 设 1V。
阻尼因子 DF 是个有意思的参数。当 DF > 0 时,正弦波的幅度会随时间指数衰减:
SINE(0 1 1k 0 0 100)
这个波形会是一个衰减的正弦振荡,像极了 LC 谐振回路在初始激励后的自由振荡。我在做电源完整性仿真时,经常用这个来模拟电源轨上的振铃现象。
注意:做 .TRAN 瞬态分析时,如果你只关心稳态响应,可以把 TD 设大一点,比如 TD=10ms,让仿真跳过初始的建立过程。或者干脆用 SKIPBP 选项跳过偏置点计算。不然你会看到前面一大段波形都是乱的。
3.4 三种激励源的选择策略
你可能会问:什么时候用哪个?我总结了一张表:
| 场景 | 推荐激励源 | 原因 |
|---|---|---|
| 数字时钟 / 开关信号 | PULSE | 参数少,直观,占空比可调 |
| 上电时序 / 自定义波形 | PWL | 任意形状,灵活度高 |
| 交流小信号 / 滤波器测试 | SINE | 频率和幅度精确可控 |
| 振荡器起振 / 阻尼振荡 | SINE + DF | 阻尼因子模拟真实衰减 |
| 复杂数字协议(I2C / SPI) | PWL 文件导入 | 从逻辑分析仪导出数据直接仿真 |
嗯,其实没有绝对的“最佳选择”。我个人的做法是:能用 PULSE 解决的绝不用 PWL,因为 PULSE 参数少、不容易出错。但遇到复杂波形,PWL 就是救星。
最后说一句:不管用哪种激励源,仿真之前一定要先看一眼波形。大多数仿真器都支持在运行瞬态分析前预览激励源波形。花 10 秒钟看一眼,能省你后面 10 分钟排查问题的时间。这个习惯,我吃了好几次亏才养成的。