Mündəricat:
- Addım 1: Vivadoda Ernie üçün bir layihə qurun
- Addım 2: Vivadoda Ernie PWM yaratmaq
- Addım 3: Vivadoda Ernie TDOA yaratmaq
- Addım 4: Ernie'nin Sarılması və İxrac edilməsi
- Addım 5: Ernie qurmaq
- Addım 6: Ernie'nin İlk BSP
- Addım 7: FreeRTOS'dan Ernie
- Addım 8: Ernie'nin C Kodunu İdxal edin
- Addım 9: Ernie ayıklama
- Addım 10: Ernie'nin muxtar olması
- Addım 11: Ernie Cute etmək
Video: Ernie necə edilir: 11 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
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
- Bir sehrbaz açılacaq
- Sonrakı düyməsini basın
-
Növbəti adı layihəyə verin
- Heç vaxt boşluq olan bir layihə adı və ya kataloq yolu istifadə etməyin !!!!!
- Bu RTL layihəsi olacaq.
- Mənbələri dəqiqləşdirmək istəmirik
-
Sonrakı düyməsini basaraq hissə səhifəsinə daxil oluruq. ZYNQ XC7Z010-1CLG400C istifadə edirik.
- 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.
- 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.
-
Blok Dizaynı Yarat düyməsini basın.
Hələlik dizayn_1 adlandırın
- IP əlavə et, üzərinə vurun yazan yaşıl bir çubuq görəcəksiniz.
-
Zynq axtarın.
- ZYNQ7 İşləmə Sistemini iki dəfə vurun,
- Bu blok blok dizaynımızda görünəcək.
- Run Block Automation yazan yaşıl bir çubuq görəcəksiniz, üzərinə vurun.
- Aşağıdakı zybo_zynq_def.xml yükləyin.
-
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
-
ZYNQ blokuna iki dəfə vurun.
-
MIO Konfiqurasiyası
- Taymer 0 -ı aktiv edin (Tətbiq Prosessor Birimi altında - img 1)
- Watchdogu aktiv edin (Application Processor Unit-img 1 altında)
- GPIO-> GPIO MIO -nu aktivləşdirin (Tətbiq Prosessor Birimi altında - img 2)
- GPIO-> ENET Sıfırlamasını aktivləşdirin (I/O Periferikləri altında- img 2)
-
Saat Konfiqurasiyası
FCLK0 -nu deaktiv edin (PL Fabric Clocks altında - img 3)
-
- Ok düyməsini basın.
-
İndi "Blok Avtomatlaşdırmasını Çalışdırın".
Siqnallarla bağlı bəzi suallar olacaq, tamam deyin
-
"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
- OK düyməsini basın.
Addım 2: Vivadoda Ernie PWM yaratmaq
Bu addım, AXI kitabxanası vasitəsilə göndərilən girişləri olan bir PWM IP yaradacaq.
-
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
-
Yeni axi_gpio_0 blokunu iki dəfə tıklayaraq IP-ni yenidən fərdiləşdirin
- 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.
- "ikili kanalı aktiv et" düyməsini basın
- 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.
-
GPIO etiketli axi_gpio_0 çıxış limanına sağ vurun və "Xarici olun" seçin
- 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.
- 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.
-
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
-
Flow Navigator Bölməsində yeni bir xüsusi IP bloku yaratmaq üçün layihə meneceri -> Mənbə əlavə et seçin
- "Dizayn mənbələri əlavə et və ya yarat" seçin və sonra vurun
- "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.
- Finish düyməsini basın
-
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
-
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
Bu addım, çıxışı AXI kitabxanası vasitəsilə oxuna bilən bir TDOA IP yaradacaq
-
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
-
Yeni axi_gpio_1 blokunu iki dəfə tıklayaraq IP-ni yenidən fərdiləşdirin
- 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.
- axi_gpio_1 blokunun daxilində, gpio_io_i [31: 0] ortaya çıxarmaq üçün GPIO portunun yanındakı + işarəsini vurun.
-
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
-
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
-
Flow Navigator Bölməsində yeni bir xüsusi IP bloku yaratmaq üçün layihə meneceri -> Mənbə əlavə et seçin
- "Dizayn mənbələri əlavə et və ya yarat" seçin və sonra vurun
- "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.
- Finish düyməsini basın
-
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
-
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
- Blok diaqramının əlavə edilmiş ekran görüntüsünə bənzədiyini yoxlayın
-
Mənbələr sekmesinde, design_1.bd üzərinə sağ vurun və "HDL Sarıcı Yarat …" seçin.
- "İstifadəçi redaktələrinə icazə vermək üçün yaradılan çıxışı kopyalayın" seçin və sonra "OK" düyməsini basın.
- 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
- design_1_wrapper.v saxla
-
Mənbələr sekmesinde ZYBO_Master.xdc faylını Məhdudiyyətlər/constrs1 altında iki dəfə vurun.
- 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.
-
Aşağıdakı giriş/çıxış pinlərinə diqqət yetirin:
- L15: Sol motor üçün PWM siqnalı (Zybo -da Pmod JA2)
- L14: Sağ motor üçün PWM siqnalı (Zybo -da Pmod JA8)
- V12: səs sensoru 1 -dən qapı girişi (Zybo -da Pmod JE1)
- K16: səs sensoru 2 -dən qapı girişi (Zybo -da Pmod JE2)
-
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
-
Fayl-> İxrac et-> Avadanlıq Yarat düyməsini basın
"Bitstream daxil et" i yoxlayın və OK düyməsini basın
- Fayl-> SDK-nı işə salın
Addım 5: Ernie qurmaq
- Servoları servo şassiyə bağlayın.
-
Servo məlumat cədvəlini izləyərək aşağıdakıları edin:
- servoların zəminini Zybo'nun JA Pmodundakı şaft pinlərinə bağlayın (əlavə edilmiş pinout şəklinə baxın)
-
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
- giriş siqnal pinlərini Zybo'nun uyğun çıxış pinlərinə qoşun (solda: JA2, sağda: JA8)
- səs sensorlarını şassinin önünə, önə baxaraq mümkün qədər bir -birinə yaxın tutun
-
səs sensorlarını birləşdirmək üçün səs sensorunun qoşulma bələdçisindən istifadə edin
- 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)
- sol səs sensorunun Gate pinini JE1 -ə bağlayın
- doğru səs sensorunun Gate pinini JE2 -ə bağlayın
Addım 6: Ernie'nin İlk BSP
-
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
-
BSP yaratmağınıza kömək edəcək bir sehrbaz açılacaq.
- Bu BSP -ni yeni yaratdığımız Platformamızla bağlamaq istəyirik, buna görə də
- Avadanlıq Platforması yeni yaratdığımıza uyğun olmalıdır (bax: img 1)
- Bizim CPU _0 CPU olacaq.
- Bitir düyməsini basın
- 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
-
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
- SDK -nı açıq saxlayın və Fayl -> İdxal et düyməsini basın.
- Ümumi-> Mövcud bir İş Sahəsindən vurmaq istəyirik və sonra FreeRTOS yüklədiyimiz yerə getmək istəyəcəyik.
-
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
-
Bütün "mavi" qovluq layihələrində istinad edilən BSP dəyişdirilir
- Sağ vurun və "İstinad edilən BSP -ni dəyişdirin" seçin.
- Zybo üçün yeni yaratdığınız BSP seçin
- 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
- RTOSDemo/src qovluğunda, buraya əlavə edilmiş main.c faylı ilə mövcud main.c -nin üzərinə yazın.
- Main_sound.c faylını RTOSDemo/src qovluğuna kopyalayın.
Addım 9: Ernie ayıklama
- Çalış -> Debug Konfiqurasiyalarını seçin
- Sol bölmədə yeni bir Sistem Hata Ayıklayıcı işə salın
-
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
-
İndi Tətbiq sekmesini seçin.
- "Proqramı yüklə" seçin
- Cortexa9_0 nüvəsini "proqram girişində dur" olaraq təyin edin
- Tətbiq et və Debug düyməsini basın.
- Ayıklama prosesində heç bir səhv olmadığını yoxlayın
- 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
- 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ı
- 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.
-
"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.
- Seçin: Fayl-> Yeni-> Tətbiq Layihəsi və aşağıdakı pəncərə görünməlidir.
- İstədiyinizi adlandırın (yəni "FSBL")
- Birlikdə işlədiyiniz platforma olduğundan əmin olun
- Sonrakı düyməsini basın (Finish düyməsini basmayın)
- Zynq FSBL şablonunu seçin
- Bitir düyməsini basın.
- 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.
-
Önyükləmə Şəkli Yarat İndi Boot şəklini yaratmalısan.
- Layihə qovluğuna sağ vurun (bu halda mənimki "RTOSDemo" adlanır)
- Açılan menyudan "Önyükləmə şəkli yaradın" düyməsini basın
-
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
- "Şəkil Yarat" düyməsini basın
-
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
- SDK-nın əsas alətlər çubuğundan Xilinx Tools-> Proqram Flash Yaddaşı seçin
- 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.
- Flash növündən "qspi single" seçin
- Bütövlüyünü təmin etmək üçün "Flaşdan sonra yoxla" işarəsini qoyun, lakin buna ehtiyac yoxdur
- 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.
- İ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
- Xəz
- Çox Xəz
- Böyük gözlər!
- … üst şapka
Tövsiyə:
Sadə bir Nintendo LABO Hədəf Təcrübəsi Necə Edilir: 13 Addım
Sadə bir Nintendo LABO Hədəf Təcrübəsi Necə Edilir: Bacımla bu yaxınlarda Nintendo Switch aldıq. Əlbəttə ki, onunla birlikdə gedəcəyimiz bəzi oyunlar var. Və onlardan biri Nintendo LABO Variety Kit idi. Sonda Toy-Con Qarajına təsadüf etdim. Bəzi şeyləri sınadım və bu zaman
Arduino 1.3 İnç OLED Ekranı SH1106 Necə İstifadə Edilir: 7 Addım
Arduino 1.3 Inch OLED Display SH1106 Necə İstifadə Edilir: Bu təlimatda 1.3 Inch OLED Display SH1106 Arduino və Visuino proqramlarından istifadə etməyi öyrənəcəyik
Linux Boot Sürücüsünü Necə Yaratmaq olar (və Necə İstifadə Edilir): 10 Addım
Linux Boot Sürücüsünü Necə Yaratmaq olar (və Necə İstifadə Edilir): Bu Linux, xüsusən də Ubuntu ilə necə başlayacağınıza dair sadə bir girişdir
Mac Terminalından Necə İstifadə Edilir və Əsas Fonksiyonlardan Necə İstifadə Edilir: 4 Addım
Mac Terminalını necə istifadə etməli və əsas funksiyaları necə istifadə etməli: MAC Terminalını necə açacağınızı sizə göstərəcəyik. Terminalda ifconfig, qovluqların dəyişdirilməsi, fayllara daxil olmaq və arp kimi bir neçə xüsusiyyət göstərəcəyik. Ifconfig, IP ünvanınızı və MAC reklamınızı yoxlamağa imkan verəcək
Sevimli və Güclü Taxta Robot Qoluna Birləşmək üçün Bir neçə Taxta Necə İstifadə Edilir: 10 Addım
Sevimli və Güclü Taxta Robot Qoluna Birləşmək üçün Bir neçə Taxta Parçadan Necə İstifadə Edilir: Robot qolunun adı WoodenArmdır. Çox yaraşıqlı görünür! WoodenArm haqqında daha ətraflı məlumat almaq istəyirsinizsə, www.lewansoul.com saytına müraciət edin. İndi WoodenArm haqqında bir giriş edə bilərik, davam edək