Turinys:

Energiją taupantys judesio įjungiami gatvių žibintai: 8 žingsniai
Energiją taupantys judesio įjungiami gatvių žibintai: 8 žingsniai

Video: Energiją taupantys judesio įjungiami gatvių žibintai: 8 žingsniai

Video: Energiją taupantys judesio įjungiami gatvių žibintai: 8 žingsniai
Video: LED kosmetinis veidrodėlis 2024, Lapkritis
Anonim
Energiją taupantys judesio įjungiami gatvių žibintai
Energiją taupantys judesio įjungiami gatvių žibintai

Mūsų tikslas šiuo projektu buvo sukurti tai, kas sutaupytų bendruomenių energijos ir finansinių išteklių. Judant suaktyvinami gatvių žibintai padarytų abu šiuos dalykus. Visoje šalyje energija eikvojama gatvių apšvietimui, apšviečiant tuščias gatves. Mūsų gatvių apšvietimo sistema užtikrina, kad žibintai dega tik tada, kai reikia, taip sutaupydami bendruomenėms daugybę dolerių. Naudodama judesio jutiklius, sistema įjungia šviesas tik tada, kai yra automobilių. Taip pat pėsčiųjų saugumui įdiegėme nepaisymo mygtuką, kuris įjungia visas gatvės šviesas. Šie veiksmai padės jums suprasti, kaip mes sukūrėme ir sukūrėme sumažintą projekto modelį, naudodami „Vivado“ir „Basys 3“plokštę.

1 žingsnis: sistemos juodoji dėžė

Sistemos juodoji dėžė
Sistemos juodoji dėžė

Šį projektą pradėjome piešdami paprastą juodos dėžės schemą. Juodosios dėžės schema paprasčiausiai parodo įėjimus ir išėjimus, kurių mūsų sistemai reikia norint užbaigti visus būtinus procesus. Mes stengėmės, kad mūsų dizainas būtų kuo paprastesnis ir paprastesnis. Mūsų trys sistemos įvestys apima judesio jutiklių magistralę (4 mūsų sumažinto modelio), pėsčiųjų nepaisymo mygtuką ir laikrodžio įvestį. Kita vertus, mūsų vienintelis išėjimas yra LED žibintų magistralė, vaizduojanti mūsų gatvių žibintus. Šiam modeliui mes panaudojome 16 gatvių žibintų scenarijų vien todėl, kad tai yra didžiausias „Basys 3“plokštėje įmontuotų LED išėjimų skaičius. Galiausiai, naudodamiesi šia diagrama, galėjome sukurti savo „Vivado“projekto, šaltinio ir apribojimų failus su tinkamomis įvestimis ir išvestimis.

2 žingsnis: komponentai

Komponentai
Komponentai
Komponentai
Komponentai

Šiame žingsnyje mes gilinamės giliau, nagrinėdami komponentus, sudarančius mūsų juodosios dėžės diagramą. Pirmasis mūsų komponentas yra VHDL šaltinio failas, kuriame yra D šlepetės. D šlepetės tiesiog priima bet kokį signalą, kurį jiems įveda iš kylančio laikrodžio krašto jutiklių, ir fiksuoja šiuos duomenis iki kito kylančio krašto. Tai apsaugo mūsų jautrius judesio jutiklius, kad išvesties šviesos diodai „nemirksėtų“. Be to, ant mygtuko įvesties signalo uždedame vieną D šlepetę, kad šviesos diodai degtų maždaug 5-7 sekundes po mygtuko paspaudimo. Mes taip pat tai atlikome per laikrodžio skirstytuvą.

subjektas clk_div2 yra uostas (clk: std_logic; sclk: out std_logic); pabaiga clk_div2;

„clk_div2“architektūra „my_clk_div“yra

pastovus maks. skaičius: sveikasis skaičius: = (300000000); signalas tmp_clk: std_logic: = '0'; pradėti my_div: process (clk, tmp_clk) kintamasis div_cnt: integer: = 0; pradėti, jei (kylančioji briauna (clk)), tada jei (div_cnt = MAX_COUNT), tada tmp_clk <= ne tmp_clk; div_cnt: = 0; else div_cnt: = div_cnt + 1; baigti, jei; baigti, jei; sclk <= tmp_clk; baigti procesą my_div; pabaiga my_clk_div;

Paskutinis mūsų šios diagramos komponentas yra elgesio VHDL šaltinio failas, kuriame yra išėjimų sąlygos, pagrįstos įvesties signalų konfigūracija.

3 žingsnis: D Šlepetės

D Šlepetės
D Šlepetės

Keturi šleifai, pritvirtinti prie įvesties signalų, yra būtini mūsų sistemos funkcionalumui. Kaip minėta anksčiau, naudojant jautrius judesio jutiklius ir nepaisymo mygtuką, šlepetės naudoja skląsčius, kad įvesties signalą perduotų tik kylančiam laikrodžio kraštui. Ši nuosekli logika reiškia, kad mūsų gatvės žibintai gali veikti tam tikrą laiką po to, kai juos suaktyvina greitas judesys. „D-Flip Flop“kodavimas yra gana paprastas:

startprocess (CLK) prasideda, jei kylančioji briauna (CLK) tada Q <= D; pabaiga, jei; pabaigos procesas;

Visa tai galima sujungti į vieną „if“teiginį. Kai turėjome šį kūrinį, sukūrėme struktūrinį VHDL šaltinio failą, kuriame yra visi keturi būtini šlepetės:

pradėti DFF0: DFF prievadų žemėlapis (CLK => CLK, D => D (0), Q => Q (0)); DFF1: DFF prievadų žemėlapis (CLK => CLK, D => D (1), Q => Q (1)); DFF2: DFF prievadų žemėlapis (CLK => CLK, D => D (2), Q => Q (2)); DFF3: DFF prievadų žemėlapis (CLK => CLK, D => D (3), Q => Q (3));

pabaiga Elgesys;

Tai padeda išlaikyti pagrindinį struktūrinį failą, kuriame visus sistemos komponentus sujungiame daug švariau ir tvarkingiau.

4 žingsnis: Sąlygos

Siekdami, kad mūsų kodas būtų kompaktiškas ir efektyvus, visas sąlygines sąlygas įrašėme į vieną atvejo pareiškimą. Mūsų sumažinto modelio atveju turėjome 16 galimų LED išvesties konfigūracijų, nes kiekvienas judesio jutiklis yra atsakingas už 4 šviesos diodų grupę.:

atvejis NMS yra, kai "1111" => LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED <= "1111111111111111"; pabaigos atvejis;

5 žingsnis: Apribojimai

Norėdami tinkamai nurodyti savo įvestį ir išvestį naudodami „Vivado“, turite įdiegti apribojimo failą, kuriame nurodomi visi naudojami prievadai, mygtukai, šviesos diodai ir laikrodžiai.

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_operty_PACK] 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]}] set_property WACK 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_property U14 [gauti] 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 V13 [8]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [8]}] set_property PACKAGE_PIN V3 [get_ports {LED [9]}] set_property IO STANDARTAS 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 [LV] iOS_OST] [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_propertyMOS33 [gauti] {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 LVCMOS33 [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_operty_PACK] 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 veiksmas: pagrindinis šaltinio failas

Šiame pagrindiniame faile mes sujungiame visus anksčiau paminėtus komponentų šaltinio failus. Šis failas veikia kaip struktūrinis kodas, sujungiantis skirtingus komponentus.

subjektas „Master_Final_Project“yra prievadas (BTN: STD_LOGIC; CLK: STD_LOGIC; MS: STD_LOGIC_VECTOR (nuo 3 iki 0); šviesos diodas: išjungtas STD_LOGIC_VECTOR (nuo 15 iki 0)); end Master_Final_Project;

architektūra „Master_Final_Project“elgsena yra

komponento galutinis_projektas yra prievadas (--CLK: STD_LOGIC; NMS: į STD_LOGIC_VECTOR (3 iki 0); BTN: į STD_LOGIC; --sw: į STD_LOGIC_Vector (nuo 1 iki 0); šviesos diodas: iš STD_LOGIC_VECTOR (nuo 15 iki 0)); galinis komponentas;

komponentas Final_DFF yra

Uostas (CLK: STD_LOGIC; D: STD_LOGIC_Vector (nuo 3 iki 0); Q: iš STD_LOGIC_Vector (nuo 3 iki 0)); galinis komponentas;

signalas DFF02proj30: STD_LOGIC;

signalas DFF12proj74: STD_LOGIC; signalas DFF22proj118: STD_LOGIC; signalas DFF32proj1512: STD_LOGIC;

pradėti

DFF0: Galutinis_DFF prievadų žemėlapis (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 uosto žemėlapis (NMS (0) => DFF02proj30, NMS (1) => DFF12proj74, NMS (2) => DFF22proj118, NMS (3) => DFF32proj1512, BTN => BTN, LED => LED); pabaiga Elgesys;

7 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

Šio projekto aparatūros surinkimas yra minimalus. Vieninteliai reikalingi elementai yra šie:

1. „Basys 3“lenta (1)

2. Pigūs judesio jutikliai, kuriuos galima rasti „Amazon“čia. (4)

3. Laidai nuo vyrų iki moterų (4)

Surinkimas:

1. Prijunkite 4 kištukinius laidus prie „PMod“antraštės JB 1-4 prievadų (žr. Paveikslėlį).

2. Prijunkite galus prie kiekvieno judesio jutiklio išvesties kaiščio.

8 žingsnis: Įkelkite programą

Dabar esame pasirengę įkelti VHDL pagrindinio šaltinio failą į „Basys 3“plokštę. Būtinai paleiskite sintezę, diegimą ir sugeneruokite srauto tikrinimą, ar nėra galimų klaidų. Jei viskas veikia sėkmingai, atidarykite aparatūros tvarkyklę ir užprogramuokite „Basys 3“įrenginį. Jūsų projektas dabar baigtas!

Rekomenduojamas: