Мазмуну:

Энергияны үнөмдөөчү кыймыл активдештирилген көчө чырактары: 8 кадам
Энергияны үнөмдөөчү кыймыл активдештирилген көчө чырактары: 8 кадам

Video: Энергияны үнөмдөөчү кыймыл активдештирилген көчө чырактары: 8 кадам

Video: Энергияны үнөмдөөчү кыймыл активдештирилген көчө чырактары: 8 кадам
Video: Электр энергияны үнөмдөөнү үйрөнөлү 2024, Ноябрь
Anonim
Энергияны үнөмдөөчү кыймыл активдүү көчө чырактары
Энергияны үнөмдөөчү кыймыл активдүү көчө чырактары

Бул долбоордун максаты - жамааттардын энергиясын жана каржылык ресурстарын үнөмдөй турган нерсени түзүү. Кыймылдын активдештирилген көчө чырактары экөөнү тең жасайт. Бүт өлкө боюнча энергия бош көчө жарыктандыруучу көчө чырактарына сарпталып жатат. Биздин көчө жарыктандыруу системасы чырактар керек болгондо гана күйүп, жамааттарга сансыз долларды үнөмдөйт. Кыймыл сенсорлорун колдонуп, система машиналар турганда гана жарыкты күйгүзөт. Ошондой эле жөө жүргүнчүлөрдүн коопсуздугу үчүн биз көчөдөгү бардык жарыкты күйгүзүүчү баскычты ишке киргиздик. Төмөнкү кадамдар Vivado жана Basys 3 тактасын колдонуу менен долбоордун кичирейтилген моделин кантип иштеп чыкканыбызды көрсөтөт.

1 -кадам: системанын кара кутусу

Кара куту системасы
Кара куту системасы

Биз бул долбоорду жөнөкөй кара кутунун схемасын тартуудан баштадык. Кара куту диаграммасы жөн гана биздин система бардык керектүү процесстерди аяктоо үчүн керектүү болгон кириштерди жана чыгууларды көрсөтөт. Дизайнды мүмкүн болушунча жөнөкөй жана жөнөкөй сактоого аракет кылдык. Биздин үч системалык киришибизге кыймыл датчиктеринин автобусу (биздин кичирейтилген моделибиз үчүн 4), жөө адамдарды алмаштыруу баскычы жана сааттын кириши кирген. Башка тарапта биздин бирдиктүү чыгаруубуз - бул көчө чырактарыбызды чагылдырган LED чырактары бар автобус. Бул модель үчүн биз 16 көчө чырактарынын сценарийин колдондук, анткени бул Basys 3 тактасындагы LED чыгуулардын максималдуу саны. Акыр -аягы, бул диаграмманы колдонуу менен биз Vivado долбоорубузду, булагыбызды жана чектөө файлдарыбызды тийиштүү киргизүү жана чыгаруу менен түзө алдык.

2 -кадам: Компоненттер

Компоненттер
Компоненттер
Компоненттер
Компоненттер

Бул кадамда биз кара куту диаграммасын түзгөн компоненттерди тереңирээк изилдейбиз. Биздин биринчи компонент-бул D flip-flops камтыган VHDL булагы файлы. D флип-флоптары сааттын өйдө жагындагы сенсорлордон аларга кандай сигнал берилсе, ошонун баарын алат жана бул маалыматты кийинки көтөрүлүүчү четине чейин бекитет. Бул биздин сезгич кыймыл сенсорлорубузду жарык диоддорунун "жылтылдап" калышына жол бербейт. Ошондой эле, LED баскычын баскандан кийин 5-7 секундга чейин күйгүзүү үчүн, баскычты киргизүү сигналына бир D флип-флопун койдук. Биз муну саат бөлгүч аркылуу да жүргүздүк.

clk_div2 субъекти Порт (clk: std_logic; sclk: out std_logic); end clk_div2;

clk_div2нин my_clk_div архитектурасы

туруктуу max_count: бүтүн сан: = (300000000); сигнал tmp_clk: std_logic: = '0'; my_div: process (clk, tmp_clk) баштоо div_cnt: integer: = 0; баштоо if (ko'tarүлө турган кыр (clk)) анда, эгерде (div_cnt = MAX_COUNT) анда tmp_clk <= tmp_clk эмес; div_cnt: = 0; башка div_cnt: = div_cnt + 1; эгерде бүтсө; эгерде бүтсө; sclk <= tmp_clk; my_div процессин бүтүрүү; my_clk_div аягына чыгаруу;

Бул диаграммада биздин акыркы компонентибиз кириш сигналдарынын конфигурациясына негизделген жыйынтыктар үчүн шарттарды камтыган жүрүм -турумдук VHDL булагы файлы.

3-кадам: D Flip-Flops

D Flip-Flops
D Flip-Flops

Кириш сигналдарына тиркелген төрт флип-флоп биздин системанын иштеши үчүн абдан маанилүү. Жогоруда айтылгандай, сезгич кыймыл сенсорлору жана жокко чыгаруу баскычы менен, флип-флоптер сааттын өсүп бараткан четинде биздин кирүү сигналын чыгаруу үчүн гана илгичтерди колдонушат. Бул ырааттуу логика биздин көчө чырактары ылдам кыймыл менен иштетилгенден кийин белгилүү бир убакытка чейин күйүп туруусун билдирет. D-Flip Flop үчүн коддоо абдан жөнөкөй:

beginprocess (CLK) ko'tarүлө турган болсо (CLK) башталат, анда Q <= D; эгерде бүтсө; процессти аяктоо;

Баарын бир гана if билдирүүсүнө чогултса болот. Бул бөлүккө ээ болгондон кийин, биз керектүү флип-флопторубуздун бардыгын камтыган структуралык VHDL булак файлын түздүк:

баштоо DFF0: DFF порт картасы (CLK => CLK, D => D (0), Q => Q (0)); DFF1: DFF порт картасы (CLK => CLK, D => D (1), Q => Q (1)); DFF2: DFF порт картасы (CLK => CLK, D => D (2), Q => Q (2)); DFF3: DFF порт картасы (CLK => CLK, D => D (3), Q => Q (3));

жүрүм -турумду токтотуу;

Бул биздин структуралык файлды сактоого жардам берет, анда биз системанын бардык компоненттерин алда канча таза жана уюшкан түрдө чогултабыз.

4 -кадам: шарттуу

Биздин кодду компакттуу жана эффективдүү сактоо үчүн биз бардык шарттарыбызды бир учурда жаздык. Биздин кичирейтилген моделибиз үчүн бизде 16 мүмкүн болгон LED чыгаруу конфигурациялары бар болчу, анткени ар бир кыймыл сенсору 4 LEDдин тобуна жооп берет.:

case NMS качан "1111" => LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED = "1111111111111111"; аяктоо иши;

5 -кадам: Чектөөлөр

Vivado аркылуу киргизүү жана чыгарууңузду туура билдирүү үчүн, бардык портторду, баскычтарды, светодиоддорду жана сааттарды билдирген чектөө файлын колдонушуңуз керек.

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] 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]} PACP_PPP] 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_property PACKAGE_PIN { 8]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [8]}] set_property PACKAGE_PIN V3 [get_ports {LED [9]}] set_property IO STANDARD 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_property IOST {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 IOSTANDARD LVC { [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]}]

6 -кадам: Негизги булак файлы

Бул негизги файлда биз мурда айтылган бардык компонент булак файлдарын чогултабыз. Бул файл айырмалоочу компоненттерди бириктирген структуралык код катары иштейт.

Master_Final_Project субъекти порт болуп саналат (BTN: STD_LOGICте; CLK: STD_LOGIC; MS: STD_LOGIC_VECTOR (3төн 0гө чейин); LED: STD_LOGIC_VECTOR (15тен 0гө чейин)); Master_Final_Project аяктоо;

Master_Final_Project архитектурасы

final_project компоненти Port (--CLK: STD_LOGIC; NMS: STD_LOGIC_VECTOR (3кө 0 чейин); BTN: STD_LOGIC; акыркы компонент;

Final_DFF компоненти

Порт (CLK: STD_LOGICте; D: STD_LOGIC_Vectorдо (3кө 0 чейин); Q: STD_LOGIC_Vectorго (3кө 0 чейин)); акыркы компонент;

сигнал DFF02proj30: STD_LOGIC;

сигнал DFF12proj74: STD_LOGIC; сигнал DFF22proj118: STD_LOGIC; сигнал DFF32proj1512: STD_LOGIC;

баштоо

DFF0: Final_DFF порт картасы (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 порт картасы (NMS (0) => DFF02proj30, NMS (1) => DFF12proj74, NMS (2) => DFF22proj118, NMS (3) => DFF32proj1512, BTN => BTN, LED => LED); жүрүм -турумду токтотуу;

7 -кадам: Ассамблея

Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея

Бул долбоордун аппараттык куралы минималдуу. Бир гана керектүү бөлүктөр төмөнкүлөр:

1. Basys 3 такта (1)

2. Арзан кыймыл датчиктерин бул жерден Amazonдо тапса болот. (4)

3. Эркектен-аялга жетелейт (4)

Ассамблея:

1. 4 эркекти PMod header JB портуна 1-4 туташтырыңыз (Сүрөттү караңыз).

2. Аялдардын учтарын ар бир кыймыл сенсорунун чыгуу пинине туташтырыңыз.

8 -кадам: Программаны жүктөө

Эми биз VHDL башкы булак файлын Basys 3 тактасына жүктөөгө даярбыз. Синтезди, ишке ашырууну жана мүмкүн болгон каталардын бар -жогун текшерүүнү иштетүүнү тактаңыз. Эгерде баары ийгиликтүү иштесе, аппараттык менеджерди ачыңыз жана Basys 3 түзмөгүн программалаңыз. Сиздин долбоор азыр аяктады!

Сунушталууда: