8 Minuten Lesezeit Mit Insights von Jonathan Hendriks Expert Electronics Engineer jonathan.hendriks@zuehlke.com Markus Wettstein Lead Systems Consultant & People Lead markus.wettstein@zuehlke.com Was ist VHDL? VHDL steht für VHSIC (Very High Speed Integrated Circuits) Hardware Description Language. Dabei handelt es sich um eine spezielle Programmiersprache zur Beschreibung der Struktur und des Verhaltens elektronischer Schaltungen. Sie ermöglicht es Ingenieuren, komplexe Hardwaresysteme effizient zu entwerfen, zu simulieren und zu produzieren. Selbst das kleinste und einfachste logische Verhalten, wie ein D-Flip-Flop (DFF), kann in VHDL ausgedrückt werden. Oben: Das DFF erfasst den Wert des Dateneingangs (d_i) bei jeder steigenden Flanke des Takts (clk). Der erfasste Wert des Eingangs wird anschließend an den Ausgang (q_o) weitergegeben. Hardware Description Language ist ein wichtiges Tool für digitale Designs und die Entwicklung digitaler Logik. Entwickler können mit HDL komplexe Hardwaresysteme effizienter und effektiver ausdrücken, simulieren und produzieren. Grundlegende Logikelemente werden miteinander verbunden, um die beabsichtigte Funktionalität zu erzeugen. Welche Vorteile bietet die VHDL-Programmierung? Da die Entwicklungs- und Bereitstellungsphase extrem komplex ist, erweist es sich mitunter als schwierig, Hardware-Innovationen umfassend zu realisieren. Oft wird das Budget überschritten und die ursprünglich anvisierte elegante Lösung stellt sich als deutlich komplexer und aufwändiger heraus als erwartet. Mit Hardware von der Stange können Ingenieure einen Teil dieser Komplexität im Design abstrahieren, indem sie bekannte Architekturen und Elemente wiederverwenden, um die gewünschte Funktionalität zu erzielen. Doch diese Standardlösungen können zusätzliche Komplexität mit sich bringen und Kosten verursachen, wenn sie nicht die erforderliche Funktionalität oder Leistung bieten. Ein Field Programmable Gate Array (FPGA) kann hier Abhilfe schaffen und zum gewünschten Ziel führen. Ein FPGA ist eine Art integrierter Schaltkreis, den Sie für die Ausführung bestimmter Aufgaben programmieren können. Mit VHDL lassen sich digitale Systeme innerhalb von FPGAs beschreiben, was ein enormes Maß an Individualisierung, Iterationen, Rapid Prototyping und Leistung ermöglicht. Die Entwicklung eines FPGA-Designs ist jedoch eine steile Lernkurve und kann ein komplexes und riskantes Unterfangen darstellen. Wie bei jeder Programmiersprache, jedem Tool oder Framework benötigen Sie erfahrene Experten mit einem umfassenden Verständnis des FPGA-Systems und seiner Fähigkeiten. So ist beispielsweise das Übertragen der gewünschten Funktion in eine logische Funktion – ausgedrückt in VHDL – eine durchaus schwierige Aufgabe, die in der Entwicklungsphase mehrere Iterationen erfordern kann. Dies geht mit zusätzlichen Prüfungen und Tests einher. Wir bei Zühlke optimieren unsere Engineering-Prozesse fortlaufend, indem wir zum Beispiel intensivere Tests automatisieren und so die Entwicklungsphase straffen. Wir wachsen an unseren Erfahrungen. Kontinuierliches Lernen ist für uns selbstverständlich, um unsere Prozesse zu perfektionieren. Selbstfahrende Autos benötigen eine Sichtkontrolle. Daher müssen mehrere Kameras koordiniert werden. Das Fahrzeug benötigt eine konstante 360-Grad-Sicht sowie eine Nah-, Mittel- und Fernsicht auf die Straße, um den Fahrtweg vorherzusagen und Hindernissen auszuweichen. Eines unserer Projekte wiederum erforderte die gleichzeitige Darstellung und Hochgeschwindigkeitserfassung von zwölf Kameras. Unter Verwendung des MIPI-Protokolls mussten die FPGAs die Bilddaten aus dem MIPI-Protokoll dekodieren und die verschiedenen Ströme zusammenführen. Die FPGA-Technologie war dabei von unschätzbarem Wert, denn sie ermöglichte das Zusammenlegen mehrerer Videoströme zu einem einzigen, der wiederum in MIPI codiert und an die Verarbeitungseinheit gesendet werden konnte. Dies zeigt, wie FPGA-Architektur und VHDL-Programmierung Komplexität auflösen und Ergebnisse verbessern können. Von der Discovery- bis zur Delivery-Phase: Die Puzzleteile der FPGA-Entwicklung zusammensetzen Ein komplexes System beginnt nur selten mit einer knappen Liste von Anforderungen. Deshalb erforschen und validieren wir bei Zühlke Konzepte gründlich und bieten eine greifbare Plattform zur Bewertung von Machbarkeit und Leistung. Wir wollen eine Idee erfassen, erforschen und entwickeln, die den Bedürfnissen des Kunden entspricht, und dabei alle Möglichkeiten und die vor uns liegende Aufgabe stets im Blick behalten. Dieser Prozess fördert nicht nur Kreativität und Innovation, sondern minimiert auch die Risiken und Unwägbarkeiten, die mit der Umsetzung bislang ungeprüfter Ideen verbunden sind. Wir entwickeln unsere Ideen in einem iterativen Prozess und nutzen dabei den Ansatz des Systemdenkens, das auch als Systems Engineering bekannt ist. Wir ermitteln und bestimmen die Grenzen des Systems und den Kontext, in dem Akteure, Maschinen oder Menschen mit dem Produkt interagieren. Darüber hinaus verwenden wir Fallszenarien, um uns ein vollständiges und detailliertes Bild von den geplanten Verwendungszwecken zu verschaffen und dabei potenzielle Fehler und Risiken in Bezug auf Sicherheit und Cybersicherheit zu vermeiden. Blockdefinitionsdiagramme (BDD) zeigen jede Komponente separat und veranschaulichen, wie sie zusammengesetzt ist und wie viele Geräte vorhanden sind. Ein internes Blockdiagramm (IBD) bildet die Verbindungen zwischen den Elementen ab und zeigt den Informationsfluss, die Transformation und die Verarbeitung. Auf den ersten Blick mag es ein reines Konzeptdiagramm sein, doch bei der Auswahl der Architektur und des Designflusses für die FPGA-Entwicklung ist es tatsächlich hilfreich. Jedes Element beginnt dann seinen eigenen Lebenszyklus, indem Anforderungen spezifiziert und Funktionalität, Interaktionen, Eingaben, Ausgaben und schließlich das Verhalten definiert werden. Die Elemente werden separat in einer White-Box-Umgebung getestet und anschließend mit einem anderen Block zu einer neuen Komponente zusammengefügt. Indem wir die Elemente nach und nach zusammensetzen und immer wieder testen, bauen wir das Systemverhalten auf. Schließlich sorgen wir für einen kompletten Zyklus, indem wir die Synergien nutzen, die sich aus der Tatsache ergeben, dass alle Fähigkeiten unter einem Dach vereint sind, um nahtlos integrierte Ergebnisse zu liefern. Durch diesen Ansatz wird jeder Aspekt des Projekts fachmännisch verwaltet – von der Discovery- bis zur Delivery-Phase. Um auf unser MIPI-Kameraprojekt zurückzukommen: Dies ist ein hervorragendes Beispiel für die zahlreichen Möglichkeiten, unser Ansatz zur FPGA-Entwicklung und VHDL-Programmierung eröffnet. In der Discovery-Phase des Projekts mussten acht Kameras zusammengeführt werden. Als sich das Projekt im Laufe der Zeit weiterentwickelte, haben wir auf zwölf Kameras aufgestockt. Selbst wenn sich die Hardware in der Iteration änderte, war die Kernaggregation generisch genug, um eine beliebige Anzahl von Kameras aufzunehmen, sodass die Evaluierung von Konzepten bereits früh im Projekt möglich war. Wie HDL-Simulation Entwicklungszyklen und Time-to-Market verkürzt Die Simulation von Hardware Description Language ist für die Entwicklung und Validierung digitaler Hardwaredesigns von entscheidender Bedeutung. Mithilfe der Simulation können Ingenieure die Funktionalität ihrer Entwürfe gründlich testen und überprüfen, bevor sie sich für eine kostspielige Systemintegration oder gar Fertigung entscheiden. HDL-Simulationen ermöglichen es den Entwicklern, das Verhalten komplexer digitaler Systeme unter verschiedenen Bedingungen zu simulieren und dadurch potenzielle Probleme frühzeitig im Entwicklungsprozess zu erkennen und zu beheben. Dies reduziert nicht nur das Fehlerrisiko, sondern beschleunigt auch den Entwicklungszyklus und ermöglicht eine schnellere Markteinführung. Wir bei Zühlke arbeiten in der Entwicklung mit Prüfständen mit zufälligen Stimuli. Diese spielen bei der Überprüfung der Robustheit und Zuverlässigkeit digitaler Konzepte eine entscheidende Rolle. Prüfstände mit zufälligen Stimuli erzeugen eine Vielzahl von Eingangssignalen, die reale Szenarien imitieren und die Reaktionsfähigkeit und Belastbarkeit des Designs testen. Darüber hinaus versuchen wir, neue Testkonzepte wie GHDL/Vunit, CocoTB zu integrieren, um die Testverfahren zu verbessern. Durch die Verwendung von sich wiederholenden Mustern und Zufallsgenerierung können wir Eckfälle und Randbedingungen aufdecken, die mit herkömmlichen Testmethoden möglicherweise nicht erkennbar wären. Veraltete Komponenten stellen häufig ein Risiko für Projekte dar – wenn beispielsweise ein Kernelement nicht mehr hergestellt wird oder der Wechsel zu einer neueren und schnelleren Komponente das Verhalten des Systems beeinträchtigt. Indem wir diese neuen Elemente in RTL testen, können wir die Reaktion des Systems ermitteln, noch bevor wir die Komponenten ändern. Dadurch können wir herausfinden, ob ein schnelleres Element unsere Regelschleifenzeit beeinträchtigt oder die Parameter des letzten verändert. Wie Simulationsergebnisse die Qualität verbessern können In der Softwareentwicklung begegnen wir vielen Funktionszweigen aus einem Git-Repository. VHDL-Projekte setzen auf die integrierte Entwicklungsumgebung (IDE) des Herstellers, in der die Quelldateien hinzugefügt und bearbeitet werden und in der das Projekt in einen Bitstream eingebaut werden kann, der zur Programmierung des FPGA verwendet wird. Wenn jedoch jede neue Funktion über einen eigenen Satz verschiedener Dateien (also eine eigene IDE) verfügt, könnte Ihre Workstation schon bald überfordert sein. Die Workstation von Zühlke kann lediglich eine bestimmte Anzahl von Projekt-IDEs verarbeiten. Deshalb haben wir eine Umgebung geschaffen, in der Ingenieure mit einer beliebigen Anzahl von Funktionszweigen arbeiten können. Das funktioniert, weil wir Umgebung und IDE containerisieren (d. h. wir haben die volle Kontrolle über den Build-Prozess der Softwareentwicklung), sodass sie sich für die kontinuierliche Integration/kontinuierliche Bereitstellung (CI/CD) eignen. Darüber hinaus steigert die Einbindung der HDL-Simulation in CI/CD-Pipelines die Effizienz und Zuverlässigkeit des Hardware-Entwicklungsprozesses. Durch die Automatisierung von Simulationsläufen innerhalb von CI/CD-Workflows können Ingenieure gewährleisten, dass jede Codeänderung vor der Integration in die Hauptcodebasis strengen Tests mit mehreren Testfällen, einschließlich HDL-Simulation, unterzogen wird. Während das Design eingehend geprüft wird, kann es parallel weiter verändert und verbessert werden. Zu guter Letzt ermöglichen die Nachbearbeitungsfunktionen der HDL-Simulation den Ingenieuren eine umfassende Analyse der Simulationsergebnisse. Durch die Visualisierung von Wellenformen, statistische Analysen und andere Analysetechniken lassen sich aussagekräftige Erkenntnisse gewinnen, Muster erkennen und potenzielle Probleme feststellen. Auf diese Weise können sie ihre Entwürfe Schritt für Schritt verbessern, damit bereits vor der Bereitstellung strenge Leistungsanforderungen und Qualitätsstandards erfüllt werden. Reproduzierbarkeit und kontinuierliche Verbesserung Mit jedem Projekt sammeln und perfektionieren wir Techniken, die unsere Effizienz steigern, und lassen diese Erkenntnisse kontinuierlich in unser maßgeschneidertes Tool einfließen: „ZAH“ (kurz für „Zühlke And HDL“). Mithilfe dieses Tools wurde der Prozess der Einrichtung und Ausführung von Simulationen optimiert, denn es automatisiert sich wiederholende Aufgaben und bietet intuitive Schnittstellen für die Ergebnisanalyse. Durch die Zentralisierung wichtiger Funktionen in einer einheitlichen Plattform können sich unsere Teams besser auf den letzten Feinschliff des Designs und die Integration konzentrieren. Dies beschleunigt letztlich den Entwicklungszyklus und verbessert die Gesamtproduktivität. Hardware-Innovation und -Entwicklung mit FPGA- und VHDL-Programmierung vorantreiben In diesem Artikel haben wir uns mit den Vorteilen der VHDL-Programmierung beschäftigt und sind der Frage nachgegangen, wie Sie die FPGA-Entwicklung optimieren können, um deren Vorteile zu nutzen. Dabei stützen wir uns auf unser umfangreiches Fachwissen und unsere Erfahrung im Bereich Software- und Hardware-Innovation und Engineering. Unsere Philosophie beruht auf Effizienz, Präzision und kontinuierlichem Lernen, denn es ist unser Ziel, einen frühzeitigen und dauerhaften Mehrwert zu gewährleisten. Auch wenn das bedeutet, dass wir zusätzliche Zeit und Arbeit investieren müssen, um das gesamte System zu verstehen. Wir blicken auf eine langjährige Erfolgsbilanz zurück und kombinieren Strategie und praktische Erfahrung, unterstützt durch Prozesse und Methoden, die hochwertige und zuverlässige Hardwarelösungen hervorbringen. Unsere Teams verfügen über umfangreiche Projekterfahrung in den Bereichen Signalverarbeitung, Datenkompression, Schnittstellen, DSP-Algorithmen, LabVIEW-Frameworks, Bildverarbeitungssysteme, Transceiver-Designs, MATLAB-Modellierung, FPGA-Co-Simulation und VHDL-Design für maßgeschneiderte Hardwaresysteme. Möchten Sie herausfinden, wie Sie VHDL für Ihr Unternehmen nutzen können? Sprechen Sie uns an, um das volle Potenzial Ihres Unternehmens auszuschöpfen. Wir freuen uns darauf, Sie zu unterstützen.
Life Science und Pharma – Software als Medizinprodukt: Die sieben Erfolgsfaktoren von SaMD Mehr erfahren