Inhoudsopgave:
- Stap 1: Een project opzetten in Vivado voor Ernie
- Stap 2: Ernie's PWM maken in Vivado
- Stap 3: Ernie's TDOA maken in Vivado
- Stap 4: Ernie inpakken en exporteren
- Stap 5: Ernie bouwen
- Stap 6: Ernie's eerste BSP
- Stap 7: FreeRTOS'ing Ernie
- Stap 8: Ernie's C-code importeren
- Stap 9: Ernie debuggen
- Stap 10: Ernie autonoom maken
- Stap 11: Ernie schattig maken
Video: Hoe maak je Ernie: 11 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Dit is een tutorial over hoe je Ernie, je autonome geluidvolgende robot, kunt bouwen met behulp van een Zybo Board. Het behandelt hoe u: een project in Vivado kunt maken, PWM-achtige servomotorstuurprogramma's in de FPGA kunt maken, een interface kunt maken met twee geluidssensoren, een tijdsverschil van aankomst-IP kunt creëren, freeRTOS kunt gebruiken en de zybo kunt laten werken met een batterijpakket. Dit was ons laatste project voor een les Real Time Operating Systems (CPE 439) bij Cal Poly SLO.
Uitrustingslijst:
- 1 - ZYBO Zynq 7000-ontwikkelbord
- 2 - Parallax continue rotatieservo
- 2 - Geluidssensor (SparkFun-geluidsdetector)
- 1 - 5v Lithium Ion USB-batterijpakket (voor bord)
- 4 - AA-batterijen (voor servo's)
- 1 - AA-batterijpakket (met 4 batterijsleuven)
- 1 - Micro-USB-kabel
- 1 - Broodplank
- veel - mannelijke naar mannelijke draden
- 1 - Servo-chassis
Softwarevereisten:
- Xilinx Vivado Design Suite 2016.2
- Digilente Adept 2.16.1
Stap 1: Een project opzetten in Vivado voor Ernie
- Er verschijnt een wizard
- Klik volgende
-
Geef vervolgens het project een naam
- Gebruik nooit een projectnaam of mappad met spaties!!!!!
- Dit wordt een RTL-project.
- We willen geen bronnen specificeren
-
Als u op Volgende klikt, komen we op de pagina Onderdeel. Wij gebruiken een ZYNQ XC7Z010-1CLG400C.
- Vivado heeft de Zybo niet vermeld als een van zijn vooraf gedefinieerde borden. Selecteer: "parts" en zoek vervolgens naar xc7z010clg400-1.
- Als u per ongeluk het verkeerde onderdeel kiest, kunt u eenvoudig van chip wisselen: Tools -> Project Settings -> General en klik op de stippen rechts van "Project Device"
-
Klik op Blokontwerp maken.
Noem het voor nu design_1
- U ziet een groene balk met de tekst IP toevoegen, klik erop.
-
Zoek naar Zynq.
- Dubbelklik op ZYNQ7-verwerkingssysteem,
- Dit blok zal verschijnen in ons blokontwerp.
- U ziet een groene balk met de tekst Run Block Automation, klik erop.
- Download zybo_zynq_def.xml hieronder.
-
Klik in Vivado op "XPS-instellingen importeren" en selecteer "zybo_zynq_def.xml"
Dit vult de Vivado-blokconfiguratie vooraf met alle ingebouwde randapparatuur en pintoewijzingen van het Zybo-bord
-
Dubbelklik op het ZYNQ-blok.
-
MIO-configuratie
- Schakel Timer 0 in (onder Application Processor Unit - afb 1)
- Waakhond inschakelen (onder Application Processor Unit- img 1)
- GPIO->GPIO MIO inschakelen (onder Application Processor Unit - afb 2)
- GPIO->ENET Reset inschakelen (onder I/O Peripherals- afb 2)
-
Klokconfiguratie
Schakel FCLK0 uit (onder PL Fabric Clocks - afb 3)
-
- Klik OK.
-
"Run Block Automation" nu.
Er zullen enkele vragen zijn over signalen, zeg OK
-
Klik op "HDL-wrapper genereren".
We willen de gegenereerde wrapper kopiëren om gebruikersbewerkingen toe te staan
- Klik OK.
Stap 2: Ernie's PWM maken in Vivado
Deze stap genereert een PWM IP met ingangen die via de AXI-bibliotheek worden verzonden.
-
Maak een AXI GPIO-blok door met de rechtermuisknop op de achtergrond te klikken en op "IP toevoegen" te klikken
typ "AXI_GPIO" in de zoekbalk en selecteer dit pakket
-
Pas IP opnieuw aan door te dubbelklikken op het nieuwe axi_gpio_0-blok
- Stel onder GPIO de GPIO-breedte in op 2. Deze bits zijn het PWM_ON-signaal om elke PWM-module-instantie aan te sturen.
- klik op "dual channel inschakelen"
- stel onder GPIO 2 de GPIO-breedte in op 2. Deze bits zijn het PWM_FW-signaal om de richting van elke PWM-module-instantie in te stellen.
-
Klik met de rechtermuisknop op de axi_gpio_0-uitvoerpoort met het label GPIO en selecteer "Make External"
- Klik op de nieuwe uitvoer met het label GPIO en navigeer naar het tabblad "eigenschappen" op de linkerwerkbalk en verander de naam in PWM_ON
- Klik op de nieuwe uitvoer met het label GPIO2 en navigeer naar het tabblad "eigenschappen" op de linkerwerkbalk en verander de naam in PWM_FW
-
Selecteer Run Connection Automation in de groene banner boven het blokschema.
Als u de poorten handmatig aansluit, kunnen AXI-adressen mogelijk niet worden geconfigureerd, wat later tot communicatieproblemen kan leiden
-
Selecteer in het Flow Navigator-paneel projectmanager -> Bronnen toevoegen om een nieuw aangepast IP-blok te maken
- kies "ontwerpbronnen toevoegen of maken" en druk op volgende
- klik op "bestand maken", wijzig het bestandstype in "SystemVerilog" en typ "pwm" in het veld met de bestandsnaam en klik vervolgens op OK
- klik op Voltooien
-
negeer het venster Module definiëren door op OK te drukken (we zullen deze later overschrijven)
als er wordt gevraagd of u het zeker weet, klikt u op Ja
-
Dubbelklik op het tabblad Bronnen op pwm.sv (te vinden in "Ontwerpbronnen/design_1_wrapper")
Kopieer/plak de volledige SystemVerilog-code uit het hieronder bijgevoegde pwm.txt-bestand
Stap 3: Ernie's TDOA maken in Vivado
Deze stap genereert een TDOA IP waarvan de uitvoer kan worden gelezen via de AXI-bibliotheek
-
Maak een AXI GPIO-blok door met de rechtermuisknop op de achtergrond te klikken en op "IP toevoegen" te klikken
typ "AXI_GPIO" in de zoekbalk en selecteer dit pakket
-
Pas IP opnieuw aan door te dubbelklikken op het nieuwe axi_gpio_1-blok
- Vink onder GPIO het vakje "Alle ingangen" aan en stel de GPIO-breedte in op 32. Deze bus is het tijdsverschil van aankomst tussen de twee sensoren.
- Klik in het axi_gpio_1-blok op de + naast de GPIO-poort om gpio_io_i[31:0] weer te geven.
-
Klik met de rechtermuisknop op de axi_gpio_1-uitvoerpoort met het label gpio_io_i[31:0] en selecteer "Make External"
Klik op de nieuwe invoer met het label gpio_io_i[31:0] en navigeer naar het tabblad "eigenschappen" op de linkerwerkbalk en verander de naam in TDOA_val
-
Selecteer Run Connection Automation in de groene banner boven het blokschema.
Als u de poorten handmatig aansluit, kunnen AXI-adressen mogelijk niet worden geconfigureerd, wat later tot communicatieproblemen kan leiden
-
Selecteer in het Flow Navigator-paneel projectmanager -> Bronnen toevoegen om een nieuw aangepast IP-blok te maken
- kies "ontwerpbronnen toevoegen of maken" en druk op volgende
- klik op "bestand maken", wijzig het bestandstype in "SystemVerilog" en typ "tdoa" in het veld met de bestandsnaam en klik vervolgens op OK
- klik op Voltooien
-
negeer het venster Module definiëren door op OK te drukken (we zullen deze later overschrijven)
als er wordt gevraagd of u het zeker weet, klikt u op Ja
-
Dubbelklik op het tabblad Bronnen op tdoa.sv (te vinden in "Ontwerpbronnen/design_1_wrapper")
Kopieer/plak de volledige SystemVerilog-code uit het tdoa.txt-bestand dat hieronder is bijgevoegd
Stap 4: Ernie inpakken en exporteren
- Controleer of het blokschema eruitziet als de bijgevoegde schermafbeelding
-
Klik op het tabblad Bronnen met de rechtermuisknop op design_1.bd en selecteer "HDL-wrapper maken…"
- Selecteer "Gegenereerde uitvoer kopiëren om gebruikersbewerkingen toe te staan" en druk vervolgens op "OK"
- Kopieer de code uit de onderstaande bijgevoegde design_1_wrapper.txt en plak deze in plaats van de gegenereerde design_1_wrapper.v-code
- bewaar design_1_wrapper.v
-
Dubbelklik op het tabblad Sources op het bestand ZYBO_Master.xdc onder Constraints/constrs1
- Kopieer de code van ZYBO_Master.txt die hieronder is bijgevoegd en plak deze in plaats van de bestaande ZYBO_Master.xdc-code
-
Let op de volgende invoer-/uitvoerpinnen:
- L15: PWM signaal voor de linker motor (Pmod JA2 op de Zybo)
- L14: PWM signaal voor de rechter motor (Pmod JA8 op de Zybo)
- V12: poortingang van geluidssensor 1 (Pmod JE1 op de Zybo)
- K16: poortingang van geluidssensor 2 (Pmod JE2 op de Zybo)
-
Klik in het Flow Navigator-deelvenster op "Bitstream genereren" onder Programma en foutopsporing
als je denkt dat het meteen klaar is, is dat waarschijnlijk niet zo. serieus, maak wat thee
-
Klik op Bestand->Exporteren->Hardware genereren
Vink "Include Bitstream" aan en druk op OK
- Klik op Bestand-> SDK starten
Stap 5: Ernie bouwen
- Monteer de servo's op het servochassis.
-
Volg het gegevensblad voor de servo's en doe het volgende:
- sluit de aarde van de servo's aan op de aardepennen op de Zybo's JA Pmod (zie bijgevoegde pinout-afbeelding)
-
sluit de voedingspin van de servo's aan op het AA-batterijpakket
We ontdekten dat wanneer de servo's zijn aangesloten op de Vdd van de Zybo, het bord te veel stroom trekt, waardoor het bord voortdurend wordt gereset
- sluit de ingangssignaalpinnen aan op de juiste uitgangspinnen van de Zybo (links: JA2, rechts: JA8)
- monteer de geluidssensoren aan de voorkant van het chassis, naar voren gericht, en houd ze zo dicht mogelijk bij elkaar
-
gebruik de aansluitgids van de geluidssensor om de geluidssensoren te integreren
- sluit de grond- en Vdd-pinnen van elke geluidssensor aan op de grond en Vdd-pinnen op de Zybo's JE Pmod (zie bijgevoegde pinout-afbeelding)
- sluit de Gate-pin van de linker geluidssensor aan op JE1
- sluit de Gate-pin van de juiste geluidssensor aan op JE2
Stap 6: Ernie's eerste BSP
-
Maak een BSP om het platform dat we zojuist hebben gemaakt af te ronden.
U kunt dit verkrijgen via Bestand -> Nieuw -> Board Support Package
-
Er verschijnt een wizard die u helpt bij het maken van de BSP.
- We willen deze BSP koppelen aan ons Platform dat we zojuist hebben gemaakt, dus
- Hardware Platform moet overeenkomen met degene die we zojuist hebben gemaakt (zie afbeelding 1)
- Onze CPU zal de _0 CPU zijn.
- Klik op Voltooien
- Zorg ervoor dat u lwip141 aanvinkt voor opname met uw bsp in het venster dat verschijnt (zie afb 2)
Stap 7: FreeRTOS'ing Ernie
-
Download de nieuwste FreeRTOS-release van Sourceforge.
Als de download een uitvoerbaar bestand is, voer het dan uit om de FreeRTOS-bestanden uit te pakken in uw projectmap
- Houd die SDK open en klik op Bestand -> Importeren.
- We willen op Algemeen -> Vanuit een bestaande werkruimte klikken en dan willen we navigeren naar waar we FreeRTOS hebben gedownload.
-
Onze demo bevindt zich in FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702. Bij het selecteren van deze map zouden we drie projecten moeten zien verschijnen (onze code (OS), het is BSP en het HW-platform).
ALLEEN RTOSDemo importeren in uw huidige werkruimte
-
Wijzig op alle "blauwe" mapprojecten de BSP waarnaar wordt verwezen
- Klik met de rechtermuisknop en selecteer 'Wijzig verwezen BSP'.
- Selecteer de BSP die u zojuist hebt gemaakt voor uw Zybo
- Codebewerking in de SDK Blue-mappen van Xilinx zijn de eigenlijke codeprojecten.
Stap 8: Ernie's C-code importeren
- Overschrijf in de directory RTOSDemo/src de bestaande main.c met het hier bijgevoegde main.c-bestand.
- Kopieer het bestand main_sound.c naar de directory RTOSDemo/src.
Stap 9: Ernie debuggen
- Selecteer Uitvoeren -> Configuraties foutopsporing
- Maak in het linkerdeelvenster een nieuwe System Debugger-run
-
Op het tabblad Doelinstellingen,
selecteer "Reset Entire System" zodat zowel that als ps7_init zijn geselecteerd
-
Selecteer nu het tabblad Toepassing.
- Selecteer "download applicatie"
- Stel de core cortexa9_0 in op "stop bij programma-invoer"
- Klik op Toepassen en foutopsporing.
- Controleer of er geen fouten zijn in het foutopsporingsproces
- Houd de robot nauwlettend in de gaten en druk op de knop Hervatten totdat het programma wordt uitgevoerd zonder onderbrekingspunten te raken
- De robot moet nu draaien en naar harde geluiden toe bewegen. Hoera!
Stap 10: Ernie autonoom maken
- Zodra uw project helemaal klaar is voor gebruik (u kunt zonder problemen door de debugger lopen), bent u klaar om het in het flashgeheugen op uw bord te laden.
-
Maak wat het "first stage bootloader" (FSBL) -project wordt genoemd en bevat alle instructies die uw bord nodig heeft om uw projectbestanden (de bitstream en OS) bij het opstarten te laden.
- Selecteer: Bestand->Nieuw->Toepassingsproject en het volgende venster zou moeten verschijnen.
- Noem het wat je wilt (d.w.z. "FSBL")
- Zorg ervoor dat het hardwareplatform het platform is waarmee u werkt
- Druk op volgende (Druk niet op Voltooien)
- Selecteer de Zynq FSBL-sjabloon
- Klik op voltooien.
- Zodra het creatieproces is voltooid, weet u of alles werkte als u de volgende twee nieuwe mappen in het venster Projectverkenner ziet.
-
Een opstartimage maken Nu moet u de opstartimage maken.
- Klik met de rechtermuisknop op uw projectmap (in dit geval heet de mijne "RTOSDemo")
- Klik op "Create Boot image" in de vervolgkeuzelijst
-
Als alles correct is gekoppeld, weet het project welke bestanden het nodig heeft en ziet het volgende venster eruit zoals je hieronder ziet (de sleutel is dat je 3 partities hebt onder de sectie Boot-image, de bootloader, je bitbestand en het.elf-bestand van je projecten).
Als dit niet het geval is, is er mogelijk iets mis met uw projectkoppeling. Zorg ervoor dat de projectmappen zijn gekoppeld aan hun respectievelijke BSP's
- Klik op de knop "Afbeelding maken"
-
De laatste stap die u in de software moet uitvoeren, is om nu uw eerder gemaakte afbeelding naar het geheugen van het bord te flashen
- Selecteer in de hoofdwerkbalk van de SDK Xilinx Tools->Program Flash Memory
- Zorg ervoor dat het juiste hardwareplatform is geselecteerd en dat het pad van het afbeeldingsbestand correct verwijst naar het. BIN-bestand dat in de vorige stap is gemaakt.
- Selecteer "qspi single" van het Flash-type
- Vink "Verifiëren na flash" aan om de integriteit te verzekeren, maar dit is niet nodig
- Configureer je bord Ten slotte moet je ervoor zorgen dat de jumper voor de programmeermodus van het bord (JP5) correct is ingesteld om te selecteren om op te starten vanaf de qspi (die bevat wat je zojuist hebt geflitst) wanneer de BootROM wordt uitgevoerd.
- Schakel het apparaat nu gewoon uit en controleer of de "Logic Configuration Done LED" (LED 10) groen brandt.
Stap 11: Ernie schattig maken
- Vacht
- Veel bont
- Grote ogen!
- … hoge hoed
Aanbevolen:
Hoe maak je Spring Vibration Sensor thuis!: 5 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe maak je een veertrillingssensor thuis!: Ik werkte aan een nieuw project met een veertrillingssensor, ook bekend als de "poor man's" versnellingsmeter/bewegingssensor! Deze veertrillingsschakelaars zijn zeer gevoelige, niet-directionele, door trillingen geïnduceerde triggerschakelaars. Binnen is een
Clockception - Hoe maak je een klok gemaakt van klokken bouwen! 14 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Clockception - Hoe maak je een klok gemaakt van klokken!: Hallo allemaal! Dit is mijn inzending voor de First Time Author Contest 2020! Als je dit project leuk vindt, zou ik je stem zeer op prijs stellen :) Bedankt! Deze instructable leidt je door het proces voor het bouwen van een klok gemaakt van klokken! Ik heb slim genoemd
Hoe maak je een stopwatch met Arduino 8 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe maak je een stopwatch met behulp van Arduino: dit is een zeer eenvoudige Arduino 16 * 2 lcd-scherm stopwatch ……….. Als je deze Instructable leuk vindt, abonneer je dan op mijn kanaal https://www.youtube.com /ZenoModiff
Hoe maak je een klapschakelaarcircuit 12 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe maak je een klapschakelaarcircuit: Hallo vriend, vandaag ga ik een circuit maken van een klapschakelaar. Wanneer we zullen klappen, zal de LED gloeien. Dit circuit is geweldig. Om dit circuit te maken, zal ik LM555 IC en C945-transistor gebruiken. begin
Hoe maak je een Nightlight Creeper Build: 5 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe maak je een Nightlight Creeper: Hallo allemaal! Dit is Floppyman2! Toen ik deze nieuwe minecraft-uitdaging zag, kreeg ik een idee… Het had me geïnspireerd om een nachtlampje met een Creeper-thema te maken! Ik hoop dat jullie de tutorial leuk vinden en laat zeker een stem achter