Frank Krämer

Frank KrämerAltium Europe

Mit einem Platz irgendwo zwischen Standardlogik, ASICs, Prozessoren und ASSPs erzielen FPGAs höhere Wachstumsprognosen als der Rest der Halbleiterindustrie. Dabei fokussieren die meisten FPGA-Hersteller auf die Highend-Fähigkeiten ihrer Bausteine und integrieren immer mehr Gatter in immer kleinere Gehäuse zu niedrigeren Preisen. Aber wie in vielen anderen Branchen und Produkten, gibt es auch einen so genannten Long-Tail-Markt für FPGAs, der im Verborgenen liegt und für Elektronikentwickler und deren Unternehmen neue Möglichkeiten eröffnet.

Chris Anderson prägte 2004 den Begriff Long Tail und meint damit Marktsituationen, in denen viele Nischenanbieter mit geringer Stückzahl am Ende ebenso erfolgreich oder noch erfolgreicher sein können als wenige dominierende Produkte mit wenigen Marktführern. Ein Long-Tail-Markt fokussiert also auf viele kleine Absatzmengen, die ein profitables Geschäftsmodell akkumulieren.

FPGAs eignen sich dank ihrer Programmierbarkeit besonders gut für Long-Tail-Märkte. Im Gegensatz zu Bausteinen mit festen Funktionen kann der Entwickler sie bei einem Bruchteil der NRE-Kosten (Non-Recurring Engineering) auf die Anforderungen der jeweiligen Applikation anpassen. Die Schattenseite sind Einbußen bei Stückpreis, Leistung, Taktraten und dem fast vollständigen Fehlen analoger Funktionen. Doch der Schatten schrumpft: all diese Faktoren verbessern sich in dem Maße, dass FPGAs immer mehr in den Wettbewerb gegen klassische Bausteine eintreten.

Preiswerte FPGAs

Im Schatten der Highend-FPGAs finden sich kostenbewusste Familien mit weniger Perfomance und niedrigerem Preis. Diese sind klar auf Zielmärkte mit hohen Stückzahlen ausgelegt, bei denen der Preis eine wichtige Rolle spielt und moderate Leistung ausreicht. Hierin liegen die größten Chancen für Long-Tail-Märkte. Diese Bausteine sind leicht in der Lage, einen vollwertigen 32-Bit-Soft-Prozessor-Kern aufzunehmen, der bei 50 bis 100 MHz betrieben werden kann, sowie mehrere Peripherie-Elemente wie einen Video-Display-Treiber, UART, Ethernet-Controller oder IDE-Controller. Ein solches System mag geringfügig unter den Funktionen einer hochwertigen Embedded-MCU liegen. Der wahre Wert besteht aber darin, dass dieses System leicht zu ändern ist und für verschiedene Projekte angepasst werden kann. Durch Abschreibung der NRE-Hardware-Kosten über mehrere Projekte lassen sich sogar Skaleneffekte zum eigenen Vorteil auch mit Nischenprodukten erreichen.

Bevor sich dieser Vorteil wirklich auszahlen kann, muss der Designansatz bei FPGAs geändert werden. Um mit Nischenprodukten profitabel zu sein, muss die Zeit für deren Entwicklung (NRE-Kosten) kurz sein. Historisch stammen die Tools für die FPGA-Entwicklung aus ASIC-Desgin-Flows. HDL-basierte Designeingabe kombiniert mit der Handhabung komplexer Synthese-, Simulations- und Verifikations-Flows, ist immer noch ein langwieriger Prozess.

Neuer Workflow für schnelle Entwicklung

Der Worklfow muss sich ändern, um FPGAs in Long-Tail-Märkten zu nutzen. Billige FPGAs allein reichen nicht aus. Der Design-Prozess muss leicht zugänglich sein. Einige der größten Nutznießer von FPGAs werden diejenigen sein, die momentan noch nicht deren volle Leistung ausnutzen können. Das könnten Board-Level-Designer sein, die eine bessere Integration anstreben und Board-Level-Logik in FPGA implementieren wollen. Daneben wollen Software-Entwickler einen größeren Einfluss auf die Hardware-Plattformen haben, in denen ihre Anwendungen laufen, oder langsamen sequenziellen Code in Hardware realisieren. Sie alle profitieren von der Flexibilität der „weichen Hardware“ in FPGAs, aber die benötigten Design-Flows und Sprachen sind ihnen völlig fremd.

Eine neue Generation von Designern macht ein Umdenken in den Design-Prozessen notwendig. Ebenso wie manuell erstellter Assembler-Code durch höhere Sprachen ersetzt wurde und damit eine neue Welle von Programmierern eingeläutet hat. Das gleiche wird für Hardware-Design gefordert. Durch neue Design-Tools, die Board-Level-Designern und Software-Programmierern keine zusätzlichen Kompetenzen abverlangen, werden FPGAs leichter zugänglich und ermöglichen die rasche Ausarbeitung neuer Möglichkeiten.

Optimierung

Abstraktion bedeutet in der Regel ein weniger effizientes System. Zu viele Sorgen über schlechtere Leistung und Optimierungsmöglichkeiten durch hohe Abstraktion sind aber nicht angebracht, schließlich ist eine solche Optimierung nur bei stark eingeschränkten Ressourcen bedeutend. Mit den steigenden Fähigkeiten und sinkenden Preisen bei FPGAs wird die Notwendigkeit zur Optimierung weiter an Bedeutung verlieren und die Geschwindigkeit der Entwicklung und einfache Wartung in den Vordergrund treten.

Wie können diese neuen FPGA-Design-Tools aussehen? Zunächst wäre der Bedarf an HDLs fakultativ. Allerdings kann der Einsatz von VHDL oder Verilog angeboten werden, der sollte aber für eine erfolgreiche Benutzung nicht zwingend notwendig sein. Design-Flows sollten an den Board-Level-Design-Flow angelehnt sein. In der gleichen Weise, wie im PCB-Design Standardbauteile und ICs zu hoch integrierten Systeme zusammengefügt werden, muss man große IP-Blöcke in einen FPGA einfügen und mit dem Rest des Systems verbinden können. Beispiele sind IP-Blöcke für UARTs, Video-Display-Treiber, TCP/IP-Schnittstellen und vielleicht sogar USBs.

Leiterplatte, FPGA und Software in einem Tool

Leiterplatten-Design-Flows bringen das Ganze dann zusammen. Wenn das FPGA auf einer Leiterplatte platziert wird, können Netze und Netznamen transparent zwischen FPGA- und PCB-Domäne verbunden. Wenn PIN-Änderungen an der Leiterplatte erforderlich sind, um das Routing zu vereinfachen, sollten die gleichen Änderungen automatisch im FPGA-Design stattfinden, um eine vollständige End-to-End-Synchronisation zu gewährleisten.

Software-Entwickler wollen in einer Rapid-Prototyping-Plattform schnell Peripherie, Prozessoren und Speicher-Blöcke zusammenstellen, wobei alle Details zu den Verbindungen der IP-Blöcke automatisch im Hintergrund ablaufen sollen. Peripherie und IP-Blöcke werden neben den entsprechenden Treiber- und Service-Codes, mit denen das System reibungslos funktionieren kann, immer eine gewisse Unterstützung von Low-Level-Code benötigen.

Wenn dieses neue Design-System wirklich gut ist, existiert auch ein einfacher Weg, den Software-Code einiger zeitkritischer Funktionen in Hardware umzusetzen. Software-Entwickler wollen sich eher nicht mit HDLs beschäftigen, so dass das Design-Werkzeug in der Lage sein muss, C-Code transparent in Hardware zu übertragen.

Hardware-Unterstützung

Wenn es schließlich darum geht, die Applikation laufen zu lassen, wird ein Long-Tail-FPGA-Design-Tool mit Hardware zusammenspielen, auf der das Design ausgeführt und getestet wird. Diese Hardware verfügt über eine Reihe von Peripheriegeräten sowie Anschlüsse und Schnittstellen, die von den High-Level-IP-Blöcken des Design-Werkzeugs unterstützt werden. Erweiterungsmöglichkeiten zur Unterstützung neuer Hardware-Geräte wäre schön, eine automatische Konfiguration für jedes neues FPGA-Design noch besser.