Wer denkt, der Stromverbrauch spiele nur bei batteriebetriebenen Systemen eine wichtige Rolle, irrt. Heute müssen auch netzbetriebene Anwendungen sparsam mit Energie umgehen. Während es bei ersteren vor allem auf die Batterielebensdauer ankommt, senkt ein geringer Leistungsverbrauch in netzbetriebenen Applikationen die Kosten für Netzteile und den Kühlungsaufwand. Dazu kommen diverse Go-Green-Initiativen und eine zunehmende Sensibilisierung der Nutzer. In jedem Fall sind Systemdesigner gefordert, den Energieverbrauch ihrer Produkte zu optimieren. Das setzt mehrere wesentliche Schritte voraus:

  • Bauelemente auswählen, die für einen geringen Leistungsverbrauch konzipiert sind.
  • Die Energiesparmodi verschiedener Komponenten effizient nutzen.
  • Auf Systemebene die Energieversorgung verschiedener Untergruppen clever steuern.

In den meisten FPGA-basierten Applikationen benötigen die FPGAs einen wesentlichen Anteil des Gesamt-Energiebudgets und erfordern deshalb sowohl eine hohe Aufmerksamkeit bei der Auswahl eines bestimmten FPGAs für die Anwendung als auch den Einsatz vielfältiger Techniken auf Systemebene, die den Gesamtenergiebedarf senken.

Stromverbrauch in FPGAs

Die von den meisten FPGAs verbrauchte Gesamtenergie lässt sich in erster Linie in vier Kategorien unterteilen:

  • Einschaltstrom
  • Konfiguration
  • Statischer Strom
  • Dynamischer Strom

Wenn ein FPGA eingeschaltet wird, muss er interne Vorspannungen und eine vollständige Reset-Sequenz aufbauen.  Das verursacht einen Stoßstrom, der über einige Hundert Mikrosekunden einen Spitzenwert von mehreren Ampere erreichen kann, was zu einer Einschalt-Leistungsspitze führt. Viele FPGA-Anbieter reden diese Leistungskomponente klein, doch sie kann die Gesamtsystemkosten sowie den Flächenbedarf deutlich beeinflussen. Wenn die Applikation häufige Einschaltzyklen benötigt, wirkt sich der Einschaltstrom auch auf den Gesamtenergieverbrauch aus.

Beim Einschalten

Auch der aktuelle Stromfluss beim Einschalten ist problematisch. Er ist mehrfach höher als der Betriebsstrom des FPGA, dessen Versorgung aber darauf ausgelegt sein muss, auch den zum Einschalten benötigten Strom zu liefern. Außerdem benötigen SRAM-basierte FPGAs eine Ablaufsteuerung der Stromversorgung (Power Sequencing). Folgen sie diesem vorgesehenen Ablauf nicht, kann das dazu führen, dass der Einschaltstrom viel höher ist als auf dem Datenblatt der Bausteine angegeben. Es ist also wichtig, die Einschaltstrom-Spezifikation des FPGA zu verstehen, ehe man ihn für irgendein System auswählt. Flash-basierte FPGAs sind hier im Vorteil, weil sie keine Einschaltstromspitze haben, ihre POR-Ablaufsteuerung (Power-on Reset) einfacher ist sowie ihre Stromversorgungkosten niedriger liegen.

Eckdaten

Ein Design mit geringem Stromverbrauch ist in heutigen Systemen unumgänglich. Dazu ist es wichtig, Bausteine zu wählen, die für den stromsparenden Betrieb ausgelegt sind. Einschaltstrom, Konfigurationsstrom, statischen und dynamischen Strom sollten die Entwickler untersuchen und damit ein passendes Leistungsprofil erstellen. Flash-basierte FPGAs haben hier einen Vorteil gegenüber SRAM-basierten FPGAs. Stromsparende Betriebsarten sind nützlich und können viel Energie in Applikationen einsparen, bei denen das System nicht zu 100 % der Zeit aktiv bleiben muss. Ein Baustein mit reichhaltigen Hard-IPs kann die statische und dynamische Leistung weiter senken.

SRAM-basierte FPGAs behalten ihre Konfiguration nicht bei, wenn die Stromversorgung abbricht; sie müssen Konfigurationsdaten vom externen nicht-flüchtigen Speicher beim Einschalten erneut laden. Das verbraucht über einen Zeitraum von mehreren hundert Millisekunden einen beträchtlichen Strom und kann in Systemen mit häufigen Einschaltzyklen die  Batterielebensdauer verkürzen. Flash-basierte FPGAs behalten dagegen ihre Konfiguration beim Abschalten bei und verbrauchen deshalb keinerlei Konfigurationsstrom.

Im Betrieb

Der statische Energieverbrauch heißt auch Ruhestrom. Er ist auf Lecks in den Transistoren zurückzuführen und stellt eine sehr wichtige Komponente für den Leistungsverbrauch des Gesamtsystems dar. Es handelt sich hier um die konstante Leistung, die der Baustein verbraucht, solange er mit Strom versorgt wird. Die statische Leistung ist unabhängig von der Schaltfrequenz. Wenn das System mit einem niedrigen Takt und folglich einer geringen dynamischen Leistung läuft, kann die statische Leistung die Werte des Gesamtleistungsverbrauchs  dominieren.

SRAM-basierte FPGAs setzen sich aus SRAM-Zellen mit sechs Transistoren pro Zelle zusammen, mit mehreren Leckpfaden, die wiederum einen erheblichen Leckstrom pro Zelle und einen hohen statischen Strom des Bausteins zur Folge haben. Im Vergleich dazu bestehen Flash-basierte FPGAs aus lediglich einem Transistor mit einem 1000-mal geringeren Leckstrom pro Zelle; hierdurch ergibt sich eine besonders geringe statische Leistung.

Der dynamische Leistungsverbrauch hingegen ist eine Funktion der Betriebsspannung (V), der Frequenz (F) sowie der Lastkapazität (C):

  • Dynamische Leistung P = C · V2 · F

Eine höhere Betriebsfrequenz führt zu einem höheren dynamischen Leistungsverbrauch. Alle FPGA-Anbieter stellen Schätzwerte zur Verfügung, mit denen sich die dynamische Leistung auf Grundlage der Ressourcennutzung und der Schaltfrequenz einschätzen lässt. Wichtig ist, die Leistungseinschätzung vorzunehmen, ehe ein Baustein für das System ausgewählt wird.

Gesamtsicht

Alle besprochenen Komponenten tragen zu der Gesamtleistung bei. Wenn ein Baustein hochläuft, kann der Einschaltstrom zwischen mehreren Hundert Milliampere bis zu mehreren Ampere betragen. Später übernehmen die statische und die dynamische Leistung das Power-Budget. Aus Sicht des Systems wird auch das Wärmemanagement zur Herausforderung, wenn der durchschnittliche Leistungsverbrauch hoch ist. In einem solchen Szenario kann das, wenn das Wärmemanagement nicht sauber implementiert ist, ein thermisches Durchgehen zur Folge haben.

Bild 1: Das Lastprofil eines IoT-Sensorknoten zeigt, dass die Applikation nur jeweils 10 ms aktiv ist, um dann wieder 100 ms zu warten. Durch die kurzen Einschaltzeiten ist die statische Energie entscheidend.

Bild 1: Das Lastprofil eines IoT-Sensorknoten zeigt, dass die Applikation nur jeweils 10 ms aktiv ist, um dann wieder 100 ms zu warten. Durch die kurzen Einschaltzeiten ist die statische Energie entscheidend. Microsemi

Bei Systemen, deren Einschaltzeit bei nahezu 100 % liegt, also bei den meisten Server-Applikationen, sind die statische und die dynamische Leistung vorrangig zu untersuchen. Wenn der Baustein allerdings mit einem hohen Takt arbeitet, wird die Gesamtleistung von seinem dynamischen Leistungsverbrauch beherrscht. Ganz anders liegen die Verhältnisse in einem kleinen IoT-Sensorknoten, der Daten erfasst, verarbeitet und zum Host-Gerät überträgt. In derartigen Anwendungen muss die Logik nicht jedes Mal schalten, weil der Baustein Stichproben der Daten erfassen, verarbeiten und übertragen kann. Anschließend kann ein sogenanntes Clock-Gating jedes Schalten vermeiden, bis eine weitere Stichprobe ansteht. Bild 1 zeigt das Leistungsprofil eines solchen Systems, bei dem die aktive Zeit ungefähr 10 ms dauert, gefolgt von einer Zeit im Stromsparmodus von ungefähr 100 ms.

In solchen Applikation liefert die statische Energie den größten Beitrag zur Gesamtleistung des Systems, also eignen sich Bausteine, die nur wenig statische Leistung verbrauchen. Außerdem müssen sich Entwickler mit niedrigeren Schaltfrequenzen begnügen und den Burst-Mode vermeiden. Das Systemdesign analysiert die Szenarien und wählt dasjenige aus, das am besten auf die Aufgabe im System abgestimmt ist.

Ruhig schlafen

Schlaf- und Tiefschlaf-Modi sind bei Mikrocontrollern bestens bekannt. Ähnlich unterstützen manche FPGAs auch eine Art Low-Power-Modus, der in Anwendungen nützlich ist, die mit einem niedrigen Taktverhältnis arbeiten. Ob sich diese Betriebsarten anwenden lassen, hängt von Faktoren ab wie: im Stromsparbetrieb eingesparte Leistung im Verhältnis zu einem Verbleib im Standby-Modus; Übergangszeit von einer Betriebsart in eine andere; Design-bezogene Komplexität und so weiter. SRAM-basierte FPGAs benötigen eine Neukonfiguration des Bausteins, wenn sie den Stromsparbetrieb verlassen, was eine lange Ausstiegszeit zur Folge hat. Sie verursacht eine Stromspitze während der Rekonfiguration. Darüber hinaus gehen während der Stillstandszeit Registerdaten verloren.

Einige Flash-basierte FPGAs, zum Beispiel Igloo, Igloo2 oder Smartfusion2 von Microsemi unterstützen den Flash-Freeze-Modus, der es dem Baustein erlaubt, in den Ultra-Low-Power-Betrieb zu gehen und dabei SRAM-Inhalt, I/O-Status und Registerdaten zu behalten. Je nach Bausteinfamilie kann man den Flash-Freeze-Modus mithilfe verschiedener Quellen verlassen, zum Beispiel I/O-Aktivität, I/O-Signatur-Übereinstimmung oder RTC-Wakeup-Interrupt. Zudem wird kein externer Takt für die RTC-Zeitmessung gebraucht. Der Flash-Freeze-Modus fährt auch die internen Taktschaltungen herunter.

Bild 2: Das Leistungsprofil ändert sich durch den Flash-Freeze-Modus: Nur während der aktiven Phasen ist die volle statische Energie nötig, in den Ruhephasen verbraucht der FPGA deutlich weniger Energie.

Bild 2: Das Leistungsprofil ändert sich durch den Flash-Freeze-Modus: Nur während der aktiven Phasen ist die volle statische Energie nötig, in den Ruhephasen verbraucht der FPGA deutlich weniger Energie. Microsemi

Eintritts- und Ausstiegszeiten sind nahezu vernachlässigbar, da es sich in erster Linie um die für den Ausstieg erforderliche PLL-Sperrzeit beim Einschalten handelt, und diese liegt bei <100 µs. Bild 2 ist zu entnehmen, wie das Leistungsprofil mit Flash-Freeze-Modus aussieht. Dabei bleiben jedoch die Eintritts- und Ausstiegszeiten unberücksichtigt, weil sie in Flash-basierten FPGAs unerheblich sind.

Weitere Einflussgrößen

Die I/O-Pins verursachen eine Menge Leistungsverbrauch, je nach Last, Anstiegsgeschwindigkeit (Slew-Rate) und der Stärke der Ansteuerung. Eine konfigurierbare Slew-Rate und Ansteuerungsstärke kann die Gesamt-Systemleistung deutlich senken. Auch die Verfügbarkeit von Niederspannungs-I/O-Standards kann dazu behilflich sein.

Hard-IPs sind hinsichtlich ihrer Anforderungen an Leistung und Platzbedarf optimiert. Es gibt eine Reihe von IPs, die verbreitet in Anwendungen verwendet werden, etwa Kommunikationsschnittstelle wie UART, I2C, SPI, DDR-Controller, serielle Transceiver (SERDES), PCIe und so weiter. Abhängig von der Anwendung empfiehlt es sich, einen Baustein zu finden, der passende Hard-IP enthält, und beim Vergleich von zwei Bausteinen sollte die Leistung jedes IPs analysiert werden. Zum Beispiel: SERDES verbraucht beim Einsatz in einer Applikation recht viel Leistung. SERDES-Transceiver in Smartfusion2- und Igloo2-Bausteinen sind hinsichtlich des Leistungsbedarfs optimiert und verbrauchen im Vergleich zu anderen FPGAs bis zu fünfmal weniger Strom.

Bezüglich Hard-IPs ist ebenfalls wichtig, die tatsächlichen Systemanforderungen zu verstehen. Es empfehlen sich Bausteine, die nur über die wirklich benötigten Hard-IPs verfügen. Andernfalls zahlt man für Features, die man nicht braucht. Eines der besten Beispiele sind hochentwickelte Applikationsprozessoren, wie sie in manchen FPGAs zur Verfügung stehen. Diese Prozessoren sind zwar in rechenintensiven Anwendungen nützlich, doch sie verbrauchen eine große Menge statischer Leistung, wenn sie nur kurze Zeit eingesetzt oder bei niedrigeren Frequenzen betrieben werden. Beispielsweise erhöhen SoC-Bausteine mit dem A9-Prozessor-Core den statischen Strom über den unterstützten Temperaturbereich um bis zu 700 mA.

Stromsparendes Design

Bild 3: Der Firmware-Konfigurator im Libero-SoC eignet sich für ein stromsparendes Systemdesign auf Grundlage von Smartfusion2-FPGAs. Sobald er konfiguriert ist, kann der Baustein in den stromsparenden Betrieb gehen und braucht dazu nur ein paar wenige API-Befehle (Application Programming Interface).

Bild 3: Der Firmware-Konfigurator im Libero-SoC eignet sich für ein stromsparendes Systemdesign auf Grundlage von Smartfusion2-FPGAs. Sobald er konfiguriert ist, kann der Baustein in den stromsparenden Betrieb gehen und braucht dazu nur ein paar wenige API-Befehle (Application Programming Interface). Microsemi

Moderne Entwicklungs-Tools haben Features, mit denen sich der Leistungsverbrauch einschätzen lässt, die nutzerfreundliche Optionen zur Optimierung des Gesamtleistung sowie einen leichten Zugriff auf die Stromspar-Betriebsarten bieten. Nahezu jeder bedeutende FPGA-Anbieter unterstützt das Feature der Leistungseinschätzung als Teil des Entwicklungs-Tools. Zum Beispiel enthält das Smartpower-Tool von Microsemi eine detaillierte und genaue Methode zur Design-Analyse. Es bietet sowohl Zusammenfassungen auf Top-Ebene als auch die Leistung, die tief im Design vergrabene spezifische Funktionen wie Gates, Netze, I/Os, Speicher, Takt-Domänen, Blöcke sowie Stromversorgungsschienen verbrauchen. Die Hierarchie von Blöcken und spezifischen Instanzen innerhalb einer Hierarchie lässt sich jeweils auf unterschiedliche Weise herunterbrechen, um den entsprechenden Leistungsverbrauch der Bauteilbestandteile aufzuzeigen.

Das Tool weist Systementwickler auf die Bereiche hin, denen sie zur Leistungsoptimierung besondere Aufmerksamkeit schenken sollten. Smartpower erlaubt die Erstellung von Testszenario-Profilen, nach denen die Systemdesigner Sätze von Betriebsarten entwerfen können, zum Beispiel Active- und Flash-Freeze-Mode, um die durchschnittlich verbrauchte Leistung durch die Kombination von funktionellen Betriebsarten zu verstehen. Microsemis Libero-SoC stellt ein GUI-Tool zur Verfügung, mit dem sich der Low-Power-Modus (Flash-Freeze, Bild 3) leicht implementieren lässt.

Guter Rat

Bild 4: I/Os brauchen einen erheblichen Teil der Leistung eines FPGAs. Der I/O-Advisor im Libero-SoC hilft, passende Werte für die Ausgangstreiber, Slew-Rate und ODT-Impedanzwerte zu finden.

Bild 4: I/Os brauchen einen erheblichen Teil der Leistung eines FPGAs. Der I/O-Advisor im Libero-SoC hilft, passende Werte für die Ausgangstreiber, Slew-Rate und ODT-Impedanzwerte zu finden. Microsemi

Wie erwähnt, verbrauchen I/Os einen erheblichen Leistungsanteil. Zur Optimierung müssen Entwickler geeignete Ansteuerungsstärken und Slew-Rates wählen. Gleichzeitig ist es wichtig, dass I/O-Einstellungen die Anforderungen an das Timing erfüllen. Es ist eine mühsame Aufgabe, die I/O-Einstellungen zu ändern und dann das Timing für jeden I/O zu analysieren. Das Tool I/O-Advisor im Libero-SoC (Bild 4) ermöglicht es Systementwicklern, das Timing und den Leistungsverbrauch von I/Os aufeinander abzustimmen. Für Ausgangs-I/Os liefert das Tool Vorschläge für die Ausgangstreiber- und Slew-Rate-Werte, die den Timing-Forderungen entsprechen und den geringsten Energieverbrauch erzeugen. Für Eingangs-I/Os empfiehlt das Programm passende ODT-Impedanzwerte (On-Die Termination).

Die Tools lassen dem Entwickler die Wahl, ob sie das Design bezüglich Stromverbrauch oder bezüglich Timing optimieren. Diese Vorgabe wirkt sich auf Platzierung und Routing aus. Entwicklungstools, welche die Features und die Fähigkeiten haben, ein Low-Power-Design zu ermöglichen, können helfen, ein energieeffizientes System zu geringeren Entwicklungskosten und einer reduzierten Time-to-Market zu implementieren.