Ernie Nasıl Yapılır: 11 Adım
Ernie Nasıl Yapılır: 11 Adım
Anonim
Ernie Nasıl Yapılır?
Ernie Nasıl Yapılır?

Bu, bir Zybo Board kullanarak otonom ses takip robotunuz Ernie'yi nasıl oluşturacağınıza dair bir eğitimdir. Şunları kapsayacaktır: Vivado'da bir proje oluşturma, FPGA'da PWM benzeri servo motor sürücüleri oluşturma, iki ses sensörüyle arabirim oluşturma, varış IP'si zaman farkı oluşturma, freeRTOS kullanma ve zybo'yu pil paketiyle çalıştırma. Bu, Cal Poly SLO'daki Gerçek Zamanlı İşletim Sistemleri sınıfı (CPE 439) için son projemizdi.

Ekipman listesi:

  • 1 - ZYBO Zynq 7000 Geliştirme Kartı
  • 2 - Paralaks Sürekli Dönme Servosu
  • 2 - Ses Sensörü (SparkFun Ses Dedektörü)
  • 1 - 5v Lityum İyon USB pil takımı (kart için)
  • 4 - AA piller (servolar için)
  • 1 - AA pil takımı (w/4 pil yuvası)
  • 1 - Mikro USB kablosu
  • 1 - Breadboard
  • çok - Erkek - Erkek Teller
  • 1 - Servo şasi

Yazılım gereksinimleri:

  • Xilinx Vivado Tasarım Paketi 2016.2
  • Digilent Usta 2.16.1

Adım 1: Ernie için Vivado'da Proje Oluşturma

Ernie için Vivado'da Proje Oluşturma
Ernie için Vivado'da Proje Oluşturma
Ernie için Vivado'da Proje Oluşturma
Ernie için Vivado'da Proje Oluşturma
Ernie için Vivado'da Proje Oluşturma
Ernie için Vivado'da Proje Oluşturma
  1. Bir sihirbaz açılır
  2. Sonrakine tıkla
  3. Projeye bir sonraki ad verin

    1. Asla içinde boşluk olan bir proje adı veya dizin yolu kullanmayın!!!!!
    2. Bu bir RTL projesi olacak.
  4. Kaynak belirtmek istemiyoruz
  5. Next diyerek Part sayfasına geliyoruz. Bir ZYNQ XC7Z010-1CLG400C kullanıyoruz.

    1. Vivado, önceden tanımlanmış panolarından biri olarak listelenen Zybo'ya sahip değil. Seçin: "parçalar" ve ardından xc7z010clg400-1'i arayın.
    2. Yanlışlıkla yanlış parçayı seçerseniz, çipleri kolayca değiştirebilirsiniz: Araçlar -> Proje Ayarları -> Genel ve “Proje Cihazı”nın sağındaki noktalara tıklayın.
  6. Blok Tasarımı Oluştur'a tıklayın.

    Şimdilik design_1 olarak adlandırın

  7. IP Ekle yazan yeşil bir çubuk göreceksiniz, tıklayın.
  8. Zynq'i arayın.

    1. ZYNQ7 İşleme Sistemine çift tıklayın,
    2. Bu blok, blok tasarımımızda görünecektir.
  9. Run Block Automation yazan yeşil bir çubuk göreceksiniz, tıklayın.
  10. Aşağıdaki zybo_zynq_def.xml dosyasını indirin.
  11. Vivado'da, "XPS Ayarlarını İçe Aktar"a tıklayın ve "zybo_zynq_def.xml" öğesini seçin.

    Bu, Vivado blok yapılandırmasını Zybo kartının tüm yerleşik çevre birimleri ve pin atamalarıyla önceden doldurur

  12. ZYNQ bloğuna çift tıklayın.

    1. MIO Yapılandırması

      1. Zamanlayıcı 0'ı Etkinleştir (Uygulama İşlemci Birimi altında - img 1)
      2. Watchdog'u Etkinleştir (Uygulama İşlemci Birimi - img 1 altında)
      3. GPIO->GPIO MIO'yu etkinleştirin (Uygulama İşlemci Birimi altında - img 2)
      4. GPIO->ENET Sıfırlamayı Etkinleştir (G/Ç Çevre Birimleri- img 2 altında)
    2. Saat Yapılandırması

      FCLK0'ı devre dışı bırakın (PL Fabric Clocks altında - img 3)

  13. Tamam'ı tıklayın.
  14. Şimdi “Blok Otomasyonunu Çalıştırın”.

    Sinyallerle ilgili bazı sorular olacak, tamam deyin

  15. “HDL Sarıcı Oluştur”a tıklayın.

    Kullanıcı düzenlemelerine izin vermek için oluşturulan sarmalayıcıyı kopyalamak isteyeceğiz

  16. Tamam'ı tıklayın.

2. Adım: Vivado'da Ernie'nin PWM'sini Oluşturma

Vivado'da Ernie'nin PWM'sini Oluşturma
Vivado'da Ernie'nin PWM'sini Oluşturma
Vivado'da Ernie'nin PWM'sini Oluşturma
Vivado'da Ernie'nin PWM'sini Oluşturma

Bu adım, AXI kitaplığı aracılığıyla gönderilen girişlerle bir PWM IP üretecektir.

  1. Arka plana sağ tıklayıp "IP ekle"ye tıklayarak AXI GPIO bloğu oluşturun

    arama çubuğuna "AXI_GPIO" yazın ve bu paketi seçin

  2. Yeni axi_gpio_0 bloğuna çift tıklayarak IP'yi yeniden özelleştirin

    1. GPIO altında, GPIO genişliğini 2'ye ayarlayın. Bu bitler, her bir PWM modülü örneğini sürmek için PWM_ON sinyali olacaktır.
    2. "çift kanalı etkinleştir" e tıklayın
    3. GPIO 2 altında, GPIO genişliğini 2'ye ayarlayın. Bu bitler, her bir PWM modülü örneğinin yönünü ayarlamak için PWM_FW sinyali olacaktır.
  3. GPIO etiketli axi_gpio_0 çıkış bağlantı noktasına sağ tıklayın ve "Harici Yap"ı seçin

    1. GPIO etiketli yeni çıktıya tıklayın ve sol araç çubuğundaki "özellikler" sekmesine gidin ve adı PWM_ON olarak değiştirin.
    2. GPIO2 etiketli yeni çıktıya tıklayın ve sol araç çubuğundaki "özellikler" sekmesine gidin ve adı PWM_FW olarak değiştirin.
  4. Blok diyagramın üzerindeki yeşil başlıkta Bağlantı Otomasyonunu Çalıştır'ı seçin.

    Bağlantı noktalarını manuel olarak bağlarsanız, AXI adresleri yapılandırılamayabilir ve bu da daha sonra iletişim sorunlarına yol açabilir

  5. Akış Gezgini Bölmesi'nde, yeni bir özel IP bloğu oluşturmak için proje yöneticisi -> Kaynak Ekle'yi seçin

    1. "Tasarım kaynakları ekle veya oluştur"u seçin ve sonrakine basın
    2. "dosya oluştur"a tıklayın, dosya türünü "SystemVerilog" olarak değiştirin ve dosya adı alanına "pwm" yazın, ardından Tamam'a tıklayın
    3. Bitir'i tıklayın
    4. Tamam'a basarak Modül Tanımla penceresini yok sayın (bunların üzerine daha sonra yazacağız)

      emin olup olmadığınızı sorarsa, Evet'i tıklayın

  6. Kaynaklar sekmesinde, pwm.sv'ye çift tıklayın ("Tasarım Kaynakları/design_1_wrapper" içinde bulunur)

    Aşağıda ekli pwm.txt dosyasından SystemVerilog kodunun tamamını kopyalayın/yapıştırın

3. Adım: Vivado'da Ernie'nin TDOA'sını Oluşturma

Vivado'da Ernie'nin TDOA'sını Oluşturma
Vivado'da Ernie'nin TDOA'sını Oluşturma
Vivado'da Ernie'nin TDOA'sını Oluşturma
Vivado'da Ernie'nin TDOA'sını Oluşturma

Bu adım, çıktısı AXI kitaplığı aracılığıyla okunabilen bir TDOA IP üretecektir.

  1. Arka plana sağ tıklayıp "IP ekle"ye tıklayarak AXI GPIO bloğu oluşturun

    arama çubuğuna "AXI_GPIO" yazın ve bu paketi seçin

  2. Yeni axi_gpio_1 bloğuna çift tıklayarak IP'yi yeniden özelleştirin

    1. GPIO altında, "Tüm Girişler" kutusunu işaretleyin ve GPIO genişliğini 32 olarak ayarlayın. Bu veri yolu, iki sensör arasındaki varış zaman farkı olacaktır.
    2. axi_gpio_1 bloğunun içinde, gpio_io_i[31:0]'ı ortaya çıkarmak için GPIO bağlantı noktasının yanındaki + işaretini tıklayın.
  3. gpio_io_i[31:0] etiketli axi_gpio_1 çıkış bağlantı noktasına sağ tıklayın ve "Harici Yap"ı seçin

    gpio_io_i[31:0] etiketli yeni girdiye tıklayın ve sol araç çubuğundaki "özellikler" sekmesine gidin ve adı TDOA_val olarak değiştirin

  4. Blok diyagramın üzerindeki yeşil başlıkta Bağlantı Otomasyonunu Çalıştır'ı seçin.

    Bağlantı noktalarını manuel olarak bağlarsanız, AXI adresleri yapılandırılamayabilir ve bu da daha sonra iletişim sorunlarına yol açabilir

  5. Akış Gezgini Bölmesi'nde, yeni bir özel IP bloğu oluşturmak için proje yöneticisi -> Kaynak Ekle'yi seçin

    1. "Tasarım kaynakları ekle veya oluştur"u seçin ve sonrakine basın
    2. "Dosya oluştur"a tıklayın, dosya türünü "SystemVerilog" olarak değiştirin ve dosya adı alanına "tdoa" yazın, ardından Tamam'a tıklayın
    3. Bitir'i tıklayın
    4. Tamam'a basarak Modül Tanımla penceresini yok sayın (bunların üzerine daha sonra yazacağız)

      emin olup olmadığınızı sorarsa, Evet'i tıklayın

  6. Kaynaklar sekmesinde, tdoa.sv ("Tasarım Kaynakları/design_1_wrapper" içinde bulunur) dosyasını çift tıklayın.

    Aşağıda ekli tdoa.txt dosyasından SystemVerilog kodunun tamamını kopyalayın/yapıştırın

Adım 4: Ernie'yi Paketleme ve Dışa Aktarma

Ernie'yi Paketleme ve Dışa Aktarma
Ernie'yi Paketleme ve Dışa Aktarma
  1. Blok diyagramın ekli ekran görüntüsüne benzediğini doğrulayın
  2. Kaynaklar sekmesinde, design_1.bd'ye sağ tıklayın ve "HDL Wrapper Oluştur…" öğesini seçin.

    1. "Kullanıcı düzenlemelerine izin vermek için oluşturulan çıktıyı kopyala"yı seçin, ardından "Tamam"a basın
    2. Aşağıda eklenmiş olan design_1_wrapper.txt dosyasındaki kodu kopyalayın ve oluşturulan design_1_wrapper.v kodunun yerine yapıştırın.
    3. design_1_wrapper.v'yi kaydet
  3. Kaynaklar sekmesinde, Constraints/constrs1 altındaki ZYBO_Master.xdc dosyasına çift tıklayın.

    1. Aşağıda ekli ZYBO_Master.txt dosyasındaki kodu kopyalayın ve mevcut ZYBO_Master.xdc kodunun yerine yapıştırın.
    2. Aşağıdaki giriş/çıkış pinlerine dikkat edin:

      1. L15: Sol motor için PWM sinyali (Zybo'da Pmod JA2)
      2. L14: Sağ motor için PWM sinyali (Zybo'da Pmod JA8)
      3. V12: ses sensörü 1'den kapı girişi (Zybo'da Pmod JE1)
      4. K16: ses sensörü 2'den kapı girişi (Zybo'da Pmod JE2)
  4. Akış Gezgini Bölmesi'nde, Program ve Hata Ayıklama altında "Bit Akışı Oluştur" seçeneğini tıklayın.

    hemen yapıldığını düşünüyorsanız, muhtemelen değil. ciddiyim çay yap

  5. Dosya->Dışa Aktar->Donanım Oluştur'a tıklayın

    "Bit Akışını Dahil Et" seçeneğini işaretleyin ve Tamam'a basın

  6. Dosya-> SDK'yı Başlat'ı tıklayın

Adım 5: Ernie'yi İnşa Etme

Ernie'yi inşa etmek
Ernie'yi inşa etmek
Ernie'yi inşa etmek
Ernie'yi inşa etmek
  1. Servoları servo şasiye monte edin.
  2. Servolar için veri sayfasını takip ederek aşağıdakileri yapın:

    1. servoların toprağını Zybo'nun JA Pmod'undaki topraklama pinlerine bağlayın (ekli pin çıkışı resmine bakın)
    2. servoların güç pimini AA pil takımına bağlayın

      Servolar Zybo'nun Vdd'sine bağlandığında, kartın çok fazla akım çekerek kartın sürekli olarak sıfırlanmasına neden olduğunu bulduk

    3. giriş sinyali pinlerini Zybo'nun uygun çıkış pinlerine bağlayın (sol: JA2, sağ: JA8)
  3. ses sensörlerini kasanın önüne, öne bakacak şekilde ve mümkün olduğunca birbirine yakın olacak şekilde monte edin
  4. ses sensörlerini entegre etmek için ses sensörünün bağlantı kılavuzunu kullanın

    1. her bir ses sensörünün toprak ve Vdd pinlerini zemine ve Zybo'nun JE Pmod'undaki Vdd pinlerine bağlayın (ekli pin çıkışı resmine bakın)
    2. sol ses sensörünün Kapı pimini JE1'e bağlayın
    3. sağ ses sensörünün Kapı pimini JE2'ye bağlayın

Adım 6: Ernie'nin İlk BSP'si

Ernie'nin İlk BSP'si
Ernie'nin İlk BSP'si
Ernie'nin İlk BSP'si
Ernie'nin İlk BSP'si
  1. Yeni oluşturduğumuz platformu tamamlamak için bir BSP oluşturun.

    Bunu Dosya -> Yeni -> Kart Destek Paketi'nden alabilirsiniz

  2. BSP'yi oluşturmanıza yardımcı olacak bir sihirbaz açılacaktır.

    1. Bu BSP'yi yeni oluşturduğumuz Platformumuza bağlamak istiyoruz, bu yüzden
    2. Donanım Platformu, az önce oluşturduğumuzla aynı hizada olmalıdır (bkz. img 1)
    3. CPU'muz _0 CPU olacaktır.
    4. Bitir'i tıklayın
    5. Açılan pencerede bsp'niz ile birlikte lwip141'i işaretlediğinizden emin olun (bkz. img 2)

7. Adım: FreeRTOS'un Ernie'yi Görüntülemesi

  1. Sourceforge'dan en son FreeRTOS sürümünü indirin.

    İndirme yürütülebilir bir dosyaysa, FreeRTOS dosyalarını proje dizininize çıkarmak için çalıştırın

  2. Bu SDK'yı açık tutun ve Dosya -> İçe Aktar'ı tıklayın.
  3. Genel->Mevcut Bir Çalışma Alanından'ı tıklamak istiyoruz ve ardından FreeRTOS'u indirdiğimiz yere gitmek isteyeceğiz.
  4. Demomuz FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702'de yer alacaktır. Bu klasörü seçtikten sonra, üç projenin açıldığını görmeliyiz (kodumuz (OS), BSP ve HW Platformu).

    SADECE RTOSDemo'yu mevcut çalışma alanınıza aktarın

  5. Tüm "mavi" klasör projelerinde başvurulan BSP'yi değiştirin

    1. Sağ tıklayıp "Başvurulan BSP'yi Değiştir"i seçin.
    2. Zybo'nuz için yeni oluşturduğunuz BSP'yi seçin
    3. Xilinx'in SDK Blue klasörlerindeki Kod Düzenleme, gerçek kod projeleridir.

Adım 8: Ernie'nin C Kodunu İçe Aktarma

  1. RTOSDemo/src dizininde, buraya eklenen main.c dosyasıyla mevcut main.c dosyasının üzerine yazın.
  2. main_sound.c dosyasını RTOSDemo/src dizinine kopyalayın.

9. Adım: Ernie'de Hata Ayıklama

  1. Çalıştır -> Konfigürasyonlarda Hata Ayıklama'yı seçin
  2. Sol bölmede yeni bir Sistem Hata Ayıklayıcı çalıştırması oluşturun
  3. Hedef Kurulum sekmesinde,

    Hem o hem de ps7_init'in seçilmesi için “Tüm Sistemi Sıfırla”yı seçin

  4. Şimdi Uygulama sekmesini seçin.

    1. "Uygulamayı indir" i seçin
    2. cortexa9_0 çekirdeğini "program girişinde dur" olarak ayarlayın
    3. Uygula ve Hata Ayıkla'yı tıklayın.
  5. Hata ayıklama işleminde hata olmadığını doğrulayın
  6. Robotu yakından takip ederek, program herhangi bir kesme noktasına çarpmadan çalışana kadar Devam düğmesine basın.
  7. Robot şimdi dönmeli ve yüksek seslere doğru hareket etmelidir. Yay!

Adım 10: Ernie'yi Özerk Hale Getirmek

  1. Projeniz kullanıma hazır olduğunda (hata ayıklayıcı aracılığıyla sorunsuzca çalıştırabilirsiniz), onu panonuzdaki flash belleğe yüklemeye hazırsınız.
  2. “İlk aşama önyükleyici” (FSBL) projesi olarak adlandırılan şeyi oluşturun ve proje dosyalarınızı (bit akışı ve işletim sistemi) başlangıçta yüklemek için panonuzun ihtiyaç duyacağı tüm talimatları içerir.

    1. Dosya->Yeni->Uygulama Projesi'ni seçin ve aşağıdaki pencere görünmelidir.
    2. İstediğinizi adlandırın (yani “FSBL”)
    3. Donanım platformunun birlikte çalıştığınız platform olduğundan emin olun
    4. İleri'ye basın (Son'a basmayın)
    5. Zynq FSBL şablonunu seçin
    6. Bitir'i tıklayın.
  3. Oluşturma işlemi tamamlandıktan sonra, Proje Gezgini penceresinde aşağıdaki iki yeni klasörü görürseniz, her şeyin işe yarayıp yaramadığını bileceksiniz.
  4. Bir Önyükleme Görüntüsü Oluşturun Şimdi Önyükleme görüntüsünü oluşturmanız gerekecek.

    1. Proje klasörünüze sağ tıklayın (bu durumda benimki “RTOSDemo” olarak adlandırılır)
    2. Açılır menüden "Önyükleme görüntüsü oluştur" u tıklayın
    3. Her şey doğru bir şekilde bağlanırsa, proje hangi dosyalara ihtiyaç duyduğunu bilecek ve aşağıdaki pencere aşağıda gördüğünüz gibi görünecektir (önemli olan, Önyükleme görüntüsü bölümü, önyükleyici, bit dosyanız ve projeleriniz.elf dosyanız altında 3 bölümünüz olmasıdır.).

      Eğer durum böyle değilse, proje bağlantınızda bir sorun olabilir. Proje klasörlerinin ilgili BSP'lerine bağlı olduğundan emin olun

    4. "Resim Oluştur" düğmesini tıklayın
  5. Yazılımda yapılacak son adım, önceden oluşturduğunuz görüntüyü kartın belleğine flash yapmaktır.

    1. SDK'nın ana araç çubuğundan Xilinx Tools->Program Flash Memory'yi seçin
    2. Doğru donanım platformunun seçildiğinden ve görüntü dosyası yolunun önceki adımda oluşturulan. BIN dosyasını doğru şekilde gösterdiğinden emin olun.
    3. Flash türünden “qspi single”ı seçin
    4. Bütünlüğü sağlamak için "Flaştan sonra doğrula"yı işaretleyin, ancak buna gerek yok
  6. Panonuzu Yapılandırın Son olarak, BootROM çalıştırıldığında pano programlama modu atlama kablosunun (JP5) qspi'den (az önce flashladığınız şeyi içeren) önyüklemeyi seçmek için doğru şekilde ayarlandığından emin olmanız gerekir.
  7. Şimdi sadece cihazı kapatıp açın ve “Logic Configuration Done LED”inin (LED 10) yeşil yandığından emin olun.

Adım 11: Ernie'yi Şirin Yapmak

  1. Kürk
  2. bir sürü kürk
  3. Büyük gözler!
  4. … silindir şapka

Önerilen: