仿真
电路仿真
从原理图的网表运行模拟部分:工作点、交流、瞬态和噪声,运放和二极管根据其数据手册建模,并对结果进行检查。
电路仿真直接从原理图的网表运行模拟部分:每次都会计算工作点,并在规范要求时进行交流扫描、瞬态和噪声分析。无需 PCB 布局,因此它可以回答决定原理图的问题:偏置是否位于正确位置,1 kHz 时的增益是多少,输出在哪里削波,噪声有多大。
开始一个
agentee new sim preamp-ac --kind circuit前置放大器示例 通过所有分析运行 9 V 运算放大器前置放大器。这是其交流和噪声运行,已精简:
name = "preamp-ac"
kind = "circuit"
schematic = "preamp"
record = ["VCC", "VREF", "GAIN_OUT", "FILT_OUT", "OUT"]
[[drives]]
net = "VBAT"
dc = "9V"
[[drives]]
net = "IN"
ac = 1
resistance = "100ohm"
[ac]
from = "1Hz"
to = "1MHz"
points = 20
[noise]
output = "OUT"
input = "IN"
from = "20Hz"
to = "20kHz"
[[checks]]
v = "VREF"
min = 4.1
max = 4.3
[[checks]]
v = "OUT"
at = "1kHz"
min = 18.3
max = 19.3
[[checks]]
noise = "OUT"
at = "1kHz"
max = "500n"
[[blocks]]
ref = "U1"
kind = "opamp"
gain = 1e5
gbw = "0.7MHz"
en = "40n"
vos = "3mV"
headroom_high = "1.5V"
headroom_low = "5mV"agentee sim preamp-ac
agentee render sim:preamp-ac -o preamp-ac.png运行会在规范旁边写入 preamp-ac.result.json,包含每个网络的工作点、每个元件的电流、每个检查及其值,以及记录网络的曲线。查看器和 render 会绘制增益、相位和噪声。
驱动源
只有驱动源能驱动网络,因此为每个电源提供一个。驱动源是到地或到 return 中网络的电压源,串联 resistance。current = true 使其成为电流源,这是前置放大器从电源轨上取走运算放大器静态电流的方式。ac 标记交流和噪声分析的输入。对于瞬态分析,驱动源接受 steps(分段线性)、pulse 或 sine。
地是所有命名为 GND、0V、GROUND 或以 VSS 开头的网络。
分析
- 工作点:始终运行。使用结限制的牛顿迭代法,然后是 gmin 步进,如果无法收敛则使用源步进。
- 交流:
[ac]从from到to扫描,每十倍频程points个点,在工作点处线性化。增益以 dB 表示,相对于ac驱动源。 - 瞬态:
[tran]运行到stop,step为最大步长。它还存储每个记录网络后半部分的频谱。 - 噪声:
[noise]给出output处的密度,以及带有input时的输入参考曲线,加上频带内的均方根值。电阻、结电流、MOSFET 沟道和运算放大器en均会贡献。
检查
检查读取一个数值,并将其保持在 min 和 max 之间。读取的内容取决于 at:
| 检查 | 读取 |
|---|---|
v = "NET" | 工作点处的电压 |
v = "NET",at = "5ms" | 瞬态中的电压 |
v = "NET",at = "1kHz" | 以 dB 为单位的交流增益 |
phase = "NET",at = "1kHz" | 以度为单位的相位 |
noise = "NET",at = "1kHz" | 以 V/rtHz 为单位的噪声密度 |
i = "R1" | 通过两引脚元件的电流,从引脚 1 到引脚 2 |
peak、trough、rms、freq、thd | from 和 to 之间的瞬态 |
检查失败是仿真中的错误。将 1 kHz 检查的上限提高到 min = 19,运行将失败,且在该结果当前有效时,agentee check 会将其报告为错误:
error: ./preamp-ac.sim.toml: preamp-ac result: v(OUT) at 1kHz is 18.7870 dB, wanted 19 to 19.3 dB当规范或原理图的网表更改时,结果会过期:检查会将其标记为过期,并在仿真再次运行前丢弃其失败项,因此在每次更改电路后重新运行仿真。在电路稳定后开始 thd 或 freq 跨度,否则启动步骤会被读取为失真。
模型来自数据手册
每个元件根据其参考字母变为一个元素:R、C 和 L 按值,D 作为二极管,Q 作为 BJT 或 MOSFET,按其引脚名称。连接器、测试点、孔和晶体被排除在外,其他任何内容在具有块或位于 ignore 中之前都是错误。
内置器件是通用占位模型:一个硅二极管、一个小信号 BJT、一个逻辑电平 MOSFET。依赖其中任何一个的结果描述的是占位模型,而不是你的器件。为每个重要器件添加一个 [[blocks]] 条目,并使用其数据手册中的数值:
- 运算放大器是一个单极点模型,参数包括
gain、gbw、rout、vos、en、ib、slew、psrr,以及远离每个电源轨的平滑钳位headroom。双运放或四运放的每个单元都是共享电源轨的独立运算放大器。 - 二极管使用
is和n。根据相隔一个数量级的两个典型 VF 点进行拟合:n = dV / (Vt ln 10),然后is = I / exp(V / (n Vt))。 - BJT 和 MOSFET使用
is、bf、va或vth、k、lambda,以及它们的电容。 - LDO 保持
vout不变,直到输入电压降至dropout范围内,然后跟随输入电压下降。 - 电位器使用 0 到 1 之间的
position,因此滑片的负载和受载情况与真实器件一致。
将数据手册以及每个数值来源的表格放入仿真的 description 中。下一个阅读结果的人(通常是智能体)就能知道结果基于什么。
示例
examples/preamp:基于 LM358 的增益级和 Sallen-Key 滤波器的静态工作点、增益和噪声,开关接通时的低频冲击、削波以及反接电池二极管。examples/ladder-vcf:晶体管梯形滤波器,其仿真验证了三个控制电压下的 1 V/oct 跟踪、谐振峰以及瞬态中的自激振荡。examples/lna:lna-supply检查通过肖特基二极管对两个电源输入进行或运算,lna-biastee检查偏置 tee 允许多少射频信号进入电源。
所有键都在电路参考中。