Warum und wie kann ein simples PLDB (Programmable Logic Device Board) die nächste Generation von Entwicklern, die programmierbare Logik-ICs einsetzen, an das Thema heranführen? Um hierauf eine Antwort zu geben, muss man zunächst das aktuelle Szenario betrachten.

Randall Restle ist Vice President of Applications Engineering bei Digi-Key Electronics.

Randall Restle (Digi-Key): Wir brauchen für die programmierbare Logik etwas, was die Anwendung so einfach macht wie die Nutzung des Arduino. Die Lösung ist ein simples PLDB. Alfred Vollmer

Vor langer Zeit, vor dem Zeitalter der Logiksynthese, wurden Ingenieure manchmal gebeten, ein aus reiner Logik bestehendes System zu entwerfen. Damals hatten wir Radar, aber keine Mikrocontroller und digitale Signalverarbeitung, aber keine mittlerweile handelsüblichen digitalen Signalprozessoren. Dennoch hatten wir digital aufbereitetes Radar.

Damals musste ein frischgebackener Ingenieur wissen, wie man analoge und digitale Hardware entwickelt und wie man Software entwickelt. Ich fürchte, die Zeit des breit aufgestellten, vielseitigen Ingenieurs geht zu Ende, und ich mache mir Sorgen um die Zukunft des Logik-Designs. Es gibt ein Sprichwort, das besagt, wenn ein Zimmermann nur einen Hammer hat, sieht jedes Problem wie ein Nagel aus. Haben wir den Punkt erreicht, an dem jedes Problem wie ein Softwareproblem aussieht?

Wenn Sie im Internet eine Suche mit dem Begriff „FPGA-Anwendungen“ starten, erhalten Sie als Resultat eine Liste von Spitzentechnologien der Elektrotechnik. Darunter finden sich Anwendungen, die von künstlicher Intelligenz und Spracherkennung bis hin zu Kommunikation und Bildverarbeitung reichen. Das Problem mit diesen Anwendungen besteht darin, dass sie nicht einfach zu verstehen sind; sie sind nicht für Anfänger gedacht. Die Lernkurve zur Implementierung dieser Anwendungen ist steil und umfasst mehrere nicht triviale Themen.

Eck-Daten

  • Haben wir den Punkt erreicht, an dem jedes Problem wie ein Softwareproblem aussieht?
  • Das Problem ist, dass einfache Schaltungen heute schwieriger zu entwerfen sind als in der Vergangenheit.
  • Auf der Suche nach immer komplexeren programmierbaren Logik-Komponenten haben wir unsere Wurzeln verloren, die nämlich in einfachen und direkten Logikdesigns liegen.
  • Die Lösung: ein simples PLDB!

Einarbeitung nur für Experten möglich

Man muss die programmierbaren Logikkomponenten selbst, ihre integrierten Entwicklungsumgebungen (IDEs – und jeder Hersteller hat seine eigenen Tools), neue Programmier-Paradigmen (ergo: Hardware-Beschreibungssprachen – HDL – sowie deren Anpassung an Parallelität und das Timing) und natürlich die Anwendung selbst rundum erfassen und gedanklich verarbeiten. Diese Themen verstehen eigentlich nur Experten; für alle anderen baut sich da eine praktisch unüberwindbare Hürde auf.

Dies verheißt nichts Gutes, wenn es darum geht, die nächste Generation von Logik-Designern zu inspirieren, die ihre Fähigkeiten rund um die Nutzung programmierbarer Logik ausbauen wollen. Der erste Schritt ist einfach zu kompliziert. Ich fürchte, dass hierdurch viele Menschen davon abgehalten werden, das Feld der programmierbaren Logik zu erschließen. Es gibt im Internet viele Geschichten von Menschen, die ihre Frustration über den aktuellen Stand des programmierbaren Logikdesigns zum Ausdruck bringen, und es gibt mehrere Open-Source-Communities, die versuchen, hier Abhilfe zu schaffen. Viele Menschen haben das Gefühl, dass die Erlösung durch Metaprogrammierung kommt – eine Programmiertechnik, bei der ein Programm ein anderes Programm als seine Daten behandelt.

Der Schaltplan der Hardware für das Spiel Pong; Software war nicht erforderlich.

Bild 1: Der Schaltplan der Hardware für das Spiel Pong; Software war nicht erforderlich. Archiv elektronik industrie

Unternehmen aus dem Bereich der programmierbaren Logik befinden sich in einer Zwickmühle. Einerseits verlangen ihre Investoren von ihnen, immer leistungsfähigere und teurere Chips zu entwickeln, und auf der anderen Seite gibt es relativ wenige Menschen, die diese nutzen können. Ihre Lösung besteht darin, Softwareentwickler in Hardwareentwickler zu verwandeln, und sie tun dies mit neuen Tools.

HLS-Compiler (High-Level-Synthesis) bringen Designabstraktion auf eine noch höhere Ebene und das entfernt uns noch weiter von den Wurzeln des Logikdesigns. Es ist ziemlich bemerkenswert, dass wir anspruchsvolle Hardware-Designs aus reinen Softwarebeschreibungen herstellen können, aber dabei völlig den eindringlichen positiven Reiz unterbinden, den Logikdesign auf Menschen ausüben kann. Ich werde nicht behaupten, dass eine Person besser optimieren kann als ein Computer, aber ich behaupte, dass es in der Vergangenheit einfacher war, einfache Schaltungen zu entwerfen. Das Problem ist, dass einfache Schaltungen heute schwieriger zu entwerfen sind als in der Vergangenheit.

Ich erinnere mich an meine Begeisterung, als ich sah, wie mein handgefertigtes Logikdesign in Form einer Schaltung funktionierte. Es war meine eigene Cleverness, die die Anzahl der benötigten Komponenten minimierte. Als ich in den frühen 1990er Jahren programmierbare Logik kennen lernte, war ich umso mehr erfreut, dass ich mein Wissen des Schaltungsdesigns anwenden konnte, um meine Logik in einem einzigen Gerät mit 128 Logikelementen zu implementieren, und es war mein Intellekt, der jedes dieser Logikelemente wählte. Ich war nicht abhängig vom Intellekt eines unbekannten Algorithmus-Entwicklers.

Während sich das Logikdesign weiterentwickelte, wurde auch das Softwaredesign weiterentwickelt. Es hat sich weitgehend zu einer objektorientierten Programmierwelt (OOP) entwickelt, und Bibliotheken von häufig gefundenen Designmustern sind gut dokumentiert sowie in Code-Bibliotheken leicht verfügbar. Als Inspiration und Anleitung diente mir das einst beliebte Buch von Erich Gamma (und anderen) mit dem Titel Design Patterns, Elements of Reusable Object-Oriented Software. Ich finde es interessant, dass Hardwaredesign objektorientiert begann, aber diese Entwicklung mit der Einführung der HDLs ins Stocken geriet. Obwohl die HDLs die Wiederverwendung von Designs ermöglichen, enthalten Design-Bibliotheken die grundlegendsten Funktionen. Wenn Sie im Internet nach „List of 7400-series integrated circuits” (Liste der integrierten Schaltungen der Serie 7400; die Suche im Englischen ist da ergiebiger – Anmerkung der Redaktion) suchen, können Sie einige frühe Hardware-Designmuster finden. Ich fand es auch interessant, dass Meilir Page-Jones in seinem Buch Fundamentals of Object-Oriented Design in UML integrierte Schaltungen als Beispiele für gutes Objektdesign referenziert – hohe Kohäsion und geringe Kopplung. Aber auf der Suche nach immer komplexeren programmierbaren Logik-Komponenten haben wir unsere Wurzeln verloren, die nämlich in einfachen und direkten Logikdesigns liegen. Die heutigen Entwurfsmethoden hängen von einem Computeralgorithmus zur Implementierung unserer Logik ab. Ich denke, dieser Ansatz ist für Anfänger eine große Hürde, sich intensiver mit der programmierbaren Logik zu beschäftigen.

Pong und die IEEE-Liste

