Përmbajtje:

Lëvizje me Efiçencë të Energjisë Dritat e Rrugës të Aktivizuara: 8 Hapa
Lëvizje me Efiçencë të Energjisë Dritat e Rrugës të Aktivizuara: 8 Hapa

Video: Lëvizje me Efiçencë të Energjisë Dritat e Rrugës të Aktivizuara: 8 Hapa

Video: Lëvizje me Efiçencë të Energjisë Dritat e Rrugës të Aktivizuara: 8 Hapa
Video: Живое прослушивание: полная коллекция #BringYourWorth (официальное аудио) 2024, Nëntor
Anonim
Lëvizje me Efiçiencë të Energjisë Dritat e Rrugës
Lëvizje me Efiçiencë të Energjisë Dritat e Rrugës

Qëllimi ynë me këtë projekt ishte të krijonim diçka që do të kursente energjinë dhe burimet financiare të komuniteteve. Dritat e rrugës të aktivizuara nga lëvizja do t'i bënin të dyja këto gjëra. Në të gjithë vendin energjia po tretet në dritat e rrugëve duke ndriçuar rrugët që janë bosh. Sistemi ynë i dritës në rrugë siguron që dritat të ndizen vetëm kur është e nevojshme, duke kursyer dollarë të panumërt për komunitetet. Duke përdorur sensorë lëvizjeje, sistemi ndez dritat vetëm kur makinat janë të pranishme. Gjithashtu për sigurinë e këmbësorëve, ne zbatuam një buton anashkalimi që ndez të gjitha dritat në rrugë. Hapat e mëposhtëm do t'ju tregojnë se si ne kemi projektuar dhe ndërtuar modelin tonë të zvogëluar të projektit duke përdorur Vivado dhe një tabelë Basys 3.

Hapi 1: Sistemi i Kutisë së Zezë

Sistemi Kutia e Zezë
Sistemi Kutia e Zezë

Ne e filluam këtë projekt duke vizatuar një diagram të thjeshtë të kutisë së zezë. Një diagram i kutisë së zezë thjesht tregon hyrjet dhe daljet që kërkon sistemi ynë për të përfunduar të gjitha proceset e nevojshme. Ne u përpoqëm ta mbanim modelin tonë sa më të thjeshtë dhe bazë. Tre hyrjet tona të sistemit përfshinin një autobus të sensorëve të lëvizjes (4 për modelin tonë të zvogëluar), një buton të anashkalimit të këmbësorëve dhe një hyrje të orës. Nga ana tjetër dalja jonë e vetme është një autobus me drita LED që përfaqësojnë dritat tona të rrugës. Për këtë model ne përdorëm një skenar prej 16 dritash në rrugë thjesht sepse ky është numri maksimal i daljeve LED të integruara në tabelën Basys 3. Së fundi, duke përdorur këtë diagram ne ishim në gjendje të krijonim projektin, burimin dhe skedarët tanë të Vivado me hyrje dhe dalje të përshtatshme.

Hapi 2: Përbërësit

Komponentët
Komponentët
Komponentët
Komponentët

Në këtë hap ne zhytemi duke shqyrtuar më thellë përbërësit që përbëjnë diagramin tonë të kutisë së zezë. Komponenti ynë i parë është një skedar burimi VHDL që përmban flip-flops. Flip-flop-et thjesht marrin çfarëdo sinjali që po u futet atyre nga sensorët në skajin në rritje të orës dhe i mbërthen ato të dhëna deri në skajin tjetër në rritje. Kjo i mban sensorët tanë të ndjeshëm të lëvizjes që të mos shkaktojnë "ndezje" të LED -ve dalëse. Gjithashtu, ne vendosim një flip-flop të vetëm D në sinjalin e hyrjes së butonit për t'i mbajtur LED-të të ndezura për rreth 5-7 sekonda pasi të jetë shtypur butoni. Ne gjithashtu e kaluam këtë përmes një ndarësi të orës.

entiteti clk_div2 është Port (clk: në std_logic; sclk: out std_logic); fund clk_div2;

arkitektura my_clk_div e clk_div2 është

konstante max_count: numër i plotë: = (300000000); sinjal tmp_clk: std_logic: = '0'; fillo my_div: proces (clk, tmp_clk) ndryshore div_cnt: numër i plotë: = 0; filloni nëse (buza_ -ngritëse (clk)) pastaj nëse (div_cnt = MAX_COUNT) atëherë tmp_clk <= jo tmp_clk; div_cnt: = 0; tjetër div_cnt: = div_cnt + 1; mbaron nëse; mbaron nëse; sclk <= tmp_clk; përfundoj procesin my_div; mbaroj my_clk_div;

Komponenti ynë përfundimtar në këtë diagram është një skedar burimi VHDL i sjelljes që përmban kushte për daljet bazuar në konfigurimin e sinjaleve hyrëse.

Hapi 3: D Flip-Flops

D Flip-Flops
D Flip-Flops

Katër rrokullisjet e bashkangjitura në sinjalet hyrëse janë thelbësore për funksionalitetin e sistemit tonë. Siç u tha më parë, me sensorë të ndjeshëm të lëvizjes dhe një buton të anashkalimit, flip-flops përdorin shulë për të nxjerrë sinjalin tonë hyrës vetëm në skajin në rritje të orës. Kjo logjikë sekuenciale do të thotë që dritat tona të rrugës mund të qëndrojnë të ndezura për një periudhë të caktuar kohe pasi të nxiten nga një lëvizje e shpejtë. Kodimi për një D-Flip Flop është mjaft i thjeshtë:

fillimi i procesit (KLK) fillon nëse buza e ngritjes (KLK) atëherë Q <= D; mbaron nëse; përfundimi i procesit;

E gjithë gjëja mund të përpilohet në një deklaratë të vetme nëse. Pasi e kishim këtë pjesë, ne krijuam një skedar strukturor burimi VHDL që përmbante të katër rrokullisjet tona të nevojshme:

fillo DFF0: Harta e portit DFF (CLK => CLK, D => D (0), Q => Q (0)); DFF1: Harta e portit DFF (CLK => CLK, D => D (1), Q => Q (1)); DFF2: Harta e portit DFF (CLK => CLK, D => D (2), Q => Q (2)); DFF3: Harta e portit DFF (CLK => CLK, D => D (3), Q => Q (3));

fund Sjellja;

Kjo ndihmon në mbajtjen e skedarit tonë kryesor strukturor ku ne i bashkojmë të gjithë përbërësit e sistemit shumë më të pastër dhe të organizuar.

Hapi 4: Kushtëzimet

Për ta mbajtur kodin tonë kompakt dhe efikas, ne i shkruam të gjitha kushtet tona në një deklaratë të rastit të vetëm. Për modelin tonë të zvogëluar, ne kishim 16 konfigurime të mundshme të daljes LED pasi secili sensor lëvizjeje është përgjegjës për një grup prej 4 LED.:

rasti NMS është kur "1111" => LED LED LED LED LED LED LED LED LED LED LED LED <= "111111111111111111"; rasti përfundimtar;

Hapi 5: Kufizimet

Në mënyrë që të deklaroni siç duhet hyrjet dhe daljet tuaja duke përdorur Vivado, duhet të zbatoni një skedar kufizues që tregon të gjitha portat, butonat, LED -të dhe orët që përdoren.

set_property PACKAGE_PIN W5 [merrni_portet CLK] set_property IOSTANDARD LVCMOS33 [merrni_portet CLK]

set_property PACKAGE_PIN U16 [merrni_porte {LED [0]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {LED [0]}] set_property PACKAGE_PIN E19 [merrni_porte {LED [1]}] set_property IOSTANDARD LVCMOS33 [get_port] LED U19 [merrni_porte {LED [2]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {LED [2]}] set_property PACKAGE_PIN V19 [merrni_porte {LED [3]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {LED [3]}] set_property PAC get_ports {LED [4]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {LED [4]}] set_property PACKAGE_PIN U15 [merrni_porte {LED [5]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {LED [5]}] set_propertIN PACKAGE LED [6]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {LED [6]}] set_property PACKAGE_PIN V14 [merrni_porte {LED [7]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {LED [7]}] set_property PACKAGE_PIN V13 8]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {LED [8]}] set_property PACKAGE_PIN V3 [merrni_porte {LED [9]}] set_property IO STANDARD LVCMOS33 [merrni_porte {LED [9]}] set_property PACKAGE_PIN W3 [merrni_porte {LED [10]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {LED [10]}] set_property PACKAGE_PIN U3 [merrni_porte33 IOS_ARD [LED] LE [merrni_porte {LED [11]}] set_property PACKAGE_PIN P3 [merrni_porte {LED [12]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {LED [12]}] set_property PACKAGE_PIN N3 [merrni_porte {LED [13]}] set_property IOSTANDARD {LED [13]}] set_property PACKAGE_PIN P1 [merrni_porte {LED [14]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {LED [14]}] set_property PACKAGE_PIN L1 [merrni_porte {LED [15]}] set_property IOSTANDARD LVCMOS [15]}]

set_property PACKAGE_PIN U18 [merrni_portet BTN] set_property IOSTANDARD LVCMOS33 [merrni_portet BTN]

set_property PACKAGE_PIN A14 [merrni_porte {MS [0]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {MS [0]}] set_property PACKAGE_PIN A16 [merrni_porte {MS [1]}] set_property IOSTANDARD LVCMOS_PORT_INPORT {MS_PROP_TY_PROK_START_START_PROK_START_PROK_START_START_PROK_START_PROK_START_PROK_START_PROK_START_PROKTY B15 [merrni_porte {MS [2]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {MS [2]}] set_property PACKAGE_PIN B16 [merrni_porte {MS [3]}] set_property IOSTANDARD LVCMOS33 [merrni_porte {MS [3]}]

Hapi 6: Skedari kryesor i burimit

Në këtë skedar kryesor ne bashkojmë të gjithë skedarët burim përbërës të përmendur më parë. Ky skedar funksionon si kod strukturor duke bashkuar përbërësit e ndryshëm.

entiteti Master_Final_Projekti është Port (BTN: në STD_LOGIC; CLK: në STD_LOGIC; MS: në STD_LOGIC_VECTOR (3 poshtë 0); LED: jashtë STD_LOGIC_VECTOR (15 poshtë 0)); përfundo Projektin Master_Final_;

arkitektura Sjellja e Projektit Master_Final është

komponenti final_projekti është Porti (–CLK: në STD_LOGIC; NMS: në STD_LOGIC_VECTOR (3 poshtë 0); BTN: në STD_LOGIC;-sw: në STD_LOGIC_Vector (1 poshtë 0); LED: jashtë STD_LOGIC_V komponenti përfundimtar;

komponenti Final_DFF është

Port (CLK: në STD_LOGIC; D: në STD_LOGIC_Vektor (3 poshtë 0); P: jashtë STD_LOGIC_Vektor (3 poshtë 0)); komponenti përfundimtar;

sinjal DFF02proj30: STD_LOGIC;

sinjal DFF12proj74: STD_LOGIC; sinjal DFF22proj118: STD_LOGIC; sinjal DFF32proj1512: STD_LOGIC;

filloj

DFF0: Harta e portit 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: harta përfundimtare e_projektit (NMS (0) => DFF02proj30, NMS (1) => DFF12proj74, NMS (2) => DFF22proj118, NMS (3) => DFF32proj1512, BTN => BTN, LED => LED); fund Sjellja;

Hapi 7: Montimi

Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi

Asambleja e harduerit për këtë projekt është minimal. Pjesët e vetme të kërkuara janë si më poshtë:

1. Basys 3 bordi (1)

2. Sensorë të lirë të lëvizjes që mund të gjenden në amazon këtu. (4)

3. Drejtues meshkuj-femra (4)

Kuvendi:

1. Lidhni 4 priza mashkullore në portat JB të kokës PMod 1-4 (Shih Figurën).

2. Lidhni skajet femra me kunjin dalës të secilit sensor lëvizjeje.

Hapi 8: Ngarkimi i Programit

Tani jemi gati të ngarkojmë skedarin burimor kryesor VHDL në tabelën Basys 3. Sigurohuni që të ekzekutoni sintezën, zbatimin dhe të krijoni kontrollimin e bitstream për çdo gabim të mundshëm. Nëse të gjitha funksionojnë me sukses, hapni menaxherin e pajisjeve dhe programoni pajisjen Basys 3. Projekti juaj tani ka përfunduar!

Recommended: