Können FPGAs ihre Logik dynamisch ändern?

15

Es wäre theoretisch möglich, dass ein FPGA ein Konfigurationsabbild in einen externen Speicher schreibt und das Konfigurationsabbild aus dem Speicher lädt, um sich selbst neu zu konfigurieren. Dies wäre eine "nicht dynamische" Rekonfiguration.

Können FPGAs ihre Logikstruktur dynamisch umverdrahten? Während Flip-Flops ihren Wert modifizieren können, habe ich noch nichts von einer dynamischen Rekonfiguration der Nachschlagetabellen und internen Verdrahtungen gehört, die die Logikstruktur bilden.

Kann die interne FPGA-Logik (außer den Speichern) dynamisch geändert werden? Wenn nein, warum nicht?

Zufälliges Blau
quelle
"dynamische Rekonfiguration" ist in der Tat die Phrase, die Sie suchen :)
Martin Thompson
Suchen Sie nach FPGAs, die sich selbst neu konfigurieren können (wie es einige Mikrocontroller können) oder die von einer externen Komponente aus (zur Laufzeit) neu konfiguriert werden können?
Trygve Laugstøl

Antworten:

12

Ja, ich weiß, dass zumindest Xilinx Teile hat, die eine dynamische Rekonfiguration unterstützen, und wahrscheinlich auch die anderen großen Anbieter.

Es ist jedoch ein großes Unterfangen, das zu tun. Sie müssen also wirklich sicherstellen, dass Sie es brauchen. Sie müssen den Chip physisch in zwei oder mehr Bereiche unterteilen, von denen mindestens einer nicht rekonfigurierbar ist, und alle internen Schnittstellen zwischen den Bereichen physisch "fixieren", damit die Synthesewerkzeuge alle richtigen Verbindungen herstellen können.

Dave Tweed
quelle
1
Durchsuchen Sie die Xilinx-Website nach "Rekonfigurierbarkeit"!
Leon Heller
3

Es gibt zwei allgemeine Ansätze, die man verwenden kann. Viele FPGA-Typen speichern ihre Konfiguration in Latches, die beim Start von einem externen Gerät (normalerweise einem EEPROM) abgerufen werden. Das externe Gerät wird vom FPGA nach dem Lesen nicht benötigt. Änderungen am EEPROM während des Gerätebetriebs werden erst wirksam, wenn das FPGA angewiesen wird, seinen Inhalt neu zu laden. Somit ist es möglich, dass ein Gerät, das ohne ein FPGA vollständig funktionsunfähig wäre, dieses FPGA während des Betriebs neu programmiert. Wenn während des EEPROM-Schreibvorgangs jedoch ein Fehler auftritt, ist das Gerät möglicherweise nicht betriebsbereit, es sei denn, es kann von einem externen Gerät neu geschrieben werden (ein Zustand, der manchmal als "blockiert" bezeichnet wird).

Ein alternativer Ansatz, der häufig bei CPLDs nützlich ist, deren EEPROM-Zellen ihre Funktionalität "direkt" steuern (anstatt in Latches kopiert zu werden), besteht darin, ein System zu haben, das mit eingeschränkter Funktionalität arbeitet, selbst wenn sich das programmierbare Gerät in einem unbrauchbaren Zustand befindet. Wenn eine solche eingeschränkte Funktionalität ausreicht, um die CPLD neu zu programmieren, ist das Gerät möglicherweise immun gegen "Bricking". Beispielsweise kann ein drahtloses Gerät eine CPLD verwenden, um seine drahtlose Funktionalität und andere Funktionen zu steuern. Die normale Methode zur Neuprogrammierung der CPLD besteht darin, ein Bild über die drahtlose Verbindung in den RAM zu übertragen und dieses Bild dann zur Neuprogrammierung der CPLD zu verwenden. Wenn Sie Dateien programmieren, kann die drahtlose Verbindung unbrauchbar sein, bis die CPLD neu programmiert wird. Damit das System jedoch wiederhergestellt werden kann, könnte der Prozessor einen "Standard" enthalten.

Superkatze
quelle