Modellierung analoger Schaltungen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Dieser Artikel untersucht die Möglichkeit, reale analoge Bauteile und Schaltungen in Echtzeit zu simulieren, um sie nachzubilden und gfs. ihr Verhalten zu überwachen und voraussagen zu können. Es wird damit auch dargestellt, ob und inwieweit es möglich ist, analoge Schaltungen mit digitalen Systemen nachzubilden und zu ersetzen, wie das z.B. bei Filtern und Signalerzeugern der Fall ist.

Vorbemerkung

Die Aufstellung ist für die Umsetzung in FPGAs erstellt worden, gilt aber sinngemäß auch für Microcontroller und PC-Systeme. Dazu würde man die Betrachtung der absoluten Resourcen im FPGA ignorieren und einzig auf die Rechenleistung fokussieren. Diese müsste entsprechend der Möglichkeiten eines DSPs oder der CPU interpretiert werden.

Für DSPs kann man etwa 60% ... 80% der Auslastung für die Berechnung ansetzen und aufgrund der besseren Arithmetik etwa 150% bis 200% der Rechenleistung annehmen - insbesondere bei genauen Anforderungen. Der hier angenommene 200MHz FPGA entspräche also in etwa einem 150MHz Audio DSP mit 24 Bit, bzw. 120MHz DSP mit 32 Bit.

Für aktuelle CPUs kann man etwa 40% ... 60% der Auslastung - und aufgrund der Arithmetik etwa 150% ... 250% der Rechenleistung pro Takt annehmen - inbegriffen der Tatsache, dass bei den Schritten unten auch nicht-arithmetische Aktionen mitgerechnet werden, bei denen die CPU keine Vorteile hat Ein durchschnittlich ausgelasteter 4 Kern I7 mit 3GHz kommt praktisch auf das 10-fache bis 30-fache der Leistung des FPGAs. Bei DSP und CPU müssen dann aber noch Speicher- und externe RAM-Zyklen berücksichtigt werden, die die Performance um 25% ... 75% senken. Ein direkter Vergleich zwischen FPGA und einer solchen CPU wies konkret einen Faktor 8 für die CPU aus. Da die CPU nur begrenzt parallelisieren kann, sinkt der Faktor für die Werte in den letzten beiden Tabellen, welche die Parallelisierung mit pipelining untersuchen, schnell ab.

Im Folgenden wird einzeln untersucht, welche Performance-Anforderungen an den FPGA / die CPU bestehen und wie diese zustande kommen:

Rechenbedarf für Modelle

Die folgende Tabelle zeigt den Bedarf an Rechen- und Prozessschritten für unterschiedliche Bauelemente je nach Komplexität des gewählten Modells:

Tabelle 1

Modell Gleichungen Parameter Berechnungen Operationen Schritte
Transistor 3D - physisch 31 73 3700 4700 13200
Transistor hSpice 17 32 890 1190 2000
pSPice 9 19 232 304 427
BiPol - KleinSignal 5 7 64 89 121
BiPol - Lineariarisiert 3 5 24 33 46
Theoretischer Transistor 1 9 11 12 18
Widerstand 3D HF 9 21 225 306 430
Widerstand 2D LF 5 12 69 94 128
Widerstand pSpice 3 5 24 33 46
Widerstand - Linearisiert 1 3 5 6 10
Theoretischer Widerstand 1 1 3 4 8
Kondensator 3D HF 17 37 904 1193 2011
Kondensator 2D LF 9 18 222 303 426
Kondensator pSpice 5 7 64 89 121
Kondensator - Linearisiert 2 3 11 15 22
Theoretischer Kondensator 1 1 3 4 8
Spule 3D HF - freq 23 45 1819 2350 4825
Spule 2D LF - freq 16 31 783 1040 1710
Spule pSpice 7 11 129 178 244
Spule - Linearisiert 3 6 25 34 47
Theoretische Spule 1 3 5 6 10

Anmerkungen

Der 3D-Transistor ist eine Sammlung von Formeln, welche sich aus der Analyse eines räumlich ausgedehnten Gebildes im Silizium ergibt, so wie es im physikalischen Simulator zur Chipherstellung verwendet wird. Das Spice-Modell ist der angepasste C-Code des Modells aus Cadence, bzw das Equivalent. Das Modell unter "BiPol" ist das klassische Kleinsignalersatzschaltbild und - verhalten eines Transistors gemäß Möschwitzer / Lunze und Titze -Schenk. Der theoretische Transistor besteht aus einer Formel mit Teillinearisierungen (und entsprechenden Abweichungen). Für MOS-Fet und BiPolar wird dieselbe Abschätzung verwendet, wobei die Charakterisierung des MosFet aufwändiger ist und den BiPo nach oben abschätzt.

Erwartungsgemäß haben umfangreichere Modelle mehr Formeln, Parameter und auch Rechentiefe. Bei Widerstand und Kondensator werden mitunter auch Temperatur, Induktivität und Streuung berücksichtigt, die sich aus realen Bauteilgehäuseformen ergeben, Bei den höheren Kondensator-Modellen sind auch die geringe Nichtlinearität des Dielektrikums und die Leckströme abgebildet.

Die Spule ist besonders trickreich, wegen der Streufelder im 3D-Fall und der "seltsamen" Frequenzabhängigkeit schon im im 2D-Fall. Das Magnetmodell ist jenes nach Jiles-Atherton ("Spice"), das 2D ein modifiziertes Carpenter-Modell von mir, das komplett in VHDL erstellt wurde und in mehreren Ausbaustufen verwendet wird.

Die Berechnungsformeln wurden u.a. in MATLAB umgesetzt und in lineares VHDL gewandelt. Daraus ergeben sich je nach Komplexität des Modells die anwendungsabhängige Anzahl von Rechenschritten. Der Bedarf ist als grober Anhaltspunkt zu sehen und kann stärker variieren.

Bei der Betrachtung der notwendigen Rechenschritte für CPUs ist der Wert entsprechend der Möglichkeiten der Arithmetik und der Rechenanforderungen gfs ein anderer. Auch sind die Besonderheiten von PCs in Betracht zu ziehen. Daher ergeben sich bei einer virtuellen Simulation in MATLAB oder pSPice sehr viel geringere Werte, als die Tabelle suggeriert.

Bauelementebedarf

Die nachfolgende Tabelle zeigt exemplarisch den Bedarf an typischen Bauelementen für unterschiedliche augewählte Analogschaltungen:

Tabelle 2

Anwendung Halbleiter Widerstände Kondensatoren Spulen I,U,B,H,N
Ein-Transistor-Verstärker 1 4 2 0 8
Gegentaktverstärker 4 6 4 2 17
AB-HIFI-Verstärker 14 15 11 4 45
Operationsverstärker 18 32 6 0 57
HIFI-Amp mit Preamp 27 42 26 8 104
Monophoner Analogsynthesizer 155 235 130 36 557
8-fach polyphoner Synthesizer mit Filtern 1.085 1.450 850 240 3.626

Anmerkungen

Es werden Beispielschaltungen herangezogen und die Zahl der Bauelemente bestimmt. Dabei werden 2 Dioden wie 1 Transistor gerechnet, ein Darlington-Transistor als 2 Transistoren. Mit I,U,B,H und N sind Spannungsquellen, Stromquellen, B- und H-Felder gemeint - eingeschlossen darin sind die Störungen und das Rauschen auf Leitungen, welche simuliert werden. Z.B. sind das Rauschquellen beim Widerstand und induzierte Ströme, aber auch Rückwirkungen von Feldern. Dabei handelt es sich um scheinbar viele Parameter, welche aber in der realen Rechnung einen überschaubaren Rechenaufwand verursachen. Dennoch sind sie für das Ergebnis wichtig.

Rechenzeitbedarf i.A. der Komplexität

Die nachfolgende Tabelle zeigt den Bedarf an Rechenschritten für unterschiedliche Schaltungen je nach Modell:

Tabelle 3

Anwendung Theoretisch Linear pSpice 2D-Modell 3D-Modell
Ein-Transistor-Verstärker 82 146 563 1.810 19.020
Gegentaktverstärker 206 460 1.765 7.615 73.000
AB-HIFI-Verstärker 590 315 4.780 19.475 233.500
Operationsverstärker 742 1.395 4.490 14.450 264.400
HIFI-Amp mit Preamp 1.118 2.820 10.500 41.780 266.850
Monophoner Analogsynthesizer 7.184 15.165 55.190 213.950 2.590.700
8-fach polyphoner Synthesizer mit Filtern 47.580 101.600 366.700 1.426.400 17.870.000

Anmerkungen

Diese Tabelle ist effektiv das Ergebnis der Faltung der beiden Tabellen zuvor unter Anrechnung der Anzahl der beteiligten Bauelemente.

Erwartungsgemäß erfordern größere Schaltungen mit zudem komplexeren Modellen überproportional immer mehr Rechenschritte, um einen einzelnen Rechnungsdurchlauf einer Zeiteinheit zu absolvieren. Bei umfangreichen Schaltungen entstehen sehr viele Verbindungen, Schleifen und Einflüsse, welche den Rechenaufwand nach oben treiben.

Maximale Iterationsfrequenz

Die nachfolgende Tabelle zeigt die Anzahl der möglichen Iterationen je Sekunde bei Abarbeitung der vollständigen analytischen Gleichungen mit dem angenommen 200MHz FPGA:

Tabelle 4

(folgt)

Anmerkungen

Unter der Annahme einer optimalen Ausnutzung des Chips und der typischen Auslastung der Fläche wie oben angesetzt, ergibt sich bei der Taktfrequenz eine maximale Anzahl von Durchläufen einer Iterations-Schleife, bis ein Ergebnis vorliegt. Diese entspricht der invertierten Latenz. Die Abschätzung zeigt, dass - die betreffende Hardware vorausgesetzt - es grundsätzlich möglich wäre, auch ein sehr kompliziertes Analogmodell mit immerhin 10Hz punktweise zu simulieren, was für Untersuchungen der Funktion im Vorfeld des Designs reichen würde.

Die hier inbegriffene Streuung beträgt etwa 50% ... 100% je nach individueller Konvergenz und Ausbau des FPGAs sowie Qualität der Umsetzung, d.h. ein Maximalmodell eines Analogsynthesizers oder einer Filterbank, wie unten rechts angenommen wurde, kann statt 100ms zwischen 50ms und 200ms pendeln. Die Größenordnung bleibt aber in diesem Bereich.


Oversampling

Die nachfolgende Tabelle zeigt den Einfluss des Oversamplings und der Anzahl der Iterationen, bis eine ausreichende Konvergenz und Genauigkeit bei numerischer Berechnung und Integration erzielt wurde.

Tabelle 5

(folgt)

Anmerkungen

Je nach Anwendung ist ein oversampling der Rechnung, eine Überhöhung der Taktfrequenz für numerische Rechnungen und auch die Anzahl der echten Iterationen zu berücksichtigen. Dabei erfordern komplexere und umfangreichere Anwendungen mehr Iterationen für die gleiche letztliche Genauigkeit. Zudem werden die Anforderungen an umfangreiche Schaltungen auch im Hinblick auf die Genauigkeit steigen. Daraus ergibt sich gewöhnlich ein quadratisches Verhalten der O/I-Bedarfs mit wachsender Größe der Schaltung und des Modells. Gleichzeitig verläuft die Genauigkeit mit der Potenz der Anzahl der Iterationen, wächst also stärker als linear. Damit ergibt sich ein mittleres Verhalten aus linearer Steigung und Potenzierung, was die Zahl der nötigen Iterationen / Takte angeht. Die Tabelle zeigt Erfahrungs- und Schätzwerte, die entsprechend variieren können.


Resultierende Abtastfrequenz

Die nachfolgende Tabelle zeigt die aus den Vorbetrachtungen resultierende Abtastfrequenz für die vollständigen Iterationen:

Tabelle 6

(folgt)

Anmerkungen

Als Folge der nötigen Iterationen ergibt sich die Zahl der echten Samples, die berechnet werden können und damit ein Hinweis auf die Echtzeitfähig der Anwendung. Um die jeweils erforderliche Genauigkeit und Frequenz zu ermitteln, muss die höchste auftretende Frequenz beachtet werden, welche für den Benutzer relevant ist. Diese ist maßgeblich für die Reglung / Authentizität der Berechnung. Für Temperaturen wären z.B. Raten von 10Hz und darunter ausreichend. Für Audiosignale wären 2x15kHz zu fordern. Mit Einschränkungen sind auch 5kHz ... 10kHz noch zulässig, wenn größere Abweichungen in den Höhen akzeptiert werden können.

An dieser Stelle sieht man bereits, dass realistischerweise nur sehr kleine und einfache Schaltungen in Echtzeit simuliert und überwacht werden können.


Benötigte Anzahl der FPGAs

Die nachfolgende Tabelle zeigt die benötigte Anzahl FPGAs und eine mögliche Parallelisierung:

