agentee

Symulacja

Symulacja obwodu

Symulacja analogowa listy połączeń schematu: punkt pracy, AC, przejściowy i szum, z blokami wzmacniacza operacyjnego, LDO i elementów oraz sprawdzaniem.

Symulacja analogowa schematu, bezpośrednio z jego listy sieci: punkt roboczy zawsze, a gdy poproszono, analiza AC, przejściowa i szumów. Rozwiązywalnik to zmodyfikowana analiza węzłowa z iteracją Newtona (ograniczanie złącza, potem krokowanie gmin, potem krokowanie źródła, gdy punkt roboczy nie ustabilizuje się), całkowanie trapezowe z Eulerem wstecznym po każdym punkcie przełomowym i krok, który się połowi, gdy Newton zawiedzie, AC zespolone w punkcie roboczym oraz szumy metodą sprzężoną. agentee new sim NAME --kind circuit (MCP new_item z sim_kind = "circuit") zapisuje szablon startowy. agentee sim NAME zapisuje NAME.result.json; podgląd rysuje przebieg przejściowy, wzmocnienie, fazę i szumy, z punktem roboczym i wynikami sprawdzania obok, a agentee render NAME rysuje to samo bez interfejsu.

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 to harmoniczne 2 do 10 względem podstawowej, w procentach, w całym okresie między pierwszym a ostatnim rosnącym przecięciem średniej w zakresie. freq i thd wymagają co najmniej jednego pełnego okresu w tym zakresie. Zacznij zakres po ustabilizowaniu się obwodu, inaczej krok startowy zostanie odczytany jako zniekształcenie.

Przebieg przejściowy zapisuje również widmo każdej rejestrowanej sieci w jej drugiej połowie (okno Hann, w dBV, 2048 bin), rysowane pod przebiegiem przejściowym w podglądzie.

Wbudowane modele urządzeń poniżej to ogólne zamienniki (dioda krzemowa, BJT małosygnałowy, MOSFET logic-level), a nie element na schemacie. Nadaj każdemu istotnemu elementowi blok z wartościami z jego karty katalogowej i dopasuj is i n diody do dwóch typowych punktów VF: dwa punkty oddalone o dekadę prądu dają n = dV / (Vt ln 10) i is = I / exp(V / (n Vt)). Wynik oparty na wartości domyślnej opisuje tę wartość domyślną, a nie element.

Wartości przyjmują prefiksy SI i jednostki: "4k7", "100nF", "1MHz", "10meg" lub sama liczba. Masa to każda sieć nazwana GND, 0V, GROUND lub zaczynająca się od VSS, chyba że sterownik ją nazwie. Sieci bez niczego, co je trzyma, siedzą na przewodności 1 pS do masy.

Lista sieci staje się elementami według litery referencyjnej symbolu:

referencjaelement
Rrezystor o danej wartości; 0 omów, JP, SJ i NT łączą swoje sieci
C, Lkondensator, cewka o danej wartości
FB0,1 oma, chyba że blok podaje więcej
D, LED, DZdioda według nazwy pinu (A, K): krzemowa (Is 10 fA, n 1); symbol lub wartość z Schottky, BAT lub SS1 to Schottky (10 nA, 1,05); LED to (1 aA, 2); dioda Zenera bierze swoje napięcie przebicia z wartości (BZX84C3V3 to 3,3 V), z kolanem 1 mA
Q z pinami B, C, EBJT Ebersa-Molla, PNP, gdy symbol lub wartość tak mówi: Is 10 fA, Bf 100, Br 1
Q, M z pinami G, D, SMOSFET poziomu 1 z gładkim progiem, kanał P, gdy symbol mówi PMOS: Vth 1,5 V, k 0,5 A/V^2, lambda 0,01
J, P, TP, H, MH, FID, Y, X, SW, BT, Tpominięty
wszystko innebłąd nazwania, chyba że jest w ignore lub ma blok

Rodzaje bloków i ich pola:

kindpin (domyślnie po nazwie)pola
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 (wszystkie podane)gain (V/V lub A/V)
openpomija element

Wzmacniacz operacyjny to pojedynczy biegun: transkonduktancja do węzła o oporze gain omów i kondensator, który ustawia wzmocnienie na 1 przy gbw, a następnie bufor ograniczany płynnie między szynami minus headroom (bez ograniczenia, jeśli brak obu pinów szyn) za rout. Węzeł wzmocnienia zatrzymuje się nieco za ograniczeniem, więc przycinany wzmacniacz operacyjny wraca z szyny, gdy tylko jego wejście tego wymaga, tak jak prawdziwy, zamiast się zawijać. Ograniczenie i jego headroom są takie same dla obu szyn. Każda jednostka wzmacniacza operacyjnego wielounitowego z trzema pinami sygnałowymi jest osobnym wzmacniaczem operacyjnym współdzielącym piny szyn, a wyjście jest znajdowane po nazwie lub, jeśli jej nie ma, jako jedyny pin wyjściowy jednostki. Jeden blok obejmuje wszystkie jednostki elementu; drugi blok dla tego samego ref to błąd. LDO utrzymuje vout powyżej gnd, dopóki wejście nie zbliży się do dropout, a następnie podąża za wejściem w dół, a wejście dostarcza prąd wyjścia plus iq.

Źródła szumów: rezystory (4kT/R), opory napędowe, diody oraz prądy kolektora i bazy tranzystorów BJT (2qI), kanały MOSFET (8kT gm / 3) oraz en wzmacniacza operacyjnego. Wynik zawiera gęstość wyjściową, gęstość odniesioną do wejścia, gdy ustawiono input, oraz RMS w paśmie.

Nieudane sprawdzenie to błąd symulacji, dopóki wynik jest aktualny; wynik traci aktualność, gdy zmieni się specyfikacja lub netlista schematu. examples/lna zawiera dwa: lna-supply, czyli OR-owanie wejścia 5 V przez diodę Schottky do prądu polaryzacji U1 oraz lna-biastee, czyli jak daleko bias tee trzyma RF na wyjściu od VBIAS. Oba biorą U1 jako jego 90 mA prąd spoczynkowy oraz BAT60A z jego typowego VF, z dwóch datasheetów; dioda LED, która nie ma numeru elementu, jest pominięta. examples/preamp to projekt wzmacniacza operacyjnego przeanalizowany w każdej analizie: punkt pracy, wzmocnienie i szumy stopnia wzmocnienia oraz filtra Sallen-Key na podwójnym LM358, trzask przy uruchamianiu, gdy polaryzacja środkowej szyny się ustabilizuje, przycinanie oraz dioda odwróconego zasilania. examples/ladder-vcf to filtr drabinkowy BJT: jego symulacje sprawdzają śledzenie 1 V/oktawę konwertera expo przy trzech CV, szczyt rezonansu oraz samowzbudzenie w przejściu.

docs/format.md · Markdown dla agentów