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 valuethd 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ência | elemento |
|---|---|
R | resistor do valor; 0 ohm, JP, SJ e NT ligam as suas redes |
C, L | condensador, indutor do valor |
FB | 0,1 ohm, a menos que um bloco dê mais |
D, LED, DZ | dí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, E | BJT Ebers-Moll, PNP quando o símbolo ou valor diz: Is 10 fA, Bf 100, Br 1 |
Q, M com pinos G, D, S | MOSFET 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, T | excluído |
| qualquer outra coisa | um erro ao nomeá-lo, a menos que esteja em ignore ou tenha um bloco |
Tipos de bloco e os respetivos campos:
| kind | pinos (por omissão, pelo nome) | campos |
|---|---|---|
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 (todos fornecidos) | gain (V/V ou A/V) |
open | exclui 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.