Inhaltsverzeichnis:
- Schritt 1: Einrichten eines Projekts in Vivado für Ernie
- Schritt 2: Erstellen von Ernies PWM in Vivado
- Schritt 3: Erstellen von Ernies TDOA in Vivado
- Schritt 4: Verpacken und Exportieren von Ernie
- Schritt 5: Ernie bauen
- Schritt 6: Ernies erster BSP
- Schritt 7: FreeRTOS'ing Ernie
- Schritt 8: Importieren von Ernies C-Code
- Schritt 9: Debuggen von Ernie
- Schritt 10: Ernie autonom machen
- Schritt 11: Ernie süß machen
Video: Ernie machen – wikiHow
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
In diesem Tutorial erfahren Sie, wie Sie Ernie, Ihren autonomen Sound-Following-Roboter, mit einem Zybo-Board bauen. Es wird behandelt, wie Sie: ein Projekt in Vivado erstellen, PWM-ähnliche Servomotortreiber im FPGA erstellen, eine Schnittstelle zu zwei Schallsensoren herstellen, eine Zeitdifferenz der Ankunfts-IP erstellen, freeRTOS verwenden und den Zybo mit einem Akku betreiben. Dies war unser letztes Projekt für eine Klasse für Echtzeit-Betriebssysteme (CPE 439) bei Cal Poly SLO.
Ausrüstungsliste:
- 1 - ZYBO Zynq 7000 Entwicklungsboard
- 2 - Parallaxe-Kontinuierlicher Rotationsservo
- 2 - Schallsensor (SparkFun-Schalldetektor)
- 1 - 5 V Lithium-Ionen-USB-Akku (für Bord)
- 4 - AA-Batterien (für Servos)
- 1 - AA-Batteriepack (mit 4 Batteriefächern)
- 1 - Micro-USB-Kabel
- 1 - Steckbrett
- viele - Männlich zu männlichen Drähten
- 1 - Servo-Chassis
Software Anforderungen:
- Xilinx Vivado Design Suite 2016.2
- Digilent-Adept 2.16.1
Schritt 1: Einrichten eines Projekts in Vivado für Ernie
- Ein Assistent wird angezeigt
- Weiter klicken
-
Als nächstes benennen Sie das Projekt
- Verwenden Sie niemals einen Projektnamen oder Verzeichnispfad, der Leerzeichen enthält!!!!!
- Dies wird ein RTL-Projekt sein.
- Wir wollen keine Quellen angeben
-
Wenn wir auf Weiter klicken, gelangen wir zur Seite Teil. Wir verwenden einen ZYNQ XC7Z010-1CLG400C.
- Vivado hat das Zybo nicht als eines seiner vordefinierten Boards aufgeführt. Wählen Sie: „Teile“und suchen Sie dann nach xc7z010clg400-1.
- Wenn Sie versehentlich das falsche Teil ausgewählt haben, können Sie die Chips einfach wechseln: Tools -> Project Settings -> General und klicken Sie auf die Punkte rechts neben "Project Device".
-
Klicken Sie auf Blockdesign erstellen.
Nenn es jetzt design_1
- Sie sehen einen grünen Balken mit der Aufschrift IP hinzufügen, klicken Sie darauf.
-
Suche nach Zynq.
- Doppelklicken Sie auf das ZYNQ7-Verarbeitungssystem,
- Dieser Block wird in unserem Blockdesign erscheinen.
- Sie sehen eine grüne Leiste mit der Aufschrift Run Block Automation, klicken Sie darauf.
- Laden Sie unten zybo_zynq_def.xml herunter.
-
Klicken Sie in Vivado auf „XPS-Einstellungen importieren“und wählen Sie „zybo_zynq_def.xml“aus.
Dadurch wird die Vivado-Blockkonfiguration mit allen integrierten Peripheriegeräten und Pinbelegungen des Zybo-Boards vorbelegt
-
Doppelklicken Sie auf den ZYNQ-Block.
-
MIO-Konfiguration
- Timer 0 aktivieren (unter Application Processor Unit - Bild 1)
- Watchdog aktivieren (unter Application Processor Unit- Bild 1)
- Aktivieren Sie GPIO->GPIO MIO (unter Anwendungsprozessoreinheit - Bild 2)
- Aktivieren Sie GPIO->ENET Reset (unter I/O Peripherals- Bild 2)
-
Uhrkonfiguration
FCLK0 deaktivieren (unter PL Fabric Clocks - Bild 3)
-
- OK klicken.
-
„Blockautomatisierung ausführen“jetzt.
Es wird einige Fragen zu Signalen geben, sagen Sie OK
-
Klicken Sie auf „HDL-Wrapper generieren“.
Wir möchten den generierten Wrapper kopieren, um Benutzeränderungen zu ermöglichen
- OK klicken.
Schritt 2: Erstellen von Ernies PWM in Vivado
Dieser Schritt generiert eine PWM-IP mit Eingaben, die über die AXI-Bibliothek gesendet werden.
-
Erstellen Sie einen AXI-GPIO-Block, indem Sie mit der rechten Maustaste auf den Hintergrund klicken und auf "IP hinzufügen" klicken.
Geben Sie "AXI_GPIO" in die Suchleiste ein und wählen Sie dieses Paket aus
-
Passen Sie die IP neu an, indem Sie auf den neuen axi_gpio_0-Block doppelklicken
- Setzen Sie unter GPIO die GPIO-Breite auf 2. Diese Bits sind das PWM_ON-Signal zum Ansteuern jeder PWM-Modulinstanz.
- Klicken Sie auf "Dual-Channel aktivieren"
- Setzen Sie unter GPIO 2 die GPIO-Breite auf 2. Diese Bits sind das PWM_FW-Signal, um die Richtung jeder PWM-Modulinstanz festzulegen.
-
Klicken Sie mit der rechten Maustaste auf den axi_gpio_0-Ausgangsport mit der Bezeichnung GPIO und wählen Sie "Make External".
- Klicken Sie auf den neuen Ausgang mit der Bezeichnung GPIO, navigieren Sie zur Registerkarte "Eigenschaften" in der linken Symbolleiste und ändern Sie den Namen in PWM_ON
- Klicken Sie auf den neuen Ausgang mit der Bezeichnung GPIO2, navigieren Sie zur Registerkarte "Eigenschaften" in der linken Symbolleiste und ändern Sie den Namen in PWM_FW
-
Wählen Sie im grünen Banner über dem Blockdiagramm die Option Verbindungsautomatisierung ausführen aus.
Wenn Sie die Ports manuell verbinden, werden AXI-Adressen möglicherweise nicht konfiguriert, was später zu Kommunikationsproblemen führt
-
Wählen Sie im Flow Navigator-Bereich Projektmanager -> Quellen hinzufügen, um einen neuen benutzerdefinierten IP-Block zu erstellen
- Wählen Sie "Designquellen hinzufügen oder erstellen" und klicken Sie auf "Weiter".
- Klicken Sie auf "Datei erstellen", ändern Sie den Dateityp in "SystemVerilog" und geben Sie "pwm" in das Dateinamenfeld ein, dann klicken Sie auf OK
- Klicken Sie auf Fertig stellen
-
Ignorieren Sie das Fenster "Module definieren", indem Sie auf OK klicken (wir werden diese später überschreiben)
Wenn Sie gefragt werden, ob Sie sicher sind, klicken Sie auf Ja
-
Doppelklicken Sie auf der Registerkarte "Quellen" auf die Datei pwm.sv (befindet sich in "Design Sources/design_1_wrapper")
Kopieren Sie den gesamten SystemVerilog-Code aus der unten angehängten Datei pwm.txt und fügen Sie ihn ein
Schritt 3: Erstellen von Ernies TDOA in Vivado
Dieser Schritt generiert eine TDOA-IP, deren Ausgabe über die AXI-Bibliothek gelesen werden kann
-
Erstellen Sie einen AXI-GPIO-Block, indem Sie mit der rechten Maustaste auf den Hintergrund klicken und auf "IP hinzufügen" klicken.
Geben Sie "AXI_GPIO" in die Suchleiste ein und wählen Sie dieses Paket aus
-
Passen Sie die IP neu an, indem Sie auf den neuen axi_gpio_1-Block doppelklicken
- Aktivieren Sie unter GPIO das Kontrollkästchen "Alle Eingänge" und stellen Sie die GPIO-Breite auf 32 ein. Dieser Bus ist die Zeitdifferenz der Ankunft zwischen den beiden Sensoren.
- Klicken Sie im Block axi_gpio_1 auf das + neben dem GPIO-Port, um gpio_io_i[31:0] anzuzeigen.
-
Klicken Sie mit der rechten Maustaste auf den axi_gpio_1-Ausgangsport mit der Bezeichnung gpio_io_i[31:0] und wählen Sie "Make External".
Klicken Sie auf den neuen Eingang mit der Bezeichnung gpio_io_i[31:0], navigieren Sie in der linken Symbolleiste zur Registerkarte "Eigenschaften" und ändern Sie den Namen in TDOA_val
-
Wählen Sie im grünen Banner über dem Blockdiagramm die Option Verbindungsautomatisierung ausführen aus.
Wenn Sie die Ports manuell verbinden, werden AXI-Adressen möglicherweise nicht konfiguriert, was später zu Kommunikationsproblemen führt
-
Wählen Sie im Flow Navigator-Bereich Projektmanager -> Quellen hinzufügen, um einen neuen benutzerdefinierten IP-Block zu erstellen
- Wählen Sie "Designquellen hinzufügen oder erstellen" und klicken Sie auf "Weiter".
- Klicken Sie auf "Datei erstellen", ändern Sie den Dateityp in "SystemVerilog" und geben Sie "tdoa" in das Dateinamenfeld ein, dann klicken Sie auf OK
- Klicken Sie auf Fertig stellen
-
Ignorieren Sie das Fenster "Module definieren", indem Sie auf OK klicken (wir werden diese später überschreiben)
Wenn Sie gefragt werden, ob Sie sicher sind, klicken Sie auf Ja
-
Doppelklicken Sie im Quellen-Tab auf tdoa.sv (befindet sich in "Design Sources/design_1_wrapper")
Kopieren Sie den gesamten SystemVerilog-Code aus der unten angehängten Datei tdoa.txt und fügen Sie ihn ein
Schritt 4: Verpacken und Exportieren von Ernie
- Stellen Sie sicher, dass das Blockdiagramm wie der angehängte Screenshot aussieht
-
Klicken Sie im Quellen-Tab mit der rechten Maustaste auf design_1.bd und wählen Sie "HDL-Wrapper erstellen…".
- Wählen Sie "Generierte Ausgabe kopieren, um Benutzerbearbeitungen zu ermöglichen", und drücken Sie dann "OK".
- Kopieren Sie den Code aus der unten angehängten design_1_wrapper.txt und fügen Sie ihn anstelle des generierten design_1_wrapper.v-Codes ein
- design_1_wrapper.v speichern
-
Doppelklicken Sie auf der Registerkarte Quellen auf die Datei ZYBO_Master.xdc unter Constraints/constrs1
- Kopieren Sie den Code aus der unten angehängten ZYBO_Master.txt und fügen Sie ihn anstelle des vorhandenen ZYBO_Master.xdc-Codes ein
-
Beachten Sie die folgenden Eingangs-/Ausgangspins:
- L15: PWM-Signal für den linken Motor (Pmod JA2 beim Zybo)
- L14: PWM-Signal für den rechten Motor (Pmod JA8 auf dem Zybo)
- V12: Gate-Eingang von Schallsensor 1 (Pmod JE1 auf dem Zybo)
- K16: Gate-Eingang von Schallsensor 2 (Pmod JE2 auf dem Zybo)
-
Klicken Sie im Flow Navigator-Bereich unter Programm und Debug auf "Bitstream generieren".
Wenn Sie denken, dass es sofort erledigt ist, ist es wahrscheinlich nicht. Im Ernst, mach Tee
-
Klicken Sie auf Datei->Exportieren->Hardware generieren
Aktivieren Sie "Bitstream einschließen" und klicken Sie auf OK
- Klicken Sie auf Datei-> SDK starten
Schritt 5: Ernie bauen
- Montieren Sie die Servos am Servo-Chassis.
-
Folgen Sie dem Datenblatt für die Servos, gehen Sie wie folgt vor:
- Verbinden Sie die Masse der Servos mit den Massestiften des JA Pmod des Zybo (siehe beigefügtes Pinbelegungsbild)
-
Verbinden Sie den Power-Pin der Servos mit dem AA-Batteriepack
Wir haben festgestellt, dass die Platine zu viel Strom zieht, wenn die Servos an die Vdd des Zybo angeschlossen sind, was dazu führt, dass die Platine ständig zurückgesetzt wird
- Verbinden Sie die Eingangssignalpins mit den entsprechenden Ausgangspins des Zybo (links: JA2, rechts: JA8)
- Montieren Sie die Schallsensoren an der Vorderseite des Chassis, nach vorne gerichtet, und halten Sie sie so nah wie möglich zusammen
-
Verwenden Sie die Anschlussanleitung des Schallsensors, um die Schallsensoren zu integrieren
- Verdrahten Sie die Masse- und Vdd-Pins jedes Schallsensors mit den Masse- und Vdd-Pins des JE Pmod des Zybo (siehe beigefügtes Pinbelegungsbild)
- Verdrahten Sie den Gate-Pin des linken Schallsensors mit JE1
- Verdrahten Sie den Gate-Pin des rechten Schallsensors mit JE2
Schritt 6: Ernies erster BSP
-
Erstellen Sie ein BSP, um die soeben erstellte Plattform abzurunden.
Sie erhalten dies über Datei -> Neu -> Board Support Package
-
Ein Assistent wird angezeigt, der Sie beim Erstellen des BSP unterstützt.
- Wir möchten dieses BSP mit unserer soeben erstellten Plattform verbinden, also
- Die Hardware-Plattform sollte mit der gerade erstellten übereinstimmen (siehe Bild 1)
- Unsere CPU wird die _0 CPU sein.
- Klicken Sie auf Fertig stellen
- Stellen Sie sicher, dass Sie lwip141 für die Aufnahme in Ihr bsp in dem sich öffnenden Fenster abhaken (siehe Bild 2)
Schritt 7: FreeRTOS'ing Ernie
-
Laden Sie die neueste FreeRTOS-Version von Sourceforge herunter.
Wenn es sich beim Download um eine ausführbare Datei handelt, führen Sie diese aus, um die FreeRTOS-Dateien in Ihr Projektverzeichnis zu extrahieren
- Lassen Sie das SDK geöffnet und klicken Sie auf Datei -> Importieren.
- Wir möchten auf Allgemein->Aus einem vorhandenen Arbeitsbereich klicken und dann zu dem Ort navigieren, an dem wir FreeRTOS heruntergeladen haben.
-
Unsere Demo befindet sich in FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702. Nach der Auswahl dieses Ordners sollten drei Projekte angezeigt werden (unser Code (OS), BSP und die HW-Plattform).
Importieren Sie NUR RTOSDemo in Ihren aktuellen Arbeitsbereich
-
Ändern Sie bei allen „blauen“Ordnerprojekten die referenzierte BSP
- Klicken Sie mit der rechten Maustaste und wählen Sie "Referenziertes BSP ändern".
- Wählen Sie das BSP aus, das Sie gerade für Ihr Zybo. erstellt haben
- Code Editing in den SDK Blue-Ordnern von Xilinx sind die eigentlichen Codeprojekte.
Schritt 8: Importieren von Ernies C-Code
- Überschreiben Sie im Verzeichnis RTOSDemo/src die vorhandene main.c mit der hier angehängten main.c-Datei.
- Kopieren Sie die Datei main_sound.c in das Verzeichnis RTOSDemo/src.
Schritt 9: Debuggen von Ernie
- Wählen Sie Ausführen -> Debug-Konfigurationen
- Erstellen Sie im linken Bereich einen neuen System-Debugger-Lauf
-
Auf der Registerkarte Zieleinrichtung
Wählen Sie "Gesamtes System zurücksetzen", damit sowohl das als auch ps7_init ausgewählt sind
-
Wählen Sie nun die Registerkarte Anwendung.
- Wählen Sie „Anwendung herunterladen“
- Setzen Sie den cortexa9_0-Kern auf „Stopp bei Programmeintritt“
- Klicken Sie auf Übernehmen und Debuggen.
- Stellen Sie sicher, dass der Debugging-Prozess fehlerfrei ist
- Behalten Sie den Roboter genau im Auge und drücken Sie die Fortsetzen-Taste, bis das Programm ausgeführt wird, ohne einen Haltepunkt zu treffen
- Der Roboter sollte sich nun drehen und auf laute Geräusche zubewegen. Yay!
Schritt 10: Ernie autonom machen
- Sobald Ihr Projekt fertig ist (Sie können ohne Probleme über den Debugger laufen), können Sie es in den Flash-Speicher Ihres Boards laden.
-
Erstellen Sie das sogenannte "First Stage Boot Loader" (FSBL)-Projekt und enthalten alle Anweisungen, die Ihr Board benötigt, um Ihre Projektdateien (den Bitstrom und das Betriebssystem) beim Start zu laden.
- Wählen Sie: Datei->Neu->Anwendungsprojekt und das folgende Fenster sollte erscheinen.
- Benennen Sie es, was Sie wollen (z. B. "FSBL")
- Stellen Sie sicher, dass die Hardwareplattform diejenige ist, mit der Sie arbeiten
- Weiter drücken (nicht Fertig stellen)
- Wählen Sie die Zynq FSBL-Vorlage aus
- Klicken Sie auf Fertig stellen.
- Sobald der Erstellungsprozess abgeschlossen ist, wissen Sie, ob alles funktioniert hat, wenn Sie die folgenden zwei neuen Ordner im Projekt-Explorer-Fenster sehen.
-
Boot-Image erstellen Jetzt müssen Sie das Boot-Image erstellen.
- Klicken Sie mit der rechten Maustaste auf Ihren Projektordner (in diesem Fall heißt meiner „RTOSDemo“)
- Klicken Sie im Dropdown-Menü auf "Boot-Image erstellen".
-
Wenn alles richtig verknüpft ist, weiß das Projekt, welche Dateien es benötigt und das folgende Fenster sieht so aus, wie Sie es unten sehen (wichtig ist, dass Sie 3 Partitionen im Abschnitt Boot-Image haben, den Bootloader, Ihre Bit-Datei und Ihre Projekte.elf-Datei).
Wenn dies nicht der Fall ist, stimmt möglicherweise etwas mit Ihrer Projektverknüpfung nicht. Stellen Sie sicher, dass die Projektordner mit ihren jeweiligen BSPs verknüpft sind
- Klicken Sie auf die Schaltfläche „Bild erstellen“
-
Der letzte Schritt, den Sie in der Software ausführen müssen, besteht darin, Ihr zuvor erstelltes Image nun in den Speicher des Boards zu flashen
- Wählen Sie in der Hauptsymbolleiste des SDK Xilinx Tools->Program Flash Memory
- Stellen Sie sicher, dass die richtige Hardwareplattform ausgewählt ist und der Bilddateipfad korrekt auf die im vorherigen Schritt erstellte. BIN-Datei verweist.
- Wählen Sie „qspi single“aus dem Flash-Typ
- Aktivieren Sie "Nach Flash überprüfen", um die Integrität zu gewährleisten, aber es wird nicht benötigt
- Konfigurieren Sie Ihr Board Als letztes müssen Sie sicherstellen, dass der Jumper für den Programmierungsmodus des Boards (JP5) richtig eingestellt ist, um das Booten vom qspi (das enthält, was Sie gerade geflasht haben) auszuwählen, wenn das BootROM ausgeführt wird.
- Schalten Sie das Gerät nun einfach aus und wieder ein und vergewissern Sie sich, dass die LED „Logic Configuration Done“(LED 10) grün leuchtet.
Schritt 11: Ernie süß machen
- Fell
- Viel Fell
- Große Augen!
- … Zylinder
Empfohlen:
Ein Spongebob-Ananas-Haus machen – wikiHow
Wie man ein Spongebob-Ananas-Haus macht: Wer lebt in einer Ananas unter dem Meer? Die Antwort auf diese Frage (Spongebob) ist für die meisten Menschen heute ziemlich offensichtlich. Unser Team wurde damit beauftragt, eine Requisite für die kommende Theaterproduktion zu entwerfen und zu bauen. Die Idee, die sofort kam
Anständige Musik digital machen – wikiHow
Wie man anständige Musik digital macht: Wenn Sie Musik auf einem computerbasierten Gerät (iPad, iPhone, MacBook, Laptop, Computer usw.) machen, müssen Sie mehrere Dinge beachten. Erstens müssen Sie sich für ein D.A.W. (Auch bekannt als digitale Audio-Workstation), um Musik zu machen oder zu produzieren.Se
Eine summende Biene machen – wikiHow
Wie man eine summende Biene macht: Hier ist eine einfache und unterhaltsame Möglichkeit, eine summende Biene zu machen. Es hat einen Vibrationsmotor auf der Unterseite, der die Biene zum Summen und Bewegen bringt. Es ist ein einfaches Projekt für jüngere Kinder (5-7) oder für ältere Kinder (ab 8 Jahren) mit weniger Aufsicht. Es lehrt eine beleuchtete
Eine Maus komplett geräuschlos machen – wikiHow
Wie man eine Maus völlig geräuschlos macht: HINTERGRUNDINFORMATIONEN: Ich habe das laute Klickgeräusch jeder Maus schon immer gehasst, da ich es nicht mag, andere Leute zu belästigen, während ich in einem Videospiel wegklicke oder einfach im Internet surfe. Aus diesem Grund habe ich mich entschlossen, meine erste richtige Gaming-Maus so zu modifizieren, dass sie tr
Machen Sie Ihr eigenes Balance Board (und machen Sie sich auf den Weg zu einem Wii Fit) - Gunook
Machen Sie Ihr eigenes Balance Board (und machen Sie sich auf den Weg zu einem Wii Fit): Erstellen Sie Ihr eigenes Balance Board oder BalanceTile (wie wir es nannten) als Schnittstelle für verschiedene Spiele und körperliches Fitnesstraining mit der I-CubeX-Technologie. Entwerfen Sie Ihre eigene Anwendung und gehen Sie weit über Wii Fit hinaus! Das Video gibt einen Überblick und s