PROJEKTE
Eine Zusammenstellung der Projekte, die ich erstellen und zu denen ich beitragen durfte …
PROJEKTE
Eine Zusammenstellung der Projekte, die ich erstellen und zu denen ich beitragen durfte …
wecker
w3cker
Dieses Projekt implementiert einen digitalen Wecker mit Hardwarebeschreibungssprachen (HDLs), insbesondere VHDL und Verilog. Die Uhr zählt Sekunden, Minuten und Stunden und unterstützt eine Alarmfunktion, die auf voreingestellten Werten basiert. Zeit- und Alarmwerte werden über 7-Segment-Anzeigen angezeigt. Das Design eignet sich für FPGA-basierte Implementierungen und dient als grundlegendes Beispiel für digitales Logikdesign.
Merkmale
Zeitmessung: Zählt bis zu 60 Sekunden, 60 Minuten und 24 Stunden und zeigt die Zeit auf 7-Segment-Anzeigen an.
Alarmfunktion: Der Alarm kann so eingestellt werden, dass er zu einer bestimmten Zeit ausgelöst wird. Sobald die Zeit den voreingestellten Alarmwert erreicht, wird ein Alarmsignal aktiviert.
7-Segment-Anzeige: Aktuelle Uhrzeit und Alarmwerte werden auf 7-Segment-Anzeigen angezeigt, unterteilt in Einer- und Zehnerstellen für jede Einheit (Sekunden, Minuten, Stunden).
Werkzeuge und Technologien
HDLs: VHDL und Verilog
Simulation: Testbenches, die sowohl in VHDL als auch in Verilog geschrieben sind, dienen der Simulation.
Entwicklungsprozess
Designspezifikation: Die funktionalen Anforderungen an den Wecker wurden skizziert, einschließlich der Zeitmessung und der Alarmauslösemechanismen.
Modulentwicklung: Entwicklung einzelner Module für Zeitmessung, Alarmvergleich und 7-Segment-Anzeigesteuerung. Simulation und Test: Erstellung von Testbenches zur Simulation und Überprüfung der Funktionalität jedes Moduls.
Integration: Integration der Module in ein zusammenhängendes System, um die ordnungsgemäße Kommunikation und Synchronisierung zwischen den Komponenten sicherzustellen.
Bereitstellung: Vorbereitung des Designs für die FPGA-Implementierung unter Berücksichtigung von Ressourcennutzung und Zeitbeschränkungen.
Herausforderungen und Lösungen
Zeitsynchronisierung: Um eine genaue Zeitmessung zu gewährleisten, war eine sorgfältige Verwaltung der Taktsignale und Zähler erforderlich.
Lösung: Implementierung präziser Taktteilungs- und Synchronisierungstechniken zur Gewährleistung präziser Zeitinkremente.
Display-Multiplexing: Die Steuerung mehrerer 7-Segment-Displays mit begrenzten E/A-Pins stellte eine Herausforderung dar.
Lösung: Einsatz von Multiplexing-Strategien zur effizienten Ansteuerung mehrerer Displays über gemeinsame Steuerleitungen.
Ergebnisse
Das Projekt demonstriert erfolgreich die Implementierung eines digitalen Weckers mit HDLs, die für den FPGA-Einsatz geeignet sind. Es dient als grundlegendes Beispiel für das Verständnis digitaler Designprinzipien und der Hardwareimplementierung.
AMPEL
AMPEL
Entwurf und Implementierung einer Ampelsteuerung mit digitalen Logikprinzipien in VHDL. Das System simuliert eine reale Kreuzung, indem es die Ampeln für Fahrzeuge und Fußgänger mit der richtigen Reihenfolge und Verzögerung steuert, einschließlich der Fußgängerüberwegaufforderung.
Merkmale
Realistische Signalsteuerung: Implementiert Grün-, Gelb- und Rotlichtdauern, die denen realer Kreuzungen ähneln.
Fußgängertaste: Enthält eine Fußgängeranforderungstaste, die den Verkehrsfluss sicher unterbricht.
Synchronisiertes Design: Basierend auf einer Finite-State-Machine (FSM) mit sauberen Zustandsübergängen und zuverlässiger Zeitsteuerung.
LED-Ausgabesimulation: Visuelle Ausgabe durch Simulation.
Werkzeug und Technologien
HDL: VHDL
Simulation: ModelSim
Entwicklungsprozess
FSM-Design: Definition der Verkehrsflusszustände (Auto_Grün, Auto_Gelb, Fußgänger_Grün usw.)
Timing-Logik: Implementierung von Verzögerungszählern mittels Taktteilung für optimale Signaltaktung.
Eingabeverarbeitung: Entwicklung eines entprellten Fußgänger-Taster-Eingabesystems.
LED-Mapping: Zuordnung der FSM-Zustände zu LEDs für visuelle Rückmeldung.
Test & Verifizierung: Erstellung von Testständen zur Simulation und Verifizierung des Verhaltens von FSM und Timing-Logik.
Herausforderungen und Lösungen
Präzise Verzögerungssteuerung: Hochpräzise Steuerung von Zeitintervallen durch Taktteilung.
Lösung: Verwendung von Zählern mit 50-MHz-Takt zur Simulation von Echtzeitverzögerungen.
Asynchrone Eingänge: Verarbeitung unvorhersehbarer Fußgängeranfragen ohne Störungen.
Lösung: Verwendung synchronisierter Flankenerkennung für Tastendrücke und integrierter Entprellungslogik.
Ergebnisse
Voll funktionsfähiger, deterministischer Verkehrscontroller, der auf FPGA-Karten implementiert werden kann.
Dient als Lernprojekt für FSM-Design, Zeitsteuerung und Prinzipien eingebetteter Systeme.
Demonstriert praxisnahes Denken eingebetteter Systeme in HDL.
fifo
fifo
Dieses Projekt demonstriert und vergleicht synchrone und asynchrone FIFO-Speicherdesigns (First-In-First-Out) mit VHDL. FIFO-Puffer sind in digitalen Systemen unerlässlich, um Daten zwischen Prozessen mit unterschiedlichen Taktfrequenzen zu verwalten. Dieses Projekt demonstriert die Architektur, Implementierung und Simulation beider FIFO-Typen und verdeutlicht Unterschiede in Komplexität, Designstrategien und Zuverlässigkeit.
Merkmale
Synchrones FIFO: Arbeitet mit einer einzigen Taktdomäne.
Asynchrones FIFO: Verarbeitet die Kommunikation zwischen zwei verschiedenen Taktdomänen mithilfe von Gray-Code-Zeigern und Dual-Port-Speicher.
Simulationsprüfstände: Validieren Korrektheit, Voll-/Leer-Status und Zeigerverhalten bei unterschiedlichen Schreib-/Leseraten.
Vergleichende Architektur: Visueller und logischer Vergleich zwischen synchronen und asynchronen Designs.
Werkzeug und Technologien
HDL: VHDL
Simulation: ModelSim und Xilinx Vivado Simulator
Zielhardware: FPGA-basierte Implementierung wird unterstützt (generische Architektur)
Designmethoden: FSM, Clock Domain Crossing, Gray-Code-Logik
Entwicklungsprozess
FSM-Design: Definition der Verkehrsflusszustände (Auto_Grün, Auto_Gelb, Fußgänger_Grün usw.)
Timing-Logik: Implementierung von Verzögerungszählern mittels Taktteilung für optimale Signaltaktung.
Eingabeverarbeitung: Entwicklung eines entprellten Fußgänger-Taster-Eingabesystems.
LED-Mapping: Zuordnung der FSM-Zustände zu LEDs für visuelle Rückmeldung.
Test & Verifizierung: Erstellung von Testständen zur Simulation und Verifizierung des Verhaltens von FSM und Timing-Logik.
Herausforderungen und Lösungen
Clock Domain Crossing (CDC) im asynchronen FIFO
Lösung: Implementierung der Zeigersynchronisation mit Doppelregister-Synchronisierern und Gray-Code-Kodierung für zuverlässigen domänenübergreifenden Betrieb.
Überlauf-/Unterlaufkontrolle
Lösung: Sorgfältig entwickelte Logik für volle und leere Zustände, um Race Conditions beim gleichzeitigen Lesen/Schreiben zu vermeiden.
Ergebnisse
Funktionale FIFO-Module (synchron und asynchron) mit simulationsgestützter Validierung.
Dieser lehrreiche Vergleich dient dem Verständnis digitaler Systempufferung und CDC.
Erweiterbar für DMA-Puffer, UART-Schnittstellen oder Datenstreaming-Anwendungen.
RTL IN NN
RTL IN NN
Dieses Projekt demonstriert die Implementierung einer einfachen neuronalen Netzwerk-Inferenz-Engine auf dem TE0802 Zynq Ultrascale+ FPGA-Entwicklungsboard. Ziel ist es, KI-Berechnungen mithilfe FPGA-basierter, kundenspezifischer Hardware zu beschleunigen und so die Echtzeit-Ziffernklassifizierung auf eingebetteten Systemen zu ermöglichen. Die Plattform verbindet maschinelles Lernen und Hardware-Design für effiziente Edge-Inferenz, insbesondere in der Robotik und eingebetteten KI-Anwendungen.
Merkmale
Matrixmultiplikations-Engine für neuronale Inferenz über benutzerdefinierte HLS-IP
Speicherabgebildete BRAM-Schnittstelle für schnelle Datenverarbeitung.
UART-basierte Kommunikation zum Senden von Eingangsbildern vom PC an FPGA
LED-Anzeige zur visuellen Darstellung der Klassifizierungsergebnisse Modularer
Aufbau: HLS-basierter Rechenkern + VHDL-basierte Steuerlogik Bare-Metal-Software für den Zynq ARM-Kern zur Orchestrierung der Inferenz
Werkzeug und Technologien
Hardwareplattform: TE0802 Zynq Ultrascale+
Sprachen und Frameworks: C++, Python, VHDL, TensorFlow 2.6.0
Werkzeuge: Xilinx Vivado 2021.1, Vitis HLS, Vitis IDE
Kommunikation: UART
Speicherschnittstellen: AXI-Lite, BRAM
Entwicklungsprozess
Training neuronaler Netze
Training eines dreischichtigen neuronalen Netzes auf dem MNIST-Datensatz mit TensorFlow
Extraktion von Gewichtungs- und Bias-Parametern für die Hardware
HLS-IP-Core-Design
Implementierung der Matrixmultiplikation in C++ und Synthese in RTL mit Vitis HLS
Definierte AXI-Schnittstellen für Steuerung und Datenübertragung
Hardwareintegration (Vivado)
Anbindung der HLS-IP an Zynq PS und BRAM über AXI
Entwicklung zusätzlicher Steuerungsmodule in VHDL: nn_ctrl.vhd, not_gate.vhd, fix_address.vhd
Softwareentwicklung (Vitis)
Entwicklung einer Bare-Metal-C-Anwendung zur Übertragung von Bilddaten und Inferenz
Empfang des Klassifizierungsergebnisses und Verwendung von LEDs zur Ausgabe
Testen und Debuggen
Erstellung von Python-Skripten zum Senden von Testbildern über UART
Validierung der Inferenzgenauigkeit und des FPGA-Verhaltens
Herausforderungen und Lösungen
Integration von HLS-generierter IP in ein kundenspezifisches FPGA-System
Lösung: Sorgfältige Konfiguration der AXI4-Lite- und BRAM-Schnittstellen und Fehlerbehebung mithilfe von Testbenches und UART-Protokollen.
Verwaltung von Adressraum und Datenformat für die Matrixeingabe
Lösung: Entwicklung eines kundenspezifischen VHDL-Moduls (fix_address.vhd) zur Standardisierung der Speicherzugriffsausrichtung.
Zuverlässige PC-FPGA-Kommunikation über UART
Lösung: Implementierung eines robusten Handshake-Protokolls und einer Fehlerprüfung in Python und Vitis-Firmware.
Ergebnisse
Echtzeit-Ziffernklassifizierung von MNIST mithilfe von FPGA-beschleunigter Inferenz.
Reduzierte Latenz und CPU-Auslastung durch Auslagerung der Matrixberechnung auf FPGA.
Erstellung einer modularen und erweiterbaren Vorlage für die Bereitstellung von KI-Modellen auf eingebetteter Hardware.
Lernwert für das Verständnis des End-to-End-Prozesses vom ML-Modell zur kundenspezifischen Hardware.
pre-fetching
pre-fetching
Dieses Projekt demonstriert die Optimierung eines Deep-Learning-Modells auf einem Zynq Ultrascale+ Board. Ziel war die Entwicklung eines Erste-Hilfe-Geräts, das medizinisches Personal bei der Erstellung präziser Diagnosen unterstützt und zuverlässig und schnell reagiert. Ein DL-Modell wurde basierend auf Faktoren wie Herzschlag pro Sekunde, Blutdruck und Temperatur entwickelt. Es musste eine FPGA-Schnittstelle entwickelt werden, die dieses System weiter optimieren und gleichzeitig die Genauigkeit gewährleisten konnte.


