Mündəricat:

Universal söndürmə cihazı modeli: 10 addım
Universal söndürmə cihazı modeli: 10 addım

Video: Universal söndürmə cihazı modeli: 10 addım

Video: Universal söndürmə cihazı modeli: 10 addım
Video: wifi пульт для IR и RF кодов Broadlink RM4C Pro, работа в Home Assistant - управляем кондиционером 2024, Iyul
Anonim
Universal söndürmə açarı modeli
Universal söndürmə açarı modeli

Yatmazdan əvvəl evinizdəki bütün işıqların söndüyünü yoxlamaqdan bezmisiniz? Hər işığı bir anda narahat etmədən söndürmək istərdinizmi? Güc və vaxta qənaət etmək üçün nəzəri olaraq bütün evi bir anda bağlaya biləcək bir sistem yaratmağa qərar verdik.

Bir neçə LED və basys 3 elektrik lövhəsindən istifadə edərək bu konsepsiyanın sübutunu modelləşdirdik və bir düyməyə basmaqla bütün LED -ləri deaktiv edəcək bir dizayn yaratdıq. Bu model, verilmiş VHDL sənədlərində daha mürəkkəb naqillər və dəyişikliklər tələb etsə də, həqiqi ev işıqlandırma sisteminə də tətbiq oluna bilər.

Addım 1: Verilmiş VHDL Fayllarını İdxal edin

Modelimizin düzgün işləməsi üçün Basys 3 lövhəsinə təlimatları verən proqramı yükləməlisiniz.

Əvvəlcə vhdl fayllarını aparata tətbiq etmək üçün bir sintez vasitəsi yükləməlisiniz. Bütün kodların heç bir dəyişikliyə ehtiyac olmadan dizaynımızı tam şəkildə təkrarlayacağından əmin olmaq istəyirsinizsə, Vivado 2016.2 -dən istifadə etməyi məsləhət görürük. Vivado'yu qurduqdan sonra bir layihə yarada və mənbə fayllarımızı yükləyə bilərsiniz. Onları layihənizə mənbə olaraq əlavə edin, məhdudiyyətlər faylını da əlavə etməyi unutmayın!

Sonra mənbə fayllarının hər birinin nə etdiyini izah edəcəyik. Yalnız cihazın fiziki quruluşuna çatmaq istəyirsinizsə, 2 ilə 6 arasındakı addımları atlayın.

Addım 2: VHDL Üst Modulunun Dağılımı

VHDL Üst Modulunun dağılması
VHDL Üst Modulunun dağılması
VHDL Üst Modulunun dağılması
VHDL Üst Modulunun dağılması

Layihənin ən yüksək modulu, bütün fərdi komponent modullarını istifadə olunan aparata bağlayan şeydir. Gördüyünüz kimi, üst hissədə komponentlər olaraq təyin edilmiş killSwitch və buzzerControl modullarımız var.

Aşağı hissədə bu modulların bir -birinə necə bağlı olduğu göstərilir. Lövhəyə dörd LED bağladıq və dev3 -dən dev3 -ə qədər killSwitch modulları ilə əlaqələndirdik. Dörd killSwitch modulu var, çünki hər bağlı LED -in vəziyyətini idarə etmək üçün birinə ehtiyacımız var. Bu modulların hər biri, üst modul tərifində yaratdığımız saat və düymə siqnalını, həmçinin müvafiq giriş açarını və çıxış cihazı siqnallarını istifadə edir.

Aşağıdakı səs siqnalı idarəetmə modulu, universal söndürmə düyməsinə basıldıqda səs siqnalı işə düşür. Gördüyünüz kimi səs siqnalı idarəetmə modulu giriş olaraq saat və düymə siqnalından keçir. Buna uyğun olaraq nəzarət etmək üçün fiziki səs siqnalı çıxış pinindən də keçir.

Addım 3: VHDL Kill Switch Modulunun pozulması

VHDL Kill Switch Modulunun pozulması
VHDL Kill Switch Modulunun pozulması
VHDL Kill Switch Modulunun pozulması
VHDL Kill Switch Modulunun pozulması

Kill Switch universal söndürmə düyməsidir və modul ilk növbədə onu digər dövrə elementlərinə bağlamaqla bağlıdır ki, basıldıqda bütün işıqlar sönəcək.

Üst modul fiziki aparatı proqrama bağlamağı idarə edərkən, killSwitch modulu hər bir cihazın əsas məntiqini idarə edir. Modul, saat siqnalı, universal söndürmə düyməsi və cihaz keçid açarı üçün girişlər alır. Bunun müqabilində qoşulduğu cihaz pininin vəziyyətinə nəzarət edir.

Kodun memarlıq bölməsində, yaddaşı saxlamaq üçün dFlipFlop modulundan asılı olduğunu görürük. Flip flopu bağlamaq və məntiq ifadələrimizi həyata keçirmək üçün istifadə ediləcək dörd siqnal elan etdiyimizi də görə bilərsiniz. Kodun davranış bölməsində dFlipFlop modulunun bir nümunəsini yaratdıq və G/Ç siqnallarımızı limanlara təyin etdik.

Buradan məntiqimizin əsas hissəsi invertState və isDevOn üçün siqnal dəyərlərindədir. Cihaz üçün məntiqi əsaslarımız belədir: "Açar hər dəfə atıldıqda işıq onun açma/söndürmə vəziyyətini dəyişəcək. Düyməyə hər dəfə basıldıqda və LED hazırda yanarsa LED öz vəziyyətini söndürəcək. " Bu iki ifadədən, LED -in vəziyyətinin açarın XOR və yaddaş elementimiz olması lazım olduğunu öyrənə bilərik. Bunu isDevOn siqnalında həyata keçirmək olar. Yaddaş elementi üçün LED şərti invertState siqnalımızla idarə olunur. LED yanarsa və düyməyə basılarsa, yaddaş elementimiz vəziyyətini yeniləyəcək və tərsinə çevirəcək. Bu da LED -in vəziyyətini dəyişir.

Addım 4: VHDL Flip Flop Modulunun pozulması

VHDL Flip Flop Modulunun dağılması
VHDL Flip Flop Modulunun dağılması

Dizaynımızdakı bir problem, söndürmə açarını istifadə etdikdən sonra, əvvəlki vəziyyətə qayıtmaq üçün əvvəllər yanan işıqların iki dəfə çevrilməsi lazım ola bilər. Bu zamanla insanlar üçün olduqca narahatlıq olardı. Dizaynımıza məlumat saxlaya bilən bir dövrə elementi olan "Flip Flop" daxil edərək bu narahatçılığı aşa bildik. İndi sistem bir işıq açarının əvvəllər açılıb -açılmadığını xatırlayır, belə ki, yenidən döndərilsə, başlanğıc mövqeyindən asılı olmayaraq açılır.

VHDL kodu, dövrə dizaynımızda bir komponent olaraq Flip Flop yaratmaq üçün if və else ifadələrindən istifadə edir. Saat siqnalı alçaqdan yüksək vəziyyətə keçəndə, ampul yandıqda və söndürmə düyməsinə basıldıqda flip flop çıxışı onun girişinin üzərinə yazılmasını təmin edir. Giriş yazıldıqda flip flop tərsinə çevrilir.

Addım 5: VHDL Piezo Buzzer Modulunun pozulması

VHDL Piezo Buzzer Modulunun pozulması
VHDL Piezo Buzzer Modulunun pozulması
VHDL Piezo Buzzer Modulunun pozulması
VHDL Piezo Buzzer Modulunun pozulması

Bu fayl, hardware dizaynına gəldikdə bir az artıqdır, lakin üst modulun və məhdudiyyət fayllarının düzgün işləməsini təmin etmək vacibdir. Piezo səs siqnalını istifadə etməməyi seçsəniz, bu faylı yükləyin, ancaq zil səsini Basys 3 lövhəsinə yapışdırmayın.

Piezo səs siqnalı, deaktiv etmək düyməsini basdıqda, istifadəçiyə düyməni basıldığını eşitmə rəyi ilə təmin edəcək iki not tonu çalacaq. Bunu VHDL -də bir proses quruluşundakı bir sıra if ifadələri vasitəsi ilə həyata keçirdik. Neçə saat dəyişikliyinin baş verdiyini izləmək üçün tam ədəd yaratmaqla başladıq. Proses başladıqdan sonra proqram ilk yarım saniyəni (0 ilə 50 milyon saat arasında) 440 hertzlik bir A notu çıxarmağa sərf edir. Bu, piezo səs siqnalının 227272 saat işarəsinin hər birindən çoxunu modulo funksiyası ilə ters çevirməklə əldə edilir. Bu rəqəm, lövhənin saat siqnalının (100 MHz) istənilən frekansa (400 Hz) bölünməsinin nəticəsidir. İkinci yarım saniyə ərzində (50 ilə 100 milyon saat), lövhə əvvəlki üsulla 349.2 hertz səviyyəsində bir F notu çıxarır. Bir saniyədən sonra proqram saat dəyişənini daha da artırmır və piezo səs siqnalından bir şey çıxarmağı dayandırır. Universal söndürmə düyməsinə yenidən basaraq səs -küy dövrünü yenidən başlataraq bu nömrəni 0 -a qaytarır.

Addım 6: VHDL məhdudiyyətlər faylının parçalanması

Məhdudiyyətlər faylı Vivadoya Basys 3 lövhəsində hansı cihazlardan istifadə etdiyimizi bildirir. Vivadoya kodumuzdakı cihazlara verdiyimiz adları da təqdim edir. Vivadonun bu məlumatlara ehtiyacı var, buna görə də məntiqi elementlərimizi fiziki qurğulara necə bağlayacağımızı bilir. Məhdudiyyətlər sənədinə çoxlu şərh edilmiş (istifadə olunmamış) kod daxildir. Bu kod xətləri istifadə etmədiyimiz lövhədəki cihazlara istinad edir.

İstifadə etdiyimiz qurğularda lövhədə V17, V16, W16 və W1 etiketli dörd giriş açarı var. U18 etiketli universal söndürmə düyməsindən də istifadə edirik. Dörd bağlı LED üçün çıxış pinləri JB4, JB10, JC4 və JC10 -dur. Piezzo buzzerimiz üçün JA9 çıxış pinindən istifadə edirik.

Üst modul parçalanmasında qeyd etdiyimiz kimi, lövhəyə əlavə LED və ya digər qurğular əlavə etmək istəyirsinizsə, sw və dev siqnallarının əhatə dairəsini artırmalı, daha çox killSwitch modulu əlavə etməli və onları bir -birinə bağlamalısınız. Daha sonra məhdudiyyətlər faylı vasitəsi ilə bu dəyişən adları cihaz aparatına bağlamalısınız. Bu, istifadə etmək istədiyiniz sancaqlar ilə əlaqəli kod sətirlərini şərh etmədən (yenidən aktivləşdirərək) və üst modulda əlaqəli dəyişənin adını əlavə etməklə edilə bilər. Bunun üçün uyğun sintaksis istifadə etdiyimiz cihazlardan kopyalana bilər. Lövhədə istifadə etmək istədiyiniz pinlərin adlarını öyrənmək üçün buradakı Baasys 3 istinad kitabçasına baxın.

Addım 7: Baza qurmaq 3

Baza qurmaq 3
Baza qurmaq 3
Baza qurmaq 3
Baza qurmaq 3

LED -lərinizi Basys 3 -ün düzgün I/O portlarına bağlamalısınız. Doğru portların nə olduğunu müəyyən etmək üçün təqdim olunan şəkilləri izləyin, çünki LED -i səhv porta bağlasanız yanmaz. Piezo səs siqnalı bağlamağı seçmisinizsə, onu da düzgün I/O portlarına bağlamalısınız.

Lövhə hazır olduqda, USB kabel vasitəsilə kompüterinizə qoşun.

Addım 8: VHDL fayllarını Basys 3 -ə tətbiq edin

VHDL fayllarını Basys 3 -ə tətbiq etmək
VHDL fayllarını Basys 3 -ə tətbiq etmək
VHDL Fayllarını Basysə tətbiq etmək 3
VHDL Fayllarını Basysə tətbiq etmək 3

Lövhəniz hazır və kodunuz bitdikdən sonra nəhayət modeli birləşdirə bilərsiniz.

Layihənizi Vivadoda qurduqdan sonra, kodu lövhəyə yükləməzdən əvvəl tərtib etmək üçün "Bitstream Yarat" düyməsini basmalısınız. Bu anda bir səhv mesajı alsanız, kodunuzun bizimlə tam uyğun olduğunu iki dəfə yoxlamalısınız. Tam olaraq dediyim zaman, hətta nöqtəli vergülləri və ya istifadə olunan mötərizə növlərini nəzərdə tuturam. Bit axınınız uğurla yazıldıqdan sonra Vivadodakı aparat menecerinə gedin və "Hədəfi Aç" düyməsini, sonra dərhal "Proqram Cihazı" nı basın. Basys 3 lövhəniz artıq tam işlək vəziyyətdə olmalıdır.

Addım 9: Basys 3 lövhəsindən istifadə edin

Basys 3 lövhəsindən istifadə
Basys 3 lövhəsindən istifadə

İndi Basys 3 Board işlək vəziyyətdədir və modelimizi təmsil etmək üçün proqramlaşdırılmışdır, ondan necə istifadə edəcəyinizi bilməlisiniz.

Sağdan ən uzaqdakı dörd açarın hər biri LED -lərdən birini idarə edir, onları sürüşdürmək LED -in açılmasına və ya sönməsinə səbəb olacaq. LED aktiv deyilsə, düzgün I/O portuna qoşulduğunuzu və LEDinizin ilk növbədə işlək olduğunu yoxlayın.

Bir anda bütün LED -ləri söndürmək istəsəniz, yuxarıdakı beş düymənin ortasındakı düyməni basmalısınız.

Addım 10: Göstər

Model, dostlarınız və ailəniz qarşısında nümayiş etdirə biləcəyiniz səliqəli kiçik bir yenilik kimi xidmət edir. LEDləri işıqlarınıza aparan tellərlə əvəz etsəniz, nəzəri olaraq ev elektrik sisteminizə universal söndürmə açarını tətbiq etmək üçün də istifadə edilə bilər. Mümkün olsa da, bunun əleyhinə məsləhət verməli olacağıq. Bir elektrikçinin köməyi olmadan yenidən bağlamağa çalışarsanız özünüzə və ya evinizə ciddi zərər vurma potensialınız var.

Tövsiyə: