agentee

Simulação

Simulação de circuito

Uma simulação analógica da lista de redes de um esquema: ponto de funcionamento, CA, transitório e ruído, com blocos de amplificador operacional, LDO e dispositivo e verificações.

Uma simulação analógica de um esquema, diretamente da sua lista de redes: o ponto de funcionamento sempre, e uma varrimento AC, um transitório e uma análise de ruído quando pedido. O solucionador é análise nodal modificada com iteração de Newton (limitação de junção, depois passo de gmin, depois passo de fonte quando o ponto de funcionamento não se assenta), integração trapezoidal com Euler para trás após cada ponto de rutura e um passo que se divide ao meio quando o Newton falha, AC complexo no ponto de funcionamento, e ruído pelo método adjunto. agentee new sim NAME --kind circuit (MCP new_item com sim_kind = "circuit") escreve um iniciador. agentee sim NAME escreve NAME.result.json; o visualizador plota o transitório, ganho, fase e ruído, com o ponto de funcionamento e as verificações ao lado, e agentee render NAME desenha o mesmo sem interface.

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 são as harmónicas 2 a 10 em relação à fundamental, em percentagem, sobre todos os períodos entre a primeira e a última passagem ascendente pela média no intervalo. freq e thd precisam de pelo menos um período completo lá. Comece o intervalo depois de o circuito se assentar, ou o passo de arranque lê-se como distorção.

Um transitório também guarda o espetro de cada rede registada sobre a sua segunda metade (janela de Hann, em dBV, 2048 bins), desenhado sob o transitório no visualizador.

Os modelos de dispositivos integrados abaixo são substitutos genéricos (um díodo de silício, um BJT de pequeno sinal, um MOSFET de nível lógico), não a peça no esquema. Dê a cada peça que importa um bloco com valores do seu boletim técnico, e ajuste o is e o n de um díodo a dois dos seus pontos típicos de VF: dois pontos a uma década de corrente de distância dão n = dV / (Vt ln 10) e is = I / exp(V / (n Vt)). Um resultado que se apoia num valor por omissão descreve o valor por omissão, não a peça.

Os valores aceitam prefixos SI e unidades: "4k7", "100nF", "1MHz", "10meg", ou um número simples. A massa é toda a rede nomeada com GND, 0V, GROUND ou começando com VSS, a menos que uma fonte a nomeie. Redes com nada para as segurar ficam numa condutância de 1 pS para a massa.

A lista de redes torna-se elementos pela letra de referência do símbolo:

referênciaelemento
Rresistor do valor; 0 ohm, JP, SJ e NT ligam as suas redes
C, Lcondensador, indutor do valor
FB0,1 ohm, a menos que um bloco dê mais
D, LED, DZdíodo pelo nome do pino (A, K): silício (Is 10 fA, n 1); um símbolo ou valor com Schottky, BAT ou SS1 é Schottky (10 nA, 1,05); LED é (1 aA, 2); um zener toma a sua tensão de ruptura do valor (BZX84C3V3 é 3,3 V), com um joelho de 1 mA
Q com pinos B, C, EBJT Ebers-Moll, PNP quando o símbolo ou valor diz: Is 10 fA, Bf 100, Br 1
Q, M com pinos G, D, SMOSFET nível 1 com limiar suave, canal P quando o símbolo diz PMOS: Vth 1,5 V, k 0,5 A/V^2, lambda 0,01
J, P, TP, H, MH, FID, Y, X, SW, BT, Texcluído
qualquer outra coisaum erro ao nomeá-lo, a menos que esteja em ignore ou tenha um bloco

Tipos de bloco e os respetivos campos:

kindpinos (por omissão, pelo nome)campos
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 fornecidos)gain (V/V ou A/V)
openexclui a peça

Um amplificador operacional é um polo único: uma transcondutância para um nó com gain ohms e um capacitor que coloca o ganho unitário em gbw, seguido de um buffer limitado suavemente entre os respetivos limites menos headroom (sem limite sem os dois pinos de alimentação) atrás de rout. O nó de ganho para um pouco além do limite, de modo que um amplificador operacional saturado regressa do limite assim que a entrada o pedir, tal como um amplificador real, em vez de se acumular. O limite e o respetivo headroom são os mesmos nos dois limites. Cada unidade de um amplificador operacional multiunidade com os três pinos de sinal é o seu próprio amplificador operacional partilhando os pinos de alimentação, com a saída encontrada pelo nome ou, quando não existe, como o único pino de saída da unidade. Um bloco cobre todas as unidades de uma peça; um segundo bloco para o mesmo ref é um erro. Um LDO mantém vout acima de gnd até a entrada ficar a dropout da saída, depois segue a entrada para baixo, e a entrada fornece a corrente de saída mais iq.

Fontes de ruído: resistores (4kT/R), resistências de condução, diodos e correntes do coletor e da base de BJT (2qI), canais de MOSFET (8kT gm / 3) e en do amplificador operacional. O resultado tem a densidade de saída, a densidade referida à entrada quando input está definido, e o RMS na banda.

Uma verificação que falha é um erro na simulação enquanto o resultado está atual; o resultado fica desatualizado quando a especificação ou a lista de redes do esquema muda. examples/lna contém duas: lna-supply, a OR da entrada de 5 V através de um Schottky para a corrente de polarização de U1, e lna-biastee, o quão longe o bias tee mantém o RF na saída afastado de VBIAS. Ambas tomam U1 pela sua corrente de repouso de 90 mA e o BAT60A pelo seu VF típico, dos dois manuais; o LED, que não tem número de peça, é excluído. examples/preamp é um projeto de amplificador operacional submetido a todas as análises: o ponto de funcionamento, o ganho e o ruído de um estágio de ganho e um filtro Sallen-Key num LM358 duplo, o thump de arranque à medida que a polarização do meio da alimentação se assenta, a saturação, e o diodo de bateria invertida. examples/ladder-vcf é um filtro em escada BJT: as respetivas simulações verificam o seguimento de 1 V/oitava do conversor expo em três CVs, o pico de ressonância, e a auto-oscilação num transitório.

docs/format.md · Markdown para agentes