Modellierung analoger Schaltungen: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
KKeine Bearbeitungszusammenfassung
Zeile 67: Zeile 67:
===Anmerkungen===
===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.
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.

Version vom 19. Juni 2018, 09:59 Uhr

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 folgt)

Anmerkungen

Der 3D-Transistor ist eine Sammlung von Formeln welche sich aus der 3D-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 gemäß Möschwitzer / Lunze und Titze -Schenk. Der theoretische Transistor besteht aus einer Formel mit Teillinearisierungen (und entsprechenden Abweichungen).

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.

Bauelementebedarf

Die nachfolgende Tabelle zeigt exemplarisch den Bedarf an Bauelementen für unterschiedliche Schaltungen:

Tabelle 2

(folgt)


Anmerkungen

Es werden Beispielschaltungen herangezogen und die Zahl der Bauelemente bestimmt Dabei werden 2 Dioden wie 1 Transistor gerechnet, ein Darlington als 2 Transistoren. Mit I,U,B,H und N sind Spannungsquellen, Stromquellen, B- und H-Felder gemeint. Eingeschlossen darin sind auch Störungen und Rauschen, die simuliert werden. Z.B. sind das Rauschquellen beim Widerstand und induzierte Ströme durch Leitungen.


Rechenzeitbedarf i.A. der Komplexität

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

Tabelle 3

(folgt)

Anmerkungen

Die Berechnungsformeln wurden u.a. in MATLAB umgesetzt und in lineares VHDL gewandelt. Daraus ergeben sich je nach Komplexität des Modells eine anwendungsabhängige Anzahl von Rechenschritten.

Erwartungsgemäß erfordern größere Schaltungen mit zudem komplexeren Modellen überproportional mehr Rechenschritte, um einen einzelnen Rechnungsdurchlauf einer Zeiteinheit zu absolvieren.


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.