Mündəricat:

Ernie necə edilir: 11 addım
Ernie necə edilir: 11 addım

Video: Ernie necə edilir: 11 addım

Video: Ernie necə edilir: 11 addım
Video: Həcc etməyi cəmi 15 dəqiqədə öyrənin! Addım-addım Həcc təlimi | tövbəzamanı ibadət 2024, Noyabr
Anonim
Ernie necə hazırlanır
Ernie necə hazırlanır

Bu, Zybo lövhəsi istifadə edərək robotu izləyən avtonom səs Ernie -ni necə quracağınıza dair bir dərslikdir. Vivadoda bir layihə yaratmaq, FPGA-da PWM kimi servo motor sürücüləri yaratmaq, iki səs sensoru olan interfeys, IP-nin gəliş vaxt fərqi yaratmaq, freeRTOS istifadə etmək və zibonun batareya paketindən çıxarılması. Bu, Cal Poly SLO -da Real Zaman Əməliyyat Sistemləri sinfi (CPE 439) üçün son layihəmiz idi.

Avadanlıqların siyahısı:

  • 1 - ZYBO Zynq 7000 İnkişaf Lövhəsi
  • 2 - Parallax Davamlı Dönmə Servo
  • 2 - Səs Sensoru (SparkFun Səs Detektoru)
  • 1 - 5v Lityum İon USB batareya paketi (lövhə üçün)
  • 4 - AA batareyaları (servolar üçün)
  • 1 - AA batareya paketi (4 batareya yuvası ilə)
  • 1 - Mikro USB kabeli
  • 1 - Çörək lövhəsi
  • çox - Kişidən Kişi Telinə qədər
  • 1 - Servo şassi

Proqram tələbləri:

  • Xilinx Vivado Design Suite 2016.2
  • Digilent Adept 2.16.1

Addım 1: Vivadoda Ernie üçün bir layihə qurun

Vivadoda Ernie üçün bir layihə qurmaq
Vivadoda Ernie üçün bir layihə qurmaq
Vivadoda Ernie üçün bir layihə qurmaq
Vivadoda Ernie üçün bir layihə qurmaq
Vivadoda Ernie üçün bir layihə qurmaq
Vivadoda Ernie üçün bir layihə qurmaq
  1. Bir sehrbaz açılacaq
  2. Sonrakı düyməsini basın
  3. Növbəti adı layihəyə verin

    1. Heç vaxt boşluq olan bir layihə adı və ya kataloq yolu istifadə etməyin !!!!!
    2. Bu RTL layihəsi olacaq.
  4. Mənbələri dəqiqləşdirmək istəmirik
  5. Sonrakı düyməsini basaraq hissə səhifəsinə daxil oluruq. ZYNQ XC7Z010-1CLG400C istifadə edirik.

    1. Vivadoda əvvəlcədən təyin edilmiş lövhələrdən biri kimi siyahıya alınmış Zybo yoxdur. Seçin: "hissələr" sonra xc7z010clg400-1 axtarın.
    2. Səhv bir səhv seçsəniz, asanlıqla çipləri dəyişə bilərsiniz: Alətlər -> Layihə Ayarları -> Ümumi və "Layihə Cihazı" nın sağındakı nöqtələri vurun.
  6. Blok Dizaynı Yarat düyməsini basın.

    Hələlik dizayn_1 adlandırın

  7. IP əlavə et, üzərinə vurun yazan yaşıl bir çubuq görəcəksiniz.
  8. Zynq axtarın.

    1. ZYNQ7 İşləmə Sistemini iki dəfə vurun,
    2. Bu blok blok dizaynımızda görünəcək.
  9. Run Block Automation yazan yaşıl bir çubuq görəcəksiniz, üzərinə vurun.
  10. Aşağıdakı zybo_zynq_def.xml yükləyin.
  11. Vivadoda "XPS Ayarlarını İdxal et" düyməsini basın və "zybo_zynq_def.xml" seçin

    Bu, Vivado blok konfiqurasiyasını Zybo lövhəsinin bütün daxili qurğuları və pin tapşırıqları ilə əvvəlcədən doldurur

  12. ZYNQ blokuna iki dəfə vurun.

    1. MIO Konfiqurasiyası

      1. Taymer 0 -ı aktiv edin (Tətbiq Prosessor Birimi altında - img 1)
      2. Watchdogu aktiv edin (Application Processor Unit-img 1 altında)
      3. GPIO-> GPIO MIO -nu aktivləşdirin (Tətbiq Prosessor Birimi altında - img 2)
      4. GPIO-> ENET Sıfırlamasını aktivləşdirin (I/O Periferikləri altında- img 2)
    2. Saat Konfiqurasiyası

      FCLK0 -nu deaktiv edin (PL Fabric Clocks altında - img 3)

  13. Ok düyməsini basın.
  14. İndi "Blok Avtomatlaşdırmasını Çalışdırın".

    Siqnallarla bağlı bəzi suallar olacaq, tamam deyin

  15. "HDL Sarıcı Yarat" düyməsini basın.

    İstifadəçi düzəlişlərinə icazə vermək üçün yaradılan sarmağı kopyalamaq istəyəcəyik

  16. OK düyməsini basın.

Addım 2: Vivadoda Ernie PWM yaratmaq

Vivadoda Ernie PWM yaradılması
Vivadoda Ernie PWM yaradılması
Vivadoda Ernie PWM -in yaradılması
Vivadoda Ernie PWM -in yaradılması

Bu addım, AXI kitabxanası vasitəsilə göndərilən girişləri olan bir PWM IP yaradacaq.

  1. Arxa planı sağ tıklayaraq və "IP əlavə et" düyməsini basaraq AXI GPIO bloku yaradın.

    Axtarış çubuğuna "AXI_GPIO" yazın və bu paketi seçin

  2. Yeni axi_gpio_0 blokunu iki dəfə tıklayaraq IP-ni yenidən fərdiləşdirin

    1. GPIO altında, GPIO genişliyini 2 olaraq təyin edin. Bu bitlər hər PWM modulu nümunəsini idarə etmək üçün PWM_ON siqnalı olacaq.
    2. "ikili kanalı aktiv et" düyməsini basın
    3. GPIO 2 altında GPIO genişliyini 2 olaraq təyin edin. Bu bitlər hər PWM modulu nümunəsinin istiqamətini təyin etmək üçün PWM_FW siqnalı olacaq.
  3. GPIO etiketli axi_gpio_0 çıxış limanına sağ vurun və "Xarici olun" seçin

    1. GPIO etiketli yeni çıxışı vurun və sol alət çubuğundakı "xüsusiyyətlər" sekmesine gedin və adını PWM_ON olaraq dəyişdirin.
    2. GPIO2 etiketli yeni çıxışı vurun və sol alət çubuğundakı "xüsusiyyətlər" sekmesine gedin və adını PWM_FW olaraq dəyişdirin.
  4. Blok diaqramının üstündəki yaşıl bannerdə Connection Automation -ı Çalışdır seçin.

    Limanları əl ilə bağlasanız, AXI ünvanları konfiqurasiya olunmaya bilər, bu da sonradan ünsiyyət problemlərinə səbəb ola bilər

  5. Flow Navigator Bölməsində yeni bir xüsusi IP bloku yaratmaq üçün layihə meneceri -> Mənbə əlavə et seçin

    1. "Dizayn mənbələri əlavə et və ya yarat" seçin və sonra vurun
    2. "fayl yaratmaq" düyməsini basın, fayl növünü "SystemVerilog" olaraq dəyişdirin və fayl adı sahəsinə "pwm" yazın, sonra OK düyməsini basın.
    3. Finish düyməsini basın
    4. OK düyməsini basaraq Modulu Tanımla pəncərəsinə məhəl qoymayın (bunları sonra yazacağıq)

      əmin olduğunuzu soruşarsa, Bəli düyməsini basın

  6. Mənbələr sekmesinde, "Design Sources/design_1_wrapper" də yerləşən pwm.sv faylını iki dəfə vurun.

    Aşağıdakı əlavə pwm.txt faylından bütün SystemVerilog kodunu kopyalayın/yapışdırın

Addım 3: Vivadoda Ernie TDOA yaratmaq

Vivadoda Ernie TDOA yaradılması
Vivadoda Ernie TDOA yaradılması
Vivadoda Ernie TDOA yaradılması
Vivadoda Ernie TDOA yaradılması

Bu addım, çıxışı AXI kitabxanası vasitəsilə oxuna bilən bir TDOA IP yaradacaq

  1. Arxa planı sağ tıklayaraq və "IP əlavə et" düyməsini basaraq AXI GPIO bloku yaradın.

    Axtarış çubuğuna "AXI_GPIO" yazın və bu paketi seçin

  2. Yeni axi_gpio_1 blokunu iki dəfə tıklayaraq IP-ni yenidən fərdiləşdirin

    1. GPIO altında, "Bütün Girişlər" qutusunu yoxlayın və GPIO genişliyini 32 olaraq təyin edin. Bu avtobus iki sensor arasındakı gəliş vaxt fərqi olacaq.
    2. axi_gpio_1 blokunun daxilində, gpio_io_i [31: 0] ortaya çıxarmaq üçün GPIO portunun yanındakı + işarəsini vurun.
  3. Gpio_io_i [31: 0] etiketli axi_gpio_1 çıxış limanına sağ vurun və "Xarici olun" seçin

    Gpio_io_i [31: 0] etiketli yeni girişi vurun və sol alət çubuğundakı "xüsusiyyətlər" sekmesine gedin və adını TDOA_val olaraq dəyişdirin

  4. Blok diaqramının üstündəki yaşıl bannerdə Connection Automation -ı Çalışdır seçin.

    Limanları əl ilə bağlasanız, AXI ünvanları konfiqurasiya olunmaya bilər, bu da sonradan ünsiyyət problemlərinə səbəb olur

  5. Flow Navigator Bölməsində yeni bir xüsusi IP bloku yaratmaq üçün layihə meneceri -> Mənbə əlavə et seçin

    1. "Dizayn mənbələri əlavə et və ya yarat" seçin və sonra vurun
    2. "fayl yaratmaq" düyməsini basın, fayl növünü "SystemVerilog" olaraq dəyişdirin və fayl adı sahəsinə "tdoa" yazın, sonra OK düyməsini basın.
    3. Finish düyməsini basın
    4. OK düyməsini basaraq Modulu Tanımla pəncərəsinə məhəl qoymayın (bunları daha sonra yazacağıq)

      əmin olduğunuzu soruşarsa, Bəli düyməsini basın

  6. Mənbələr sekmesinde tdoa.sv faylını iki dəfə vurun ("Dizayn Mənbələri/design_1_wrapper" də yerləşir)

    Aşağıdakı tdoa.txt faylından bütün SystemVerilog kodunu kopyalayın/yapışdırın

Addım 4: Ernie'nin Sarılması və İxrac edilməsi

Ernie'nin Qablaşdırılması və İxrac edilməsi
Ernie'nin Qablaşdırılması və İxrac edilməsi
  1. Blok diaqramının əlavə edilmiş ekran görüntüsünə bənzədiyini yoxlayın
  2. Mənbələr sekmesinde, design_1.bd üzərinə sağ vurun və "HDL Sarıcı Yarat …" seçin.

    1. "İstifadəçi redaktələrinə icazə vermək üçün yaradılan çıxışı kopyalayın" seçin və sonra "OK" düyməsini basın.
    2. Kodu aşağıda göstərilən design_1_wrapper.txt -dən kopyalayın və yaradılan design_1_wrapper.v kodunun yerinə yapışdırın
    3. design_1_wrapper.v saxla
  3. Mənbələr sekmesinde ZYBO_Master.xdc faylını Məhdudiyyətlər/constrs1 altında iki dəfə vurun.

    1. Kodu aşağıda göstərilən ZYBO_Master.txt -dən kopyalayın və mövcud ZYBO_Master.xdc kodunun yerinə yapışdırın.
    2. Aşağıdakı giriş/çıxış pinlərinə diqqət yetirin:

      1. L15: Sol motor üçün PWM siqnalı (Zybo -da Pmod JA2)
      2. L14: Sağ motor üçün PWM siqnalı (Zybo -da Pmod JA8)
      3. V12: səs sensoru 1 -dən qapı girişi (Zybo -da Pmod JE1)
      4. K16: səs sensoru 2 -dən qapı girişi (Zybo -da Pmod JE2)
  4. Flow Navigator Bölməsində Proqram və Debug altında "Bitstream Yarat" düyməsini basın

    dərhal edildiyini düşünürsənsə, yəqin ki, deyil. Ciddi, çay hazırlayın

  5. Fayl-> İxrac et-> Avadanlıq Yarat düyməsini basın

    "Bitstream daxil et" i yoxlayın və OK düyməsini basın

  6. Fayl-> SDK-nı işə salın

Addım 5: Ernie qurmaq

Ernie binası
Ernie binası
Ernie binası
Ernie binası
  1. Servoları servo şassiyə bağlayın.
  2. Servo məlumat cədvəlini izləyərək aşağıdakıları edin:

    1. servoların zəminini Zybo'nun JA Pmodundakı şaft pinlərinə bağlayın (əlavə edilmiş pinout şəklinə baxın)
    2. servoların güc pinini AA batareya paketinə qoşun

      Tapdıq ki, servolar Zybo Vdd -ə qoşulduqda lövhə çox cərəyan çəkir və bu da lövhənin davamlı sıfırlanmasına səbəb olur

    3. giriş siqnal pinlərini Zybo'nun uyğun çıxış pinlərinə qoşun (solda: JA2, sağda: JA8)
  3. səs sensorlarını şassinin önünə, önə baxaraq mümkün qədər bir -birinə yaxın tutun
  4. səs sensorlarını birləşdirmək üçün səs sensorunun qoşulma bələdçisindən istifadə edin

    1. Zybo'nun JE Pmod üzərindəki hər bir səs sensörünün torpağını və Vdd sancaqlarını yerə bağlayın (əlavə edilmiş pinout şəklinə baxın)
    2. sol səs sensorunun Gate pinini JE1 -ə bağlayın
    3. doğru səs sensorunun Gate pinini JE2 -ə bağlayın

Addım 6: Ernie'nin İlk BSP

Ernie'nin ilk BSP
Ernie'nin ilk BSP
Ernie'nin ilk BSP
Ernie'nin ilk BSP
  1. Yeni yaratdığımız platformanı tamamlamaq üçün BSP yaradın.

    Bunu Fayl -> Yeni -> Kart Dəstəyi Paketi vasitəsi ilə əldə edə bilərsiniz

  2. BSP yaratmağınıza kömək edəcək bir sehrbaz açılacaq.

    1. Bu BSP -ni yeni yaratdığımız Platformamızla bağlamaq istəyirik, buna görə də
    2. Avadanlıq Platforması yeni yaratdığımıza uyğun olmalıdır (bax: img 1)
    3. Bizim CPU _0 CPU olacaq.
    4. Bitir düyməsini basın
    5. Açılan pəncərədə bsp ilə daxil olmaq üçün lwip141 işarəsini yoxladığınızdan əmin olun (img 2 -ə baxın)

Addım 7: FreeRTOS'dan Ernie

  1. Sourceforge -dən ən son FreeRTOS versiyasını yükləyin.

    Yükləmə icra edilə bilərsə, FreeRTOS fayllarını layihə qovluğuna çıxarmaq üçün onu işə salın

  2. SDK -nı açıq saxlayın və Fayl -> İdxal et düyməsini basın.
  3. Ümumi-> Mövcud bir İş Sahəsindən vurmaq istəyirik və sonra FreeRTOS yüklədiyimiz yerə getmək istəyəcəyik.
  4. Demomuz FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702 -də yerləşəcək. Bu qovluğu seçərkən üç layihənin açıldığını görməliyik (kodumuz (OS), BSP və HW Platforması).

    YALNIZ RTOSDemo'yu mövcud iş sahənizə daxil edin

  5. Bütün "mavi" qovluq layihələrində istinad edilən BSP dəyişdirilir

    1. Sağ vurun və "İstinad edilən BSP -ni dəyişdirin" seçin.
    2. Zybo üçün yeni yaratdığınız BSP seçin
    3. Xilinx -in SDK Mavi qovluqlarında Kod Düzəlişi əsl kod layihələridir.

Addım 8: Ernie'nin C Kodunu İdxal edin

  1. RTOSDemo/src qovluğunda, buraya əlavə edilmiş main.c faylı ilə mövcud main.c -nin üzərinə yazın.
  2. Main_sound.c faylını RTOSDemo/src qovluğuna kopyalayın.

Addım 9: Ernie ayıklama

  1. Çalış -> Debug Konfiqurasiyalarını seçin
  2. Sol bölmədə yeni bir Sistem Hata Ayıklayıcı işə salın
  3. Hədəf Quraşdırma sekmesinde,

    "Bütün sistemi sıfırla" seçin ki, həm ps7_init həm də seçilsin

  4. İndi Tətbiq sekmesini seçin.

    1. "Proqramı yüklə" seçin
    2. Cortexa9_0 nüvəsini "proqram girişində dur" olaraq təyin edin
    3. Tətbiq et və Debug düyməsini basın.
  5. Ayıklama prosesində heç bir səhv olmadığını yoxlayın
  6. Robotu yaxından izləyərək, proqram heç bir kəsmə nöqtəsinə çatmadan işləyənə qədər Davam et düyməsini basın
  7. Robot indi dönüb yüksək səslərə doğru hərəkət etməlidir. Vay!

Addım 10: Ernie'nin muxtar olması

  1. Layihəniz hazır olduqdan sonra (hata ayıklayıcı vasitəsilə heç bir problem olmadan işləyə bilərsiniz) onu lövhənizdəki flash yaddaşa yükləməyə hazırsınız.
  2. "Birinci mərhələ önyükleyici yükləyicisi" (FSBL) layihəsi yaradın və layihə fayllarınızı (bit axını və OS) işə salmaq üçün lövhənizin ehtiyac duyduğu bütün təlimatları ehtiva edin.

    1. Seçin: Fayl-> Yeni-> Tətbiq Layihəsi və aşağıdakı pəncərə görünməlidir.
    2. İstədiyinizi adlandırın (yəni "FSBL")
    3. Birlikdə işlədiyiniz platforma olduğundan əmin olun
    4. Sonrakı düyməsini basın (Finish düyməsini basmayın)
    5. Zynq FSBL şablonunu seçin
    6. Bitir düyməsini basın.
  3. Yaratma prosesi başa çatdıqdan sonra, Project Explorer pəncərəsində aşağıdakı iki yeni qovluğu görsəniz hər şeyin işlədiyini biləcəksiniz.
  4. Önyükləmə Şəkli Yarat İndi Boot şəklini yaratmalısan.

    1. Layihə qovluğuna sağ vurun (bu halda mənimki "RTOSDemo" adlanır)
    2. Açılan menyudan "Önyükləmə şəkli yaradın" düyməsini basın
    3. Hər şey düzgün əlaqələndirildikdə, layihə hansı fayllara ehtiyacı olduğunu biləcək və aşağıda gördüyünüz kimi aşağıdakı pəncərə görünəcək (açar, Boot image bölməsində, önyükleyiciniz, bit faylınız və layihələriniz.elf faylının altında 3 hissəyə malik olduğunuzdur.).

      Əgər belə deyilsə, layihənizi əlaqələndirməkdə səhv bir şey ola bilər. Layihə qovluqlarının müvafiq BSP -lərinə bağlı olduğundan əmin olun

    4. "Şəkil Yarat" düyməsini basın
  5. Proqram təminatında son addım, əvvəllər yaratdığınız görüntünü lövhənin yaddaşına yandırmaqdır

    1. SDK-nın əsas alətlər çubuğundan Xilinx Tools-> Proqram Flash Yaddaşı seçin
    2. Doğru hardware platformasının seçildiyindən və şəkil faylının yolunun əvvəlki addımda yaradılmış. BIN faylına doğru işarə etdiyindən əmin olun.
    3. Flash növündən "qspi single" seçin
    4. Bütövlüyünü təmin etmək üçün "Flaşdan sonra yoxla" işarəsini qoyun, lakin buna ehtiyac yoxdur
  6. Lövhənizi Konfiqurasiya edin Nəhayət, BootROM işləyərkən lövhələrin proqramlaşdırma rejimi atlayıcısının qspi -dən (yalnız çırpdığınızı ehtiva edən) yükləmək üçün düzgün seçilmiş olduğundan əmin olmalısınız.
  7. İndi cihazı sadəcə işə salın və "Məntiq Konfiqurasiyası Tamamlandı LED" inin (LED 10) yaşıl yanmasını təmin edin.

Addım 11: Ernie Cute etmək

  1. Xəz
  2. Çox Xəz
  3. Böyük gözlər!
  4. … üst şapka

Tövsiyə: