Hallo,
ich weiß, dass diese Frage sehr allgemein gehalten ist, aber mir geht es
um ein prinzipielles Verständnis:
Wie genau kommt die Leistungsaufnahme bei einer FPGA-basierten Schaltung
zustande, also was genau ist für die Menge der benötigten Leistung
verantwortlich? Wie spielen Zahl der verwendeten LUTs, Takt, IO
Aktionen, ... hier eine Rolle?
Oder anders formuliert: Worauf muss man achten, um bei einer
FPGA-basierte Architektur einen möglichst kleinen Energiebedarf zu
erreichen, und wie sind (wenn überhaupt) etwas wie "Stromsparmodi"
realisierbar?
Momentan arbeite ich mich mit LatticeXP2 FPGAs in die FPGA-Welt ein, und
möchte damit ein SoC System entwerfen, welches mit Batteriebetrieb eine
längere Zeit auskommen kann. Außerdem interessieren mich die technischen
und physikalischen Hintergründe.
Vielen Dank im Voraus!
Die Leistungsaufnahmhe teilt sich im Wesentlichen in statischen und
dynamischen Verbrauch auf.
Statischer Verbrauch entsteht in erster Linie durch Leckströme, und kann
dem Darenblatt entnommen werden.
Dynnamischer Verbrauch entsteht durch Änderungen der Zustände im FPGA,
da müssen jedesmal zwar winzige aber viele Kapazitäten umgeladen werden.
d.h. je höher die Taktfrequenz und je mehr Signale sich bei einem Takt
ändern desto höher die Leistungsaufnahme.
Daneben hängt beides nich von der Versorgungspannung und der Temeperatur
ab.
Leistungsaufnahme der IOs muss dann auch noch berücksichtigt werden, ist
im Prinzip das gleiche, ausser dass es auch noch von der
Aussenbeschaltung und der Platine abhängt.
Spiel etwas mit dem Powerestiminator im Diamond um ein Gefühl zu
bekommen.
Lattice User schreib:
>Leistungsaufnahme der IOs muss dann auch noch berücksichtigt werden, ist>im Prinzip das gleiche, ausser dass es auch noch von der>Aussenbeschaltung und der Platine abhängt.
Die Leistungsaufnahme der IOs kann auch stark von der Konfiguration
der IO-Zellen abhängen: Unbenutzte Pins sich selbst zu überlassen
kann zu wesentlich höheren Wärmeentwicklung sorgen, bei sehr vielen
unbenutzten Pins kann der FPGA sogar extrem heiss laufen oder gar
kaputt gehen.
Das Thema wird hier im Forum alle zig Monate mal diskutiert. Eifach
mal suchen.
Sigi schrieb:>> Die Leistungsaufnahme der IOs kann auch stark von der Konfiguration> der IO-Zellen abhängen: Unbenutzte Pins sich selbst zu überlassen> kann zu wesentlich höheren Wärmeentwicklung sorgen, bei sehr vielen> unbenutzten Pins kann der FPGA sogar extrem heiss laufen oder gar> kaputt gehen.
Unnötige Panikmache.
Unbenutzte IOs werden sowohl bei Lattice als auch bei Xilinx (und ich
wette bei allen anderen auch) als Input mit weak Pullup oder Pulldowns
konfiguriert, da passiert nichts böses.
>> Das Thema wird hier im Forum alle zig Monate mal diskutiert. Eifach> mal suchen.
bei Xilinx (zumindest Spartan 6) kann man konfigurieren was mit
ungenutzten IOs passiert. Man kann sie auch bei Bedarf floaten lassen.
(nicht zu empfehlen)
Für Xilinx gibt es verschiedene Methoden für die Leistungsabschätzung,
ein Excel-Tool für die ungefähre Abschätzung, hier gibt man die
Auslastung der FPGA-Komponenten ein, LUTs, Takte, IOs, RAM usw.
Im ISE gibt es dann auch noch den Power Estimator der für ein fertiges
Design die Leistung abschätzt.
Für Lattice gibt es wie schon erwähnt im Diamond auch ein Abschätztool
für fertige Designs, welches aber meines Wissens auch manuell mit
Fülldaten benutzt werden kann.
Für Spartan 6 und Lattice ECP3 habe ich mich sehr umfangreich mit dem
Thema auseinandergesetzt. Die Quintessenz war, dass die Chips eine sehr
große Streuung aufweisen was die Verlustleistung angeht. Speziell ein
Problem stellt die exponentiell anwachsende Verlustleistung bei
steigender Temperatur dar. Steigende Temperatur führt zu höheren
Leckströmen, was wiederum zu steigender Temperatur führt, also ein
Teufelskreis.
Die Tools von Xilinx und Lattice werfen bei worst case Einstellung die
Verlustleistung eines sehr schlechten Exemplars aus. Im Normalfall ist
die Verlustleistung also wesentlich geringer, das gilt vor allem für
hohe Temperaturen wo schlechte Chips extrem hohe Verlustleistungen
aufweisen.
Bei mir ging es vor allem um die Auslegung der Stromversorgung und um
das Thema Kühlung...
Wo es einen grossen Leistungsbedarf und damit Einsparungspotenzial gibt,
sind die Taktnetze. Die kosten pauschal schon mal Leistung, egal ob da
viele oder wenige FFs dranhängen. Daher sollte man möglichst wenige
unterschiedliche Takte nehmen (fragt sich natürlich, ob man da grosse
Wahl hat) und so niedrig wie möglich takten. Eine geringe Taktfrequenz
entspannt auch das Design, erfordert weniger Extra-FFs.
Im Einzelfall ist es daher so, dass es sich lohnen kann, doch wieder
einen Takt mehr einzuführen, um eine externe Quelle zu sampeln und dann
intern runter zu gehen, um parallel zu arbeiten. Oft gibt es die
Möglichkeit mit einem doppelt instanziierten langsamen Schaltwerk lokal
dieselbe Datenrate zu schaffen und damit das Design auf die geringe
Gesamtfrequnz zu bekommen. Kommt halt drauf an.
Was man tun kann, power safe FPGAs zu verwenden. Die sind
Schaltungstechnisch schon so ausgelegt, dass sie beim Schalten weniger
Strom verbrauchen, zu Lasten der Geschwindigkeit.