Përmbajtje:
- Hapi 1: Diagrami i Kutisë së Zezë
- Hapi 2: Makinat Shtetërore
- Hapi 3: Tabelat e së vërtetës së makinës, ekuacionet e eksitimit dhe ekuacionet e daljes
- Hapi 4: Mbështjellës, nënmodule dhe kufizim
- Hapi 5: Portat I/O për LED
Video: L I G H T S: 5 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:27
Qëllimi i këtij projekti përfundimtar ishte krijimi i diçkaje që do të fokusohej në qëndrueshmërinë dhe zbatimin e koncepteve të dizajnit dixhital, dhe për ta bërë këtë, vendosa të krijoj një sistem të shkallëzuar të kursimit të energjisë duke përdorur vhdl dhe të krijuar për Bordin Basys 3 (seria Artix-7 35T) I shkallëzueshëm sepse çdo numër sensorë mund të vendosen në një dhomë dhe çdo numër i këtyre sistemeve mund të vendoset rreth një ndërtese ose një shtëpie. Ajo që do të bënte ky sistem, është teorikisht të kursejë mijëra dollarë në ndërtesat komerciale dhe të zvogëlojë një përqindje të madhe të konsumit të energjisë në komunitetet më të vogla të banimit duke zbatuar një sistem të lidhur me drita të kontrolluara në mënyrë aktive dhe pasive, detektorë lëvizjeje, kohëmatës të shfaqur në shtatë ekrane segmentesh dhe çelsat e kontrollit. Ky shembull merret me një sistem të vetëm me tre detektorë lëvizjeje, një ndërprerës kryesor, një çelës manual/normal, katër ekrane me shtatë segmente dhe një dritë të vetme që sistemi kontrollon.
Për shembull, në një dhomë të zgjedhur, disa detektorë lëvizjeje do të vendoseshin përreth (ky model ka tre), dhe secili do të dërgonte një sinjal (1) nëse zbulon lëvizjen, dhe (0) nëse jo. Nëse të paktën një nga detektorët e lëvizjes zbulon lëvizjen, dritat ndizen nëse nuk janë ndezur dhe qëndrojnë ndezur nëse tashmë janë ndezur. Në çdo kohë të gjithë detektorët e lëvizjes nuk zbulojnë asgjë, një kohëmatës fillon të numërojë mbrapsht për një kohë të caktuar (i rregullueshëm në kod) dhe dritat qëndrojnë të ndezura ndërsa kohëmatësi numëron mbrapsht. Pasi kohëmatësi të përfundojë numërimin mbrapsht, kohëmatësi ndalon dhe dritat fiken. Nëse të paktën një detektor lëvizjeje zbulon lëvizjen ndërsa kohëmatësi po numëron mbrapsht, kohëmatësi ndalon dhe rivendoset. Dhe nëse të paktën një detektor lëvizjeje zbulon lëvizjen ndërsa dritat janë fikur, dritat ndizen menjëherë.
Ky sistem ka dy mënyra, një me kohëmatësin siç u tha më lart, dhe një të dytë ku ekziston një ndërprerës që kontrollon dritat me dorë (duke injoruar sensorët). Ekziston një ndërprerës kryesor që lejon përdoruesin të zgjedhë cilën mënyrë dëshiron të përdorë bazuar në cilindo që ata mendojnë se do të kursejë më shumë energji në përgjithësi. P.sh. Një dhomë e tillë si një korridor mund të përfitojë nga modaliteti pasiv i kohëmatësit- përdoruesit nuk janë të sigurt kur njerëzit do të kalojnë, por ndezja dhe fikja e dritave sa herë që ata hyjnë dhe dalin do të ishte një shqetësim, ndërsa një dhomë e tillë pasi një dhomë gjumi me një përdorues të vetëm do të operohej më mirë me dorë. Dhe çelësi kryesor do të ishte i dobishëm në raste të tilla si nëse personi që jeton në dhomën e gjumit do të largohej për një periudhë të gjatë kohore, atëherë çelësi kryesor mund të fiket dhe mënyra e kohëmatësit do të funksionojë për të kursyer energji në mënyrë më efikase.
Pra, në këtë sistem, ekzistojnë dy makina shtetërore, njëra është makina kryesore e gjendjes, dhe një tjetër për kohëmatësin e numërimit mbrapsht. Makina kryesore e gjendjes ka pesë gjendje të përcaktuara si të tilla: 1. "dritat ndezur, lëvizja u zbulua" (id = 000), 2. "dritat ndezur, asnjë lëvizje nuk u zbulua" (id = 001), 3. "dritat fikur, asnjë lëvizje zbuluar "(id = 010), 4." ndezur manualisht "(id = 011), dhe 5." fikur me dorë "(id = 100). Kjo makinë kryesore e gjendjes ka katër hyrje: çelësi kryesor (ms), çelësi manual/normal (ns), një sinjal që është i lartë kur të paktën një ndërprerës zbulon lëvizjen, dhe është i ulët ndryshe (orx), dhe një sinjal që është e lartë sapo të përfundojë kohëmatësi, dhe është e ulët ndryshe (td). Makina kryesore e gjendjes ka dy dalje: dritat (dritat) dhe një sinjal që tregon se kur duhet të ndizet kohëmatësi i numërimit (kohëmatësi) ose (t) (të dyja përdoren në mënyrë të ndërsjellë).
Makina e dytë e gjendjes, kohëmatësi i numërimit, ka 12 gjendje: 10 prej tyre kanë ID që lidhen me numrin që shfaq segmenti i shtatë- "seg 10" (id = 1010), "seg 9" (id = 1001), […], "Seg 2" (id = 0010), "seg 1" (id = 0001), dhe dy gjendjet e tjera të dyja shfaqin zero, duke përfaqësuar kohëmatësin të fikur- kështu që është boshllëku i parë "bosh 1" (id = 1111) dhe pjesa e dytë bosh "bosh 2" (id = 0000). Kohëmatësi i numërimit ka një hyrje: kohëmatësi (t) dhe tre dalje: numri i shfaqur në binar me katër bit (bin) dhe një sinjal që tregon se kohëmatësi është bërë (td).
Hapi 1: Diagrami i Kutisë së Zezë
Ky është një përmbledhje se si supozohet të funksionojë i gjithë sistemi dhe përshkruhet me një diagram të kutisë së zezë.
- Ora përdoret për të regjistruar makinën kryesore të gjendjes dhe deshifruesin e shtatë segmenteve; nevojitet një orë më e ngadaltë për numëruesin poshtë, kështu që ekziston një modul ndarës i orës që merr hyrjen e orës dhe nxjerr një orë më të ngadaltë për numëruesin poshtë.
- Variabli i ndërmjetëm (orx) në mbështjellës është i lidhur me sensorët e lëvizjes dhe do të jetë i lartë nëse të paktën njëri nga sensorët zbulon diçka, dhe i ulët ndryshe; ekuacioni boole për atë është vetëm orx = s (2) ose s (1) ose s (0).
-
Fsm kryesore kontrollon se në cilën gjendje të përgjithshme është sistemi, në varësi të hyrjeve (orx, ms, ns, td) dhe del nga gjendja aktuale në të cilën është (sm) e treguar e thjeshtuar me dy sinjalet për të cilat përdoret (kohëmatësi dhe dritat).
- (kohëmatësi) është një sinjal mbështjellës që dërgohet në numëruesin poshtë fsm si hyrje e tij dhe kontrollohet nga gjendja aktuale e fsm kryesore. Tregon se kur duhet të ndizni kohëmatësin.
- (dritat) është një sinjal mbështjellës përdoret për të kontrolluar led dhe kontrollohet nga gjendja aktuale e fsm kryesore.
-
Numëruesi poshtë fsm kontrollon atë që shfaq shtatë segmenti në varësi të hyrjes (kohëmatësit) dhe nxjerr gjendjen aktuale në të cilën është (sd) e treguar e thjeshtuar me dy sinjalet për të cilat përdoret (td dhe bin).
- (td) është një sinjal mbështjellës që dërgohet në fsm kryesore si hyrje e tij dhe kontrollohet nga gjendja aktuale e numëruesit poshtë të fsm. Funksionon si një sinjal reagimi që tregon se kur ka përfunduar kohëmatësi.
- (bin) është një sinjal mbështjellës katër bitësh që është i lidhur me katër bit zero ("0000" & bin) dhe tetë bitët e kombinuar dërgohen në (q), një sinjal mbështjellës tetë bitësh, që nga ana tjetër dërgohen te shtatë deshifruesi i segmentit nën (ALU_VAL).
-
Moduli me shtatë segmente është i njëjti si në Polylearn; hyrjet e tij kryesore marrin një numër prej 8 bitësh (bin) në (ALU_VAL) për t'u shfaqur në katër shtatë segmente të ndryshëm duke përdorur daljet (SEGMENTS) për të mbështjellur sinjalin (seg) dhe (DISP_EN) në mbështjellës (disp_en).
- Meqenëse dy ose më shumë shtatë segmente nuk mund të shfaqin shifra të ndryshme në të njëjtën kohë, nevojitet një orë për të qarkulluar nëpër katër ssegs, duke shfaqur shifrën e duhur në të njëjtën kohë për secilën sseg që ndizet individualisht dhe çiklizmi mjaft shpejt e bën ssegs duket se janë të gjitha në të njëjtën kohë.
- (shenja dhe e vlefshme) janë konstante gjatë këtij programi, kështu që (shenja) është vendosur përgjithmonë e ulët dhe (e vlefshme) është vendosur përgjithmonë lart.
- (ALU_VAL) merr sinjalin mbështjellës (q) si hyrje, e cila përfaqëson numrin që do të shfaqet në ekranin me shtatë segmente në binar.
- Dalja (SEGMENTS) dërgohet në një sinjal mbështjellës tetë bitësh (seg) dhe (DISP_EN) në një sinjal mbështjellës katër bitësh (disp_en).
-
Ekziston gjithashtu një modul flip -flop D i cili nuk tregohet shprehimisht në diagram, por është i nevojshëm për dy makinat e gjendjes si nënmodule dhe ndihmon tranzicionin e gjendjeve në mënyrë sinkronike.
- (3) nga këto nevojiten për fsm kryesore pasi 2^(3) = 8> 5 gjendje për kodimin
- (4) nga këto nevojiten për numëruesin poshtë fsm pasi 2^4 = 16> 12 gjendje për kodim
Hapi 2: Makinat Shtetërore
Për të hartuar siç duhet dy makinat shtetërore, gjendjet individuale duhet të përcaktohen qartë, me daljet e saj dhe gjendjen në të cilën kalon bazuar në hyrjet e ndryshme të mundshme.
FSM kryesore thotë:
"Dritat ndezur, lëvizja u zbulua" (id = 000)
Dritat janë të ndezura, të paktën një nga detektorët e lëvizjes zbulon lëvizjen, kështu që orx duhet të jetë i lartë dhe ms është ndezur.
- Rezultatet: dritat = 1 dhe kohëmatësi = 0
- Qëndron në këtë gjendje kur ms = 1 dhe orx = 1.
- Shkon në gjendjen "dritat e ndezura, asnjë lëvizje e zbuluar" nëse ms = 1 dhe orx = 0.
- Shkon në gjendjen "e ndezur manualisht" nëse ms = 0 dhe ns = 1.
- Shkon në gjendjen "fikur manualisht" nëse ms = 0 dhe ns = 0.
"Dritat ndezur, nuk u zbulua lëvizje" (id = 001)
Dritat janë të ndezura, asnjë lëvizje nuk zbulohet nga ndonjë detektor lëvizjeje, kështu që orx duhet të jetë i ulët dhe ms është ndezur. Gjithashtu në fillim të kësaj gjendje, kohëmatësi i vendosur lart i thotë numërimit mbrapsht fsm që të fillojë numërimin mbrapsht, vazhdon të numërojë mbrapsht dhe ndalon numërimin mbasi numërimi mbrapsht i thotë këtij fsm se ka mbaruar numërimi.
- Rezultatet: dritat = 1 dhe kohëmatësi = 1.
- Qëndron në këtë gjendje kur ms = 1 dhe orx = 0 dhe td (kohëmatësi është bërë) = 0.
- Shkon në gjendjen "dritat ndezur, lëvizja u zbulua" nëse ms = 1 dhe orx = 1.
- Shkon në gjendjen "dritat fikur, asnjë lëvizje nuk u zbulua" nëse ms = 1 dhe orx = 0 dhe td = 1.
- Shkon në gjendjen "e ndezur manualisht" nëse ms = 0 dhe ns = 1.
- Shkon në gjendjen "fikur manualisht" nëse ms = 0 dhe ns = 0.
"Dritat e fikura, asnjë lëvizje nuk u zbulua" (id = 010)
Dritat janë të fikura, asnjë lëvizje nuk zbulohet nga asnjë sensor lëvizjeje dhe kohëmatësi mbaron numërimin mbrapsht, kështu që orx duhet të jetë i ulët, ms është i ndezur dhe td është i fikur.
- Rezultatet: dritat = 0 dhe kohëmatësi = 0.
- Qëndron në këtë gjendje kur ms = 1 dhe orx = 0.
- Shkon në gjendjen "dritat ndezur, lëvizja u zbulua" nëse ms = 1 dhe orx = 1.
- Shkon në gjendjen "e ndezur manualisht" nëse ms = 0 dhe ns = 1.
- Shkon në gjendjen "fikur manualisht" nëse ms = 0 dhe ns = 0.
"Ndezur manualisht" (id = 011)
Dritat janë të ndezura, detektorët e lëvizjes janë të parëndësishëm, kështu që ms është fikur dhe ns është ndezur.
- Rezultatet: dritat = 1 dhe kohëmatësi = 0.
- Qëndron në këtë gjendje kur ms = 0 dhe ns = 1.
- Shkon në gjendjen "fikur manualisht" nëse ms = 0 dhe ns = 0.
- Shkon në gjendjen "dritat fiken, asnjë lëvizje nuk zbulohet nëse ms = 1.
"Fikur manualisht" (id = 100)
Dritat janë fikur, detektorët e lëvizjes janë të parëndësishëm, kështu që ms është fikur dhe ns është fikur.
- Rezultatet: dritat = 0 dhe kohëmatësi = 0.
- Qëndron në këtë gjendje kur ms = 0 dhe ns = 0.
- Shkon në gjendjen "e ndezur manualisht" nëse ms = 0 dhe ns = 1.
- Shkon në gjendjen "dritat fiken, asnjë lëvizje nuk zbulohet nëse ms = 1.
Counter poshtë thotë:
"Seg 10" (id = 1010)
Ekrani me shtatë segmente tregon një 10.
- Rezultatet: bin = "1010" dhe td = 0.
- Shkon në gjendjen "seg 9" nëse kohëmatësi = 1.
- Shkon në gjendjen "bosh 2" nëse kohëmatësi = 0.
"Seg 9" (id = 1001)
Ekrani me shtatë segmente tregon një 9.
- Rezultatet: bin = "1001" dhe td = 0.
- Shkon në gjendjen "seg 8" nëse kohëmatësi = 1.
- Shkon në gjendjen "bosh 2" nëse kohëmatësi = 0.
(Shtetet "Seg 8" deri në "Seg 2" janë lënë jashtë sepse ato ndjekin të njëjtin model si "Seg 10" dhe "Seg 9" dhe nuk është e nevojshme për shpjegim)
"Seg 1" (id = 0001)
Ekrani me shtatë segmente tregon një 1.
- Rezultatet: bin = "0001" dhe td = 0.
- Shkon në gjendjen "bosh 2" në skajin tjetër në rritje të orës (nuk kërkohet hyrje).
"Bosh 2" (id = 1111)
Shfaqja e shtatë segmenteve tregon një 0. Qëllimi i gjendjes së dytë bosh është që të ketë një gjendje të veçantë kur td = 1 për siguri.
- Rezultatet: bin = "1111" dhe td = 1.
- Shkon në gjendjen "bosh 1" në skajin tjetër në rritje të orës (nuk kërkohet hyrje).
"Bosh 1" (id = 0000)
Ekrani me shtatë segmente tregon një 0. Kjo është gjendja në të cilën qëndron sistemi kur makina e gjendjes kryesore është në gjendje "dritat fiken, asnjë lëvizje nuk zbulohet".
- Rezultatet: bin = "0000" dhe td = 0.
- Shkon në gjendjen "seg 10" nëse kohëmatësi = 1.
Hapi 3: Tabelat e së vërtetës së makinës, ekuacionet e eksitimit dhe ekuacionet e daljes
Hapi tjetër është krijimi i tabelave të së vërtetës për dy makinat e gjendjes dhe ekuacionet e ngacmimit dhe ekuacionet e daljes për secilën fsm. Për çdo ekuacion të ngacmimit fsm, duhet të ketë ekuacione për secilin bit të koduar të gjendjes tjetër në lidhje me gjendjen aktuale dhe sinjalet e tij hyrëse. Për çdo ekuacion të daljes fsm, duhet të ketë ekuacione për secilin sinjal dalës në lidhje me gjendjen aktuale. Të katër grupet e ekuacioneve mund të nxirren nga tabelat e së vërtetës të përshkruara. (qn është biti i koduar i gjendjes tjetër për secilën makinë shtetërore, dhe q është gjendja aktuale)
(000) ekuivalente me q (2) 'q (1)' q (0) ', dhe (0000) ekuivalent me q (3)' q (2) 'q (1)' q (0) '
(p.sh. (0101) është q (3) 'q (2) q (1)' q (0) dhe (110) është q (2) q (1) q (0) ')
Ekuacionet e ngacmimit për fsm kryesore:
- qn (2) = (ms) '(ns)
- qn (1) = (ms) '(ns)' + (ms) (orx) '[(td) (001) + (010)] + (ms) [(011) + (100)]
- qn (0) = (ms) '(ns)' + (ms) (orx) '[(000) + (td)' (001)]
Ekuacionet e daljes për fsm kryesore:
- dritat = (000) + (001) + (100)
- kohëmatësi = (001)
Ekuacionet e ngacmimit për numëruesin poshtë fsm:
- qn (3) = t [(0000) + (1010) + (1001) + (0001)]
- qn (2) = t [(1000) + (0111) + (0110) + (0101) + (0001)]
- qn (1) = t [(0000) + (1000) + (0111) + (0100) + (0011) + (0001)]
- qn (0) = t [(1010) + (1000) + (0110) + (0100) + (0010) + (0001)]
Ekuacionet e daljes për numëruesin poshtë fsm:
- td = (1111)
- kosh (3) = (1010) + (1001) + (1000) + (1111) + (0000)
- kosh (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
- kosh (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
- kosh (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)
Hapi 4: Mbështjellës, nënmodule dhe kufizim
Siç është shpjeguar tashmë në Hapin 1, këto module janë të nevojshme për këtë projekt dhe të gjitha janë të lidhura së bashku me modulin mbështjellës të titulluar "final_proj.vhd". Skedari kufizues i titulluar "Basys3_Master.xdc" përdoret për të lidhur të gjitha hyrjet dhe daljet e mbështjellësit me çelsin, shtatë segmentet dhe portat I/O në tabelën Basys 3. Ndërprerësi kryesor duhet të jetë çelësi në tabelën më afër anës ku janë instaluar telat, çelësi normal/manual është i dyti më i afërt dhe tre çelsat që përfaqësojnë tre sensorët e lëvizjes janë tre çelsin menjëherë pranë ndërprerësit normal/manual Me I gjithë kodi (ekuacionet boolean, deklaratat e moduleve, etj) është shkruar tashmë në skedarë, kështu që nuk keni nevojë të shkruani asgjë tjetër për ta bërë këtë punë.
Hapi 5: Portat I/O për LED
Hapi i fundit për këtë projekt është përdorimi i një led për të treguar nëse (dritat) vërtet ndizen ose fiken. Instalimet elektrike janë treguar në dy fotografitë. Sigurohuni që ka një rezistencë në seri me led (të paktën 330 ohms) për të mos djegur led -in dhe sigurohuni që kunja e gjatë e led -it është e lidhur me të njëjtën kokë femre në tabelën e bazës siç tregohet tela e kuqe (sipër djathtas) dhe kunja më e shkurtër është e lidhur me tokën, e njëjta kokë femër si tela e zezë e treguar (lart, e dyta nga e majta).
Recommended:
Si të bëni 4G LTE Antenë të BiQuade të Dyfishtë Hapa të Lehtë: 3 Hapa
Si të bëni 4G LTE Antenë BiQuade të Dyfishtë Hapa të Lehtë: Shumicën e kohës me të cilën jam përballur, nuk kam forcë të mirë të sinjalit në punët e mia të përditshme. Kështu që. Kërkoj dhe provoj lloje të ndryshme antenash por nuk funksionoj. Pas humbjes së kohës gjeta një antenë që shpresoj ta bëj dhe ta provoj, sepse është parimi i ndërtimit jo
Dizajni i lojës në lëvizje në 5 hapa: 5 hapa
Dizajni i lojës në Flick në 5 hapa: Flick është një mënyrë vërtet e thjeshtë për të bërë një lojë, veçanërisht diçka si një enigmë, roman vizual ose lojë aventure
Zbulimi i fytyrës në Raspberry Pi 4B në 3 hapa: 3 hapa
Zbulimi i fytyrës në Raspberry Pi 4B në 3 hapa: Në këtë Instructable ne do të bëjmë zbulimin e fytyrës në Raspberry Pi 4 me Shunya O/S duke përdorur Bibliotekën Shunyaface. Shunyaface është një bibliotekë për njohjen/zbulimin e fytyrës. Projekti synon të arrijë shpejtësinë më të shpejtë të zbulimit dhe njohjes me
Pasqyrë DIY Vanity në hapa të thjeshtë (duke përdorur dritat LED të shiritit): 4 hapa
DIY Vanity Mirror në hapa të thjeshtë (duke përdorur dritat e shiritit LED): Në këtë postim, unë bëra një DIY Vanity Mirror me ndihmën e shiritave LED. Reallyshtë vërtet e lezetshme dhe duhet t'i provoni gjithashtu
Qëndrim për laptopë me 3 hapa dhe 3 hapa (me syze leximi dhe tabaka me stilolaps): 5 hapa
Qëndrim për laptopë me hapa 3 & 3 hapa (me syze leximi dhe tabaka për stilolapsa): Kjo $ 3 & Qëndrimi i laptopit me 3 hapa mund të bëhet brenda 5 minutave. It'sshtë shumë e fortë, me peshë të lehtë dhe mund të paloset për ta marrë kudo që të shkoni