Mündəricat:

Enerji Səmərəli Hərəkət Aktivləşdirilmiş Küçə İşıqları: 8 Addım
Enerji Səmərəli Hərəkət Aktivləşdirilmiş Küçə İşıqları: 8 Addım

Video: Enerji Səmərəli Hərəkət Aktivləşdirilmiş Küçə İşıqları: 8 Addım

Video: Enerji Səmərəli Hərəkət Aktivləşdirilmiş Küçə İşıqları: 8 Addım
Video: Deutsch Lernen mit Dialogen B2 - Hören, Lesen & Verstehen 2024, Iyul
Anonim
Enerji Səmərəli Hərəkət Aktivləşdirilmiş Küçə İşıqları
Enerji Səmərəli Hərəkət Aktivləşdirilmiş Küçə İşıqları

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

Sistem Qara Qutusu
Sistem 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

Komponentlər
Komponentlər
Komponentlər
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

D Flip-Floplar
D Flip-Floplar

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

Məclis
Məclis
Məclis
Məclis
Məclis
Məclis
Məclis
Məclis

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ə: