Obsah:

Jak udělat Ernie: 11 kroků
Jak udělat Ernie: 11 kroků

Video: Jak udělat Ernie: 11 kroků

Video: Jak udělat Ernie: 11 kroků
Video: Instalace Windows 11: Co udělat po sestavení PC? 2024, Listopad
Anonim
Jak udělat Ernieho
Jak udělat Ernieho

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

Nastavení projektu ve Vivadu pro Ernieho
Nastavení projektu ve Vivadu pro Ernieho
Nastavení projektu ve Vivadu pro Ernieho
Nastavení projektu ve Vivadu pro Ernieho
Nastavení projektu ve Vivadu pro Ernieho
Nastavení projektu ve Vivadu pro Ernieho
  1. Objeví se průvodce
  2. Klikněte na Další
  3. Dále pojmenujte projekt

    1. Nikdy nepoužívejte název projektu nebo cestu k adresáři, která obsahuje mezery !!!!!
    2. Půjde o projekt RTL.
  4. Nechceme specifikovat zdroje
  5. Kliknutím na Další se dostaneme na stránku Part. Používáme ZYNQ XC7Z010-1CLG400C.

    1. Vivado nemá Zybo uvedenou jako jednu z předdefinovaných desek. Vyberte: „části“a poté vyhledejte xc7z010clg400-1.
    2. 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í“
  6. Klikněte na Vytvořit návrh bloku.

    Pojmenujte to zatím design_1

  7. Uvidíte zelený pruh s nápisem Přidat IP, klikněte na něj.
  8. Vyhledat Zynq.

    1. Dvakrát klikněte na ZYNQ7 Processing System,
    2. Tento blok se objeví v našem designu bloku.
  9. Zobrazí se zelený pruh s nápisem Run Block Automation, klikněte na něj.
  10. Níže si stáhněte zybo_zynq_def.xml.
  11. 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

  12. Dvakrát klikněte na blok ZYNQ.

    1. Konfigurace MIO

      1. Povolit časovač 0 (pod jednotkou aplikačního procesoru - obrázek 1)
      2. Povolit Watchdog (pod Application Processor Unit- obrázek 1)
      3. Povolit GPIO-> GPIO MIO (pod Application Processor Unit - obr. 2)
      4. Povolit GPIO-> ENET Reset (pod I/O periferiemi- obrázek 2)
    2. Konfigurace hodin

      Zakázat FCLK0 (pod hodinami PL Fabric - obrázek 3)

  13. Klikněte na OK.
  14. „Nyní spusťte blokovou automatizaci“.

    Bude několik otázek ohledně signálů, řekněte OK

  15. Klikněte na „Generovat HDL Wrapper“.

    Vytvořený wrapper budeme chtít zkopírovat, abychom mohli provádět úpravy uživatelů

  16. Klikněte na OK.

Krok 2: Vytvoření Ernieho PWM ve Vivadu

Vytvoření Ernieho PWM ve Vivadu
Vytvoření Ernieho PWM ve Vivadu
Vytvoření Ernieho PWM ve Vivadu
Vytvoření Ernieho PWM ve Vivadu

Tento krok vygeneruje IP PWM se vstupy odeslanými prostřednictvím knihovny AXI.

  1. 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

  2. Znovu přizpůsobte IP poklepáním na nový blok axi_gpio_0

    1. v části GPIO nastavte šířku GPIO na 2. Tyto bity budou signálem PWM_ON pro řízení každé instance modulu PWM.
    2. klikněte na „povolit duální kanál“
    3. 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.
  3. Klikněte pravým tlačítkem na výstupní port axi_gpio_0 označený jako GPIO a vyberte „Vytvořit externí“

    1. 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
    2. 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
  4. 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í

  5. V podokně Flow Navigator vyberte správce projektů -> Přidat zdroje a vytvořte nový vlastní blok IP

    1. vyberte „přidat nebo vytvořit zdroje návrhu“a stiskněte další
    2. 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
    3. klikněte na Dokončit
    4. 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

  6. 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

Vytváření Ernieho TDOA ve Vivadu
Vytváření Ernieho TDOA ve Vivadu
Vytváření Ernieho TDOA ve Vivadu
Vytváření Ernieho TDOA ve Vivadu

Tento krok vygeneruje IP TDOA, jejíž výstup lze číst prostřednictvím knihovny AXI

  1. 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

  2. Znovu přizpůsobte IP poklepáním na nový blok axi_gpio_1

    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.
    2. uvnitř bloku axi_gpio_1 kliknutím na + vedle portu GPIO odhalíte gpio_io_i [31: 0].
  3. 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

  4. 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í

  5. V podokně Flow Navigator vyberte správce projektů -> Přidat zdroje a vytvořte nový vlastní blok IP

    1. vyberte „přidat nebo vytvořit zdroje návrhu“a stiskněte další
    2. 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
    3. klikněte na Dokončit
    4. 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

  6. 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

Balení a export Ernie
Balení a export Ernie
  1. Ověřte, že blokové schéma vypadá jako přiložený snímek obrazovky
  2. Na kartě zdroje klikněte pravým tlačítkem na design_1.bd a vyberte „Vytvořit HDL Wrapper…“

    1. Vyberte „Kopírovat generovaný výstup, aby bylo možné provádět úpravy uživatele“, poté stiskněte „OK“
    2. 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
    3. uložit design_1_wrapper.v
  3. Na kartě zdroje poklepejte na soubor ZYBO_Master.xdc v části Omezení/constrs1

    1. 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
    2. Všimněte si následujících vstupních/výstupních pinů:

      1. L15: Signál PWM pro levý motor (Pmod JA2 na Zybo)
      2. L14: PWM signál pro pravý motor (Pmod JA8 na Zybo)
      3. V12: vstup brány ze zvukového senzoru 1 (Pmod JE1 na Zybo)
      4. K16: vstup brány ze zvukového senzoru 2 (Pmod JE2 na Zybo)
  4. 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

  5. Klikněte na Soubor-> Exportovat-> Generovat hardware

    Zaškrtněte „Zahrnout bitstream“a stiskněte OK

  6. Klikněte na Soubor-> Spustit SDK

Krok 5: Budování Ernie

Budování Ernie
Budování Ernie
Budování Ernie
Budování Ernie
  1. Namontujte serva na podvozek serva.
  2. Podle datového listu pro serva proveďte následující:

    1. připojte uzemnění serva k zemnicím kolům na Zybo JA Pmod (viz přiložený obrázek pinoutu)
    2. 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

    3. připojte piny vstupního signálu k příslušným výstupním pinům Zybo (vlevo: JA2, vpravo: JA8)
  3. namontujte zvukové senzory na přední část šasi směrem dopředu a držte je co nejblíže u sebe
  4. integrujte zvukové senzory pomocí průvodce připojením zvukového senzoru

    1. 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)
    2. připojte levý branový kolík snímače brány k JE1
    3. připojte kolík brány správného zvukového senzoru k JE2

Krok 6: Ernieho první BSP

Ernieho první BSP
Ernieho první BSP
Ernieho první BSP
Ernieho první BSP
  1. Vytvořte BSP a zabalte platformu, kterou jsme právě vytvořili.

    Můžete to získat pomocí Soubor -> Nový -> Balíček podpory desky

  2. Zobrazí se průvodce, který vám pomůže vytvořit BSP.

    1. Chceme spojit tento BSP s naší platformou, kterou jsme právě vytvořili, takže
    2. Hardwarová platforma by měla odpovídat té, kterou jsme právě vytvořili (viz obr. 1)
    3. Náš CPU bude _0 CPU.
    4. Klikněte na Dokončit
    5. V okně, které se objeví, nezapomeňte zaškrtnout lwip141 s vaším bsp (viz obr. 2)

Krok 7: FreeRTOS'ing Ernie

  1. 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

  2. Ponechte tuto SDK otevřenou a klikněte na Soubor -> Importovat.
  3. 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.
  4. 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

  5. U všech projektů „modré“složky změňte odkazovaný BSP

    1. Klikněte pravým tlačítkem a vyberte „Změnit odkazovaný BSP“.
    2. Vyberte BSP, který jste právě vytvořili pro svůj Zybo
    3. Úpravy kódu ve složkách Xilinx SDK Blue jsou skutečné projekty kódu.

Krok 8: Import kódu Ernie C

  1. V adresáři RTOSDemo/src přepište stávající main.c zde připojeným souborem main.c.
  2. Zkopírujte soubor main_sound.c do adresáře RTOSDemo/src.

Krok 9: Ladění Ernie

  1. Vyberte Spustit -> Konfigurace ladění
  2. V levém podokně vytvořte nový běh ladiče systému
  3. Na kartě Nastavení cíle

    vyberte „Resetovat celý systém“, aby byly vybrány jak to, tak ps7_init

  4. Nyní vyberte kartu Aplikace.

    1. Vyberte „stáhnout aplikaci“
    2. Nastavte jádro cortexa9_0 na „zastavení při vstupu do programu“
    3. Klikněte na Použít a ladit.
  5. Ověřte, že v procesu ladění nejsou žádné chyby
  6. Robota pozorně sledujte a mačkejte tlačítko Pokračovat, dokud se program nespustí, aniž byste narazili na zarážky
  7. 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í

  1. 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.
  2. 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í.

    1. Vyberte: Soubor-> Nový-> Projekt aplikace a mělo by se zobrazit následující okno.
    2. Pojmenujte jej, jak chcete (tj. „FSBL“)
    3. Zajistěte, aby byla hardwarová platforma ta, se kterou pracujete
    4. Stiskněte další (Netiskněte Dokončit)
    5. Vyberte šablonu Zynq FSBL
    6. Klikněte na Dokončit.
  3. 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.
  4. Vytvořit spouštěcí obraz Nyní budete muset vytvořit spouštěcí obraz.

    1. Klikněte pravým tlačítkem na složku projektu (v tomto případě se moje nazývá „RTOSDemo“)
    2. V rozevíracím seznamu klikněte na „Vytvořit spouštěcí obrázek“
    3. 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

    4. Klikněte na tlačítko „Vytvořit obrázek“
  5. Posledním krokem, který je třeba provést v softwaru, je nyní flashovat dříve vytvořený obrázek do paměti desky

    1. Na hlavní liště SDK vyberte Xilinx Tools-> Program Flash Flash
    2. 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.
    3. Z typu Flash vyberte „qspi single“
    4. Zaškrtnutím políčka „Ověřit po blesku“zajistíte integritu, ale není to nutné
  6. 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.
  7. 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é

  1. Srst
  2. Hodně kožešin
  3. Velké oči!
  4. … cylindr

Doporučuje: