Programmieren Sie FPGA mit STM32

Ich interessiere mich für die Verwendung eines STM32, um eine SOF- oder POF-Datei auf ein Cyclone IV-FPGA zu flashen. Das sof/pof wird im SPI-Flash-Speicher gespeichert, und der Plan ist, den STM32 als Programmierer zu verwenden. Ich konnte keine Projekte ausfindig machen, die dies tun, bin aber sehr gespannt, ob und wie es möglich sein könnte.

Antworten (2)

Sie können das Datenblatt zur FPP-Konfiguration des FPGA lesen, das Ihnen beibringt, wie Sie FPGA mit uP(STM32) programmieren. Was Sie besonders beachten sollten, ist die MESL-Konfiguration und lassen Sie STM32 das korrekte Timing verwenden, das vom FPGA-Datenblatt bereitgestellt wird, um das sof/rbf zu laden.

Geben Sie hier die Bildbeschreibung ein

Dies ist nicht wirklich die anwendbare/ratsame Option. Sie zeigen eine parallele Verbindung von einem externen Speicher, der wahrscheinlich nicht das ist, was der Fragesteller verkabelt oder verfügbar hat. Sie wollen wahrscheinlich einen synchronen seriellen Modus, nicht diesen.
@ChrisStratton Du hast Recht. Im FPP-Modus kann das FPGA den SPI-Flash nicht direkt lesen. Die seriellen Daten sollten in STM32 in parallele Daten übersetzt werden.
Es ist unwahrscheinlich, dass der Fragesteller 8+ STM32 IOs dafür verwenden möchte; Sie wollen wahrscheinlich eine synchrone serielle Lösung.

Es ist definitiv möglich; Alle wichtigen FPGAs sind so konzipiert, dass sie über einen seriellen Anschluss von einem externen Controller aus programmierbar sind.

Ich weiß nicht, ob Sie in dieser Angelegenheit bereits die offizielle Dokumentation konsultiert haben, falls Sie dies nicht getan haben:

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/cyclone-iv/cyiv-51008.pdf

Was Sie wollen, ist die serielle Einzelgerätekonfiguration, Seite 8.

Das FPGA fungiert lediglich als SPI-Master und taktet den SPI-FIFO des STM32; Ihre Aufgabe als Firmware-Designer besteht auch darin, sich in den Interrupt "FIFO halb leer" einzuklinken und sicherzustellen, dass die nächste Datenmenge per DMA in den SPI-FIFO übertragen wird.

ST hat mehrere Beispiele dafür; nicht ganz sicher, welches am besten zu Ihrer Anwendung passt.

Während es später in Ihrer Antwort implizit enthalten ist, sollte zu Beginn klargestellt werden, dass dies eine synchrone serielle Schnittstelle ist, da "serielle Schnittstelle" für sich genommen eher asynchron bedeutet .