Merkmale
Mapping des ResNet-18-Modells: Zur Bestimmung der für die Ausführung des Modells verwendeten Zeit und Adressen wurde ein ResNet-18-Modell erstellt.
Zeitpläne: Für alle Module der VTA-Architektur wurden Zeitpläne erstellt, die für zukünftige Anwendungen genutzt werden könnten.
Simulation und Verifizierung: Die Funktionalität des Modells wurde mit dem Vivado-Simulator simuliert und verifiziert und ein Bitstream generiert.
Werkzeug und Technologien
Mapping: DRAMSim2, Microsoft Excel
Boards: Trenz TE0802 BSP von Trenz
FPGA-Toolchain: Xilinx Vivado / Vitis
Embedded-Linux-Konzept: Prefetching
Entwicklungsprozess
Mapping des Resnet-18-Modells
Verwendung einer Verifizierungs-IP mit einem Trigger, der die vom Modell verwendeten Zeiten und Adressen protokolliert.
Analyse des Mappings auf Abhängigkeiten
Mapping der Abhängigkeiten zwischen den Adressen, die Verzögerungen im Modell anzeigen.
Erstellung von Zeitplänen
Erstellung von Zeitplänen gemäß den Anforderungen für den benutzerdefinierten AXI-Controller.
Simulation des AXI-Controllers
Simulation des AXI-Controllers in Vivado, um die ordnungsgemäße Funktionalität sicherzustellen.
Bereitstellung
Generierung eines Bitstreams für die FPGA-Integration und -Anwendung.
Herausforderungen und Lösungen
Hardwarekompatibilitätsprobleme
Lösung: Die VTA-Architektur und der benutzerdefinierte AXI-Controller wurden mithilfe von HDL-Modulen und Standardverfahren entwickelt.
Große Datenmappings
Lösung: Microsoft Excel und Python wurden zur Optimierung der Muster im LOAD-Modul eingesetzt.
Ergebnisse
Ein benutzerdefiniertes PYNQ-fähiges Betriebssystem wurde erfolgreich auf dem TE0802-Board gestartet und ausgeführt.
Der Jupyter-Server ist über IP erreichbar und ermöglicht die webbasierte Steuerung von FPGA-Beschleunigern.
Demonstriert fortgeschrittene Kenntnisse in Embedded Linux, Systemanpassung und FPGA-Softwareintegration.
mustererkennung
mustererkennung
Der Zweck dieses Projekts bestand darin, zu zeigen, dass es ein bestimmtes Muster gibt, das vom Betriebssystem bei der Ressourcenzuweisung, d. h. der Speicherzuweisung, verwendet wird. Das Projekt griff auf verschiedene Muster in der VTA-Architektur im Lademodul ein.
Merkmale
Speicher- und Zeitprotokollierung mithilfe von Verifizierungs-IP, die für beliebige Prozesse wiederverwendet werden kann.
Mustererkennung mit Microsoft Excel zur Unterscheidung mehrerer Muster in einem einzigen Muster.
Musterbestätigung durch Simulation des Musters in Xilinx Vivado mithilfe vordefinierter Formeln.
Werkzeug und Technologien
Hardwareplattform: TE0802 Zynq Ultrascale+
Sprachen & Frameworks: VHDL, Verilog
Werkzeuge: Xilinx Vivado 2021.1, Microsoft Excel
Simulation: Xilinx Vivado Speicherschnittstellen: AXI-Full, BRAM
Entwicklungsprozess
Protokollierung von Zeit und Speicher
Mithilfe einer benutzerdefinierten Verifizierungs-IP wurden die Zeit- und Speicherdaten protokolliert und als Excel-Datei übertragen.
Mustererkennung
Mithilfe integrierter Microsoft Excel-Funktionen und Mapping-Techniken wurde eine Häufung von Mustern, meist in Zweiergruppen, erkannt und zur weiteren Vereinfachung getrennt.
Simulation
Die erkannten Muster wurden in Formeln umgewandelt.
VHDL- und Verilog-Codes wurden erstellt, um die beobachteten Muster darzustellen.
Test
Die simulierten Muster wurden anhand der Originalmuster verifiziert.
Herausforderungen und Lösungen
Speicherüberschreibung während der Datenerfassung
Lösung: Die Datenerfassung musste in mehreren Schritten erfolgen, da mehr als 30.000 Datenpunkte erfasst wurden.
Mustererkennung
Lösung: Die Zusammenführung mehrerer Muster zu einem einzigen Muster und die Erstellung eines standardisierten Protokolls boten die Lösung.
Ergebnisse
Erkennung einer Reihe von Mustern, die das Betriebssystem bei der Speicherzuweisung verwendet.
Identifizierung von Protokollen, die zukünftig zur Bestimmung von Speicherzuweisungsmustern verwendet werden können.
Bereitstellung von Möglichkeiten zum Prefetching von Projekten.
pynq-linux os
pynq-linux os
Dieses Projekt zeigt, wie Sie ein PYNQ-basiertes Linux-Betriebssystem für das Trenz TE0802 Zynq UltraScale+ MPSoC-Board mit PetaLinux-Tools anpassen und bereitstellen. Die Arbeit umfasst die Anpassung des Boot-Prozesses, der Gerätebäume und des Root-Dateisystems zur Unterstützung von PYNQ-Funktionen auf kundenspezifischer Hardware – eine wichtige Aufgabe für Embedded-Entwickler, die softwaredefinierte FPGA-Anwendungen erstellen.


Merkmale
Benutzerdefinierter Linux-Build: Ein voll funktionsfähiges Embedded-Linux-System wurde von Grund auf mit PetaLinux-Tools erstellt.
PYNQ-Kompatibilität: Integrierte PYNQ-Overlays und eine Jupyter-Notebook-Umgebung für Hardware-/Software-Co-Design.
Boardspezifische Integration: Das Betriebssystem wurde angepasst, um den Gerätebaum, den Bootloader und die Hardwarekonfiguration des TE0802-Boards zu unterstützen.
Netzwerk- und Peripherieunterstützung: Verifizierte Unterstützung für SSH, Ethernet, serielle Konsole und SD-Karten-Booten.
Werkzeug und Technologien
PetaLinux: 2022.1
FPGA-Toolchain: Xilinx Vivado / Vitis
Embedded-Linux-Konzepte: u-boot, Devicetree, rootfs, boot.bin, Jupyter über Python 3
Entwicklungsprozess
PetaLinux-Umgebung einrichten
PetaLinux SDK installiert und Abhängigkeiten (Ubuntu, Python, Tools) überprüft.
Trenz BSP importiert
PetaLinux-Projekt mit „petalinux-create -t project“ erstellt und TE0802 BSP importiert.
Gerätebaum und Konfigurationsanpassung
system-user.dtsi und Gerätebaum angepasst, um Hardwareunterstützung für PYNQ-spezifische Peripheriegeräte hinzuzufügen.
Root-Dateisystemerweiterung
Erforderliche Pakete und Python-Bibliotheken für Jupyter, NumPy, Matplotlib usw. hinzugefügt.
Erstellen und Bereitstellen
Bootdateien (BOOT.BIN, image.ub, rootfs) generiert und für TE0802 auf SD-Karte bereitgestellt.
Validierung
Hardwarezugriff, SSH-Verbindung und Laden des PYNQ-Overlays über Jupyter Notebook überprüft.
Herausforderungen und Lösungen
Hardwarekompatibilitätsprobleme
Lösung: Der Gerätebaum wurde sorgfältig an das Trenz TE0802-Schema angepasst und die passende U-Boot-Konfiguration sichergestellt.
Integration des PYNQ-Pakets
Lösung: Virtuelle Python3-Umgebungen im RootFS wurden verwendet und init.d-Skripte für den automatischen Start des Jupyter-Servers angepasst.
Ressourcenbeschränkungen im RootFS
Lösung: Ein benutzerdefiniertes Root-Dateisystem-Image mit ausgewählten Python-Abhängigkeiten wurde erstellt, um die Systemlast zu reduzieren.
Ergebnisse
Ein benutzerdefiniertes PYNQ-fähiges Betriebssystem wurde erfolgreich auf dem TE0802-Board gestartet und ausgeführt.
Der Jupyter-Server ist über IP erreichbar und ermöglicht die webbasierte Steuerung von FPGA-Beschleunigern.
Demonstriert fortgeschrittene Kenntnisse in Embedded Linux, Systemanpassung und FPGA-Softwareintegration.
droneNMALER
droneNMALER
Dieses zu 100 % staatlich finanzierte Projekt testet die Einsatzmöglichkeiten von Drohnen zum ferngesteuerten Anstreichen von Hochhäusern. Jedes Jahr verlieren Tausende Menschen ihr Leben bei der Arbeit unter gefährlichen Bedingungen, bei denen die Sicherheit kaum oder gar nicht berücksichtigt wird. Das Projekt wurde als Alternative konzipiert, um diesen Arbeitern ein sichereres Arbeitsumfeld zu bieten und gleichzeitig die Arbeitsplatzsicherheit zu gewährleisten, indem sie dank integrierter Sicherheitsprotokolle der Drohne einfache Fernsteuerungsanweisungen erlernen.
Merkmale
Sichere Arbeitsbedingungen: Wir haben ein Drohnenprojekt entwickelt, das für die Arbeiter kaum bis gar keine Risiken birgt.
Einfache Umstellung: Dank der integrierten Sicherheitsprotokolle werden die Arbeiter durch eine einfache Schulung zu Experten im Umgang mit der Drohne.
Gesteigerte Effizienz: Das System ist 30 % effizienter als jedes bestehende System.
Einfache Reproduktion: Das System besteht aus einfachen Teilen und lässt sich für die Massenproduktion problemlos reproduzieren.
Werkzeug und Technologien
Rahmen: Tarot 650 Sportrahmen
Motoren: 4114 320 kV Brushless-Motor
Propeller: 1655 Crabon Fiber Propeller
Regler: Opto ESC 40A
Flugsteuerung: Pixhawk Cube
Akku: 8000 mAh 25C Akku
Entwicklungsprozess
Entwicklung der Systeme
In der Anfangsphase wurden die drei Komponenten Drohne, Lackierer, Farbversorgungssysteme und der Anschluss für Drohne und Lackiersystem entwickelt.
Berechnung der Nutzlast
Die Nutzlast des Systems wurde berechnet, um die Drohnenparameter wie Flugregler, Flügeldurchmesser, Motorleistung, elektronische Drehzahlregler und Verkabelung zu bestimmen.
Bestellung der Komponenten
Die Teile wurden auf dem internationalen Markt bestellt, indem Ausschreibungen gesammelt, verhandelt und die Zustimmung der Vertreter eingeholt wurde.
Montage des Lackiersystems
Das Lackiersystem wurde 3D-gedruckt, am Farbträger befestigt und auf optimalen Luftdruck geprüft.
Einsatz der Drohne
Die Drohne wurde kalibriert und das Lackiersystem mithilfe eines festen Anschlusses für einen stabilen Flug befestigt.
Tests
Die Lackierdrohne wurde getestet und die Details der indischen Regierung vorgelegt.
Herausforderungen und Lösungen
Komponentenauswahl
Lösung: Umfangreiche Recherchen und zahlreiche Verhandlungen mit Vertretern internationaler Märkte lieferten Erkenntnisse.
Lackiermechanismus
Lösung: Der Einsatz von luftbasierter Farbe sorgte für eine höhere Effizienz und eine längere Lebensdauer der Drohne, da weniger Farbtropfen auf die Drohne zurückfielen.
Importprobleme
Lösung: Einige Teile mussten am Flughafen eingelagert werden, und für die Abholung waren entsprechende Dokumente erforderlich. Berücksichtigen Sie bei der Suche nach Ausschreibungen auf dem internationalen Markt die Importschwierigkeiten aufgrund von Beschränkungen.
Ergebnisse
Erfolgreiche Entwicklung und Bereitstellung einer nahezu unfallfreien Lösung für die Hochhauslackierung.
30 % höhere Systemeffizienz durch luftbasierte Farbe.
Ein stabiles System durch effizienten Einsatz des Flugcontrollers.
wecker
w3cker
Dieses Projekt implementiert einen digitalen Wecker mit Hardwarebeschreibungssprachen (HDLs), insbesondere VHDL und Verilog. Die Uhr zählt Sekunden, Minuten und Stunden und unterstützt eine Alarmfunktion, die auf voreingestellten Werten basiert. Zeit- und Alarmwerte werden über 7-Segment-Anzeigen angezeigt. Das Design eignet sich für FPGA-basierte Implementierungen und dient als grundlegendes Beispiel für digitales Logikdesign.
Merkmale
Zeitmessung: Zählt bis zu 60 Sekunden, 60 Minuten und 24 Stunden und zeigt die Zeit auf 7-Segment-Anzeigen an.
Alarmfunktion: Der Alarm kann so eingestellt werden, dass er zu einer bestimmten Zeit ausgelöst wird. Sobald die Zeit den voreingestellten Alarmwert erreicht, wird ein Alarmsignal aktiviert.
7-Segment-Anzeige: Aktuelle Uhrzeit und Alarmwerte werden auf 7-Segment-Anzeigen angezeigt, unterteilt in Einer- und Zehnerstellen für jede Einheit (Sekunden, Minuten, Stunden).
Werkzeuge und Technologien
HDLs: VHDL und Verilog
Simulation: Testbenches, die sowohl in VHDL als auch in Verilog geschrieben sind, dienen der Simulation.
Entwicklungsprozess
Designspezifikation: Die funktionalen Anforderungen an den Wecker wurden skizziert, einschließlich der Zeitmessung und der Alarmauslösemechanismen.
Modulentwicklung: Entwicklung einzelner Module für Zeitmessung, Alarmvergleich und 7-Segment-Anzeigesteuerung. Simulation und Test: Erstellung von Testbenches zur Simulation und Überprüfung der Funktionalität jedes Moduls.
Integration: Integration der Module in ein zusammenhängendes System, um die ordnungsgemäße Kommunikation und Synchronisierung zwischen den Komponenten sicherzustellen.
Bereitstellung: Vorbereitung des Designs für die FPGA-Implementierung unter Berücksichtigung von Ressourcennutzung und Zeitbeschränkungen.
Herausforderungen und Lösungen
Zeitsynchronisierung: Um eine genaue Zeitmessung zu gewährleisten, war eine sorgfältige Verwaltung der Taktsignale und Zähler erforderlich.
Lösung: Implementierung präziser Taktteilungs- und Synchronisierungstechniken zur Gewährleistung präziser Zeitinkremente.
Display-Multiplexing: Die Steuerung mehrerer 7-Segment-Displays mit begrenzten E/A-Pins stellte eine Herausforderung dar.
Lösung: Einsatz von Multiplexing-Strategien zur effizienten Ansteuerung mehrerer Displays über gemeinsame Steuerleitungen.
Ergebnisse
Das Projekt demonstriert erfolgreich die Implementierung eines digitalen Weckers mit HDLs, die für den FPGA-Einsatz geeignet sind. Es dient als grundlegendes Beispiel für das Verständnis digitaler Designprinzipien und der Hardwareimplementierung.
AMPEL
AMPEL
Entwurf und Implementierung einer Ampelsteuerung mit digitalen Logikprinzipien in VHDL. Das System simuliert eine reale Kreuzung, indem es die Ampeln für Fahrzeuge und Fußgänger mit der richtigen Reihenfolge und Verzögerung steuert, einschließlich der Fußgängerüberwegaufforderung.
Merkmale
Realistische Signalsteuerung: Implementiert Grün-, Gelb- und Rotlichtdauern, die denen realer Kreuzungen ähneln.
Fußgängertaste: Enthält eine Fußgängeranforderungstaste, die den Verkehrsfluss sicher unterbricht.
Synchronisiertes Design: Basierend auf einer Finite-State-Machine (FSM) mit sauberen Zustandsübergängen und zuverlässiger Zeitsteuerung.
LED-Ausgabesimulation: Visuelle Ausgabe durch Simulation.
Werkzeug und Technologien
HDL: VHDL
Simulation: ModelSim
Entwicklungsprozess
FSM-Design: Definition der Verkehrsflusszustände (Auto_Grün, Auto_Gelb, Fußgänger_Grün usw.)
Timing-Logik: Implementierung von Verzögerungszählern mittels Taktteilung für optimale Signaltaktung.
Eingabeverarbeitung: Entwicklung eines entprellten Fußgänger-Taster-Eingabesystems.
LED-Mapping: Zuordnung der FSM-Zustände zu LEDs für visuelle Rückmeldung.
Test & Verifizierung: Erstellung von Testständen zur Simulation und Verifizierung des Verhaltens von FSM und Timing-Logik.
Herausforderungen und Lösungen
Präzise Verzögerungssteuerung: Hochpräzise Steuerung von Zeitintervallen durch Taktteilung.
Lösung: Verwendung von Zählern mit 50-MHz-Takt zur Simulation von Echtzeitverzögerungen.
Asynchrone Eingänge: Verarbeitung unvorhersehbarer Fußgängeranfragen ohne Störungen.
Lösung: Verwendung synchronisierter Flankenerkennung für Tastendrücke und integrierter Entprellungslogik.
Ergebnisse
Voll funktionsfähiger, deterministischer Verkehrscontroller, der auf FPGA-Karten implementiert werden kann.
Dient als Lernprojekt für FSM-Design, Zeitsteuerung und Prinzipien eingebetteter Systeme.
Demonstriert praxisnahes Denken eingebetteter Systeme in HDL.
fifo
fifo
Dieses Projekt demonstriert und vergleicht synchrone und asynchrone FIFO-Speicherdesigns (First-In-First-Out) mit VHDL. FIFO-Puffer sind in digitalen Systemen unerlässlich, um Daten zwischen Prozessen mit unterschiedlichen Taktfrequenzen zu verwalten. Dieses Projekt demonstriert die Architektur, Implementierung und Simulation beider FIFO-Typen und verdeutlicht Unterschiede in Komplexität, Designstrategien und Zuverlässigkeit.
Merkmale
Synchrones FIFO: Arbeitet mit einer einzigen Taktdomäne.
Asynchrones FIFO: Verarbeitet die Kommunikation zwischen zwei verschiedenen Taktdomänen mithilfe von Gray-Code-Zeigern und Dual-Port-Speicher.
Simulationsprüfstände: Validieren Korrektheit, Voll-/Leer-Status und Zeigerverhalten bei unterschiedlichen Schreib-/Leseraten.
Vergleichende Architektur: Visueller und logischer Vergleich zwischen synchronen und asynchronen Designs.
Werkzeug und Technologien
HDL: VHDL
Simulation: ModelSim und Xilinx Vivado Simulator
Zielhardware: FPGA-basierte Implementierung wird unterstützt (generische Architektur)
Designmethoden: FSM, Clock Domain Crossing, Gray-Code-Logik
Entwicklungsprozess
FSM-Design: Definition der Verkehrsflusszustände (Auto_Grün, Auto_Gelb, Fußgänger_Grün usw.)
Timing-Logik: Implementierung von Verzögerungszählern mittels Taktteilung für optimale Signaltaktung.
Eingabeverarbeitung: Entwicklung eines entprellten Fußgänger-Taster-Eingabesystems.
LED-Mapping: Zuordnung der FSM-Zustände zu LEDs für visuelle Rückmeldung.
Test & Verifizierung: Erstellung von Testständen zur Simulation und Verifizierung des Verhaltens von FSM und Timing-Logik.
Herausforderungen und Lösungen
Clock Domain Crossing (CDC) im asynchronen FIFO
Lösung: Implementierung der Zeigersynchronisation mit Doppelregister-Synchronisierern und Gray-Code-Kodierung für zuverlässigen domänenübergreifenden Betrieb.
Überlauf-/Unterlaufkontrolle
Lösung: Sorgfältig entwickelte Logik für volle und leere Zustände, um Race Conditions beim gleichzeitigen Lesen/Schreiben zu vermeiden.
Ergebnisse
Funktionale FIFO-Module (synchron und asynchron) mit simulationsgestützter Validierung.
Dieser lehrreiche Vergleich dient dem Verständnis digitaler Systempufferung und CDC.
Erweiterbar für DMA-Puffer, UART-Schnittstellen oder Datenstreaming-Anwendungen.
RTL IN NN
RTL IN NN
Dieses Projekt demonstriert die Implementierung einer einfachen neuronalen Netzwerk-Inferenz-Engine auf dem TE0802 Zynq Ultrascale+ FPGA-Entwicklungsboard. Ziel ist es, KI-Berechnungen mithilfe FPGA-basierter, kundenspezifischer Hardware zu beschleunigen und so die Echtzeit-Ziffernklassifizierung auf eingebetteten Systemen zu ermöglichen. Die Plattform verbindet maschinelles Lernen und Hardware-Design für effiziente Edge-Inferenz, insbesondere in der Robotik und eingebetteten KI-Anwendungen.
Merkmale
Matrixmultiplikations-Engine für neuronale Inferenz über benutzerdefinierte HLS-IP
Speicherabgebildete BRAM-Schnittstelle für schnelle Datenverarbeitung.
UART-basierte Kommunikation zum Senden von Eingangsbildern vom PC an FPGA
LED-Anzeige zur visuellen Darstellung der Klassifizierungsergebnisse Modularer
Aufbau: HLS-basierter Rechenkern + VHDL-basierte Steuerlogik Bare-Metal-Software für den Zynq ARM-Kern zur Orchestrierung der Inferenz
Werkzeug und Technologien
Hardwareplattform: TE0802 Zynq Ultrascale+
Sprachen und Frameworks: C++, Python, VHDL, TensorFlow 2.6.0
Werkzeuge: Xilinx Vivado 2021.1, Vitis HLS, Vitis IDE
Kommunikation: UART
Speicherschnittstellen: AXI-Lite, BRAM
Entwicklungsprozess
Training neuronaler Netze
Training eines dreischichtigen neuronalen Netzes auf dem MNIST-Datensatz mit TensorFlow
Extraktion von Gewichtungs- und Bias-Parametern für die Hardware
HLS-IP-Core-Design
Implementierung der Matrixmultiplikation in C++ und Synthese in RTL mit Vitis HLS
Definierte AXI-Schnittstellen für Steuerung und Datenübertragung
Hardwareintegration (Vivado)
Anbindung der HLS-IP an Zynq PS und BRAM über AXI
Entwicklung zusätzlicher Steuerungsmodule in VHDL: nn_ctrl.vhd, not_gate.vhd, fix_address.vhd
Softwareentwicklung (Vitis)
Entwicklung einer Bare-Metal-C-Anwendung zur Übertragung von Bilddaten und Inferenz
Empfang des Klassifizierungsergebnisses und Verwendung von LEDs zur Ausgabe
Testen und Debuggen
Erstellung von Python-Skripten zum Senden von Testbildern über UART
Validierung der Inferenzgenauigkeit und des FPGA-Verhaltens
Herausforderungen und Lösungen
Integration von HLS-generierter IP in ein kundenspezifisches FPGA-System
Lösung: Sorgfältige Konfiguration der AXI4-Lite- und BRAM-Schnittstellen und Fehlerbehebung mithilfe von Testbenches und UART-Protokollen.
Verwaltung von Adressraum und Datenformat für die Matrixeingabe
Lösung: Entwicklung eines kundenspezifischen VHDL-Moduls (fix_address.vhd) zur Standardisierung der Speicherzugriffsausrichtung.
Zuverlässige PC-FPGA-Kommunikation über UART
Lösung: Implementierung eines robusten Handshake-Protokolls und einer Fehlerprüfung in Python und Vitis-Firmware.
Ergebnisse
Echtzeit-Ziffernklassifizierung von MNIST mithilfe von FPGA-beschleunigter Inferenz.
Reduzierte Latenz und CPU-Auslastung durch Auslagerung der Matrixberechnung auf FPGA.
Erstellung einer modularen und erweiterbaren Vorlage für die Bereitstellung von KI-Modellen auf eingebetteter Hardware.
Lernwert für das Verständnis des End-to-End-Prozesses vom ML-Modell zur kundenspezifischen Hardware.
pre-fetching
pre-fetching
Dieses Projekt demonstriert die Optimierung eines Deep-Learning-Modells auf einem Zynq Ultrascale+ Board. Ziel war die Entwicklung eines Erste-Hilfe-Geräts, das medizinisches Personal bei der Erstellung präziser Diagnosen unterstützt und zuverlässig und schnell reagiert. Ein DL-Modell wurde basierend auf Faktoren wie Herzschlag pro Sekunde, Blutdruck und Temperatur entwickelt. Es musste eine FPGA-Schnittstelle entwickelt werden, die dieses System weiter optimieren und gleichzeitig die Genauigkeit gewährleisten konnte.


Merkmale
Mapping des ResNet-18-Modells: Zur Bestimmung der für die Ausführung des Modells verwendeten Zeit und Adressen wurde ein ResNet-18-Modell erstellt.
Zeitpläne: Für alle Module der VTA-Architektur wurden Zeitpläne erstellt, die für zukünftige Anwendungen genutzt werden könnten.
Simulation und Verifizierung: Die Funktionalität des Modells wurde mit dem Vivado-Simulator simuliert und verifiziert und ein Bitstream generiert.
Werkzeug und Technologien
Mapping: DRAMSim2, Microsoft Excel
Boards: Trenz TE0802 BSP von Trenz
FPGA-Toolchain: Xilinx Vivado / Vitis
Embedded-Linux-Konzept: Prefetching
Entwicklungsprozess
Mapping des Resnet-18-Modells
Verwendung einer Verifizierungs-IP mit einem Trigger, der die vom Modell verwendeten Zeiten und Adressen protokolliert.
Analyse des Mappings auf Abhängigkeiten
Mapping der Abhängigkeiten zwischen den Adressen, die Verzögerungen im Modell anzeigen.
Erstellung von Zeitplänen
Erstellung von Zeitplänen gemäß den Anforderungen für den benutzerdefinierten AXI-Controller.
Simulation des AXI-Controllers
Simulation des AXI-Controllers in Vivado, um die ordnungsgemäße Funktionalität sicherzustellen.
Bereitstellung
Generierung eines Bitstreams für die FPGA-Integration und -Anwendung.
Herausforderungen und Lösungen
Hardwarekompatibilitätsprobleme
Lösung: Die VTA-Architektur und der benutzerdefinierte AXI-Controller wurden mithilfe von HDL-Modulen und Standardverfahren entwickelt.
Große Datenmappings
Lösung: Microsoft Excel und Python wurden zur Optimierung der Muster im LOAD-Modul eingesetzt.
Ergebnisse
Ein benutzerdefiniertes PYNQ-fähiges Betriebssystem wurde erfolgreich auf dem TE0802-Board gestartet und ausgeführt.
Der Jupyter-Server ist über IP erreichbar und ermöglicht die webbasierte Steuerung von FPGA-Beschleunigern.
Demonstriert fortgeschrittene Kenntnisse in Embedded Linux, Systemanpassung und FPGA-Softwareintegration.
mustererkennung
mustererkennung
Der Zweck dieses Projekts bestand darin, zu zeigen, dass es ein bestimmtes Muster gibt, das vom Betriebssystem bei der Ressourcenzuweisung, d. h. der Speicherzuweisung, verwendet wird. Das Projekt griff auf verschiedene Muster in der VTA-Architektur im Lademodul ein.
Merkmale
Speicher- und Zeitprotokollierung mithilfe von Verifizierungs-IP, die für beliebige Prozesse wiederverwendet werden kann.
Mustererkennung mit Microsoft Excel zur Unterscheidung mehrerer Muster in einem einzigen Muster.
Musterbestätigung durch Simulation des Musters in Xilinx Vivado mithilfe vordefinierter Formeln.
Werkzeug und Technologien
Hardwareplattform: TE0802 Zynq Ultrascale+
Sprachen & Frameworks: VHDL, Verilog
Werkzeuge: Xilinx Vivado 2021.1, Microsoft Excel
Simulation: Xilinx Vivado Speicherschnittstellen: AXI-Full, BRAM
Entwicklungsprozess
Protokollierung von Zeit und Speicher
Mithilfe einer benutzerdefinierten Verifizierungs-IP wurden die Zeit- und Speicherdaten protokolliert und als Excel-Datei übertragen.
Mustererkennung
Mithilfe integrierter Microsoft Excel-Funktionen und Mapping-Techniken wurde eine Häufung von Mustern, meist in Zweiergruppen, erkannt und zur weiteren Vereinfachung getrennt.
Simulation
Die erkannten Muster wurden in Formeln umgewandelt.
VHDL- und Verilog-Codes wurden erstellt, um die beobachteten Muster darzustellen.
Test
Die simulierten Muster wurden anhand der Originalmuster verifiziert.
Herausforderungen und Lösungen
Speicherüberschreibung während der Datenerfassung
Lösung: Die Datenerfassung musste in mehreren Schritten erfolgen, da mehr als 30.000 Datenpunkte erfasst wurden.
Mustererkennung
Lösung: Die Zusammenführung mehrerer Muster zu einem einzigen Muster und die Erstellung eines standardisierten Protokolls boten die Lösung.
Ergebnisse
Erkennung einer Reihe von Mustern, die das Betriebssystem bei der Speicherzuweisung verwendet.
Identifizierung von Protokollen, die zukünftig zur Bestimmung von Speicherzuweisungsmustern verwendet werden können.
Bereitstellung von Möglichkeiten zum Prefetching von Projekten.
pynq-linux os
pynq-linux os
Dieses Projekt zeigt, wie Sie ein PYNQ-basiertes Linux-Betriebssystem für das Trenz TE0802 Zynq UltraScale+ MPSoC-Board mit PetaLinux-Tools anpassen und bereitstellen. Die Arbeit umfasst die Anpassung des Boot-Prozesses, der Gerätebäume und des Root-Dateisystems zur Unterstützung von PYNQ-Funktionen auf kundenspezifischer Hardware – eine wichtige Aufgabe für Embedded-Entwickler, die softwaredefinierte FPGA-Anwendungen erstellen.


Merkmale
Benutzerdefinierter Linux-Build: Ein voll funktionsfähiges Embedded-Linux-System wurde von Grund auf mit PetaLinux-Tools erstellt.
PYNQ-Kompatibilität: Integrierte PYNQ-Overlays und eine Jupyter-Notebook-Umgebung für Hardware-/Software-Co-Design.
Boardspezifische Integration: Das Betriebssystem wurde angepasst, um den Gerätebaum, den Bootloader und die Hardwarekonfiguration des TE0802-Boards zu unterstützen.
Netzwerk- und Peripherieunterstützung: Verifizierte Unterstützung für SSH, Ethernet, serielle Konsole und SD-Karten-Booten.
Werkzeug und Technologien
PetaLinux: 2022.1
FPGA-Toolchain: Xilinx Vivado / Vitis
Embedded-Linux-Konzepte: u-boot, Devicetree, rootfs, boot.bin, Jupyter über Python 3
Entwicklungsprozess
PetaLinux-Umgebung einrichten
PetaLinux SDK installiert und Abhängigkeiten (Ubuntu, Python, Tools) überprüft.
Trenz BSP importiert
PetaLinux-Projekt mit „petalinux-create -t project“ erstellt und TE0802 BSP importiert.
Gerätebaum und Konfigurationsanpassung
system-user.dtsi und Gerätebaum angepasst, um Hardwareunterstützung für PYNQ-spezifische Peripheriegeräte hinzuzufügen.
Root-Dateisystemerweiterung
Erforderliche Pakete und Python-Bibliotheken für Jupyter, NumPy, Matplotlib usw. hinzugefügt.
Erstellen und Bereitstellen
Bootdateien (BOOT.BIN, image.ub, rootfs) generiert und für TE0802 auf SD-Karte bereitgestellt.
Validierung
Hardwarezugriff, SSH-Verbindung und Laden des PYNQ-Overlays über Jupyter Notebook überprüft.
Herausforderungen und Lösungen
Hardwarekompatibilitätsprobleme
Lösung: Der Gerätebaum wurde sorgfältig an das Trenz TE0802-Schema angepasst und die passende U-Boot-Konfiguration sichergestellt.
Integration des PYNQ-Pakets
Lösung: Virtuelle Python3-Umgebungen im RootFS wurden verwendet und init.d-Skripte für den automatischen Start des Jupyter-Servers angepasst.
Ressourcenbeschränkungen im RootFS
Lösung: Ein benutzerdefiniertes Root-Dateisystem-Image mit ausgewählten Python-Abhängigkeiten wurde erstellt, um die Systemlast zu reduzieren.
Ergebnisse
Ein benutzerdefiniertes PYNQ-fähiges Betriebssystem wurde erfolgreich auf dem TE0802-Board gestartet und ausgeführt.
Der Jupyter-Server ist über IP erreichbar und ermöglicht die webbasierte Steuerung von FPGA-Beschleunigern.
Demonstriert fortgeschrittene Kenntnisse in Embedded Linux, Systemanpassung und FPGA-Softwareintegration.
droneNMALER
droneNMALER
Dieses zu 100 % staatlich finanzierte Projekt testet die Einsatzmöglichkeiten von Drohnen zum ferngesteuerten Anstreichen von Hochhäusern. Jedes Jahr verlieren Tausende Menschen ihr Leben bei der Arbeit unter gefährlichen Bedingungen, bei denen die Sicherheit kaum oder gar nicht berücksichtigt wird. Das Projekt wurde als Alternative konzipiert, um diesen Arbeitern ein sichereres Arbeitsumfeld zu bieten und gleichzeitig die Arbeitsplatzsicherheit zu gewährleisten, indem sie dank integrierter Sicherheitsprotokolle der Drohne einfache Fernsteuerungsanweisungen erlernen.
Merkmale
Sichere Arbeitsbedingungen: Wir haben ein Drohnenprojekt entwickelt, das für die Arbeiter kaum bis gar keine Risiken birgt.
Einfache Umstellung: Dank der integrierten Sicherheitsprotokolle werden die Arbeiter durch eine einfache Schulung zu Experten im Umgang mit der Drohne.
Gesteigerte Effizienz: Das System ist 30 % effizienter als jedes bestehende System.
Einfache Reproduktion: Das System besteht aus einfachen Teilen und lässt sich für die Massenproduktion problemlos reproduzieren.
Werkzeug und Technologien
Rahmen: Tarot 650 Sportrahmen
Motoren: 4114 320 kV Brushless-Motor
Propeller: 1655 Crabon Fiber Propeller
Regler: Opto ESC 40A
Flugsteuerung: Pixhawk Cube
Akku: 8000 mAh 25C Akku
Entwicklungsprozess
Entwicklung der Systeme
In der Anfangsphase wurden die drei Komponenten Drohne, Lackierer, Farbversorgungssysteme und der Anschluss für Drohne und Lackiersystem entwickelt.
Berechnung der Nutzlast
Die Nutzlast des Systems wurde berechnet, um die Drohnenparameter wie Flugregler, Flügeldurchmesser, Motorleistung, elektronische Drehzahlregler und Verkabelung zu bestimmen.
Bestellung der Komponenten
Die Teile wurden auf dem internationalen Markt bestellt, indem Ausschreibungen gesammelt, verhandelt und die Zustimmung der Vertreter eingeholt wurde.
Montage des Lackiersystems
Das Lackiersystem wurde 3D-gedruckt, am Farbträger befestigt und auf optimalen Luftdruck geprüft.
Einsatz der Drohne
Die Drohne wurde kalibriert und das Lackiersystem mithilfe eines festen Anschlusses für einen stabilen Flug befestigt.
Tests
Die Lackierdrohne wurde getestet und die Details der indischen Regierung vorgelegt.
Herausforderungen und Lösungen
Komponentenauswahl
Lösung: Umfangreiche Recherchen und zahlreiche Verhandlungen mit Vertretern internationaler Märkte lieferten Erkenntnisse.
Lackiermechanismus
Lösung: Der Einsatz von luftbasierter Farbe sorgte für eine höhere Effizienz und eine längere Lebensdauer der Drohne, da weniger Farbtropfen auf die Drohne zurückfielen.
Importprobleme
Lösung: Einige Teile mussten am Flughafen eingelagert werden, und für die Abholung waren entsprechende Dokumente erforderlich. Berücksichtigen Sie bei der Suche nach Ausschreibungen auf dem internationalen Markt die Importschwierigkeiten aufgrund von Beschränkungen.
Ergebnisse
Erfolgreiche Entwicklung und Bereitstellung einer nahezu unfallfreien Lösung für die Hochhauslackierung.
30 % höhere Systemeffizienz durch luftbasierte Farbe.
Ein stabiles System durch effizienten Einsatz des Flugcontrollers.
"The only way to do great work is to love what you do." - Steve Jobs