Mündəricat:
- Addım 1: Sistemin Qara Qutusu
- Addım 2: Komponentlər
- Addım 3: D Flip-Flops
- Addım 4: Şərtlər
- Addım 5: Məhdudiyyətlər
- Addım 6: Əsas Mənbə Dosyası
- Addım 7: Quraşdırma
- Addım 8: Proqramı yükləyin
Video: Enerji Səmərəli Hərəkət Aktivləşdirilmiş Küçə İşıqları: 8 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Bu layihə ilə məqsədimiz, cəmiyyətlərə enerji və maliyyə qaynaqlarına qənaət edəcək bir şey yaratmaq idi. Motion aktivləşdirilmiş küçə işıqları hər ikisini də edərdi. Bütün ölkədə enerji boş küçələri işıqlandıran küçə işıqlarına sərf olunur. Küçə işıq sistemimiz, işıqların yalnız lazım olduqda yanmasını təmin edir və cəmiyyətlərə saysız -hesabsız dollar qənaət edir. Hərəkət sensorlarından istifadə edərək sistem yalnız avtomobillər olduqda işıqları yandırır. Piyadaların təhlükəsizliyi üçün, küçədəki bütün işıqları yandıran bir ləğv düyməsini tətbiq etdik. Aşağıdakı addımlar, Vivado və Basys 3 lövhəsindən istifadə edərək layihənin kiçildilmiş modelini necə hazırladığımız və qurduğumuz barədə sizə məlumat verəcəkdir.
Addım 1: Sistemin Qara Qutusu
Bu layihəyə sadə bir qara qutu diaqramı çəkməklə başladıq. Qara qutu diaqramı, bütün zəruri prosesləri başa çatdırmaq üçün sistemimizin tələb etdiyi giriş və çıxışları göstərir. Dizaynımızı mümkün qədər sadə və sadə saxlamağa çalışdıq. Üç sistem girişimizə bir hərəkət sensoru avtobusu (kiçildilmiş modelimiz üçün 4 ədəd), bir piyadanın dəyişdirmə düyməsi və bir saat girişi daxil idi. Digər tərəfdən, tək çıxışımız küçə işıqlarımızı təmsil edən LED işıqlardan ibarət bir avtobusdur. Bu model üçün Basys 3 lövhəsində quraşdırılmış LED çıxışlarının maksimum sayı olduğu üçün 16 küçə işıqlarının ssenarisini istifadə etdik. Nəhayət, bu diaqramdan istifadə edərək, müvafiq giriş və çıxışları olan Vivado layihəmizi, mənbəyimizi və məhdudiyyət sənədlərimizi yarada bildik.
Addım 2: Komponentlər
Bu addımda qara qutu diaqramımızı təşkil edən komponentləri daha dərindən araşdırırıq. İlk komponentimiz, D flip-flopları olan bir VHDL mənbə faylıdır. D flip-floplar, saatın yüksələn kənarındakı sensorlardan onlara daxil olan hər hansı bir siqnalı alır və bu məlumatları növbəti yüksələn kənara qədər bağlayır. Bu, həssas hərəkət sensorlarımızın çıxış LED -lərinin "titrəməsinə" səbəb olmamasını təmin edir. Ayrıca, düyməni basdıqdan sonra LED-ləri təxminən 5-7 saniyə açıq saxlamaq üçün düymə giriş siqnalına tək bir D flip-flop qoyduq. Biz də bunu saat bölücü vasitəsi ilə apardıq.
clk_div2 varlığı Limandır (clk: std_logic; sclk: out std_logic); son clk_div2;
clk_div2 of my_clk_div memarlıqdır
daimi max_count: integer: = (300000000); siqnal tmp_clk: std_logic: = '0'; my_div başlamaq: proses (clk, tmp_clk) dəyişən div_cnt: integer: = 0; başlamaq əgər (yüksələn_kiymət (clk)) sonra əgər (div_cnt = MAX_COUNT) onda tmp_clk <= tmp_clk deyil; div_cnt: = 0; başqa div_cnt: = div_cnt + 1; bitərsə; bitərsə; sclk <= tmp_clk; my_div prosesini bitir; my_clk_div -i bitir;
Bu diaqramdakı son komponentimiz, giriş siqnallarının konfiqurasiyasına əsaslanan çıxışlar üçün şərtləri ehtiva edən davranışlı bir VHDL mənbə sənədidir.
Addım 3: D Flip-Flops
Giriş siqnallarına qoşulan dörd flip-flop sistemimizin işləməsi üçün vacibdir. Daha əvvəl dediyimiz kimi, həssas hərəkət sensorları və ləğv düyməsi ilə flip-floplar, giriş siqnalımızı yalnız saatın yüksələn kənarında çıxarmaq üçün mandallardan istifadə edir. Bu ardıcıl məntiq, küçə işıqlarımızın sürətli bir hərəkətlə tetiklendikten sonra müəyyən bir müddət ərzində qala biləcəyini bildirir. D-Flip Flop üçün kodlaşdırma olduqca sadədir:
beginprocess (CLK), əgər yüksəliş_kənar (CLK), sonra Q <= D olarsa başlayır; bitərsə; prosesi bitirmək;
Hər şeyi tək if ifadəsinə yığmaq olar. Bu parçaya sahib olduqdan sonra, dörd zəruri flip-flopumuzun hamısını ehtiva edən struktur VHDL mənbə faylı yaratdıq:
başlamaq DFF0: DFF liman xəritəsi (CLK => CLK, D => D (0), Q => Q (0)); DFF1: DFF liman xəritəsi (CLK => CLK, D => D (1), Q => Q (1)); DFF2: DFF liman xəritəsi (CLK => CLK, D => D (2), Q => Q (2)); DFF3: DFF liman xəritəsi (CLK => CLK, D => D (3), Q => Q (3));
Davranışa son qoymaq;
Bu, bütün sistem komponentlərini daha təmiz və mütəşəkkil bir araya gətirdiyimiz əsas struktur faylımızı saxlamağa kömək edir.
Addım 4: Şərtlər
Kodumuzu yığcam və səmərəli saxlamaq üçün bütün şərtlərimizi bir hal ifadəsində yazdıq. Kiçikləşdirilmiş modelimiz üçün 16 mümkün LED çıxış konfiqurasiyasına malik olduq, çünki hər bir hərəkət sensoru 4 LED -lərdən məsuldur.:
halda NMS "1111" => LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED <= "1111111111111111" olduqda; son hal;
Addım 5: Məhdudiyyətlər
Vivadodan istifadə edərək giriş və çıxışlarınızı düzgün ifadə etmək üçün istifadə olunan bütün portları, düymələri, LED -ləri və saatı göstərən bir məhdudiyyət faylı tətbiq etməlisiniz.
set_property PACKAGE_PIN W5 [get_ports CLK] set_property IOSTANDARD LVCMOS33 [get_ports CLK]
set_property PACKAGE_PIN U16 [get_ports {LED [0]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [0]}] set_property PACKAGE_PIN E19 [get_ports {LED [1]}] set_property IOSTANDARD LVCMOS33 [get_ports] [get_ports] U19 [get_ports {LED [2]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [2]}] set_property PACKAGE_PIN V19 [get_ports {LED [3]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [3]}) get_ports {LED [4]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [4]}] set_property PACKAGE_PIN U15 [get_ports {LED [5]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [5]}] set_proper PACK { LED [6]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [6]}] set_property PACKAGE_PIN V14 [get_ports {LED [7]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [7]}] set_proper PACKAGE_PIN 8]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [8]}] set_property PACKAGE_PIN V3 [get_ports {LED [9]}] set_property IO STANDART LVCMOS33 [get_ports {LED [9]}] set_property PACKAGE_PIN W3 [get_ports {LED [10]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [10]}] set_property PACKAGE_PIN U3 [get_ports {LED_11] [get_ports {LED [11]}] set_property PACKAGE_PIN P3 [get_ports {LED [12]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [12]}] set_property PACKAGE_PIN N3 [get_ports {LED [13]}] set_proper IOSTM {LED [13]}] set_property PACKAGE_PIN P1 [get_ports {LED [14]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [14]}] set_property PACKAGE_PIN L1 [get_ports {LED [15]}] set_property IOOSANDARD LVC {0] [15]}]
set_property PACKAGE_PIN U18 [get_ports BTN] set_property IOSTANDARD LVCMOS33 [get_ports BTN]
set_property PACKAGE_PIN A14 [get_ports {MS [0]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [0]}] set_property PACKAGE_PIN A16 [get_ports {MS [1]}] set_property IOSTANDARD LVCMOS33 [get_ports] {get_ports] B15 [get_ports {MS [2]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [2]}] set_property PACKAGE_PIN B16 [get_ports {MS [3]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [3]}]
Addım 6: Əsas Mənbə Dosyası
Bu əsas faylda əvvəllər qeyd olunan bütün komponent mənbə fayllarını bir araya gətiririk. Bu fayl, fərqli komponentləri bir araya gətirən struktur kodu kimi fəaliyyət göstərir.
varlıq Master_Final_Project Limandır (BTN: STD_LOGIC -də; CLK: STD_LOGIC -də; MS: STD_LOGIC_VECTOR -da (3 aşağıya 0); LED: STD_LOGIC_VECTOR -a (15 aşağı 0)); Master_Final_Project son;
Master_Final_Project Memarlıq Davranışıdır
final_project komponenti Portdur (--CLK: STD_LOGIC-də; NMS: STD_LOGIC_VECTOR-da (3 aşağı 0); BTN: STD_LOGIC-də; --sw: STD_LOGIC_Vector-da (1 aşağıya 0); LED: STD_LOGIC_VECTOR-a (15 aşağı 0)); son komponent;
Final_DFF komponentidir
Port (CLK: STD_LOGIC -də; D: STD_LOGIC_Vector -da (3 aşağıya 0); Q: STD_LOGIC_Vector -a (3 aşağıya 0)); son komponent;
siqnal DFF02proj30: STD_LOGIC;
siqnal DFF12proj74: STD_LOGIC; siqnal DFF22proj118: STD_LOGIC; siqnal DFF32proj1512: STD_LOGIC;
başlamaq
DFF0: Final_DFF liman xəritəsi (CLK => CLK, D (0) => MS (0), D (1) => MS (1), D (2) => MS (2), D (3) => MS (3), Q (0) => DFF02proj30, Q (1) => DFF12proj74, Q (2) => DFF22proj118, Q (3) => DFF32proj1512); Proj0: final_project liman xəritəsi (NMS (0) => DFF02proj30, NMS (1) => DFF12proj74, NMS (2) => DFF22proj118, NMS (3) => DFF32proj1512, BTN => BTN, LED => LED); Davranışa son qoymaq;
Addım 7: Quraşdırma
Bu layihə üçün aparat yığımı minimaldır. Yalnız tələb olunan parçalar aşağıdakılardır:
1. Basys 3 lövhə (1)
2. Amazonda tapa biləcəyiniz ucuz hərəkət sensorlar. (4)
3. Kişidən qadına liderlik (4)
Montaj:
1. PMod header JB portlarının 1-4-ə 4 kişi ucunu qoşun (Şəkilə baxın).
2. Dişi ucları hər bir hərəkət sensörünün çıxış pininə bağlayın.
Addım 8: Proqramı yükləyin
İndi VHDL master mənbə faylını Basys 3 lövhəsinə yükləməyə hazırıq. Sintezi, tətbiq etməyi və hər hansı bir səhv üçün bit axını yoxlamasını başladığınızdan əmin olun. Hamısı uğurla işləyirsə, hardware menecerini açın və Basys 3 cihazını proqramlaşdırın. Layihəniz artıq tamamlandı!
Tövsiyə:
Ultrasonik Sensor istifadə edərək Avtomatik Küçə İşıqları: 3 addım
Ultrasonik Sensordan istifadə edən Avtomatik Küçə İşıqları: Heç küçə işıqlarının gecə avtomatik olaraq necə açıldığını və səhər avtomatik olaraq söndüyünü düşünmüsünüzmü? Bu işıqları AÇMA/SÖNDÜRMƏK üçün gələn hər kəs varmı? Küçə işıqlarını yandırmağın bir neçə yolu var, lakin aşağıdakılar
Hərəkət Aktivləşdirilmiş Lampa Açarı: 3 Addım
Hərəkət Aktivləşdirilmiş Lampa Açarı: Masamızdan və ya otağımızdan çıxanda çox vaxt oradakı işıqları söndürməyi unuduruq. Bu, elektrik itkisinə və elektrik haqqınızın artmasına səbəb olur. Ancaq otaqdan çıxdıqdan sonra işıqlar avtomatik olaraq sönərsə. Bəli
İşıq Sensorlu Hərəkət Aktivləşdirilmiş İşıq Açarı: 5 addım
İşıq Sensorlu Hərəkət Aktivləşdirilmiş İşıq Şalteri: Hərəkət aktiv işıq anahtarı həm evdə, həm də ofisdə bir çox tətbiqə malikdir. Bununla birlikdə, bu işığın yalnız gecə vaxtı tetiklenebilmesi üçün bir işıq sensoru əlavə etmənin bir üstünlüyü var
Hərəkət Aktivləşdirilmiş Redstone: 7 addım (şəkillərlə)
Hərəkət Aktivləşdirildi Redstone: Salam! Bu layihə, hərəkəti aktivləşdirən qırmızı daş lampadır. Parçalanan mikrokontrolör və ultrasəs məsafə sensoru istifadə edərək işləyir
Enerji səmərəli kompüter: 9 addım
Enerjiyə Səmərəli Kompüter: Saytda və kompüterdə məqalələr yazmaq üçün saysız -hesabsız təlimatlar var. Bununla birlikdə, enerjiyə qənaət edən bir PC qurmaq üçün bir çox bələdçi yoxdur. Bu təlimat boyunca sizə necə seçim etməyiniz barədə bəzi məsləhətlər verəcəyəm