Können FPGAs ihre Logik dynamisch ändern?

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 neu verdrahten? Während der Wert von Flip-Flops geändert werden kann, habe ich tatsächlich noch nichts von einer dynamischen Rekonfiguration der Nachschlagetabellen und internen Verdrahtungen gehört, aus denen die Logikstruktur besteht.

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

"dynamische Rekonfiguration" ist in der Tat der Ausdruck, nach dem Sie suchen :)
Suchen Sie nach FPGAs, die sich selbst rekonfigurieren können (wie einige Mikrocontroller) oder die von einer externen Komponente rekonfiguriert werden können (Laufzeit)?

Antworten (2)

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

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

Suchen Sie auf der Xilinx-Website nach „Rekonfigurierbarkeit“!

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 nicht benötigt, nachdem es gelesen wurde. Ä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 jedoch während des EEPROM-Schreibens etwas schief geht, kann das Gerät funktionsunfähig sein, es sei denn, oder bis es von einem externen Gerät neu beschrieben werden kann (ein Zustand, der manchmal als "gemauert" bezeichnet wird).

Ein alternativer Ansatz, der häufig bei CPLDs nützlich ist, deren EEPROM-Zellen ihre Funktionalität "direkt" steuern (im Gegensatz zum Kopieren in Latches), besteht darin, ein System zu haben, das mit eingeschränkter Funktionalität arbeiten kann, selbst wenn sich das programmierbare Gerät in einem nutzlosen Zustand befindet. Wenn eine solche eingeschränkte Funktionalität ausreicht, um das CPLD neu zu programmieren, ist das Gerät möglicherweise immun gegen „Bricking“. Beispielsweise könnte ein drahtloses Gerät ein CPLD verwenden, um seine drahtlose Funktionalität und andere Merkmale zu steuern. Das normale Verfahren zum Neuprogrammieren des CPLD könnte darin bestehen, über die drahtlose Verbindung ein Bild in den RAM zu empfangen und dann dieses Bild zum Neuprogrammieren des CPLD zu verwenden. Beim Programmieren von Dateien kann die drahtlose Verbindung unbrauchbar sein, bis das CPLD neu programmiert wird. Damit sich das System jedoch erholen kann, könnte der Prozessor einen "Standard" enthalten.