CPE 133 zibil sıralayıcı: 14 addım
CPE 133 zibil sıralayıcı: 14 addım
Anonim
CPE 133 Zibil Sıralayıcı
CPE 133 Zibil Sıralayıcı

Cal Poly -dəki CPE 133 sinifimiz üçün ətraf mühitə kömək edəcək və yeni rəqəmsal dizayn biliklərimizlə həyata keçirə biləcəyimiz qədər sadə bir VHDL/Basys 3 layihəsi yaratmağımızı söylədilər. Layihəmizin arxasında duran fikir, ümumiyyətlə insanların zibillərini hara atdıqları barədə düşünmür. İnsanları zibil qutularını hara qoyduqlarını düşünməyə məcbur edəcək bir maşın yaratmağa qərar verdik. Zibil çeşidləyicimiz, hər biri ya zibil, təkrar emal və ya kompostu təmsil edən üç açar vasitəsilə istifadəçi girişini alır. İstifadəçi tullantı növlərini seçdikdən sonra atmaq istədikləri bir düyməni basırlar. Bu düymə müvafiq konteyner qapaqlarının açılmasına səbəb olacaq. Maşın, Basys 3 üzərindəki ekrandan istifadə edərək, hazırda qapaqlardan birinin açıq olub olmadığını göstərir. Düymə buraxıldıqdan sonra qapaqlar yenidən bağlanacaq ki, maşın növbəti istifadəçiyə hazır olsun.

Addım 1: Materiallar

Materiallar
Materiallar
Materiallar
Materiallar
Materiallar
Materiallar

Bu layihə üçün lazım olan materiallar:

Basys 3 lövhə

Vivado quraşdırılmış kompüter

3x servo*

3 metrlik mis tel

Tel kəsici/soyucu

Lehimləmə dəmir və lehim

*servoların bahalı olması və biz kollec tələbəsi olduğumuz üçün prototip olaraq hər bir servo üçün 68 ohm müqavimət və LED ilə əvəz etdik (kod eyni şəkildə işləyir)

Addım 2: Kodlaşdırmaya başlayın

Kodlaşdırmaya Başlayın
Kodlaşdırmaya Başlayın
Kodlaşdırmaya Başlayın
Kodlaşdırmaya Başlayın
Kodlaşdırmaya Başlayın
Kodlaşdırmaya Başlayın

Bu layihə üçün yazılacaq çoxlu kod var. Vivadoda yazılmış VHDL kodundan istifadə edəcəyik. Başlamaq üçün yeni bir layihə yaratmaq istəyəcəyik. Əvvəlcə layihənin adını yazmalı və layihənin növünü göstərməlisiniz. Şəkildə göstərildiyi kimi eyni parametrləri seçdiyinizə əmin olun. Mənbələr ekranına çatdıqda "üst", "flip_flop", "seqmentlər", "servo_top", "servo_sig" və "clk_div" adlı altı mənbəni əlavə etmək istəyəcəksiniz. Verilog deyil, hər bir faylın dili üçün VHDL seçdiyinizə əmin olun. Məhdudiyyətlər ekranında pin təyin etmək üçün bir fayl yaratmalısınız. Bu faylın adı vacib deyil. Bundan sonra istifadə edəcəyiniz lövhəni seçməyiniz istənəcək. Doğru birini seçdiyinizə əmin olun. Doğru seçim üçün fotoşəkillərə baxın. Son addım, hər bir mənbə faylının giriş və çıxışlarını göstərməyinizi xahiş edəcək. Bu addım daha sonra kodlaşdırıla bilər, buna görə də növbəti düyməni basın.

Addım 3: Məhdudiyyətlər Dosyası

Məhdudiyyətlər faylı
Məhdudiyyətlər faylı
Məhdudiyyətlər faylı
Məhdudiyyətlər faylı

Bu addımda məhdudiyyətlər faylını yazacağıq. Bu, Vivadoya hansı pinlərin sxemdən hansı siqnalları göndərəcəyini/alacağını bildirir. Saat, üç açar, yeddi seqmentli ekran (yeddi katod və dörd anod), bir düyməyə və servo/LED -in istifadə edəcəyi üç çıxış PMOD pininə ehtiyacımız olacaq. Kodun necə görünməsi üçün istinad şəkilləri.

Addım 4: Flip Flop Faylını çevirin

Flip Flop Fayl
Flip Flop Fayl

Yazacağımız növbəti fayl flip_flip mənbə faylıdır. Bu, D flip flopun VHDL tətbiqi olacaq. Başqa sözlə, yalnız giriş siqnalının yüksələn kənarındakı çıxışa keçəcək və düyməyə basıldıqda. Saat, D və düyməni giriş olaraq alacaq və Q. kod üçün fotoşəkillərə istinad edəcək. Bu sənədin məqsədi, hər dəfə açar açıldıqda birbaşa açılmamaqdan və yalnız açar geri döndükdə bağlanmaqdan başqa, qutuların yalnız düyməyə basıldığında açılmasına icazə verməkdir.

Addım 5: Segmentlər Fayl

Segmentlər Fayl
Segmentlər Fayl

Yazılacaq növbəti fayl seqmentlər sənədidir. Bu düyməni Basys 3 -ün yeddi seqmentli ekranının yeddi katod və dörd anodunun giriş və çıxış dəyərlərində olduğu kimi alacaq. Bu fayl, yeddi seqment ekranının qablar bağlandıqda "C", çöplər açıq olduqda "O" göstərməsinə səbəb olur. Kod üçün əlavə fotoya baxın.

Addım 6: Saat Bölücü Fayl

Saat Bölücü Fayl
Saat Bölücü Fayl

Servos, 64k Hz tezliyində bir PWM siqnalı alaraq işləyir, Basys 3 -ə daxil edilmiş saat isə 50M Hz -də işləyir. Saat bölücü faylı, standart saatı servo üçün dostluq tezliyinə çevirəcəkdir. Fayl saatı və sıfırlama siqnalını giriş olaraq alacaq və yeni bir saat siqnalı çıxaracaq. Kod üçün əlavə edilmiş fotoşəkilə baxın.

Addım 7: Servo Siqnal Fayl

Servo siqnal faylı
Servo siqnal faylı

Servo siqnal faylı bir saat girişi, sıfırlama girişi və istədiyiniz mövqe girişini alacaq. Servo istədiyiniz yerə aparacaq bir PWM siqnalı çıxaracaq. Bu fayl, istədiyiniz mövqedən asılı olaraq fərqli vəzifə dövrü olan servo üçün PWM siqnalı yaratmaq üçün son sənəddə yaradılan saat siqnalını istifadə edir. Bu, zibil qutularının qapaqlarını idarə edən servoları döndərməyimizə imkan verir. Kod üçün əlavə edilmiş fotoşəkilə baxın.

Addım 8: Servo Üst Fayl

Servo Üst Fayl
Servo Üst Fayl

Bu faylın məqsədi son iki faylı işlək bir servo sürücüyə yığmaqdır. Bir saat, sıfırlama və bir giriş və servo PWM siqnalını çıxarmaq üçün bir mövqe tələb olunacaq. Həm saat bölücü, həm də servo siqnal faylını komponentlər kimi istifadə edəcək və dəyişdirilmiş saatı saat ayırıcıdan servo siqnal faylına ötürmək üçün daxili saat siqnalı daxil olacaq. Şəkillərə baxın

Addım 9: Üst Fayl

Üst Fayl
Üst Fayl
Üst Fayl
Üst Fayl
Üst Fayl
Üst Fayl
Üst Fayl
Üst Fayl

Yaratdığımız hər şeyi bir araya gətirdiyi üçün bu, layihənin ən vacib sənədidir. Düyməni, üç açarı və saatı giriş olaraq alacaq. Yeddi katod, dörd anod və üç servo/LED siqnalını çıxış olaraq verəcək. Flip flopdan, seqmentlərdən və servo_top fayllarından komponent olaraq istifadə edəcək və daxili keçid və daxili servo siqnalına sahib olacaq.

Addım 10: Vivadoda test edin

Vivadoda sintez, icra və bitsream yazın. Hər hansı bir səhv mesajı ilə qarşılaşsanız, səhv yerini tapın və sonra verilən kodla müqayisə edin. Bütün bu işlər uğurla başa çatana qədər səhvlər üzərində işləyin.

Addım 11: Hardware Girişinin qurulması

Bu addımda, prototipimizdə istifadə etdiyimiz LED avadanlığı yaradacaqsınız. Servo istifadə edirsinizsə, doğru pinlər istifadə edildiyi müddətcə layihə hazır olmalıdır. LED istifadə edirsinizsə, aşağıdakı addımları yerinə yetirin.

Addım 12: Hazırlıq

Teli altı bərabər hissəyə kəsin. Hər bir telin uclarını kifayət qədər soyun ki, lehim yaransın. LEDləri, rezistorları və telləri üç qrupa ayırın. Lehimləmə dəmirini qızdırın.

Addım 13: Lehimləmə

Lehimləmə
Lehimləmə
Lehimləmə
Lehimləmə

68 ohm rezistorların hər birini müvafiq LED -in mənfi tərəfinə lehimləyin. LED -in pozitiv tərəfinə bir tel, başqa bir tel isə rezistorun tərəfinə apararaq lehimlənməyib. Yuxarıda göstərilən LED ziddiyyətlərindən üçü olmalıdır.

Addım 14: Final

Final
Final

Hər bir müsbət teli müvafiq PMOD pininə və hər bir mənfi bir PMOD pininə daxil edin. İsteğe bağlı olaraq zibil qutularını təmsil etmək və lehim qarışıqlığınızı gizlətmək üçün karton qutular əlavə edin. Tellər düzgün bir şəkildə bağlandıqda və kod səhvsiz lövhəyə düzgün yükləndikdə, maşın istədiyi kimi işləməlidir. Bir şey səhv olarsa, problemi həll etmək üçün əvvəlki addımlara qayıdın. Yeni "zibil sıralayıcı" ilə əylənin.

Tövsiyə: