Hvad er SPICE?
SPICE (Simulation Program with Integrated Circuit Emphasis) er et grundlæggende værktøj til at teste elektroniske kredsløb på computeren. Det analyserer spænding, strøm og frekvens ved at løse matematiske ligninger for komponenterne. SPICE kan simulere alt fra simple modstande til komplekse integrerede kredsløb med tusindvis af transistorer.
Programmet blev oprindeligt udviklet til mainframe-computere, men findes i dag i utallige varianter til både Windows, Linux og Mac. SPICE er industristandarden for kredsløbssimulation og bruges af elektronikingeniører over hele verden til at verificere design før dyre prototyper fremstilles.
Kernen i SPICE er "Modified Nodal Analysis" (MNA) - en matematisk metode til at opstille og løse de matrix-ligninger der beskriver kredsløbet. SPICE løser ikke ligningerne symbolsk, men numerisk ved hjælp af iterative metoder som Newton-Raphson.
Historien bag SPICE
CANCER (1969)
Startede som et studenterprojekt under Professor Ron Rohrer på University of California, Berkeley. Navnet var en provokation mod militær-finansierede simulatorer. CANCER var den første kredsløbssimulator der brugte "Sparse Matrix"-metoden til at løse de komplekse ligninger effektivt. Programmet kunne simulere både ikke-lineære DC og transient (tidsdomæne) problemer.
SPICE1 (1972)
Laurence Nagel omskrev CANCER og frigav det som "Public Domain" under navnet SPICE. Dette var en revolutionerende beslutning, da det sikrede teknisk fremgang gennem fri deling. Alle kunne bruge, modificere og forbedre koden. SPICE1 brugte stadig FORTRAN og havde begrænsede modeller for aktive komponenter. Det introducerede dog den første implementering af Gummel-Poon transistor-modellen.
SPICE2 (1975)
Introducerede "Modified Nodal Analysis" (MNA) som er den matematiske metode stadig bruges i dag. Forbedrede transistor-modeller betydeligt og tilføjede AC analyse (small-signal frekvensdomæne). Version 2g.6 fra 1983 er stadig grundlaget for mange moderne simulatorer og betragtes som den mest stabile og gennemtestede version nogensinde. SPICE2 kunne håndtere større kredsløb og havde bedre konvergens-algoritmer.
SPICE3 (1985)
Komplet omskrivning fra FORTRAN til C, hvilket gjorde programmet lettere at vedligeholde og udvide. Tilføjede grafisk brugerflade (X Window System) og interaktive kommandoer. Desværre led SPICE3 af stabilitetsproblemer i de tidlige versioner, hvilket gjorde at mange forblev ved SPICE2g.6. Senere versioner (3c1, 3d1, 3e2, 3f4, 3f5) forbedrede stabiliteten betydeligt.
Hvorfor bruge SPICE?
- Økonomi: Undgå dyre fejl ved at teste kredsløb før produktion. En fejl fundet i simulationen koster næsten ingenting sammenlignet med en fejl i silicium.
- Tid: Hurtigere end at bygge fysiske prototyper. Komplekse IC-design kan simuleres på timer frem for uger.
- Præcision: Kan måle strømme og spændinger der er umulige at måle fysisk (f.eks. inde i en IC).
- Parametrisk analyse: Test hvordan komponent-tolerancer påvirker kredsløbet (Monte Carlo analyse).
- Frekvensanalyse: Se bode-plots og fasekarakteristikker uden signalgenerator og oscilloskop.
- Støjanalyse: Beregn termisk støj, flicker støj og støjtal før hardware bygges.
- Temperatur-analyse: Simuler kredsløbet ved -40°C til +125°C for at sikre drift over hele temperaturområdet.
- Optimering: Automatisk justering af komponentværdier for at opnå ønskede specifikationer.
Matematisk baggrund
SPICE bruger Modified Nodal Analysis (MNA) til at formulere kredsløbsligningerne. For et kredsløb med N noder opstilles der N ligninger baseret på Kirchhoffs Current Law (KCL). Matrix-formen er:
Hvor Y er admittance-matricen, V er node-spændingsvektoren, og I er strømkilde-vektoren. For ikke-lineære komponenter (dioder, transistorer) bruges Newton-Raphson iteration til at linearisere karakteristikkerne omkring det aktuelle arbejdspunkt.
For transient analyse bruges numerisk integration (trapezoidal eller Gear metoder) til at beregne kondensatorers og spolers reaktans som funktion af tid.
SPICE-familien i dag
Der findes i dag utallige varianter af SPICE, fra gratis open-source værktøjer til dyre kommercielle pakker med avancerede funktioner. Her er de vigtigste:
ngspice
Open-source efterfølger baseret på SPICE3C1. Skrevet i C og under aktiv udvikling. Bruges som simulation-motor i KiCad og mange andre gratis PCB-programmer.
- Understøtter interaktive kontrol-scripts
- Kan køre i batch-mode eller interaktivt
- Støtter XSPICE udvidelser (digital/analog mixed-mode)
- Gratis og open-source (BSD licens)
- Tilgængelig for Windows, Linux, Mac
- Kommandolinje-baseret med plotting via gnuplot
NI Multisim
Tidligere kendt som Electronics Workbench. Fokus på pædagogik og intuitiv grafisk brugerflade. Meget populær på tekniske skoler og universiteter.
- Integreret med LabVIEW
- Ultiboard til PCB-layout
- 3D visualisering af komponenter
- GRS (Grapher) til avanceret grafisk analyse
- Kommerciel software med uddannelseslicenser
- Indbyggede instrumenter (oscilloskop, funktionsgenerator)
PSpice (Cadence)
Første succesfulde kommercielle PC-version, oprindeligt fra MicroSim. Industristandard til professionel mixed-signal design og avanceret analyse.
- Monte Carlo og worst-case analyse
- Digital/analog mixed-signal simulation
- Stort bibliotek af komponent-modeller
- Integration med OrCAD og Allegro PCB
- Avancerede modeller for power electronics
- Parametrisk sweep og optimering
LTspice
Fra Linear Technology (nu Analog Devices). Specielt optimeret til switch-mode power supplies (SMPS) simulation med hurtig konvergens.
- Gratis at bruge, også kommercielt
- Avancerede .MEAS (måle) kommandoer
- Effektiv behandling af switching-kredsløb
- Stort bibliotek af Analog Devices komponenter
- Waveform Viewer med avanceret matematik
- Støtter .step og .temp kommandoer
HSPICE (Synopsys)
Industri-standard for avanceret IC-design. Bruges af chip-producenter til at verificere kredsløb før produktion.
- Ekstremt præcis modellering af parasitter
- Avanceret temperatur-afhængig analyse
- Understøtter de nyeste transistor-modeller (BSIM6, etc.)
- Dyr kommerciel licens
- Bruges af førende halvleder-fabrikker
- Avanceret RF simulation
TINA-TI (Texas Instruments)
Gratis version af TINA simulator fra Texas Instruments. Fokus på TI's egne komponenter.
- Gratis download fra TI's hjemmeside
- Integreret schematic capture
- Virtual instruments (oscilloskop, multimeter)
- Begrænset til TI komponenter i gratis version
- SMPS design værktøjer
- Export til PCB design
Vigtig bemærkning om kompatibilitet
Selvom alle SPICE-varianter deler den samme grundlæggende syntaks, findes der vigtige forskelle i:
- Måden matematiske funktioner skrives på
- Understøttede transistor-modeller (BSIM3, BSIM4, EKV, etc.)
- Avancerede analyse-typer (Monte Carlo, sensitivity)
- Digital simulation kapabiliteter
- Behovskilder (PWL, PULSE, SINE, EXP, SFFM)
- Parametriske udtryk og .func definitioner
En netliste lavet til LTspice virker måske ikke i PSpice uden modifikationer, og omvendt. Altid tjek manualen for den specifikke simulator du bruger.
Netlisten & Anatomi
Et kredsløb beskrives i en Netliste (tekstfil). Hver linje definerer en komponent og dens forbindelser (nodes). SPICE læser filen linje for linje og bygger en intern matematisk model af kredsløbet.
Grundlæggende regler:
- Første linje: Altid en titel eller kommentar. Denne linje ignoreres af simulatoreren men vises i output. Dette er en arv fra punch-card tiden hvor første linje var til identifikation.
- Node 0: Er altid reserveret til stel (Ground). Alle spændinger måles i forhold til node 0. Node 0 er reference-punktet for hele kredsløbet.
- Syntaks:
[Navn] [Node+] [Node-] [Værdi/Parametre] - Kommentarer: Linjer der starter med * eller ; betragtes som kommentarer. * skal stå i første kolonne i nogle gamle versioner.
- Fortsættelseslinjer: Hvis en linje slutter med +, fortsættes på næste linje. Nyttigt til lange .MODEL definitioner.
- Case-følsomhed: SPICE er som regel case-insensitive (R1 og r1 er det samme), undtagen i nogle moderne varianter.
- Rækkefølge: Komponenter kan defineres i vilkårlig rækkefølge, men det er god praksis at starte med forsyninger og ende med .END.
Bogstavkoder for komponenter:
Kilde-funktioner (Waveforms):
| Type | Beskrivelse | Eksempel |
|---|---|---|
| DC | Konstant DC værdi | DC 5V |
| AC | AC amplitude til AC analyse | AC 1V |
| SIN | Sinus-bølge (offset, amplitude, freq, delay, damping) | SIN(0 1V 1kHz) |
| PULSE | Pulser (initial, pulsed, delay, rise, fall, on, period) | PULSE(0 5V 0 1n 1n 10u 20u) |
| PWL | Piece-Wise Linear (t1 v1 t2 v2 ...) | PWL(0 0 1u 5V 2u 0) |
| EXP | Eksponentiel (v1 v2 td1 tau1 td2 tau2) | EXP(0 5V 1u 10u) |
| SFFM | Single Frequency FM (offset, amplitude, fc, mdi, fs) | SFFM(0 1V 100kHz 5 10kHz) |
Eksempel på simpel netliste:
Dette definerer en spændingsdeler med to 10kΩ modstande og en 12V kilde. DC analysen varierer input fra 0 til 12V i 0.1V trin og printer spændingen ved node 2 samt strømmen fra kilden.
Analyse-metoder
SPICE kan udføre flere forskellige typer analyser på det samme kredsløb. Hver analyse giver forskellig indsigt i kredsløbets opførsel. Analyse-kommandoerne placeres i netlisten før .END.
DC Analyse (.DC)
Beregner kredsløbets hvilepunkt (DC operating point) og overføringskarakteristikker. Bruges til at finde arbejdspunktet for transistorer og se hvordan output varierer med input.
Varierer VIN fra 0 til 5V i 0.1V trin
Transient (.TRAN)
Tidsdomæne-analyse. Viser hvordan kredsløbet opfører sig over tid - som et virtuelt oscilloskop. Essentiel for switch-mode kredsløb og tidsafhængige fænomener.
Tidsstep på 1µs, total tid 10ms
AC Analyse (.AC)
Frekvensrespons-analyse. Beregner forstærkning og fase som funktion af frekvens. Essentielt for filtre, forstærkere og feedback-systemer.
20 punkter/dekade, 1Hz til 100kHz
Detaljeret oversigt over analyse-kommandoer:
| Kommando | Beskrivelse | Typisk brug | Output |
|---|---|---|---|
| .OP | Operating Point - finder DC arbejdspunkt | Beregn hvilestrømme og -spændinger | Node-spændinger, strømme, effekt |
| .DC | DC sweep - varierer en kilde eller parameter | Overføringskarakteristikker, curve tracing | Spænding/strøm vs. swept variabel |
| .TRAN | Transient analyse - tidssimulering | Tidsrespons, switching, oscillationer | Waveforms over tid |
| .AC | AC analyse - frekvensdomæne (small-signal) | Bode plot, impedans, filterkarakteristik | Magnitude (dB) og fase (grader) |
| .TF | Transfer Function - small signal DC | Forstærkning, input/output impedans | Transfer function, impedanser |
| .NOISE | Støjanalyse - termisk og skydstøj | Termisk støj, støjtal, støjbidrag | Støjspektrum (V/√Hz) |
| .SENS | Sensitivitetsanalyse | Hvilke komponenter påvirker output mest | Følsomheds-koefficienter |
| .PZ | Pole-Zero analyse | Stabilitet, poler og nulpunkter | Poler og nulpunkter i s-plan |
| .DISTO | Distortionsanalyse (harmonisk) | Harmonisk forvrængning (HD2, HD3) | THD, harmoniske komponenter |
| .TEMP | Temperatur-sweep | Analyse ved forskellige temperaturer | Parametre vs. temperatur |
| .STEP | Parametrisk analyse | Varier komponentværdier | Flere kurver på samme plot |
| .MC | Monte Carlo analyse (PSpice) | Statistisk analyse af tolerancer | Fordeling af output |
| .WCASE | Worst-case analyse (PSpice) | Ekstreme værdier inden for tolerance | Worst-case output |
Bemærk om .AC analyse:
AC analysen er en small-signal lineær analyse omkring DC arbejdspunktet. Den injicerer ikke en fysisk AC kilde, men beregner kredsløbets respons ved forskellige frekvenser baseret på small-signal modeller. Derfor skal du stadig definere dine AC kilder med AC amplitude (f.eks. VAC 1 0 AC 1V).
Før AC analysen udføres, beregnes automatisk et DC operating point (.OP) for at finde lineariseringspunktet for ikke-lineære komponenter.
Bemærk om .TRAN analyse:
Transient analyse starter altid fra t=0. Hvis du vil starte fra et steady-state punkt, kan du bruge UIC (Use Initial Conditions) eller først køre en .OP analyse. Tidssteppet skal vælges mindst 10x mindre end den hurtigste tidskonstant i kredsløbet for nøjagtige resultater.
Dot-Commands (Styringskommandoer)
Kommandoer der starter med et punktum styrer simuleringen og definerer modeller. De placeres typisk efter kredsløbsbeskrivelsen og før .END.
Fælles Kommandoer (alle simulatorer):
Definerer parametre for halvledere (dioder, transistorer, switch)
Definerer et underkredsløb der kan genbruges (.ENDS markerer slut)
Indlæser en ekstern fil (f.eks. model-bibliotek, subcircuits)
Inkluderer et bibliotek med flere modeller
Definerer parametre der kan bruges i beregninger og .STEP
Parametrisk analyse - varierer en parameter over en række værdier
Specificerer hvad der skal skrives til output-fil (tekst)
Laver ASCII-graf i output-filen (gammel funktion)
Gemmer data til grafisk post-processing (PSpice/LTspice)
Indstiller simulator-indstillinger (GMIN, RELTOL, ITL1, etc.)
Giver start-gæt for node-spændinger (hjælper konvergens)
Initial Conditions - sætter startværdier for transient
Sætter bredden på output-listing
Fourier analyse - beregner harmoniske komponenter
Specificerer hvilke variable der skal gemmes
Markerer slutningen på netlisten (påkrævet)
Simulator-specifikke kommandoer:
PSpice Specifikt
| Kommando | Beskrivelse |
|---|---|
| .MC | Monte Carlo analyse (tolerancer) |
| .WCASE | Worst-case analyse |
| .DISTRIBUTION | Definerer tolerance-fordeling |
| .OPTIONS | Avancerede indstillinger (ABSTOL, RELTOL, etc.) |
| .TEXT | Tekst-kommentar i schematic |
| .WATCH | Overvåger variable under simulation |
| .STIMLIB | Digital stimulus bibliotek |
LTspice Specifikt
| Kommando | Beskrivelse |
|---|---|
| .MEAS/.MEASURE | Målinger på simuleringsdata (rise time, etc.) |
| .BACKANNO | Back-annotation til schematic |
| .FUNC | Brugerdefinerede matematiske funktioner |
| .WAVE | Gemmer som WAV-fil (lyd) |
| .BIASCHK | Tjekker bias-punkter |
| .SAVEBIAS | Gemmer bias-punkt til genbrug |
| .LOADBIAS | Indlæser tidligere gemt bias |
ngspice Specifikt
| Kommando | Beskrivelse |
|---|---|
| .CONTROL | Start af kontrol-blok (scripting) |
| .ENDC | Slut på kontrol-blok |
| .SET | Sætter variable og options |
| .SHOW | Viser device information |
| .ALTER | Ændrer kredsløb efter første kørsel |
| .PREPROCESS | Preprocesser direktiver |
| .SP | S-parameter analyse |
Multisim Specifikt
| Kommando | Beskrivelse |
|---|---|
| .NS | Noise simulation indstillinger |
| .DF | Distortion analysis |
| .RV | Return voltage (speciel funktion) |
| .BATCH | Batch simulation kontrol |
| .GRAPH | Graf-indstillinger |
| .INSTRUMENT | Definerer virtuelle instrumenter |
Eksempel på .MODEL:
Dette definerer en diode-model med specifikke parametre: IS (saturation current), RS (series resistance), N (ideality factor), CJO (junction capacitance), M (grading coefficient), TT (transit time), BV (breakdown voltage), og IBV (breakdown current).
Eksempel på .SUBCKT:
Dialekter & Kryptering
Den største barriere for simulation i praksis er kryptering af model-biblioteker. Mange halvleder-producenter (Texas Instruments, Analog Devices, Infineon, STMicroelectronics, etc.) udgiver SPICE-modeller, der kun kan læses af deres egen eller specifikke kommercielle simulatorer.
Dette betyder at en model downloadet fra TI's hjemmeside måske kun virker i TINA-TI eller PSpice, men ikke i LTspice eller ngspice. Krypterede modeller indeholder binær data eller specielle koder som kun bestemte programmer kan dekryptere. Krypteringen sker for at beskytte den intellektuelle ejendom bag de avancerede transistor-modeller.
Syntaks-forskelle mellem dialekter:
| Funktion | Standard SPICE | PSpice | LTspice | ngspice |
|---|---|---|---|---|
| Mega (10⁶) | MEG | MEG | MEG (eller meg) | MEG |
| Mikro (10⁻⁶) | U | U | U eller µ | U |
| Matematik | V(1)*V(2) | {V(1)*V(2)} | V(1)*V(2) | V(1)*V(2) |
| Kommentar | * | * eller ; | * eller ; | * eller ; |
| Fortsættelseslinje | + i start | + i start | + i slutning | + i start |
| Parametre | .PARAM | .PARAM | .PARAM | .PARAM |
| Funktioner | - | .FUNC | .FUNC | .FUNC |
ngspice kompatibilitet:
ngspice kan sættes til at forstå LTspice/PSpice syntaks med kommandoen:
Dette gør det nemmere at importere netlister fra andre simulatorer. Placer kommandoen i spice.rc filen eller kør den før simulering. Alternativt kan du bruge set ngbehavior=ps for PSpice kompatibilitet.
Håndtering af krypterede modeller:
- Led efter "behavioral models" eller "encrypted" i model-beskrivelsen - disse er oftest låst
- Prøv at finde ækvivalente modeller fra andre kilder (f.eks. standardmodeller)
- Opret selv en simpel model baseret på datablad (værdier fra datasheet)
- Brug generic modeller (f.eks. standard NMOS/PMOS i stedet for specifik chip)
- Kontakt producenten for en ikke-krypteret version (sjældent succesfuldt)
- Brug SPICE Model Editor til at ekstrahere parametre hvis muligt
Oversættelse mellem simulatorer:
Når du konverterer netlister mellem simulatorer, vær opmærksom på:
- Math expressions: PSpice bruger { } om udtryk, mens LTspice og ngspice ikke gør
- Device models: Nogle modeller findes kun i specifikke biblioteker
- Global nodes: Måden at definere globale noder (f.eks. VCC) varierer
- Digital komponenter: XSPICE (ngspice) og PSpice digital har forskellig syntaks
- Initial conditions: .IC og .NODESET kan have forskellig effekt
Enheder & Suffix
SPICE bruger standard SI-enheder og tillader præfiks-suffix for at angive størrelsesordner. Dette er essentielt for at skrive læsbare netlister. Enhederne er valgfrie - SPICE kan regne ud hvad der menes baseret på kontekst, men det er god praksis at inkludere dem.
Standard enheder:
Numeriske suffix (præfiks):
| Suffix | Navn | Faktor | Eksempel | Bemærkning |
|---|---|---|---|---|
| F | femto | 10⁻¹⁵ | 10F = 10e-15 | Meget sjældent brugt |
| P | pico | 10⁻¹² | 10P = 10pF | Små kondensatorer |
| N | nano | 10⁻⁹ | 10N = 10nF | Keramiske kondensatorer |
| U | mikro | 10⁻⁶ | 10U = 10µF | LTspice accepterer også µ |
| M | milli | 10⁻³ | 10M = 10mA | IKKE mega! |
| K | kilo | 10³ | 10K = 10kΩ | Modstande |
| MEG | mega | 10⁶ | 10MEG = 10MΩ | VIGTIG: Brug MEG, ikke M |
| G | giga | 10⁹ | 10G = 10GHz | Høje frekvenser |
| T | tera | 10¹² | 10T = 10e12 | Meget sjældent brugt |
⚠️ VIGTIGT: M vs MEG
I SPICE betyder M altid milli (10⁻³), aldrig mega! Dette er en af de mest almindelige fejl.
Eksempel på fejl: R1 1 0 1M betyder 1 milliohm, ikke 1 megaohm! Dette vil skabe en næsten kortslutning.
Korrekt: R1 1 0 1MEG eller R1 1 0 1000000
Temperatur-enheder:
SPICE bruger som standard Celsius for input, men interne beregninger bruger Kelvin. Nogle simulatorer accepterer også 'C' suffix (f.eks. 25C), men standard er at angive temperatur med .TEMP kommandoen uden enhed.
Vinkelenheder:
I AC analyse angives fase i grader (°). I nogle matematiske funktioner kan radianer være nødvendige, men SPICE output er altid i grader for fase.
Manualer og Dokumentation
Her er links til officielle manualer og dokumentation for de forskellige SPICE-varianter. Disse er essentielle referencer når du arbejder med specifikke simulatorer.
ngspice
Open-source SPICE simulator med omfattende dokumentation. Manualen dækker både kommandoer og interne algoritmer.
ngspice-manual.pdfKapitler: 1. Introduction, 2. Circuit Description, 3. Simulation Control, 4. Analysis, 12. Models
LTspice
Analog Devices' simulator med specielle funktioner til switch-mode supplies. Inkluderer hjælp til .MEAS kommandoer og avanceret brug.
LTspice Reading ListInkluderer: Getting Started Guide, Convergence Assistance, MOSFET Models, .MEAS Statements
PSpice (OrCAD)
Cadence' reference guide dækker alle aspekter af PSpice simulation inklusiv Monte Carlo og avancerede analyser.
PSpice Reference GuideKapitler: Simulation Types, Sources, Analog Devices, Digital Simulation, Monte Carlo
Multisim
NI's SPICE reference manual dækker både grundlæggende og avancerede funktioner specifikke for Multisim.
Multisim SPICE ManualDækker: Component Modeling, Virtual Instruments, Analysis Options, RF Simulation
Yderligere Ressourcer:
Oprindelig SPICE2g.6 dokumentation og kildekode
Stack Exchange, Reddit r/ECE, Electronics Point
TI, ADI, Infineon, NXP, ON Semiconductor model biblioteker
Tip til brug af manualer:
- Start med "Getting Started" eller "Quick Reference" sektionen
- Brug PDF søgefunktion (Ctrl+F) til at finde specifikke kommandoer
- Tjek "Convergence" eller "Troubleshooting" kapitler når simulationer fejler
- Se efter "Application Notes" for specifikke kredsløbstyper (SMPS, RF, etc.)
Find SPICE-modeller – Ressourcer og søgetips
Her er færdige Google-søge-URL'er, som du kan bruge til at finde SPICE‑modeller for en vilkårlig elektronikkomponent ved blot at udskifte komponentnavnet.
Eksempel med IRLZ44N:
Hvis du kender producenten:
Eksempel med Texas Instruments og OPA2134:
Avanceret: kun officielle modeller (site-søgning)
Begræns søgningen til kendte leverandører af SPICE‑modeller:
Tip (hurtigere fund)
Prøv også: filetype:lib, filetype:cir, filetype:sub. Mange modeller ligger hos producenter, Digi‑Key, eller dedikerede SPICE‑biblioteker.
✅ LTspice – hvor finder man modeller (verificerede links)
Indeholder LTspice‑native modeller (op‑amps, regulatorer, power IC’er m.m.)
https://www.analog.com/en/resources/design-tools-and-calculators/ltspice-simulator.html (Scroll til “Device Libraries” inde i LTspice)
Meget stort katalog af diskrete + passive komponenter (modstande, dioder, MOSFETs m.m.)
https://www.vishay.com/en/how/design-support-tools/
Samler SPICE‑modeller fra mange producenter og fungerer med LTspice.
https://youspice.com/spice-libraries/
Professionel database med LTspice‑, PSpice‑ og ADS‑modeller.
https://www.digikey.com/en/design-services-providers/model-on-search
✅ PSpice – hvor finder man modeller (verificerede links)
Meget stor samling af verificerede SPICE/PSpice‑modeller (dioder, MOSFETs, BJTs).
https://www.diodes.com/design/tools/spice-models
Indeholder både gratis og kommercielle PSpice‑modeller.
https://ec-model-on-search.com/
Samme side som ovenfor — mange Vishay‑modeller er PSpice‑validerede.
https://www.vishay.com/en/how/design-support-tools/
✅ Ngspice – hvor finder man modeller (verificerede links)
Ngspice bruger klassisk SPICE‑syntaks, så mange producentmodeller virker direkte.
MOSFETs, dioder, BJTs i ren SPICE‑form, egnet til Ngspice.
https://my.centralsemi.com/content/engineering/spicemodels/index.php
Samme modeller som PSpice — virker typisk direkte i Ngspice.
https://www.diodes.com/design/tools/spice-models
Langt de fleste modeller her kan bruges i Ngspice.
https://youspice.com/spice-libraries/
✅ Praktisk tommelfingerregel
Producent → Model On! / YouSpice → generisk SPICE‑model
SPICE Netliste Eksempler
Følgende eksempler demonstrerer forskellige kredsløbstyper og analyse-metoder. Kopier dem direkte til din simulator. Alle eksempler er testet og virker i standard SPICE-kompatible simulatorer.
1. Common Emitter Forstærker
Klassisk transistor-forstærker med AC-kobling og emitter-modstand. Demonstrerer .TRAN analyse og transistor-modellering med Ebers-Moll model.
2. RC Lavepas Filter
Simpelt filter der demonstrerer AC frekvensanalyse og bode-plot. Knækfrekvens ved 1/(2πRC).
3. Brokoblet modstande (Wheatstone)
Demonstrerer DC analyse og .OP kommando til at finde arbejdspunkt. Bruges til præcis modstandsmåling.
4. Differential Forstærker
Differentialpar med strømspejl som aktiv last. Demonstrerer subcircuits og mere komplekse transistor-kredsløb.
5. Parametrisk Sweep
Bruger .STEP til at analysere kredsløbet ved forskellige komponent-værdier. Nyttigt til at se tolerans-effekter.
6. Subcircuit (Underkredsløb)
Demonstrerer hvordan man opretter og bruger genanvendelige komponent-modeller. Essentielt for komplekse designs.
7. Diode Karakteristik
Måler diode I-V karakteristikken med DC sweep. Viser eksponentiel karakteristik.
8. MOSFET Inverter
Digital CMOS inverter. Demonstrerer MOSFET modeller og digital switching.
Tips til fejlfinding:
- Tjek altid at node 0 (stel) er defineret korrekt - ellers fejler simulationen
- Sørg for at alle komponenter har forbindelse til stel eller andre noder
- Vær opmærksom på polariteten på kondensatorer og dioder
- Tjek at transistor-polariteter (NPN/PNP, NMOS/PMOS) passer til spændingsforsyningerne
- Hvis simulation ikke konvergerer, prøv at tilføje .OPTIONS GMIN=1n eller øge iterationer med ITL1=500
- Brug .NODESET til at give start-gæt hvis kredsløbet har flere stabile tilstande
- Tjek at tidsstep i .TRAN er tilstrækkelig lille (mindst 10x mindre end hurtigste tidskonstant)
Konvergenshjælp:
Hvis du får "Timestep too small" eller "No convergence" fejl, prøv følgende .OPTIONS:
GMIN: Minimum konduktans, RELTOL: Relativ tolerance, ABSTOL: Absolut tolerance, ITL1: DC iteration limit, ITL4: Transient timepoint limit.
Matematiske teknikker i SPICE-simulatorer
SPICE (Simulation Program with Integrated Circuit Emphasis) er i sin kerne en numerisk løser for store systemer af ikke-lineære differentialligninger. Hele programmet er bygget op omkring en række matematiske teknikker, som tilsammen gør det muligt at simulere elektriske kredsløb præcist og effektivt. Nedenfor gennemgås de centrale matematiske teknikker, og hvordan SPICE bruger dem.
1. Differentialligninger
Elektriske kredsløb beskrives af Kirchhoffs love og komponenternes konstitutive ligninger. Disse giver anledning til almindelige differentialligninger (ODE'er). SPICE omskriver alle tidsafhængige komponenter til differentialligninger, som senere diskretiseres. Eksempler:
- Kondensator:
i = C * dv/dt - Spole:
v = L * di/dt
2. Numerisk integration
For at løse differentialligningerne anvender SPICE numeriske integrationsmetoder til at diskretisere tiden. Formålet er at omsætte differentialligninger til algebraiske ligninger, der kan løses med matrixmetoder. De vigtigste er:
- Backward Euler:
v(t) ≈ v(t - dt) + dt * dv/dt. Stabil, men kan være lidt upræcis. - Trapezmetoden:
dv/dt ≈ (v(t) - v(t - dt)) / dt. Bruger gennemsnit. Mere præcis, men kan give "ringing". - Gear-metoder (BDF): Bruges især til stive systemer. Eksempel (2. orden):
dv/dt ≈ (3v(t) - 4v(t - dt) + v(t - 2dt)) / (2dt).
3. Matricer & Lineære ligningssystemer
Når kredsløbet er diskretiseret, ender SPICE med et stort system af lineære ligninger formuleret som: A * x = b. Hvor A = ledningsmatrix, x = ukendte, og b = kilder. Egenskaber:
- Sparsity: De fleste elementer er nul.
- Symmetri: Ofte næsten symmetrisk.
- Løsning: Anvender LU-faktorisering, Gauss-elimination og sparse matrix-optimeringer.
4. Ikke-lineære ligninger & Newton-Raphson
Ikke-lineære komponenter (diode, BJT, MOSFET) giver eksponentielle ligninger, som ikke kan løses direkte. SPICE lineariserer dem iterativt med Newton-Raphson-metoden:
I matrixform: J * dx = -f (hvor J = Jacobian-matrix, dx = korrektion, f = fejlvektor). Iterationen gentages, indtil fejlen er lille nok.
5. Modified Nodal Analysis (MNA)
MNA kombinerer Kirchhoffs strømlov (KCL) og komponentligninger og er selve grundlaget for SPICE. Systemet opsættes i formen:
- G = konduktansmatrix
- C = kapacitans/induktansmatrix
- v = node-spændinger
- i = kildestrømme
Andre vigtige koncepter
- Linearisering: Ikke-lineære komponenter erstattes i hver iteration af en lineær konduktans og en strømkilde.
- Transientanalyse: Kombinerer numerisk integration, Newton-Raphson og matrixløsning trin-for-trin over tid.
- AC-analyse: Løser kredsløbet i frekvensdomænet via lineær algebra i komplekse tal:
(A + j * w * C) * x = b. - Konvergenshjælpere: SPICE dæmper Newton-Raphson trin, begrænser diode-spændinger og bruger metoder som Gmin-stepping for numerisk stabilitet.
SPICE-løsningsloopet forklaret (Jordet Emitter-trin)
For at gøre dette gennemsigtigt tager vi udgangspunkt i en konkret netliste for et jordet emitter-trin (JE-trin) med en BC547-transistor og koblingskondensatorer. Alt, hvad SPICE gør, sker med udgangspunkt i disse linjer:
Første fase: DC-arbejdspunktet (.op)
Uden et stabilt DC-arbejdspunkt giver hverken AC- eller transientanalyse mening. I denne fase ignorerer SPICE alle kondensatorer (behandles som åbne kredsløb) og fastlægger de kendte spændinger (f.eks. VCC=12V). Derefter opstiller den KCL for hver node og løser det ikke-lineære system (grundet transistoren) vha. Newton-Raphson, indtil der opnås konvergens. Det er præcis det samme som håndregning, bare løst numerisk.
Anden fase: AC-analyse (.ac)
Her lineariseres transistoren omkring det netop fundne arbejdspunkt (parametre som gm, r_pi, ro beregnes). Kondensatorer behandles som frekvensafhængige impedanser: Zc = 1 / (j * w * C). SPICE løser herefter et lineært, komplekst ligningssystem for hver ønsket frekvens for at give dig dit Bode-plot.
Tredje fase: Transientanalyse (.tran)
Kondensatorer gør kredsløbet dynamisk (i = C * dv/dt). For at løse dette diskretiseres tiden. SPICE omskriver hver kondensator til en konduktans (Gc = C / dt) og en historisk strømkilde (Ieq), baseret på spændingen i forrige tidsstep. Derefter køres et "dobbelt loop": Et ydre loop over tid (t = 0, dt, 2*dt...), og et indre Newton-Raphson-loop i hvert tidsstep for at håndtere transistorens ikke-linearitet.
De eksplicitte matematiske formler (BC547 JE-trin)
For at understrege præcisionen af SPICE, opstiller vi de faktiske ligninger for DC-arbejdspunktet og ét transient-tidsstep uden nogen forsimplinger. SPICE bruger den fulde Ebers-Moll/Gummel-Poon model for transistoren:
- Fremadrettet diodestrøm:
If = IS * ( exp( (v2 − v4) / (NF * VT) ) − 1 ) - Baglæns diodestrøm:
Ir = IS * ( exp( (v2 − v3) / (NR * VT) ) − 1 ) - Transistorstrømme:
Ic = If − ( Ir / BR ),Ib = ( If / BF ) + ( Ir / BR ),Ie = − ( Ic + Ib )
DC-arbejdspunktets KCL-ligninger
I DC er alle kondensatorer åbne, og knudepunkterne (N002 for basis, N003 for kollektor, N004 for emitter) defineres via disse ligninger:
Transientanalyse i ét tidsstep
I tidsdomænet tilføjes kondensatorstrømmene (i_CB, i_CE, i_CC) til Kirchhoff-ligningerne ved at diskretisere med Backward Euler (Gc * v_n + Ieq):
SPICE samler alle disse ligninger i en vektor F(x_n) = 0 og udregner den eksakte Jacobian-matrix baseret på transistorens afledte for at opdatere løsningen J * dx = -F(x_n). Der laves ingen småsignalantagelser; det er ren numerisk matematik i sin fulde Ebers-Moll form.
Samlet didaktisk konklusion
Når man forstår ovenstående, står det klart, at SPICE er mere end bare et program; det er en matematisk maskine og et enestående undervisningsværktøj.
- Elektronik er matematik: SPICE gætter ikke. Hver eneste spænding er resultatet af Kirchhoffs love og numerisk integration. Forstår du matematikken, forstår du elektronik på et dybere niveau.
- Kompleksitet sat i system: Biasnetværk bliver til lineære udtryk, kondensatorer til tidsdiskrete led, og transistorer til eksponentielle funktioner.
- Et model-loop for tænkning: Transientanalysens ydre tids-loop og indre Newton-Raphson-loop spejler den måde, en ingeniør bør analysere kredsløb på: *Hvad sker der overordnet, og hvad sker der i detaljen?*
- Broen mellem teori og praksis: Elektronik ser simpelt ud i et diagram, men har en enorm matematisk struktur. SPICE visualiserer denne transformation fra ligning til bølgeform.
Kort sagt: SPICE lærer dig ikke bare at simulere kredsløb – det lærer dig at tænke som en ingeniør.