Turinys:

Kaip padaryti Ernie: 11 žingsnių
Kaip padaryti Ernie: 11 žingsnių

Video: Kaip padaryti Ernie: 11 žingsnių

Video: Kaip padaryti Ernie: 11 žingsnių
Video: MAŽOS ERDVĖS / 11 būdų, kaip vizualiai padidinti erdvę 2024, Lapkritis
Anonim
Kaip pasigaminti Ernie
Kaip pasigaminti Ernie

Tai yra pamoka, kaip sukurti „Ernie“, jūsų autonominį garso sekimo robotą, naudojant „Zybo Board“. Tai apims: kaip sukurti projektą „Vivado“, sukurti į PWM panašius servo variklio tvarkykles FPGA, sąsają su dviem garso jutikliais, sukurti atvykimo laiko skirtumą, naudoti „freeRTOS“ir paleisti „zybo“iš akumuliatoriaus. Tai buvo mūsų paskutinis projektas „Real Poly“operacinių sistemų klasei (CPE 439) „Cal Poly SLO“.

Įrangos sąrašas:

  • 1 - „ZYBO Zynq 7000“plėtros valdyba
  • 2 - „Parallax“nuolatinio sukimosi servo sistema
  • 2 - garso jutiklis („SparkFun“garso detektorius)
  • 1 - 5 V ličio jonų USB akumuliatorius (skirtas plokštėms)
  • 4 - AA baterijos (servo)
  • 1 - AA baterija (su 4 baterijų lizdais)
  • 1 - „Micro USB“kabelis
  • 1 - Duonos lenta
  • daugelis - nuo vyrų iki vyrų laidai
  • 1 - Servo važiuoklė

Programinės įrangos reikalavimai:

  • „Xilinx Vivado Design Suite“2016.2
  • „Digilent Adept“2.16.1

1 veiksmas: projekto „Vivado“nustatymas Ernie

Projekto kūrimas Vivado mieste Ernie
Projekto kūrimas Vivado mieste Ernie
Projekto kūrimas Vivado mieste Ernie
Projekto kūrimas Vivado mieste Ernie
Projekto kūrimas Vivado mieste Ernie
Projekto kūrimas Vivado mieste Ernie
  1. Atsidarys vedlys
  2. Spustelėkite Pirmyn
  3. Kitas projekto pavadinimas

    1. Niekada nenaudokite projekto pavadinimo ar katalogo kelio, kuriame yra tarpų !!!!!
    2. Tai bus RTL projektas.
  4. Mes nenorime nurodyti šaltinių
  5. Spustelėję Kitas, pateksime į dalį. Mes naudojame ZYNQ XC7Z010-1CLG400C.

    1. „Vivado“neturi „Zybo“kaip iš anksto nustatytų lentų. Pasirinkite: „dalys“, tada ieškokite xc7z010clg400-1.
    2. Jei per klaidą pasirinkote netinkamą dalį, galite lengvai pakeisti lustus: Įrankiai -> Projekto nustatymai -> Bendra ir spustelėkite taškus, esančius dešinėje „Projekto įrenginys“
  6. Spustelėkite Sukurti bloko dizainą.

    Kol kas pavadinkite jį „design_1“

  7. Pamatysite žalią juostą, kurioje sakoma Pridėti IP, spustelėkite ją.
  8. Ieškoti Zynq.

    1. Dukart spustelėkite ZYNQ7 apdorojimo sistemą,
    2. Šis blokas bus rodomas mūsų bloko dizaine.
  9. Pamatysite žalią juostą, kurioje sakoma „Vykdyti blokavimo automatizavimą“, spustelėkite ją.
  10. Atsisiųskite zybo_zynq_def.xml žemiau.
  11. „Vivado“spustelėkite „Importuoti XPS nustatymus“ir pasirinkite „zybo_zynq_def.xml“

    Tai iš anksto užpildo „Vivado“bloko konfigūraciją su visais „Zybo“plokštės integruotais periferiniais įrenginiais ir kaiščių priskyrimais

  12. Dukart spustelėkite ZYNQ bloką.

    1. MIO konfigūracija
      1. Įjungti laikmatį 0 (taikomųjų programų procesoriaus bloke - img 1)
      2. Įgalinti sargybinį (taikomųjų programų procesoriaus bloke- img 1)
      3. Įgalinti GPIO-> GPIO MIO („Application Processor Unit“- img 2)
      4. Įgalinti GPIO-> ENET Reset (pagal I/O išorinius įrenginius- img 2)
    2. Laikrodžio konfigūracija

      Išjungti FCLK0 (pagal „PL Fabric Clocks“- img 3)

  13. Spustelėkite Gerai.
  14. „Vykdyti blokavimo automatizavimą“dabar.

    Bus keletas klausimų apie signalus, pasakykite Gerai

  15. Spustelėkite „Generate HDL Wrapper“.

    Norėsime nukopijuoti sukurtą įvyniojimą, kad naudotojai galėtų redaguoti

  16. Spustelėkite Gerai.

2 žingsnis: Ernie PWM kūrimas „Vivado“

Ernie PWM kūrimas Vivado
Ernie PWM kūrimas Vivado
Ernie PWM kūrimas Vivado
Ernie PWM kūrimas Vivado

Šis veiksmas sukurs PWM IP su įėjimais, siunčiamais per AXI biblioteką.

  1. Sukurkite AXI GPIO bloką dešiniuoju pelės klavišu spustelėdami foną ir spustelėdami „pridėti IP“

    į paieškos juostą įveskite „AXI_GPIO“ir pasirinkite šį paketą

  2. Iš naujo pritaikykite IP, dukart spustelėdami naują „axi_gpio_0“bloką

    1. pagal GPIO, nustatykite GPIO plotį į 2. Šie bitai bus PWM_ON signalas, nukreipiantis kiekvieną PWM modulio egzempliorių.
    2. spustelėkite „įgalinti dvigubą kanalą“
    3. pagal GPIO 2 nustatykite GPIO plotį į 2. Šie bitai bus PWM_FW signalas, skirtas nustatyti kiekvieno PWM modulio egzemplioriaus kryptį.
  3. Dešiniuoju pelės mygtuku spustelėkite axi_gpio_0 išvesties prievadą, pažymėtą GPIO, ir pasirinkite „Make External“

    1. Spustelėkite naują išvestį, pažymėtą GPIO, ir eikite į skirtuką „Ypatybės“kairėje įrankių juostoje ir pakeiskite pavadinimą į PWM_ON
    2. Spustelėkite naują išvestį, pažymėtą GPIO2, ir eikite į skirtuką „Ypatybės“kairėje įrankių juostoje ir pakeiskite pavadinimą į PWM_FW
  4. Žaliojoje reklamjuostėje virš blokinės diagramos pasirinkite Vykdyti ryšio automatizavimą.

    Jei prievadus jungiate rankiniu būdu, AXI adresai gali būti nesukonfigūruoti, todėl vėliau gali kilti ryšio problemų

  5. Srauto naršyklės srityje pasirinkite projekto valdytojas -> Pridėti šaltinių, kad sukurtumėte naują pasirinktinį IP bloką

    1. pasirinkite „pridėti arba sukurti dizaino šaltinius“ir spustelėkite kitą
    2. spustelėkite „sukurti failą“, pakeiskite failo tipą į „SystemVerilog“ir į failo pavadinimo lauką įveskite „pwm“, tada spustelėkite Gerai
    3. spustelėkite Baigti
    4. nepaisykite lango Apibrėžti modulį paspausdami Gerai (vėliau juos perrašysime)

      jei jis klausia, ar esate tikras, spustelėkite Taip

  6. Skirtuke šaltiniai dukart spustelėkite pwm.sv (esantis skiltyje „Dizaino šaltiniai/design_1_wrapper“)

    Nukopijuokite/įklijuokite visą „SystemVerilog“kodą iš toliau pridėto failo pwm.txt

3 žingsnis: Ernie TDOA kūrimas „Vivado“

Ernie TDOA kūrimas Vivado
Ernie TDOA kūrimas Vivado
Ernie TDOA kūrimas Vivado
Ernie TDOA kūrimas Vivado

Šis veiksmas sukurs TDOA IP, kurio išvestį galima perskaityti per AXI biblioteką

  1. Sukurkite AXI GPIO bloką dešiniuoju pelės klavišu spustelėdami foną ir spustelėdami „pridėti IP“

    į paieškos juostą įveskite „AXI_GPIO“ir pasirinkite šį paketą

  2. Iš naujo tinkinkite IP, dukart spustelėdami naują „axi_gpio_1“bloką

    1. pagal GPIO pažymėkite langelį „Visos įvestys“ir nustatykite GPIO plotį į 32. Ši magistralė bus laiko skirtumas tarp dviejų jutiklių atvykimo.
    2. „axi_gpio_1“bloko viduje spustelėkite + šalia GPIO prievado, kad būtų parodytas „gpio_io_i“[31: 0].
  3. Dešiniuoju pelės mygtuku spustelėkite axi_gpio_1 išvesties prievadą, pažymėtą gpio_io_i [31: 0], ir pasirinkite „Make External“

    Spustelėkite naują įvestį, pažymėtą gpio_io_i [31: 0], ir eikite į skirtuką „Ypatybės“kairėje įrankių juostoje ir pakeiskite pavadinimą į TDOA_val

  4. Žaliojoje reklamjuostėje virš blokinės diagramos pasirinkite Vykdyti ryšio automatizavimą.

    Jei prievadus jungiate rankiniu būdu, AXI adresai gali būti nesukonfigūruoti, todėl vėliau gali kilti ryšio problemų

  5. Srauto naršyklės srityje pasirinkite projekto valdytojas -> Pridėti šaltinių, kad sukurtumėte naują pasirinktinį IP bloką

    1. pasirinkite „pridėti arba sukurti dizaino šaltinius“ir spustelėkite kitą
    2. spustelėkite „sukurti failą“, pakeiskite failo tipą į „SystemVerilog“ir įveskite „tdoa“į failo pavadinimo lauką, tada spustelėkite Gerai
    3. spustelėkite Baigti
    4. nepaisykite lango Apibrėžti modulį paspausdami Gerai (vėliau juos perrašysime)

      jei jis klausia, ar esate tikras, spustelėkite Taip

  6. Skirtuke šaltiniai dukart spustelėkite tdoa.sv (esančią skiltyje „Dizaino šaltiniai/design_1_wrapper“)

    Nukopijuokite/įklijuokite visą „SystemVerilog“kodą iš tdoa.txt failo, pridėto žemiau

4 žingsnis: Ernie įvyniojimas ir eksportavimas

Vyniojimas ir eksportas Ernie
Vyniojimas ir eksportas Ernie
  1. Patikrinkite, ar blokinė schema atrodo kaip pridėta ekrano kopija
  2. Skirtuke „Šaltiniai“dešiniuoju pelės mygtuku spustelėkite „design_1.bd“ir pasirinkite „Sukurti HDL įvyniojimą …“

    1. Pasirinkite „Kopijuoti sukurtą išvestį, kad naudotojai galėtų redaguoti“, tada paspauskite „Gerai“
    2. Nukopijuokite kodą iš failo design_1_wrapper.txt, pridėto žemiau, ir įklijuokite jį vietoje sugeneruoto dizaino_1_wrapper.v kodo
    3. išsaugoti design_1_wrapper.v
  3. Skirtuke Šaltiniai dukart spustelėkite failą ZYBO_Master.xdc, esantį skyriuje Apribojimai/constrs1

    1. Nukopijuokite kodą iš toliau pridėto ZYBO_Master.txt failo ir įklijuokite jį į esamą ZYBO_Master.xdc kodą
    2. Atkreipkite dėmesį į šiuos įvesties/išvesties kaiščius:

      1. L15: kairiojo variklio PWM signalas (Pmod JA2 „Zybo“)
      2. L14: PWM signalas dešiniajam varikliui (Pmod JA8 „Zybo“)
      3. V12: vartų įvestis iš 1 garso jutiklio (Pmod JE1 „Zybo“)
      4. K16: vartų įvestis iš garso jutiklio 2 („Pmod JE2“„Zybo“)
  4. Srauto naršyklės srityje spustelėkite „Generuoti srautą“skiltyje „Programos ir derinimas“

    jei manote, kad tai padaryta iš karto, greičiausiai taip nėra. rimtai, išgerk arbatos

  5. Spustelėkite Failas-> Eksportuoti-> Generuoti aparatūrą

    Pažymėkite „Įtraukti srautą“ir paspauskite Gerai

  6. Spustelėkite Failas-> Paleisti SDK

5 žingsnis: Ernio statyba

Ernio pastatas
Ernio pastatas
Ernio pastatas
Ernio pastatas
  1. Sumontuokite servo servo prie važiuoklės.
  2. Vadovaudamiesi servo duomenų lapu, atlikite šiuos veiksmus:

    1. prijunkite servo žemę prie „Zybo“JA Pmod įžeminimo kaiščių (žr. pridėtą „pinout“paveikslėlį)
    2. prijunkite servo maitinimo kištuką prie AA baterijos

      Mes nustatėme, kad kai servos yra prijungtos prie „Zybo“Vdd, plokštė naudoja per daug srovės, todėl plokštė nuolat atstatoma

    3. prijunkite įvesties signalo kaiščius prie atitinkamų „Zybo“išvesties kaiščių (kairėje: JA2, dešinėje: JA8)
  3. garso jutiklius pritvirtinkite prie važiuoklės priekio, nukreipdami į priekį, laikydami juos kuo arčiau vienas kito
  4. Norėdami integruoti garso jutiklius, naudokite garso jutiklio prijungimo vadovą

    1. prijunkite kiekvieno garso jutiklio įžeminimo ir Vdd kaiščius prie žemės ir „Zybo“„JE Pmod“Vdd kaiščius (žr. pridėtą „pinout“paveikslėlį)
    2. prijunkite kairiojo garso jutiklio vartų kaištį prie JE1
    3. prijunkite dešiniojo garso jutiklio vartų kaištį prie JE2

6 žingsnis: Pirmasis Ernie BSP

Pirmasis Ernie BSP
Pirmasis Ernie BSP
Pirmasis Ernie BSP
Pirmasis Ernie BSP
  1. Sukurkite BSP, kad užbaigtumėte ką tik sukurtą platformą.

    Tai galite gauti per Failas -> Naujas -> Valdybos palaikymo paketas

  2. Bus rodomas vedlys, padėsiantis sukurti BSP.

    1. Mes norime susieti šį BSP su mūsų ką tik sukurta platforma
    2. Techninės įrangos platforma turėtų atitikti ką tik sukurtą (žr. 1 pav.)
    3. Mūsų procesorius bus _0.
    4. Spustelėkite Baigti
    5. Iššokusiame lange būtinai patikrinkite, ar lwip141 nėra įtrauktas į jūsų bsp (žr. Img 2)

7 žingsnis: FreeRTOSinging Ernie

  1. Atsisiųskite naujausią „FreeRTOS“versiją iš „Sourceforge“.

    Jei atsisiuntimas yra vykdomasis, paleiskite jį, kad ištrauktumėte „FreeRTOS“failus į savo projekto katalogą

  2. Laikykite tą SDK atidarytą ir spustelėkite Failas -> Importuoti.
  3. Norime spustelėti Bendra-> Iš esamos darbo srities, tada norėsime pereiti į vietą, kur atsisiuntėme „FreeRTOS“.
  4. Mūsų demonstracinė versija bus FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702. Pasirinkę šį aplanką, turėtume pamatyti tris iššokančius projektus (mūsų kodas (OS), tai BSP ir HW platforma).

    TIK importuokite „RTOSDemo“į dabartinę darbo vietą

  5. Visuose „mėlynų“aplankų projektuose pakeiskite nurodytą BSP

    1. Dešiniuoju pelės mygtuku spustelėkite ir pasirinkite „Keisti nurodytą BSP“.
    2. Pasirinkite BSP, kurį ką tik sukūrėte savo „Zybo“
    3. Kodo redagavimas „Xilinx“SDK mėlynos spalvos aplankuose yra tikri kodo projektai.

8 veiksmas: Ernie C kodo importavimas

  1. RTOSDemo/src kataloge perrašykite esamą main.c su čia pridėtu failu main.c
  2. Nukopijuokite failą main_sound.c į katalogą RTOSDemo/src.

9 veiksmas: derinimas Ernie

  1. Pasirinkite Vykdyti -> Derinti konfigūracijas
  2. Kairiojoje srityje sukurkite naują sistemos derinimo programą
  3. Skirtuke Tikslinė sąranka

    pasirinkite „Iš naujo nustatyti visą sistemą“, kad būtų pasirinktas ir tas, ir ps7_init

  4. Dabar pasirinkite skirtuką Programos.

    1. Pasirinkite „atsisiųsti programą“
    2. Nustatykite „cortexa9_0“šerdį į „sustoti įvedant programą“
    3. Spustelėkite Taikyti ir derinti.
  5. Patikrinkite, ar derinimo procese nėra klaidų
  6. Atidžiai stebėdami robotą, paspauskite mygtuką „Tęsti“, kol programa pradės veikti nepasiekdama jokių pertraukos taškų
  7. Dabar robotas turėtų pasisukti ir judėti link garsių garsų. Valio!

10 žingsnis: Padarykite Ernie autonominį

  1. Kai jūsų projektas bus paruoštas darbui (be klaidų galite paleisti per derintuvą), būsite pasiruošę įkelti jį į savo plokštės „flash“atmintį.
  2. Sukurkite vadinamąjį „pirmojo etapo įkrovos įkroviklio“(FSBL) projektą ir jame yra visos instrukcijos, kurių jūsų plokštei reikės norint paleisti projekto failus (bitų srautą ir OS).

    1. Pasirinkite: Failas-> Naujas-> Taikymo projektas ir turėtų pasirodyti toks langas.
    2. Pavadinkite tai, ką norite (pvz., „FSBL“)
    3. Įsitikinkite, kad aparatūros platforma yra ta, su kuria dirbate
    4. Paspauskite kitą (nespauskite „Baigti“)
    5. Pasirinkite „Zynq FSBL“šabloną
    6. Spustelėkite baigti.
  3. Kai kūrimo procesas bus baigtas, žinosite, ar viskas veikė, jei „Project Explorer“lange pamatysite šiuos du naujus aplankus.
  4. Sukurkite įkrovos vaizdą Dabar turėsite sukurti įkrovos vaizdą.

    1. Dešiniuoju pelės mygtuku spustelėkite savo projekto aplanką (šiuo atveju mano pavadinimas yra „RTOSDemo“)
    2. Išskleidžiamajame meniu spustelėkite „Sukurti įkrovos vaizdą“
    3. Jei viskas yra susieta teisingai, projektas žinos, kokių failų jam reikia, ir šis langas atrodys taip, kaip matote žemiau (svarbiausia, kad skyriuje „Įkrovos vaizdas“turite 3 skaidinius, įkrovos įkėlimo programą, bitų failą ir jūsų projektų.elf failą)).

      Jei taip nėra, jūsų projekto susiejime gali būti kažkas negerai. Įsitikinkite, kad projekto aplankai yra susieti su atitinkamais BSP

    4. Spustelėkite mygtuką „Sukurti vaizdą“
  5. Paskutinis žingsnis, kurį reikia atlikti programinėje įrangoje, yra dabar jau sukurto vaizdo perkėlimas į lentos atmintį

    1. Iš pagrindinės SDK įrankių juostos pasirinkite „Xilinx Tools-> Program Flash Flash“
    2. Įsitikinkite, kad pasirinkta tinkama aparatinės įrangos platforma ir ar vaizdo failo kelias teisingai nukreiptas į. BIN failą, sukurtą atlikus ankstesnį veiksmą.
    3. Iš „Flash“tipo pasirinkite „qspi single“
    4. Pažymėkite „Tikrinti po blykstės“, kad užtikrintumėte vientisumą, tačiau to nereikia
  6. Lentos konfigūravimas Galiausiai turite įsitikinti, kad lentų programavimo režimo trumpiklis (JP5) yra teisingai nustatytas paleisti iš „qspi“(kuriame yra ką tik mirgėjęs), kai paleidžiamas „BootROM“.
  7. Dabar tiesiog įjunkite įrenginį ir įjunkite ir įsitikinkite, kad „Logic Configuration Done LED“(LED 10) dega žalia spalva.

11 žingsnis: padarykite Ernie mielą

  1. Kailiniai
  2. Daug kailių
  3. Didelės akys!
  4. … skrybėlę

Rekomenduojamas: