agentee

Simulación

Simulación de circuitos

Una simulación analógica de la lista de redes de un esquemático: punto de funcionamiento, CA, transitorio y ruido, con bloques de amplificador operacional, LDO y dispositivo y verificaciones.

Una simulación analógica de un esquemático, directamente de su lista de redes: el punto de trabajo siempre, y un barrido en CA, un transitorio y un análisis de ruido cuando se pide. El solver es análisis nodal modificado con iteración de Newton (limitación de unión, luego paso de gmin, luego paso de fuente cuando el punto de trabajo no se estabiliza), integración trapezoidal con Euler hacia atrás después de cada punto de quiebre y un paso que se mitiga cuando Newton falla, CA compleja en el punto de trabajo, y ruido por el método adjunto. agentee new sim NAME --kind circuit (MCP new_item con sim_kind = "circuit") escribe un archivo inicial. agentee sim NAME escribe NAME.result.json; el visor traza el transitorio, la ganancia, la fase y el ruido, con el punto de trabajo y las verificaciones al lado, y agentee render NAME dibuja lo mismo sin interfaz.

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 value

thd son los armónicos 2 a 10 frente a la fundamental, en porcentaje, sobre todos los periodos entre el primer y el último cruce ascendente de la media en el intervalo. freq y thd necesitan al menos un periodo completo allí. Empieza el intervalo después de que el circuito se estabilice, o el paso de arranque se lee como distorsión.

Un transitorio también guarda el espectro de cada red registrada sobre su segunda mitad (una ventana de Hann, en dBV, 2048 bins), dibujado bajo el transitorio en el visor.

Los modelos de dispositivo integrados de abajo son sustitutos genéricos (un diodo de silicio, un BJT de señal pequeña, un MOSFET de nivel lógico), no el componente del esquemático. Da a cada componente que importe un bloque con valores de su hoja de datos, y ajusta el is y el n de un diodo a dos de sus puntos típicos de VF: dos puntos separados por una década de corriente dan n = dV / (Vt ln 10) e is = I / exp(V / (n Vt)). Un resultado que se basa en un valor por defecto describe el valor por defecto, no el componente.

Los valores toman prefijos y unidades SI: "4k7", "100nF", "1MHz", "10meg", o un número suelto. La masa es toda red nombrada con GND, 0V, GROUND o que empieza por VSS, a menos que una fuente la nombre. Las redes con nada que las sostenga se apoyan en una conductancia de 1 pS a masa.

La lista de redes se convierte en elementos por la letra de referencia del símbolo:

referenciaelemento
Rresistor del valor; 0 ohmios, JP, SJ y NT unen sus redes
C, Lcondensador, inductor del valor
FB0,1 ohmios, a menos que un bloque le dé más
D, LED, DZdiodo por nombre de pin (A, K): silicio (Is 10 fA, n 1); un símbolo o valor con Schottky, BAT o SS1 es Schottky (10 nA, 1,05); LED es (1 aA, 2); un zener toma su ruptura del valor (BZX84C3V3 es 3,3 V), con una rodilla de 1 mA
Q con pines B, C, EBJT Ebers-Moll, PNP cuando el símbolo o el valor lo dice: Is 10 fA, Bf 100, Br 1
Q, M con pines G, D, SMOSFET nivel 1 con umbral suave, canal P cuando el símbolo dice PMOS: Vth 1,5 V, k 0,5 A/V^2, lambda 0,01
J, P, TP, H, MH, FID, Y, X, SW, BT, Tse omite
cualquier otra cosaun error al nombrarlo, a menos que esté en ignore o tenga un bloque

Tipos de bloque y sus campos:

kindpines (por defecto, por nombre)fields
resistor, capacitor, inductor, bead1, 2resistance, capacitance, inductance
diode, schottky, zener, leda, kis, n, bv, cj
bjt, npn, pnpc, b, eis, bf, br, va, cje, cjc
mosfet, nmos, pmosd, g, svth, k, lambda, cgs, cgd
opampinp (+, IN+), inn (-, IN-), out (~, OUT), vcc (V+, VCC), vee (V-, VEE)gain, gbw, rout, vos, en, headroom
ldovin, vout, gndvout, dropout, rout, iq
vcvs, vccsp, n, cp, cn (todos dados)gain (V/V o A/V)
opendeja fuera el componente

Un amplificador operacional es un polo único: una transconductancia hacia un nodo con gain ohmios y un condensador que pone la ganancia unitaria en gbw, luego un buffer limitado suavemente entre sus raíles menos headroom (sin límite sin ambos pines de raíl) detrás de rout. El nodo de ganancia se detiene un poco más allá del límite, de modo que un amplificador operacional recortado vuelve de su raíl en cuanto su entrada se lo pide, como hace uno real, en lugar de enredarse. El límite y su headroom son los mismos en ambos raíles. Cada unidad de un amplificador operacional de varias unidades con los tres pines de señal es su propio amplificador operacional que comparte los pines de raíl, la salida se encuentra por nombre o, cuando no lo tiene, como el único pin de salida de la unidad. Un bloque cubre todas las unidades de un componente; un segundo bloque para el mismo ref es un error. Un LDO mantiene vout por encima de gnd hasta que la entrada se acerca a dropout, luego sigue a la entrada hacia abajo, y la entrada suministra la corriente de salida más iq.

Fuentes de ruido: resistencias (4kT/R), resistencias de conducción, diodos y corrientes de colector y base de BJT (2qI), canales de MOSFET (8kT gm / 3) y en del amplificador operacional. El resultado tiene la densidad de salida, la densidad referida a la entrada cuando se configura input, y el RMS sobre la banda.

Una verificación que falla es un error en la simulación mientras el resultado es actual; el resultado queda obsoleto cuando cambia la especificación o la lista de redes del esquemático. examples/lna contiene dos: lna-supply, la combinación OR de la entrada de 5 V a través de un Schottky hacia la corriente de polarización de U1, y lna-biastee, hasta qué punto el tee de polarización mantiene la RF en la salida lejos de VBIAS. Ambos toman U1 con su corriente en reposo de 90 mA y el BAT60A con su VF típico, de las dos fichas técnicas; el LED, que no tiene número de pieza, se omite. examples/preamp es un diseño de amplificador operacional ejecutado en cada análisis: el punto de funcionamiento, la ganancia y el ruido de un etapa de ganancia y un filtro Sallen-Key en un LM358 dual, el golpe de encendido mientras la polarización del raíl medio se asienta, el recorte y el diodo de batería inversa. examples/ladder-vcf es un filtro escalera de BJT: sus simulaciones verifican el seguimiento de 1 V/oct del conversor exponencial a tres CV, el pico de resonancia y la autooscilación en un transitorio.

docs/format.md · Markdown para agentes