Simulazione
Simulazione del circuito
Esegui la parte analogica di uno schema dal suo netlist: punto di lavoro, AC, transitorio e rumore, con operazionali e diodi modellati dai loro datasheet e verifiche sui risultati.
Una simulazione di circuito esegue il lato analogico di uno schema direttamente dal suo netlist: il punto di lavoro ogni volta, e una scansione AC, un transitorio e un'analisi del rumore quando la specifica lo richiede. Non serve un layout, quindi risponde alle domande che decidono lo schema: il bias sta dove dovrebbe, qual è il guadagno a 1 kHz, dove l'uscita satura, quanto è forte il fruscio.
Avviane uno
agentee new sim preamp-ac --kind circuitL'esempio preamp esegue un preamp a operazionale a 9 V attraverso ogni analisi. Questa è la sua esecuzione AC e rumore, ridotta:
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.pngL'esecuzione scrive preamp-ac.result.json accanto alla specifica, con il punto di lavoro di ogni net, la corrente attraverso ogni componente, ogni verifica e il suo valore, e le curve dei net registrati. Il visualizzatore e render tracciano il guadagno, la fase e il rumore.
Driver
Solo un driver alimenta un net, quindi dai a ogni alimentazione uno. Un driver è una sorgente di tensione a massa, o al net in return, con resistance in serie. current = true lo rende una sorgente di corrente, che è come il preamp preleva la corrente di quiescenza dell'operazionale dal suo rail. ac marca l'input delle analisi AC e rumore. Per il transitorio, un driver accetta steps (lineare a tratti), un pulse o un sine.
La massa è ogni net chiamato GND, 0V, GROUND o che inizia con VSS.
Analisi
- Punto di lavoro: sempre. Iterazione di Newton con limitazione di giunzione, poi gmin stepping, poi source stepping quando non si stabilizza.
- AC:
[ac]scansiona dafromatoconpointsper decennio, linearizzato al punto di lavoro. I guadagni sono in dB rispetto al driverac. - Transitorio:
[tran]esegue fino astopconstepcome passo massimo. Salva anche lo spettro di ogni net registrato sulla sua seconda metà. - Rumore:
[noise]dà la densità aoutpute, coninput, la curva riferita all'input, più il RMS sulla banda. I resistori, le correnti di giunzione, i canali dei MOSFET e l'endell'operazionale contribuiscono tutti.
Verifiche
Una verifica legge un numero e lo tiene tra min e max. Cosa legge dipende da at:
| verifica | legge |
|---|---|
v = "NET" | la tensione al punto di lavoro |
v = "NET", at = "5ms" | la tensione nel transitorio |
v = "NET", at = "1kHz" | il guadagno AC in dB |
phase = "NET", at = "1kHz" | la fase in gradi |
noise = "NET", at = "1kHz" | la densità di rumore in V/rtHz |
i = "R1" | la corrente attraverso un componente a due pin, dal pin 1 al pin 2 |
peak, trough, rms, freq, thd | il transitorio tra from e to |
Una verifica che fallisce è un errore sulla simulazione. Alza la verifica a 1 kHz sopra a min = 19 e l'esecuzione fallisce, e agentee check la segnala come errore finché quel risultato è attuale:
error: ./preamp-ac.sim.toml: preamp-ac result: v(OUT) at 1kHz is 18.7870 dB, wanted 19 to 19.3 dBIl risultato diventa obsoleto quando la specifica o il netlist dello schema cambia: la verifica lo segnala come obsoleto e rimuove i suoi fallimenti finché la simulazione non viene eseguita di nuovo, quindi riesegui la simulazione dopo ogni modifica al circuito. Inizia un intervallo thd o freq dopo che il circuito si è stabilizzato, altrimenti il passo di avvio viene letto come distorsione.
I modelli vengono dalla scheda tecnica
Ogni componente diventa un elemento per la sua lettera di riferimento: R, C e L per valore, D come diodo, Q come BJT o MOSFET per i nomi dei suoi pin. I connettori, i punti di test, i fori e i cristalli sono esclusi, e tutto il resto è un errore finché non ha un blocco o non sta in ignore.
I dispositivi integrati sono generici: un diodo al silicio, un BJT per piccoli segnali, un MOSFET a livello logico. Un risultato che si basa su uno di questi descrive il dispositivo generico, non il tuo componente. Dai a ogni componente importante una voce [[blocks]] con i valori dal datasheet:
- I amplificatori operazionali sono un polo con
gain,gbw,rout,vos,en,ib,slew,psrre un clamp liscioheadroomlontano da ogni rail. Ogni unità di un op-amp dual o quad è un op-amp separato su rail condivisi. - I diodi prendono
isen. Adattali a due punti tipici di VF a un decennio di corrente di distanza:n = dV / (Vt ln 10), poiis = I / exp(V / (n Vt)). - I BJT e i MOSFET prendono
is,bf,vaovth,k,lambdae le loro capacità. - I LDO mantengono
voutfinché l'ingresso non si avvicina aldropout, poi lo seguono verso il basso. - I potenziometri prendono una
positionda 0 a 1, così il cursore carica e viene caricato come il componente reale.
Metti il datasheet e la tabella da cui è venuto ogni valore nella description della simulazione. La prossima persona che leggerà il risultato, spesso l'agente, saprà su cosa si basa.
Esempi
examples/preamp: il punto di lavoro, il guadagno e il rumore di uno stadio di guadagno e un filtro Sallen-Key su un LM358, il thump all'accensione, il clipping e il diodo di batteria inversa.examples/ladder-vcf: un filtro a scala di transistor le cui simulazioni verificano il tracking di 1 V/oct a tre CV, il picco di risonanza e l'auto-oscillazione in un transiente.examples/lna:lna-supplyverifica l'OR-ing di due ingressi di alimentazione attraverso Schottky, elna-biasteequanta RF il bias tee lascia passare sull'alimentazione.
Ogni chiave è nel riferimento circuito.