仿真
电路仿真
原理图网表的模拟仿真:工作点、交流、瞬态和噪声,包含运放、LDO 和器件模块以及检查。
直接从原理图的网络表进行模拟电路仿真:始终进行工作点分析,并在要求时进行 AC 扫描、瞬态和噪声分析。求解器是带牛顿迭代的改进节点分析(结限制,然后 gmin 步进,然后当工作点无法稳定时源步进),梯形积分,每个断点后向后欧拉法,牛顿失败时步长减半,工作点处的复数 AC,以及伴随方法噪声。agentee new sim NAME --kind circuit(MCP new_item 带 sim_kind = "circuit")写入起始文件。agentee sim NAME 写入 NAME.result.json;查看器绘制瞬态、增益、相位和噪声,旁边是工作点和检查,agentee render NAME 无头绘制相同内容。
name = "lna-supply"
kind = "circuit"
schematic = "lna" # default: the only top-level schematic
ignore = ["D3"] # parts to leave out
record = ["VCC", "LED_A"] # nets in the curves, default every net
# temperature = 27 # deg C, for the noise and the junctions
[[drives]] # only drives drive a net: give every supply one
net = "VEXT"
dc = "5V"
# return = "VNEG" # default ground
# current = true # a current source into `net`, in A
# ac = 1 # the AC and noise input, in V (or A)
# resistance = "50ohm" # in series (in parallel for a current source)
steps = [["0s", "0V"], ["1ms", "0V"], ["2ms", "5V"]] # piecewise linear, for the transient
# pulse = { low = "0V", high = "5V", delay = "1ms", rise = "1us", fall = "1us", width = "1ms", period = "2ms" }
# sine = { offset = "0V", amplitude = "1V", frequency = "1kHz", delay = "0s" }
[ac]
from = "10Hz"
to = "10MHz"
points = 20 # per decade
[tran]
stop = "10ms"
step = "10us" # the largest step
[noise]
output = "OUT"
input = "VIN" # a drive with `ac`: adds the input referred curve
from = "10Hz"
to = "100kHz"
[[checks]]
v = "VCC" # a net voltage at the operating point
min = 4.55
max = 4.85
[[checks]]
i = "R1" # the current through a two-pin part, pin 1 to pin 2
at = "5ms" # a time reads the transient
min = "2mA"
[[checks]]
v = "OUT"
at = "1kHz" # a frequency reads the AC gain in dB against the ac drive
min = 19.5
# phase = "OUT" # degrees at a frequency
# noise = "OUT" # V/rtHz at a frequency, at the [noise] output
[[checks]]
thd = "OUT" # over the transient: peak, trough, rms, freq or thd
from = "2ms" # the span read, default the whole transient
# to = "10ms"
max = "1%"
# peak = "OUT" # highest voltage in the span; trough is the lowest
# rms = "OUT" # RMS about the span's mean, V
# freq = "OUT" # from the rising crossings of the mean, Hz
[[blocks]] # a model for a part, by `ref` or by `value` (every such part)
ref = "U1"
kind = "opamp"
gain = 1e5
gbw = "1MHz"
# rout = "10ohm"
# vos = "0V"
# en = "10n" # input voltage noise, V/rtHz
# headroom = "0.1V" # how close the output swings to its rails
# headroom_high = "1.5V" # per rail, default `headroom`
# headroom_low = "5mV"
# slew = "0.3V/us" # slew rate, transient only
# ib = "-20nA" # input bias current, into each input pin
# psrr = "100dB" # supply changes about the operating point, referred to the input
# fc = "100Hz" # 1/f corner of `en`
# pins = { inp = "3", inn = "2", out = "1", vcc = "8", vee = "4" }
[[blocks]]
ref = "RV1"
kind = "potentiometer" # pins 1 and 3 are the ends, 2 the wiper
position = 0.25 # 0 puts the wiper at pin 1, 1 at pin 3; default 0.5
# resistance = "10k" # the end to end value, default the part's valuethd 是相对于基波的 2 到 10 次谐波,以百分比表示,覆盖跨度内平均值的第一个和最后一个上升交叉之间的整个周期。freq 和 thd 需要那里至少一个完整周期。在电路稳定后开始跨度,否则启动步骤会被读作失真。
瞬态还存储每个记录网络后半段的频谱(Hann 窗,dBV,2048 个 bin),在查看器中绘制在瞬态下方。
以下内置器件模型是通用替代品(硅二极管、小信号 BJT、逻辑电平 MOSFET),而非原理图上的部件。为每个重要部件提供带有数据手册值的块,并将二极管的 is 和 n 拟合到其两个典型 VF 点:相隔一个数量级电流的两个点给出 n = dV / (Vt ln 10) 和 is = I / exp(V / (n Vt))。依赖于默认值的结果描述的是默认值,而非部件。
值采用 SI 前缀和单位:"4k7"、"100nF"、"1MHz"、"10meg",或裸数字。地是所有命名为 GND、0V、GROUND 或以 VSS 开头的网络,除非驱动源命名它。没有东西支撑的网络坐在到地的 1 pS 电导上。
网络表根据符号的参考字母变为元件:
| 参考 | 元件 |
|---|---|
R | 该值的电阻;0 欧姆、JP、SJ 和 NT 连接其网络 |
C、L | 该值的电容、电感 |
FB | 0.1 欧姆,除非块给出更多 |
D、LED、DZ | 按引脚名称(A、K)的二极管:硅(Is 10 fA,n 1);符号或值带 Schottky、BAT 或 SS1 的是肖特基(10 nA,1.05);LED 是(1 aA,2);齐纳二极管从值获取击穿电压(BZX84C3V3 是 3.3 V),带 1 mA 膝点 |
带 B、C、E 引脚的 Q | Ebers-Moll BJT,符号或值说明时为 PNP:Is 10 fA,Bf 100,Br 1 |
带 G、D、S 引脚的 Q、M | 带平滑阈值的 level 1 MOSFET,符号说明 PMOS 时为 P 沟道:Vth 1.5 V,k 0.5 A/V^2,lambda 0.01 |
J、P、TP、H、MH、FID、Y、X、SW、BT、T | 被排除 |
| 其他所有元件 | 一个命名错误,除非它在 ignore 中或有一个块 |
块类型及其字段:
| kind | 引脚(默认按名称) | fields |
|---|---|---|
resistor、capacitor、inductor、bead | 1、2 | resistance、capacitance、inductance |
diode、schottky、zener、led | a、k | is、n、bv、cj |
bjt、npn、pnp | c、b、e | is、bf、br、va、cje、cjc |
mosfet、nmos、pmos | d、g、s | vth、k、lambda、cgs、cgd |
opamp | inp(+、IN+)、inn(-、IN-)、out(~、OUT)、vcc(V+、VCC)、vee(V-、VEE) | gain、gbw、rout、vos、en、headroom |
ldo | vin、vout、gnd | vout、dropout、rout、iq |
vcvs、vccs | p、n、cp、cn(全部给出) | gain(V/V 或 A/V) |
open | 将该元件排除在外 |
运算放大器是一个单极点:一个跨导进入一个节点,该节点具有 gain 欧姆的电阻和一个电容,使单位增益位于 gbw,然后是一个缓冲器,平滑地钳位在轨电压减去 headroom 之间(如果没有两个轨引脚,则不钳位),位于 rout 之后。增益节点在钳位稍远处停止,因此被削波的运算放大器会像真实器件一样,一旦输入要求它离开轨电压就立即离开,而不是缠绕起来。钳位及其 headroom 在两个轨上相同。多单元运算放大器中,具有三个信号引脚的每个单元都是其自身的运算放大器,共享轨引脚,输出通过名称找到,或者在没有名称时,作为该单元的唯一输出引脚。一个块覆盖元件的所有单元;对同一 ref 的第二个块是一个错误。LDO 保持 vout 高于 gnd,直到输入进入 dropout 范围内,然后跟随输入下降,输入提供输出电流加上 iq。
噪声源:电阻(4kT/R)、驱动电阻、二极管和双极型晶体管集电极和基极电流(2qI)、MOSFET 沟道(8kT gm / 3)以及运算放大器 en。结果包含输出密度、当设置 input 时的输入参考密度,以及频带内的均方根值。
失败的检查在仿真中是一个错误,同时结果是当前的;当规范或原理图的网表更改时,结果变为过期。examples/lna 包含两个:lna-supply,通过肖特基二极管将 5 V 输入或门连接到 U1 的偏置电流,以及 lna-biastee,偏置 tee 如何将射频输出上的信号与 VBIAS 隔离。两者都采用 U1 的 90 mA 静态电流和 BAT60A 的典型 VF,来自两份数据手册;没有零件号的 LED 被排除。examples/preamp 是一个通过所有分析运行的运算放大器设计:双 LM358 上增益级和 Sallen-Key 滤波器的工作点、增益和噪声,中轨偏置稳定时的上电冲击,削波,以及反向电池二极管。examples/ladder-vcf 是一个双极型晶体管梯形滤波器:其仿真检查指数转换器在三个 CV 下的 1 V/oct 跟踪、谐振峰,以及瞬态中的自激振荡。