FPGA: Parameterschnittstelle
Der Austausch von Parameterpaketen zwischen PC Applikation und Nutzer-/FMC-Konnektor-FPGA erfolgt hardwareseitig auf Basis eines 8 Bit Xilinx AXI4 Stream Interfaces. Für jede Datenrichtung ist jeweils eine Schnittstelle implementiert. Ein Timing-Diagramm zur Darstellung des AXI4 Stream Interfaces ist in der Beschreibung der Datenschnittstelle gezeigt.
Aufbau des Parameterprotokolls
Die Basisbibliothek brBaseDLL stellt mit der Funktion ctrl_sendCommand ein Template bereit, um die für das boardinterne Routing des Parameterpaketes notwendige Datenstruktur herzustellen und die Übertragung durchzuführen. Dazu kann der Funktion neben dem zu übertragenden Datenpaketanhang auch eine beliebig wählbare Befehlsnummer übergeben werden. Auf diese Weise kann der Nutzer einen Pool aus 256 eigenen Befehlen aufbauen und verwenden.
Die Struktur des Parameterpaketes, welches an das Deltaboard übertragen wird, stellt sich nach Aufruf der Funktion wie folgt dar:
Byte 0-3 | Byte 4 | Byte 5 | Byte 6-9 | Byte 10 | ... |
---|---|---|---|---|---|
0xAB020101 | 0x01/0x02/0x03 | Befehlsnummer | Anzahl der Bytes im Anhang(Little Endian Format) | 0xBA | Anhang |
Byte 0-3 | Byte 4 | Byte 5 | Byte 6-9 | Byte 10 | ... |
---|---|---|---|---|---|
0xAB020401 | 0x01/0x02/0x03 | Befehlsnummer | Anzahl der Bytes im Anhang(Little Endian Format) | 0xBA | Anhang |
Der Paketkopf besteht aus 11 Byte. Der Wert von Byte 4 hängt vom Interface ab, über welches das Befehlspaket übertragen wurde. Byte 5 enthält die übergebene Befehlsnummer und Byte 6 bis 9 die Anzahl der übergebenen und im Paketanhang übertragenen Parameterbytes (32 Bit, Little Endian Format). Die restlichen Paketdaten sind ausschließlich für das Routing notwendig.
Über die 8 Bit AXI4 Parameterschnittstelle des jeweiligen FPGA kann dieses Paket, beginnend mit Byte 0, abgerufen und verarbeitet werden. Über die fest implementierten Bytes des Paketkopfes und die ausgewiesene Anzahl der Bytes im Paketanhang kann ggf. eine erste Prüfung auf Übertragungsfehler stattfinden. Über die Befehlsnummer kann im FPGA die weitere Signalverarbeitung der im Anhang zugeführten Daten selektiert werden.
Auf Seiten der Softwarebibliothek wird zu jedem Parameterpaket ein Feedbackpaket erwartet. Dieses muss stets generiert und über die Parameterschnittstelle zurück übersandt werden. Damit soll zum einen sichergestellt werden, dass das gesendte Parameterpaket auch korrekt empfangen wurde, und zum anderen die Möglichkeit innerhalb eines Funktionsaufrufes bieten, ein unmittelbares Feedback mit Rückgabewerten zu generieren und der Softwareapplikation zuzuführen.
Die Struktur des zu erzeugenden Feedbackpaketes ist an den Aufbau des regulären Parameterpaketes angelehnt.
Byte 0-1 | Byte 2 | Byte 3-4 | Byte 5 | Byte 6-9 | Byte 10 | ... |
---|---|---|---|---|---|---|
0xAB01 | 0x01/0x02/0x03 | 0x0201 | Befehlsnummer | Anzahl der Feedbackbytes im Anhang(Little Endian Format) | 0xBA | Anhang |
Byte 0-1 | Byte 2 | Byte 3-4 | Byte 5 | Byte 6-9 | Byte 10 | ... |
---|---|---|---|---|---|---|
0xAB01 | 0x01/0x02/0x03 | 0x0204 | Befehlsnummer | Anzahl der Feedbackbytes im Anhang(Little Endian Format) | 0xBA | Anhang |
Der Wert des Feedbackbyte 2 muss mit Byte 4 des Empfangspaketes übereinstimmen, da dies für das korrekte Routing des Paketes zurück zum Absender notwendig ist. Das Feedbackpaket wird stets über die selbe PC-Schnittstelle übertragen, über die auch das zugehörige Parameterpaket empfangen wurde. Zudem müssen die Befehlsnummern aus Empfangs- und Feedbackpaket identisch sein, um eine Zuordung der Daten in der Softwarebibliothek sicherzustellen.
Welche Daten dann im Anhang des Feedbackpaketes zurückgeliefert werden obliegt dem Entwickler selbst. Für eine korrekte Funktion muss dabei beachtet werden, die Anzahl der zu übertragenen Datenbytes als 32-Bit-Wert an Byteposition 6-9 zu setzen. Der Anhang selbst wird nach dem Übertragen als Bytearray durch die aufgerufene Bibliotheksfunktion zurückgeliefert.
Im Downloadbereich haben wir sowohl für das Nutzer-FPGA als auch für FMC-Konnektor-FPGA einige Templates und Beispiele für die Nutzung der Parameterschnittstelle bereitgestellt.