Obsah:
- Krok 1: Nastavení projektu ve Vivado pro Ernie
- Krok 2: Vytvoření Ernieho PWM ve Vivadu
- Krok 3: Vytvoření Ernieho TDOA ve Vivadu
- Krok 4: Zabalení a export Ernie
- Krok 5: Budování Ernie
- Krok 6: Ernieho první BSP
- Krok 7: FreeRTOS'ing Ernie
- Krok 8: Import kódu Ernie C
- Krok 9: Ladění Ernie
- Krok 10: Vytvoření Ernie autonomní
- Krok 11: Učinění Ernie roztomilé
Video: Jak udělat Ernie: 11 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
Toto je návod, jak pomocí Zybo Board postavit Ernieho, vašeho autonomního robota sledujícího zvuk. Bude zahrnovat: Toto byl náš konečný projekt pro třídu operačních systémů v reálném čase (CPE 439) v Cal Poly SLO.
Seznam vybavení:
- 1 - Vývojová deska ZYBO Zynq 7000
- 2 - Servo s kontinuálním otáčením paralaxy
- 2 - Zvukový senzor (SparkFun Sound Detector)
- 1 - 5v lithium -iontová baterie USB (pro desku)
- 4 - baterie AA (pro serva)
- 1 - baterie AA (se 4 sloty pro baterie)
- 1 - Micro USB kabel
- 1 - Breadboard
- mnoho - dráty od muže k muži
- 1 - Podvozek serva
Softwarové požadavky:
- Xilinx Vivado Design Suite 2016.2
- Digilent Adept 2.16.1
Krok 1: Nastavení projektu ve Vivado pro Ernie
- Objeví se průvodce
- Klikněte na Další
-
Dále pojmenujte projekt
- Nikdy nepoužívejte název projektu nebo cestu k adresáři, která obsahuje mezery !!!!!
- Půjde o projekt RTL.
- Nechceme specifikovat zdroje
-
Kliknutím na Další se dostaneme na stránku Part. Používáme ZYNQ XC7Z010-1CLG400C.
- Vivado nemá Zybo uvedenou jako jednu z předdefinovaných desek. Vyberte: „části“a poté vyhledejte xc7z010clg400-1.
- Pokud omylem vyberete špatnou část, můžete snadno přepnout čipy: Nástroje -> Nastavení projektu -> Obecné a klikněte na tečky napravo od „Projektové zařízení“
-
Klikněte na Vytvořit návrh bloku.
Pojmenujte to zatím design_1
- Uvidíte zelený pruh s nápisem Přidat IP, klikněte na něj.
-
Vyhledat Zynq.
- Dvakrát klikněte na ZYNQ7 Processing System,
- Tento blok se objeví v našem designu bloku.
- Zobrazí se zelený pruh s nápisem Run Block Automation, klikněte na něj.
- Níže si stáhněte zybo_zynq_def.xml.
-
Ve Vivadu klikněte na „Importovat nastavení XPS“a vyberte „zybo_zynq_def.xml“
Toto předem naplní konfiguraci bloku Vivado všemi vestavěnými periferiemi a přiřazením pinů desky Zybo
-
Dvakrát klikněte na blok ZYNQ.
-
Konfigurace MIO
- Povolit časovač 0 (pod jednotkou aplikačního procesoru - obrázek 1)
- Povolit Watchdog (pod Application Processor Unit- obrázek 1)
- Povolit GPIO-> GPIO MIO (pod Application Processor Unit - obr. 2)
- Povolit GPIO-> ENET Reset (pod I/O periferiemi- obrázek 2)
-
Konfigurace hodin
Zakázat FCLK0 (pod hodinami PL Fabric - obrázek 3)
-
- Klikněte na OK.
-
„Nyní spusťte blokovou automatizaci“.
Bude několik otázek ohledně signálů, řekněte OK
-
Klikněte na „Generovat HDL Wrapper“.
Vytvořený wrapper budeme chtít zkopírovat, abychom mohli provádět úpravy uživatelů
- Klikněte na OK.
Krok 2: Vytvoření Ernieho PWM ve Vivadu
Tento krok vygeneruje IP PWM se vstupy odeslanými prostřednictvím knihovny AXI.
-
Vytvořte blok AXI GPIO kliknutím pravým tlačítkem na pozadí a kliknutím na „přidat IP“
do vyhledávacího pole zadejte „AXI_GPIO“a vyberte tento balíček
-
Znovu přizpůsobte IP poklepáním na nový blok axi_gpio_0
- v části GPIO nastavte šířku GPIO na 2. Tyto bity budou signálem PWM_ON pro řízení každé instance modulu PWM.
- klikněte na „povolit duální kanál“
- v části GPIO 2 nastavte šířku GPIO na 2. Tyto bity budou signálem PWM_FW k nastavení směru každé instance modulu PWM.
-
Klikněte pravým tlačítkem na výstupní port axi_gpio_0 označený jako GPIO a vyberte „Vytvořit externí“
- Klikněte na nový výstup označený jako GPIO a přejděte na kartu „vlastnosti“na levém panelu nástrojů a změňte název na PWM_ON
- Klikněte na nový výstup označený GPIO2 a přejděte na kartu „vlastnosti“na levém panelu nástrojů a změňte název na PWM_FW
-
V zeleném pruhu nad blokovým diagramem vyberte Spustit automatizaci připojení.
Pokud porty připojíte ručně, adresy AXI nemusí být nakonfigurovány, což později povede k problémům s komunikací
-
V podokně Flow Navigator vyberte správce projektů -> Přidat zdroje a vytvořte nový vlastní blok IP
- vyberte „přidat nebo vytvořit zdroje návrhu“a stiskněte další
- klikněte na „vytvořit soubor“, změňte typ souboru na „SystemVerilog“a do pole názvu souboru zadejte „pwm“, poté klikněte na OK
- klikněte na Dokončit
-
ignorujte okno Definovat modul stisknutím OK (přepíšeme je později)
pokud se vás zeptá, zda jste si jisti, klikněte na Ano
-
Na kartě zdroje dvakrát klikněte na soubor pwm.sv (umístěný v části „Zdroje návrhu/design_1_wrapper“)
Zkopírujte/vložte celý kód SystemVerilog ze souboru pwm.txt připojeného níže
Krok 3: Vytvoření Ernieho TDOA ve Vivadu
Tento krok vygeneruje IP TDOA, jejíž výstup lze číst prostřednictvím knihovny AXI
-
Vytvořte blok AXI GPIO kliknutím pravým tlačítkem na pozadí a kliknutím na „přidat IP“
do vyhledávacího pole zadejte „AXI_GPIO“a vyberte tento balíček
-
Znovu přizpůsobte IP poklepáním na nový blok axi_gpio_1
- v části GPIO zaškrtněte políčko „Všechny vstupy“a nastavte šířku GPIO na 32. Tato sběrnice bude časovým rozdílem příjezdu mezi oběma senzory.
- uvnitř bloku axi_gpio_1 kliknutím na + vedle portu GPIO odhalíte gpio_io_i [31: 0].
-
Klikněte pravým tlačítkem na výstupní port axi_gpio_1 označený gpio_io_i [31: 0] a vyberte „Vytvořit externí“
Klikněte na nový vstup označený gpio_io_i [31: 0], přejděte na kartu „vlastnosti“na levém panelu nástrojů a změňte název na TDOA_val
-
V zeleném pruhu nad blokovým diagramem vyberte Spustit automatizaci připojení.
Pokud porty připojíte ručně, adresy AXI nemusí být nakonfigurovány, což později povede k problémům s komunikací
-
V podokně Flow Navigator vyberte správce projektů -> Přidat zdroje a vytvořte nový vlastní blok IP
- vyberte „přidat nebo vytvořit zdroje návrhu“a stiskněte další
- klikněte na „vytvořit soubor“, změňte typ souboru na „SystemVerilog“a do pole názvu souboru zadejte „tdoa“, poté klikněte na OK
- klikněte na Dokončit
-
ignorujte okno Definovat modul stisknutím OK (přepíšeme je později)
pokud se vás zeptá, zda jste si jisti, klikněte na Ano
-
Na kartě zdroje dvakrát klikněte na soubor tdoa.sv (umístěný v části „Zdroje návrhu/design_1_wrapper“)
Zkopírujte/vložte celý kód SystemVerilog ze souboru tdoa.txt připojeného níže
Krok 4: Zabalení a export Ernie
- Ověřte, že blokové schéma vypadá jako přiložený snímek obrazovky
-
Na kartě zdroje klikněte pravým tlačítkem na design_1.bd a vyberte „Vytvořit HDL Wrapper…“
- Vyberte „Kopírovat generovaný výstup, aby bylo možné provádět úpravy uživatele“, poté stiskněte „OK“
- Zkopírujte kód z souboru design_1_wrapper.txt připojeného níže a vložte jej místo vygenerovaného kódu design_1_wrapper.v
- uložit design_1_wrapper.v
-
Na kartě zdroje poklepejte na soubor ZYBO_Master.xdc v části Omezení/constrs1
- Zkopírujte kód z níže připojeného souboru ZYBO_Master.txt a vložte jej místo stávajícího kódu ZYBO_Master.xdc
-
Všimněte si následujících vstupních/výstupních pinů:
- L15: Signál PWM pro levý motor (Pmod JA2 na Zybo)
- L14: PWM signál pro pravý motor (Pmod JA8 na Zybo)
- V12: vstup brány ze zvukového senzoru 1 (Pmod JE1 na Zybo)
- K16: vstup brány ze zvukového senzoru 2 (Pmod JE2 na Zybo)
-
V podokně Flow Navigator klikněte na „Generovat bitstream“v části Program a ladění
pokud si myslíte, že je to hotové hned, tak to asi není. vážně, uvař si čaj
-
Klikněte na Soubor-> Exportovat-> Generovat hardware
Zaškrtněte „Zahrnout bitstream“a stiskněte OK
- Klikněte na Soubor-> Spustit SDK
Krok 5: Budování Ernie
- Namontujte serva na podvozek serva.
-
Podle datového listu pro serva proveďte následující:
- připojte uzemnění serva k zemnicím kolům na Zybo JA Pmod (viz přiložený obrázek pinoutu)
- připojte napájecí kolík serva k baterii AA
Zjistili jsme, že když jsou serva připojena k Vdd Zybo, deska odebírá příliš mnoho proudu, což způsobuje, že se deska nepřetržitě resetuje
- připojte piny vstupního signálu k příslušným výstupním pinům Zybo (vlevo: JA2, vpravo: JA8)
- namontujte zvukové senzory na přední část šasi směrem dopředu a držte je co nejblíže u sebe
-
integrujte zvukové senzory pomocí průvodce připojením zvukového senzoru
- připojte zem a Vdd piny každého zvukového senzoru k zemi a Vdd piny na JE Pmod Zybo (viz přiložený obrázek pinoutu)
- připojte levý branový kolík snímače brány k JE1
- připojte kolík brány správného zvukového senzoru k JE2
Krok 6: Ernieho první BSP
-
Vytvořte BSP a zabalte platformu, kterou jsme právě vytvořili.
Můžete to získat pomocí Soubor -> Nový -> Balíček podpory desky
-
Zobrazí se průvodce, který vám pomůže vytvořit BSP.
- Chceme spojit tento BSP s naší platformou, kterou jsme právě vytvořili, takže
- Hardwarová platforma by měla odpovídat té, kterou jsme právě vytvořili (viz obr. 1)
- Náš CPU bude _0 CPU.
- Klikněte na Dokončit
- V okně, které se objeví, nezapomeňte zaškrtnout lwip141 s vaším bsp (viz obr. 2)
Krok 7: FreeRTOS'ing Ernie
-
Stáhněte si nejnovější verzi FreeRTOS ze Sourceforge.
Pokud je stahování spustitelný soubor, spusťte jej a extrahujte soubory FreeRTOS do adresáře projektu
- Ponechte tuto SDK otevřenou a klikněte na Soubor -> Importovat.
- Chceme kliknout na Obecné-> Z existujícího pracovního prostoru, a pak budeme chtít přejít na místo, kde jsme stáhli FreeRTOS.
-
Naše demo bude umístěno ve FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702. Po výběru této složky bychom měli vidět tři projekty (náš kód (OS), je to BSP a HW platforma).
Importujte pouze RTOSDemo do aktuálního pracovního prostoru
-
U všech projektů „modré“složky změňte odkazovaný BSP
- Klikněte pravým tlačítkem a vyberte „Změnit odkazovaný BSP“.
- Vyberte BSP, který jste právě vytvořili pro svůj Zybo
- Úpravy kódu ve složkách Xilinx SDK Blue jsou skutečné projekty kódu.
Krok 8: Import kódu Ernie C
- V adresáři RTOSDemo/src přepište stávající main.c zde připojeným souborem main.c.
- Zkopírujte soubor main_sound.c do adresáře RTOSDemo/src.
Krok 9: Ladění Ernie
- Vyberte Spustit -> Konfigurace ladění
- V levém podokně vytvořte nový běh ladiče systému
-
Na kartě Nastavení cíle
vyberte „Resetovat celý systém“, aby byly vybrány jak to, tak ps7_init
-
Nyní vyberte kartu Aplikace.
- Vyberte „stáhnout aplikaci“
- Nastavte jádro cortexa9_0 na „zastavení při vstupu do programu“
- Klikněte na Použít a ladit.
- Ověřte, že v procesu ladění nejsou žádné chyby
- Robota pozorně sledujte a mačkejte tlačítko Pokračovat, dokud se program nespustí, aniž byste narazili na zarážky
- Robot by se nyní měl otočit a pohybovat se směrem k hlasitým zvukům. Jé!
Krok 10: Vytvoření Ernie autonomní
- Jakmile je váš projekt připraven (můžete ho bez problémů spustit pomocí debuggeru), můžete jej načíst do paměti flash na desce.
-
Vytvořte projekt, který se nazývá „první fáze zavaděče“(FSBL), a obsahuje všechny instrukce, které vaše deska bude potřebovat k načtení souborů projektu (bitový proud a operační systém) při spuštění.
- Vyberte: Soubor-> Nový-> Projekt aplikace a mělo by se zobrazit následující okno.
- Pojmenujte jej, jak chcete (tj. „FSBL“)
- Zajistěte, aby byla hardwarová platforma ta, se kterou pracujete
- Stiskněte další (Netiskněte Dokončit)
- Vyberte šablonu Zynq FSBL
- Klikněte na Dokončit.
- Jakmile je proces vytváření dokončen, budete vědět, zda vše fungovalo, pokud v okně Průzkumníka projektů uvidíte následující dvě nové složky.
-
Vytvořit spouštěcí obraz Nyní budete muset vytvořit spouštěcí obraz.
- Klikněte pravým tlačítkem na složku projektu (v tomto případě se moje nazývá „RTOSDemo“)
- V rozevíracím seznamu klikněte na „Vytvořit spouštěcí obrázek“
-
Pokud je vše správně propojeno, projekt bude vědět, jaké soubory potřebuje, a následující okno bude vypadat, jak vidíte níže (klíčem je, že máte 3 oddíly v sekci Boot image, bootloader, váš bitový soubor a soubor.elf vašeho projektu).
Pokud tomu tak není, je možné, že s propojením vašeho projektu není něco v pořádku. Zajistěte, aby složky projektu byly propojeny s jejich příslušnými BSP
- Klikněte na tlačítko „Vytvořit obrázek“
-
Posledním krokem, který je třeba provést v softwaru, je nyní flashovat dříve vytvořený obrázek do paměti desky
- Na hlavní liště SDK vyberte Xilinx Tools-> Program Flash Flash
- Zajistěte, aby byla vybrána správná hardwarová platforma a aby cesta k souboru obrázku správně směřovala na soubor. BIN vytvořený v předchozím kroku.
- Z typu Flash vyberte „qspi single“
- Zaškrtnutím políčka „Ověřit po blesku“zajistíte integritu, ale není to nutné
- Konfigurace vaší desky Nakonec je třeba zajistit, aby propojka režimů programování desek (JP5) byla správně nastavena tak, aby vybírala spouštění z qspi (která obsahuje to, co jste právě blikali) při spuštění BootROM.
- Nyní jednoduše vypněte a zapněte zařízení a ujistěte se, že kontrolka „Logic Configuration Done“(LED 10) svítí zeleně.
Krok 11: Učinění Ernie roztomilé
- Srst
- Hodně kožešin
- Velké oči!
- … cylindr
Doporučuje:
Jak udělat lavičku v TinkerCAD: 5 kroků
Jak si vyrobit lavičku v TinkerCAD: V tomto návodu vás provedu krok za krokem procesem výroby lavičky v tinkerCADu
Jak udělat tleskání? Přepínač ON/OFF -- Bez jakéhokoli IC: 6 kroků
Jak udělat tleskání? Přepínač ON/OFF || Bez jakéhokoli IC: Toto je tleskání přepínače bez jakéhokoli IC. Umíš tleskat? Poprvé potom žárovka? ZAPNUTO a podruhé tleskat žárovku? VYPNUTO. Tento obvod vychází z klopného obvodu SR. Součásti 1. Tranzistory BC547 NPN (4ks) 2. Rezistory 10k (5ks) 3. 1K odpor
Ručně ovládaná gadgetem Chrome Dinosaur / Jak to udělat / #smartcreativity: 14 kroků
Ruční gesto ovládané Chrome Dinosaur Gadget / Jak to udělat / #smartcreativity: Dobrý den, přátelé, v tomto tutoriálu vám ukážu velmi exkluzivní projekt. Takže dnes vám ukážu, jak ovládat Chrome Dinosaur Game pomocí gesta ruky velmi lehce. Pokud použijete tuto technologii k ovládání chromového DINO, spadnete
Jak udělat počítadlo kroků?: 3 kroky (s obrázky)
How to Make a Step Counter ?: Dříve jsem dobře fungoval v mnoha sportech: chůze, běh, jízda na kole, hraní badmintonu atd. Rád jezdím a dlouho cestuji. Podívejte se na moje bříško …… No, každopádně jsem se rozhodl začít cvičit. Jaké vybavení si mám připravit?
Jak udělat robota, který se vyhýbá překážkám: 6 kroků
Jak vyrobit robota, který se vyhýbá překážkám: Robot, který se vyhýbá překážkám, je jednoduchý robot, který obsluhuje arduino a dělá to, že se jen toulá a vyhýbá se překážkám. Detekuje překážky pomocí ultrazvukového senzoru HC-SR04, jinými slovy, pokud robot cítí předmět blízko