Sie könnten sich fragen: „Wie viele Zeilen Code hatte das erste Pong-Spiel, das wir einst mit Hilfe des Fernsehers, der über den analogen! Antenneneingang angesteuert als ‚Monitor‘ diente, im Wohnzimmer spielten?“ (Für alle jungen Leser: Pong ist praktisch das erste Computerspiel, pardon: Telespiel überhaupt – es war damals trotz der absolut rudimentären Grafik und Spielregel wirklich fast schon revolutionär; die Redaktion) Die Antwort lautet „Null“. Es handelte sich um reine Hardware (Bild 1), denn es war keine Software enthalten! Ich glaube nicht, dass es viele neu diplomierte Ingenieure gibt, die Pong ohne Software entwerfen könnten. Sie würden sich wahrscheinlich fragen, „warum sollte ich?“ Meine Antwort hierauf lautet: „Aus Gründen der Perspektive und weil Sie wissen sollten, dass es machbar ist. Es ist einfacher, als Sie denken.“

Auf Python basierendes Framework.

Bild 2: Auf Python basierendes Framework. Digi-Key

Das IEEE veröffentlichte Anfang 2019 eine Liste von Programmiersprachen, die von Ingenieuren geliebt und gehasst wurden. Dort stand, dass Ingenieure Python lieben. Ich glaube es. Ich war vor einigen Jahren als Mitglied einer Jury bei einem Design-Wettbewerb von Texas Instruments und erfuhr, dass neun der zehn College-Teams Python für ihre Projekte nutzten. VHDL (VHSIC Hardware Description Language) und Verilog standen nicht auf den Listen für beliebte oder gehasste Programmiersprachen. Vielleicht betrachten die Redakteure am IEEE diese HDLs nicht als Programmiersprachen, aber wahrscheinlicher ist, dass niemand der Befragten überhaupt an HDLs dachte. Wenn dies zutrifft, spricht dies dafür, wie wenige Ingenieure diese Sprachen oder überhaupt das Logikdesign im Sinn haben – ein schlechtes Omen für den Bereich des Logikdesigns.

Problem in Software oder in Hardware lösen?

Also, was tun? Wie können wir neue Ingenieure dazu bewegen, ein Problem zu betrachten und darüber nachzudenken, ob die Lösung in Soft- oder Hardware zu finden ist? Schließlich lassen sich die meisten Probleme auf beiden Wegen lösen. Ich habe eine Idee.

Ich denke, die Arduino-Plattform hat eine Vielzahl junger Menschen dazu gebracht, sich für Software zu interessieren. Sie entschließen sich, in Schulen und Universitäten zu gehen, um Ingenieure und Informatiker zu werden, denn Arduino reduzierte die Lernkurve für die Softwareentwicklung; auf gut Deutsch: Arduino senkte die Einstiegshürde, indem Arduino die Softwareentwicklung weniger beängstigend machte.

Von Arduino lernen

Durch die Definition eines Boards entfiel das Einrichten von Linker-Befehlsdateien, Signalnamen wurden zum Standard und die IDE versteckte Kompilierungsdetails. Eine der Schönheiten der Programmiersprache Python besteht darin, dass sie eine strenge Formatierung erfordert. So müssen zum Beispiel Einrückungen einheitlich sein. Dies eliminiert niederwertige, willkürliche Entscheidungen mit dem Effekt, den gesamten Entwicklungsprozess zu vereinfachen, was wiederum die Produktivität der Entwickler erhöht. Etwas Ähnliches brauchen wir für die programmierbare Logik, und es würde der Industrie für programmierbare Logik obliegen, an einer Norm mitzuarbeiten.

Vorschlag für ein simples PLDB

Anzahl der Digi-Key-Kunden, die einen bestimmten Typ von Mikrocontroller kaufen.

Bild 3: Anzahl der Digi-Key-Kunden, die einen bestimmten Typ von Mikrocontroller kaufen. Digi-Key