Tabelle 7

(folgt)

Anmerkungen

Aus den Rechenanforderungen ergibt sich eine theoretische Anzahl von FPGAs, die zeitlich belegt werden. Bei der Beurteilung, ob ein FPGA auch tatsächlich reicht, muss zudem berücksichtigt werden, dass die Resourcen für einen sequenziellen Betrieb inklusive Verwaltung insgesamt reichen. In einigen Fällen der Teilauslastung ist dabei eine Teilparallelisierung effektiver und machbar. Diese Werte sind grün markiert. Bei Werten >1 reicht 1 FPGA aufgrund der gesamten Anforderungen nicht mehr aus, da die Rechnung von der Fläche her "zu lang" wird. Zwar gibt es einen schmalen Bereich, wo durch künstliche Sequenzialisierung (resource sharing) Resourcen gespart werden könnten, aber dies wird hier nicht betrachtet, da dann die Option des pipelinings entfiele.


Maximale Performance

Die nachfolgende Tabelle zeigt die maximale Anzahl der parallelen Berechnungen bei totalem pipelining in angenommenden 16 FPGAs:


Tabelle 8

(folgt)

Anmerkungen

Bei einem CUBE-System aus 16 FPGAs ergibt sich die Möglichkeit, die Rechnung als solche aufgrund der benötigten Hardware sehr wohl zu implementieren und die Iteration zu schließen, gleichzeitig eine Anzahl von Situationen simultan zu berechnen und so den FPGA voll zu nutzen. Das ist insbesondere bei Monte-Carlo-Analysen vorteilhaft. Es ergibt sich dann eine rechnerisch maximale Anzahl gleichzeitiger Rechenkanäle. Eine Anzahl größer 1 gibt an, dass 16 FPGAs in Umfang und Tempo ausreichen. Konstellationen <1 können zwar teilweise mehr, als 100% berechnen, aber den Loop nicht in Echtzeit schließen.


Fazit

Wie man erwarten konnte, ist ein einzelnes Bauelement bei entsprechendem Aufwand leicht zu berechnen, wenn man nicht gerade ins 3D geht und alle erdenklichen parasitären Effekte mitberücksichtigen will. Aber bereits, wenn man eine kleinere Schaltung zusammensetzt, entstehen durch die Leitungsführung Effekte, die zu Verfälschungen der reinen Modelle führen. Je höher die Frequenz ist, die betrachtet wird, desto mehr Effekte müssen simuliert werden.

Nach meiner Einschätzung reicht für Audio die Modellierung auf Spice-Niveau gerade so aus, wenn man Leitungen und wichtige Störungen mit simuliert und diese als Einflüsse mit zusätzlichen Spannungen darstellt. Ansonsten laufen die Ergebnisse der Gleichungen rasch weg. Wichtig sind die Verluste bei Spulen und Kondensatoren, die oft nur unzureichend abgebildet werden.

Trotzdem ist eine einfache Transistorschaltung noch gut zu modellieren und zu überwachen. Das geht auch in Echtzeit und ist wie die Wettervorhersage für einen gewissen Zeitraum stimmig. Eine Echtzeitüberwachung muss dann durch Messungen unterstützt und immer wieder "eingefangen" werden. Eine Simulation läuft dann logischerweise weg und ist nur dem Prinzip nach exakt d.h. ein Schwingkreis, den man ausrechnet, kommt gfs zu einer leicht abweichenden Frequenz, schwingt aber weitgehend authentisch.

Sehr schwierig sind Spulen. Die Speicherwirkung des Feldes insbesondere die Streuung und Nichtlinearität bei magnetischen Werkstoffen ist eine Wissenschaft für sich. Ein weitgehend gut funktionierendes Ersatzmodell in VHDL, das ich entwickelt habe, füllte in der Realität schon einen halben FPGA. Mit den reduzierten Modellen darf man nicht erwarten, dass man Sättigungen und Oberwellen so hinbekommt, wie sie real auftreten. Wer also in seinem Analogschaltkreis eine Drossel mit Ferritkern hat, ist im Grunde schon "verloren".

Eine simple Drossel ist hingegen in etwa so genau zu simulieren wie ein Kondensator, wenn man die parasitären Effekte mit drin hat und kleine Ströme nutzt und nicht viel von Außen einstreut. Ansonsten liegt man im Bereich der Komplexität von Transistoren.