FPGA Manager
Universelle Anbindung von FPGAs an Hochsprachen
Streaming,
made simple.
Enclustra GmbH
Agenda
� Enclustra Firmenprofil
� Gründe für eine Anbindung des FPGAs an eine Hochsprache
� Anwendungsfälle
� Arten der Anbindungen
� Anforderungen an eine Anbindung des FPGAs
� Herausforderungen bei den Anbindung des FPGAs
� Warum eine Standard Lösung für die Anbindung von FPGAs
� FPGA Manager Überblick
� FPGA Manager Lösungen
� FPGA Manager Software API
12.08.2015- 2 -
Enclustra GmbH
Enclustra FirmenprofilFPGA Design Center
� FPGA System Design
� Hardware (High-Speed, Analog, RF)
� HDL Firmware (VHDL, Verilog)
� Embedded Software (FPGA bezogen)
� Schwerpunkte
� Embedded Processing
� Test & Measurement
� Software-defined Radio
� Smart Vision systems
� Motion & Drive control
- 3 -July 23, 2014
Enclustra GmbH
Enclustra FirmenprofilFPGA Solution Center
� FPGA und SoC Module
� Mars Familie (MX1, AX3, ZX3, …)
� SO-DIMM 67.6 x 30 mm,
� Mercury Familie (KX1, CA1, ZX1, SA1, …)
� 56 x 54 bis 72 x 54 mm,
� IP Cores und Lösungen
� Display Controller IP Core
� Profinet IP Core
� Universal Drive Controller IP Core
� UDP/IP Ethernet IP Core
� FPGA Manager Lösung
- 4 -July 23, 2014
Enclustra GmbH 12.08.2015- 5 -
Gründe für eine Anbindung des FPGAs an eine Hochsprache
� Datenvorverarbeitung ist im FPGA, Daten Aufbereitung wird in Software gemacht
� Konfiguration des FPGA durch den Benutzer
� Benutzerinterface ist normalerweise in Software
� GUIs in Hochsprachen wie C#/.NET, C++, Java etc
� Embedded Anwendungen oft in C
� Benutzerinterface läuft normalerweise auf einem PC
� Hardwarebeschleunigte Software
� Räumlich abgesetzte Systeme
Enclustra GmbH 12.08.2015- 6 -
Warum eine Anbindung des FPGAs an eine Hochsprache?
� Anwendungsfall 1: Kamera mit Kanten-Detektion
� Datenvorverarbeitung im FPGA wegen hoher Auflösung und Bildwiederholfrequenz
� Darstellung des Bilds auf einem PC
� Datenstrom vom FPGA zum PC
� GUI in C#
� PC ist abgesetzt vom FPGA
Enclustra GmbH 12.08.2015- 7 -
Warum eine Anbindung des FPGAs an eine Hochsprache?
� Anwendungsfall 2: Konfiguration und Statusüberwachung für eine Motorensteuerung
� Motorensteuerung im FPGA für hohe Regelrate
� Konfiguration der Bewegungsvektoren vom PC
� Registerzugriffe vom PC zum FPGA
� Statusüberwachung des Fortschritts am PC
� Registerzugriffe vom PC zum FPGA
� Alarmmeldung der Steuerung an den Benutzer
� Events senden vom FPGA zum PC
� Applikation in C++
� PC ist abgesetzt vom FPGA
Enclustra GmbH 12.08.2015- 8 -
Warum eine Anbindung des FPGAs an eine Hochsprache?
� Anwendungsfall 3: Hardwarebeschleunigte Software
� Verschlüsselung von Netzwerkverkehr in Echtzeit
� Verschlüsselung des Datenverkehrs durch das FPGA
� Datenstrom vom PC zum FPGA
� Versenden des verschlüsselten Datenverkehrsdurch den PC
� Datenstrom vom FPGA zum PC
� Schlanke Applikation in C, Asynchrone Transfer
� PC und FPGA sind ein System
FPGA
Host
InterfaceEncryptionStream Stream
Host
Interface
Encryption
Application
Stream
PC
Stream
Ethernet
Enclustra GmbH 12.08.2015- 9 -
Warum eine Anbindung des FPGAs an eine Hochsprache?
� Drei Anbindungsarten
� Datenstrom zwischen FPGA und PC
� Typischerweise Daten zur Aufbereitung (FPGA zum PC) bzw. zur Verarbeitung (PC zum FPGA)
� Data Stream
� Registerzugriffe auf das FPGA durch den PC
� Typischerweise Konfiguration oder Status pollen
� Memory Mapped
� Events signalisieren durch das FPGA an den PC
� Typischerweise Interrupts (Completion, Errors, etc.)
� Signaling
Enclustra GmbH 12.08.2015- 10 -
Anforderungen an eine Anbindung des FPGAs (1)
� Alle drei Arten von Verbindungen zwischen FPGA und PC unterstützen
� Data Streams
� Frame Streams, Byte Streams
� Metadaten an Datenströme anhängen (z.B. Zeitstempel)
� Memory Mapped
� Read, Write, Read-Modify-Write
� Single Access, Burst
� Signaling
� Interrupts
� Edge, Level
� Prioritäten
Enclustra GmbH 12.08.2015- 11 -
Anforderungen an eine Anbindung des FPGAs (2)
� Vielfältigkeit
� Mehrere Links und Bandbreiten
� PCIe Gen1/2/…, USB 2.0/3.0/…, ETH100/1000Mbps/…
� Mehrere FPGA Hersteller, Prozessorarchitekturen und FPGA Boards
� Altera, Xilinx, ... & X86, ARM, ...
� Mehrere Programmiersprachen
� C#/.NET, C/C++, Matlab, Java etc.
� Einheitlichkeit
� Gleiches API für alle Links, FPGAs und Boards
� Gleiches API für verschiedene Betriebssysteme
� «Gleiches» API für verschiedene Programmiersprachen (Funktional gleich und soweit wie möglich syntaktisch)
� Gleiche Anbindung im FPGA für alle Links, FPGAs und Boards
� Standards verwenden für die FPGA Anbindung
Enclustra GmbH 12.08.2015- 12 -
Anforderungen an eine Anbindung des FPGAs (3)
� Multiplexing
� Mehrere Verbindungskanäle über einen physikalischen Link
� z.B. 3 Data Stream-Kanäle, 2 Memory Mapped-Kanäle, 2 Signalisierungs-Kanäle über USB 3.0
� Gleichzeitiger Zugriff mehrerer Applikationen auf verschiedene Verbindungskanäle
� Performance
� Bandbreite (MB/s)
� Latenz (s)
� CPU Last (%)
� Flusskontrolle
� Error Handling
� Recovery von Non-Fatal-Errors
� Fatal-Error Handling
Enclustra GmbH 12.08.2015- 13 -
Anforderungen an eine Anbindung des FPGAs (4)
� Blocking und Nonblocking
� Unterstützung von synchronen und asynchronen Transfers
� Enumeration
� Finden der Devices
� Die Anbindung des FPGAs soll für den Benutzer simpel sein!!!
� Benutzer soll sich auf seine eigentliche Aufgabe konzentrieren können, die Anbindung ist meist nur Mittel zum Zweck.
Enclustra GmbH 12.08.2015- 14 -
Herausforderungen bei der Anbindung des FPGAs (1)
� Vielfältigkeit vs. Einheitlichkeit
� Einheitliche Schnittstellen über alle Dimensionen (Links, FPGA Hersteller, Prozessorarchitekturen, Programmiersprachen)
� Performance vs. Ressourcen
� Um maximale Performance zu erreichen, ist der Ressourcenbedarf normalerweise entsprechend höher
� Einfachheit vs. Flexibilität
� Wie einfach sollen das API und die Anbindung gestaltet werden, um trotzdem maximale Flexibilität zu erhalten?
Enclustra GmbH 12.08.2015- 15 -
Herausforderungen bei der Anbindung des FPGAs (2)
� Einfachheit vs. Komplexität
� Wie komplex soll das Error Handling/die Protokolle sein um maximale Stabilität bei minimaler Komplexität zu erreichen?
� Bandbreite vs. Latenz vs. Durchsatz
� Für eine hohe Bandbreite sind grosse Datenpackete optimal, für eine tiefe Latenzmöglichst kleine und für hohen Durchsatz sollten möglichst viele Operationen in einem Packet untergebracht werden.
� Kompatibilität zwischen Software und Firmware
� Gleiche Version, Generation
� Rückwärtskompatibilität
Enclustra GmbH 12.08.2015- 16 -
Herausforderungen bei der Anbindung des FPGAs (3)
� Modularität/Wartbarkeit vs. Optimierung
� Wie fest soll optimiert werden, um dennoch nicht an Wartbarkeit und Modularität einzubüssen?
� Safety und Security
� Authentifizierung, Verschlüsselung der Daten nötig?
� Gegenseitiges beeinflussen der verschiedenen Datenströme
Enclustra GmbH 12.08.2015- 17 -
Herausforderungen bei der Anbindung des FPGAs (4)
� Enumeration
� Wie weiss ich welches mein Gerät ist?
� Alle diese Paradigmen unter einen Hut bringen!
Enclustra GmbH 12.08.2015- 18 -
Warum eine Standardlösung für die Anbindung von FPGAs
� All diese Herausforderungen - und das Einzige was wir wollen ist: Mit einem FPGA zu kommunizieren
� Man startet „normalerweise“ von irgend einem „Referenz Design“ und „verbrät“ am Ende 50% des Projekt Budgets (Geld, Zeit) und erhält dagegen 90% der Projekt Frustration und Stress …
� Wiederholende Arbeit: Für jeden Link wieder von Neuem
� Kommunikation oft nur Mittel zum Zweck
Enclustra GmbH 12.08.2015- 19 -
FPGA Manager ÜberblickWas ist FPGA Manager?
� Eine Firmware-Software Co-Lösung
� FPGA Manager Firmware IP Lösung
� Anbindung an Benutzer Logic
� FPGA Manager Software Bibliothek
� API an Benutzer Application
Enclustra GmbH 12.08.2015- 20 -
FPGA Manager Überblick (1)
� Deckt alle der wichtigsten Anforderungen an eine FPGA Anbindung an eine Hochsprache ab.
� Unterstützt alle drei Verbindungsarten (Data Stream, Memory Mapped und Signaling)
� Unterstützt verschiedene Links (USB, Ethernet, PCIe, ...)
� Unterstützt verschiedene Betriebssysteme (Windows, Linux)
� Unterstützt verschiedene Hochsprachen (C#/.NET, C/C++, Matlab, ...)
� Unterstützt verschiedene Prozessorarchitekturen (x86, ARM, ...)
� Einheitliches Software API über alle Links, Betriebsysteme und Hochsprachen
� Einheitliche Firmware Anbindung über alle Links (AXI und AXIS)
� Multiplexing mehrerer Verbindungskanäle über einen physikalischen Link
� Maximale Performance bei minimalem Ressourcenverbrauch
� Simpel aber dennoch mächtig!
Enclustra GmbH 12.08.2015- 21 -
FPGA Manager Überblick (2)
� Verschiedene Links erfordern verschiedene zusätzliche Chips/Treiber/Bibliotheken
� FPGA Manager, aktuelle Implementationen:
� USB 2.0/3.0
� Gigabit Ethernet
� PCIe
� Software
Enclustra GmbH 12.08.2015- 22 -
FPGA Manager Überblick (3)
� USB Lösungen
� Benötigen einen zusätzlichen USB Chip (Cypress FX3 oder FTDI 2232H)
� Spezifische Anbindung im FPGA an USB Chip
� Spezifische Anbindung in Software an Bibliotheken und Treiber
� Firmware auf den USB Chips
Enclustra GmbH 12.08.2015- 23 -
FPGA Manager Überblick (4)
� Ethernet Lösung
� Benötigt einen PHY
� Spezifische Anbindung im FPGA an MII/GMII/RGMII
� Setzt auf Socket Schnittstelle auf
� UDP als Trägerprotokoll
Enclustra GmbH 12.08.2015- 24 -
FPGA Manager Überblick (5)
� PCIe Lösung
� Benötigt einen FPGA mit PCIe Endpoint und Multi-Gigabit-Transceiver (MGTs)
� Spezifische Anbindung im FPGA an den PCIe Endpoint
� Spezifischer Treiber für Firmware
� Spezifische Anbindung in Software an Treiber
Enclustra GmbH 12.08.2015- 25 -
FPGA Manager Überblick (6)
� Software Lösung
� Host und Target laufen auf einem PC (oder SoC)
� Target repräsentiert ein Model des FPGA (Registerset, Dummy Data Source und Sink) oder eine echte Benutzer Application
� Für Software Entwicklung bevor die FPGA Firmware bereit ist oder ein „Golden Model“
Enclustra GmbH 12.08.2015- 26 -
FPGA Manager Details
� Jeder Datenverkehr wird als Stream behandelt
� Data Streams, Memory Mapped und Signaling laufen über Streams
� Eigene Protokolle
� Keine Abhängigkeit von den unterliegenden Protokollen
� Frame basiert
� Nur intern verwendet, vor Benutzer verborgen
� UNISCP Protokoll
� Ist für das Data Streaming und Signaling Handling zuständig
� Erlaubt Multiplexing, Fehler Detektierung, Throttling, etc.
� UNIMM Protokoll
� Ist für das Memory Mapped Handling zuständig
� Ist eingekapselt in UNISCP
Enclustra GmbH 12.08.2015- 27 -
FPGA Manager Details
� FPGA Firmware ist in mehrere Sub-Cores aufgeteilt
� Link IP Core (UDP/IP/ETH, USB 2.0/3.0, PCIe)
� UNISCP IP Core => AXI Stream Upstream/Downstream, Signal Inputs
� UNIMM IP Core => AXI Memory Mapped
� IP Cores als VHDL, Xilinx Vivado IP und Altera QSYS IP verfügbar
� VHDL Flow vs. Block Design Flow
Enclustra GmbH 12.08.2015- 28 -
FPGA Manager Details
� Software Bibliothek als DLL/Shared Lib
� MATLAB API
� C API
� C++ API
� C# API
� Core in C++
� OS unabhängig
� Link unabhängig
� Prozessorarchitektur unabhängig
� Speicher Allozierung in der BenutzerApplikation
Enclustra GmbH 12.08.2015- 29 -
FPGA Manager Software APIC# – Streaming
void main()
{
//Create send and receive buffers
byte[] receiveArray = new byte[4];
byte[] sendArray = new byte[4] { 1, 2, 3, 4 };
//Open a device with one stream
CDevice myDevice = new CDevice("udp://192.168.33.12", 1);
//Create Stream 0, Frame based, Upstream Enabled, Downstream Enabled
CStream myStream = myDevice.CreateStream(0, true, true, true);
//Open
myDevice.Open();
myStream.Open();
//Blocking send
myStream.Send(ref sendArray, null);
//Blocking receive
myStream.Receive(ref receiveArray, null);
//Close (non-forcing)
myStream.Close(false);
myDevice.Close(false);
}
Enclustra GmbH 12.08.2015- 30 -
FPGA Manager Software APIC# – Memory Mapped
void main()
{
//Create send and receive buffers
byte[] readArray = new byte[4];
byte[] writeArray = new byte[4] { 1, 2, 3, 4 };
//Open a device with one stream
CDevice myDevice = new CDevice("udp://192.168.33.12", 1);
//Create MmAccess on through Stream 0
CMmAccess myMmAccess = myDevice.CreateMmAccess(0);
//Open
myDevice.Open();
myMmAccess.Open();
//Blocking write, burst on, address increment on
myMmAccess.Write(ref writeArray, 0x12345670, true, false, null);
//Blocking read, burst off, address increment on
myMmAccess.Read(ref readArray, 0x12345670, false, false, null);
//Close (non-forcing)
myMmAccess.Close(false);
myDevice.Close(false);
}
Enclustra GmbH 12.08.2015- 31 -
Zusamenfassung
� Anbindung von FPGAs an Hochsprachen ist ein typischer Anwendungsfall
� Anbindung ist oft nur Mittel zum Zweck
� Anbindung soll simpel sein
� Anbindung soll flexibel sein
� Eine Standard Lösung ist in den allermeisten Fällen günstiger als selber entwickeln
Enclustra GmbH
Fragen?
- 32 -12 June 2013
Sven Meier
Enclustra GmbH
Tel. +41 43 343 39 43
Vierteljährlicher newsletter: [email protected]
Nächste Events:
� PLC2 Days 201516. – 18. Juni 2015Stuttgart
� Embedded World 201623. - 25. Februar 2016Messezentrum Nürnberg
Enclustra GmbH
Referenz Design
12.08.2015- 33 -