Hier sind einige der Attribute, die ich für diese Norm befürworte. So wie Arduino nicht über die inhärente und robuste Fähigkeit verfügt, seine zugrundeliegende Architektur zu modifizieren – es lässt zum Beispiel keine verschachtelten Interrupts zu – können wir für eine Logikdesign-Plattform auch gewisse Eckpunkte definieren. Nehmen wir einmal an, dass die auf dieser Plattform zu lösenden Logikprobleme so einfach sind sind, dass die derzeit üblichen programmierbaren Logikkomponenten alle Anforderungen an das Timing erfüllen können. Das zum Arduino äquivalente Board für programmierbare Logikbausteine (PLDB: Programmable Logic Device Board) sollte einen ausreichend langsamen Taktgeber haben, so dass jeder Entwurf mit 1000 Logik-Elementen funktionieren sollte. Dies hat zur Folge, dass nur eine funktionale Überprüfung durch die Plattform erforderlich ist.

Da jeder Python liebt, schlage ich vor, dass das PLDB von Python unterstützt wird und auf einem Framework wie nMigen oder MyHDL (Bild 2) oder sogar Yosys mit seinem RTLIL aufbaut. Dies würde es Anfängern ermöglichen, ihre Logikdesigns mit einer interpretierten Sprache zu simulieren, Wahrheitstabellen zu erstellen und auf jede andere Python-Bibliothek zuzugreifen, die ihnen zur Verfügung steht. Apropos Python-Bibliothek: Die Verwendung von Python ermöglicht es der Community auch, den PyPI (Python Package Index) zu verwenden, um wiederverwendbare Hardware-Blöcke zu verteilen, was dazu beiträgt, den Mangel an robusten, gemeinsam genutzten Designmustern zu beseitigen. nMigen unterstützt, wie Python, Metaprogrammierung, so dass die Plattform skalierbar ist, obwohl dieses Framework einfache Designs unterstützt. Folglich lassen sich auch komplexe Designs damit realisieren.

Als Schnittstelle von einem Host-PC zum PLDB sollte USB dienen, zusammen mit einem auf dem PLDB integrierten Mikrocontroller, der über eine API für den Host-PC verfügt, um die Konfiguration des PLDB auszulesen, damit der Host die Python-Umgebung für die Entwicklung programmierbarer Logik automatisch einrichten kann. Diese Konfiguration soll dafür sorgen, dass die Details der Synthese, der Platzierung und des Routings sowie der Programmierung verborgen bleiben, während sie gleichzeitig die Funktionssimulation auf dem PC und die Ausführung auf aktueller Hardware ermöglicht.

Einfache Probleme dominieren die Praxis

Anzahl der von Digi-Key verkauften Einheiten jedes Mikrocontrollertyps.

Bild 4: Anzahl der von Digi-Key verkauften Einheiten jedes Mikrocontrollertyps. Digi-Key

Damit einige Leser nicht denken, dass es keine einfachen Logikprobleme mehr zu lösen gibt, zeige ich einige Statistiken über Digi-Keys Verkäufe von Mikrocontrollern. Bild 3 schlüsselt die Klassen der von Digi-Key verkauften Mikrocontroller auf, und Bild 4 zeigt, wie groß der Anteil der jeweiligen Mikrocontroller-Klasse ist. Insgesamt bietet Digi-Key über 80.000 verschiedene Mikrocontroller (bezogen auf die Bestellnummer), von denen sich über 19.000 Mikrocontroller auf Lager befinden, die für den sofortigen Versand in alle Teile der Welt bereit sind. Die Zahlen zeigen, dass einfache 8-Bit-Prozessoren von mehr Ingenieuren verwendet werden und dass Digi-Key mehr 8-Bit-Mikrocontroller als MCUs jeder anderen Prozessorklasse verkauft. Das sagt mir, dass es mehr einfache Probleme als komplexe gibt.

Unser Ziel sollte es sein, jeden, auch diejenigen, die keine formale Ausbildung in Logikdesign haben, zu Enthusiasten der programmierbaren Logik zu machen, aber wir müssen Entwicklungsparadigmen ändern, um dies zu tun.

WAs denken SIE?

Die Redaktion hat mit diesem Beitrag einmal bewusst auch einen zukunftsorientierten Meinungsbeitrag veröffentlicht. Was denken Sie darüber? Möchten Sie in Zukunft immer wieder einmal einen derartigen Beitrag – natürlich dann zu anderen Themen – lesen? Sagen Sie uns Ihre Meinung unter redaktion@all-electronics.de!