FPGA & Adaptive SoC Design: Funktionen gezielt integrieren
Processing System, programmierbare Logik, Speicher, NoC und externe Schnittstellen als gemeinsame Systemarchitektur planen und schrittweise integrieren
Bei einem Adaptive SoC reicht es nicht aus, einzelne FPGA-Funktionen unabhängig voneinander zu entwickeln. Daten müssen zwischen Processing System, programmierbarer Logik, Speicher und externen Schnittstellen transportiert werden. Gleichzeitig müssen Clocking, Pinout und High-Speed-I/O zur späteren Hardware passen.
Die zentrale Designfrage lautet deshalb: Welche Funktion gehört wohin und wie werden die einzelnen Bereiche zu einem reproduzierbaren Gesamtsystem verbunden?
Praxisbeispiel: vom Funktionsblock zum integrierten Adaptive-SoC-System
Das folgende Beispiel beschreibt einen möglichen Entwicklungsablauf mit AMD Versal AI Edge Gen 2. Das TE0960 dient zunächst als Evaluierungsplattform. Mit dem TE0965 kann dieselbe Technologiegeneration anschließend als System-on-Module in eine anwendungsspezifische Hardwarearchitektur integriert werden.
Funktionen zwischen Processing und PL aufteilen
Am Anfang steht die funktionale Partitionierung.
Zeitkritische und stark parallelisierbare Aufgaben können in der programmierbaren Logik umgesetzt werden. Software auf dem Processing System übernimmt dagegen beispielsweise Konfiguration, Steuerung, Kommunikation und Funktionen, die sich während des Betriebs häufiger ändern.
Entscheidend ist dabei nicht nur die Rechenleistung einzelner Bereiche, sondern auch der Datenfluss zwischen ihnen. Die Aufteilung sollte deshalb bereits zu Beginn des FPGA- und Adaptive-SoC-Designs festgelegt werden.
Speicher und NoC in den Datenpfad einbeziehen
Sobald Daten zwischen mehreren Verarbeitungseinheiten ausgetauscht werden, werden Speicherarchitektur und NoC zu einem Teil des eigentlichen Funktionsdesigns.
Das TE0960 kombiniert AMD Versal AI Edge Gen 2 mit drei 32-Bit-LPDDR5-Speicherbereichen und bietet damit eine Plattform, auf der entsprechende Systemarchitekturen entwickelt und untersucht werden können.
Statt Speicher erst nach der Funktionsentwicklung anzubinden, sollten Bandbreite, Datenwege und Speicherzugriffe bereits beim Aufbau der Architektur berücksichtigt werden. So lässt sich früh erkennen, welche Daten direkt verarbeitet werden können und welche über Speicher oder weitere Systembereiche transportiert werden müssen.
I/O und High-Speed-Schnittstellen früh integrieren
Ein funktionierendes FPGA-Design allein ergibt noch kein vollständiges System.
Externe Sensoren, Datenwandler, Kommunikationsschnittstellen oder weitere Komponenten bestimmen mit, welche I/O-Ressourcen, Transceiver und Clocks benötigt werden.
Das TE0965 stellt dafür umfangreiche Ressourcen bereit: unter anderem 20 GTYP-Transceiver auf der PL-Seite, weitere GTYP- und PS-GTR-Transceiver sowie X5IO-, HDIO- und MIO-Ressourcen. Diese Ressourcen müssen gemeinsam mit Pinout, Clocking und Carrier-Architektur geplant werden.
Das validierte Design in die Zielhardware übertragen
Nachdem Processing, PL, Speicher und I/O als Gesamtsystem aufgebaut wurden, kann die Architektur in eine anwendungsspezifische Hardwareplattform überführt werden.
Hier unterscheiden sich Evaluierung und Integration: Auf dem TE0960 können Funktionen und Datenpfade zunächst untersucht werden. Für das Zielsystem stellt das TE0965 AMD Versal AI Edge Gen 2 zusammen mit vier 32-Bit-LPDDR5-Speicherbereichen, QSPI Flash, Ethernet- und USB-PHY sowie Clocking auf einem 75 × 90 mm großen SoM bereit.
Das kundenspezifische Carrier Board übernimmt anschließend die Schnittstellen und Peripherie der konkreten Anwendung.
Warum die Systemarchitektur praktisch relevant ist
Bei FPGA- und Adaptive-SoC-Design entstehen Integrationsprobleme häufig nicht innerhalb eines einzelnen Funktionsblocks, sondern an dessen Übergängen.
Eine Logikfunktion kann für sich korrekt arbeiten und trotzdem im Gesamtsystem Probleme verursachen, wenn beispielsweise Speicherzugriffe, Datenbandbreite, Clock Domains oder externe Schnittstellen nicht zur Architektur passen.
Der praktische Ansatz besteht deshalb darin, Processing, PL, NoC, Speicher und I/O nicht nacheinander als getrennte Aufgaben zu betrachten, sondern früh als gemeinsamen Datenpfad zu entwickeln.
Dadurch lassen sich grundlegende Architekturentscheidungen bereits auf der Evaluierungsplattform überprüfen.
Für das spätere Produkt kann die Rechenplattform anschließend auf einem SoM gebündelt werden, während das Carrier Board die anwendungsspezifischen Schnittstellen übernimmt.