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 valuethd 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:
| referencja | element |
|---|---|
R | rezystor o danej wartości; 0 omów, JP, SJ i NT łączą swoje sieci |
C, L | kondensator, cewka o danej wartości |
FB | 0,1 oma, chyba że blok podaje więcej |
D, LED, DZ | dioda 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, E | BJT Ebersa-Molla, PNP, gdy symbol lub wartość tak mówi: Is 10 fA, Bf 100, Br 1 |
Q, M z pinami G, D, S | MOSFET 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, T | pominięty |
| wszystko inne | błąd nazwania, chyba że jest w ignore lub ma blok |
Rodzaje bloków i ich pola:
| kind | pin (domyślnie po nazwie) | pola |
|---|---|---|
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 (wszystkie podane) | gain (V/V lub A/V) |
open | pomija 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.