Simuleren
Circuit simulatie
Voer de analoge kant van een schema uit vanuit de netlist: werkpunt, AC, transient en ruis, met op-amps en diodes gemodelleerd vanuit hun datasheets en controles op de resultaten.
Een circuitsimulatie voert de analoge kant van een schema rechtstreeks uit zijn netlist: het werkpunt elke keer, en een AC-sweep, een transient en een ruisanalyse wanneer de spec dat vraagt. Geen layout nodig, dus het beantwoordt de vragen die het schema bepalen: zit de bias waar hij moet, wat is de versterking bij 1 kHz, waar clip de output, hoe luid is het ruisen.
Start er één
agentee new sim preamp-ac --kind circuitHet preamp-voorbeeld draait een 9 V op-amp-preamp door elke analyse. Dit is zijn AC- en ruisrun, ingekort:
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.pngDe run schrijft preamp-ac.result.json naast de spec, met het werkingspunt van elk net, de stroom door elk onderdeel, elke controle en zijn waarde, en de curves van de geregistreerde nets. De viewer en render plotten de versterking, fase en ruis.
Drivers
Alleen een driver drijft een net, dus geef elke voeding er één. Een driver is een spanningsbron naar ground, of naar het net in return, met resistance in serie. current = true maakt het een stroombron, zo haalt de preamp de quiescent-current van de op-amp van zijn rail. ac markeert de input van de AC- en ruisanalyses. Voor de transient neemt een driver steps (stuksgewijs lineair), een pulse of een sine.
Ground is elk net dat GND, 0V, GROUND heet of begint met VSS.
Analyses
- Werkpunt: altijd. Newton-iteratie met junction-limiting, dan gmin-stepping, dan source-stepping wanneer het niet convergeert.
- AC:
[ac]sweept vanfromnaartometpointsper decade, gelineariseerd op het werkpunt. Versterkingen zijn in dB ten opzichte van deac-driver. - Transient:
[tran]draait totstopmetstepals de grootste stap. Het slaat ook het spectrum van elk geregistreerd net over zijn tweede helft op. - Ruis:
[noise]geeft de dichtheid opoutputen, metinput, de input-referenced curve, plus de RMS over het band. Weerstanden, junction-stromen, MOSFET-kanaals en op-ampendragen allemaal bij.
Controles
Een controle leest één getal en houdt het tussen min en max. Wat het leest, hangt af van at:
| controle | leest |
|---|---|
v = "NET" | de spanning op het werkpunt |
v = "NET", at = "5ms" | de spanning in de transient |
v = "NET", at = "1kHz" | de AC-versterking in dB |
phase = "NET", at = "1kHz" | de fase in graden |
noise = "NET", at = "1kHz" | de ruisdichtheid in V/rtHz |
i = "R1" | de stroom door een twee-pins-onderdeel, pin 1 naar pin 2 |
peak, trough, rms, freq, thd | de transient tussen from en to |
Een controle die faalt, is een fout in de simulatie. Verhoog de 1 kHz-controle hierboven naar min = 19 en de run faalt, en agentee check rapporteert het als een fout zolang dat resultaat actueel is:
error: ./preamp-ac.sim.toml: preamp-ac result: v(OUT) at 1kHz is 18.7870 dB, wanted 19 to 19.3 dBHet resultaat wordt verouderd wanneer de spec of de netlist van het schema verandert: de controle meldt het als verouderd en laat zijn falen vallen tot de simulatie opnieuw draait, dus herhaal de simulatie na elke verandering aan de schakeling. Begin een thd- of freq-span na de schakeling is gestabiliseerd, of de opstartstap leest als vervorming.
Modellen komen uit de datasheet
Elk onderdeel wordt een element via zijn referentieletter: R, C en L op waarde, D als diode, Q als BJT of MOSFET op zijn pinnamen. Connectors, testpoints, gaten en kristallen worden weggelaten, en alles anders is een fout tot het een blok heeft of in ignore zit.
De ingebouwde onderdelen zijn generieke vervangers: een siliciumdiode, een klein-signaal BJT en een logica-niveau MOSFET. Een resultaat dat op zo'n vervanger berust, beschrijft de vervanger, niet jouw onderdeel. Geef elk belangrijk onderdeel een [[blocks]]-vermelding met waarden uit de datasheet:
- Op-amps zijn een enkele pool met
gain,gbw,rout,vos,en,ib,slew,psrren een gladde begrenzingheadroomvan elk railspanning. Elke eenheid van een dubbele of viervoudige op-amp is een eigen op-amp op gedeelde rails. - Diodes nemen
isenn. Pas ze aan op twee typische VF-punten met een decade stroom ertussen:n = dV / (Vt ln 10), danis = I / exp(V / (n Vt)). - BJTs en MOSFETs nemen
is,bf,vaofvth,k,lambdaen hun capaciteiten. - LDO's houden
voutvast tot de ingang binnendropoutkomt, dan volgen ze die naar beneden. - Potentiometers nemen een
positionvan 0 tot 1, zodat de wiper belast en beladen wordt als het echte onderdeel.
Zet de datasheet en de tabel waar elke waarde vandaan komt in de description van de simulatie. De volgende persoon die het resultaat leest, vaak de agent, weet dan waar het op berust.
Voorbeelden
examples/preamp: het werkpunt, de versterking en het ruisniveau van een versterkingsstap en een Sallen-Key-filter op een LM358, de klap bij inschakelen, clippen en de omgekeerde batterijdiode.examples/ladder-vcf: een transistorladderfilter waarvan de simulaties 1 V/oct-tracking op drie CV's controleren, de resonantiepiek en zelfoscillatie in een transient.examples/lna:lna-supplycontroleert het OR-en van twee voedingen via Schottky's, enlna-biasteehoeveel RF de bias tee op de voeding laat.
Elke sleutel staat in de circuitreferentie.