Sadržaj:
- Korak 1: Dijagram Crne kutije
- Korak 2: Državne mašine
- Korak 3: Navedite tabele istinitosti mašina, jednačine pobude i izlazne jednačine
- Korak 4: Omotač, podmoduli i ograničenje
- Korak 5: I/O portovi za LED
Video: L I G H T S: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Svrha ovog završnog projekta bila je stvoriti nešto što bi se fokusiralo na održivost i implementiralo koncepte digitalnog dizajna, a kako bih to učinio, odlučio sam dizajnirati skalabilan sistem za uštedu energije pomoću vhdl-a i napravio za Basys 3 ploču (serija Artix-7 35T). Skalabilan jer se u sobu može postaviti bilo koji broj senzora, a bilo koji broj ovih sistema može se postaviti oko zgrade ili kuće. Ono što bi ovaj sistem učinio je teoretski uštedjeti hiljade dolara u poslovnim zgradama i smanjiti veliki postotak potrošnje energije u manjim stambenim zajednicama implementacijom povezanog sistema aktivno i pasivno upravljanih svjetala, detektora pokreta, mjerača vremena prikazanih na sedam segmentnih ekrana i upravljački prekidači. Ovaj primjer se bavi jednim sistemom sa tri detektora pokreta, glavnim prekidačem, ručnim/normalnim prekidačem, četiri ekrana sa sedam segmenata i jednim svjetlom kojim sistem upravlja.
Na primjer, u odabranoj prostoriji, nekoliko detektora pokreta bi bilo postavljeno okolo (ovaj primjer ima tri), a svaki bi slao signal (1) ako detektira kretanje, i (0) ako ne. Ako barem jedan od detektora pokreta otkrije kretanje, svjetla će se upaliti ako već nisu uključena i ostati upaljena ako su već uključena. U svakom trenutku svi detektori pokreta ništa ne otkrivaju, mjerač vremena počinje odbrojavati određeno vrijeme (podesivo prema kodu), a svjetla ostaju upaljena dok odbrojavač odbrojava. Kad tajmer završi odbrojavanje, tajmer se zaustavlja, a svjetla se isključuju. Ako barem jedan detektor pokreta otkrije kretanje dok odbrojavanje odbrojava, tajmer se zaustavlja i resetira. A ako barem jedan detektor pokreta otkrije kretanje dok su svjetla isključena, svjetla se odmah pale.
Ovaj sistem ima dva načina rada, jedan sa gore navedenim tajmerom, i drugi gdje se nalazi prekidač koji ručno kontrolira svjetla (zanemarujući senzore). Postoji glavni prekidač koji omogućava korisniku da odabere način rada koji želi koristiti na temelju onog za koji smatra da će ukupno uštedjeti više energije. Dok. Soba poput hodnika mogla bi imati koristi od načina pasivnog mjerenja vremena- korisnici nisu sigurni kada će ljudi prolaziti, ali uključivanje i isključivanje svjetla svaki put kada uđu i izađu bila bi neugodnost, dok bi takva soba jer bi se spavaćom sobom sa jednim korisnikom bolje ručno upravljalo. Glavni prekidač bi bio od pomoći u slučajevima kao što je ako bi osoba koja živi u spavaćoj sobi odlazila na duže vrijeme, tada bi se glavni prekidač mogao isključiti i način rada tajmera bi radio na učinkovitijoj uštedi energije.
Dakle, u ovom sistemu postoje dvije mašine stanja, jedna je glavna mašina stanja, a druga za mjerač vremena. Mašina glavnog stanja ima pet definisanih stanja: 1. "svjetla uključena, otkriveno kretanje" (id = 000), 2. "svjetla uključena, kretanje nije otkriveno" (id = 001), 3. "svjetla isključena, nema kretanja" otkriveno "(id = 010), 4." ručno uključeno "(id = 011) i 5." ručno isključeno "(id = 100). Ova glavna mašina stanja ima četiri ulaza: glavni prekidač (ms), ručni/normalni prekidač (ns), signal koji je visok kada barem jedan prekidač detektira kretanje, a inače je nizak (orx) i signal koji je visoka nakon što se odbrojavanje završi, a u suprotnom je niska (td). Glavni državni stroj ima dva izlaza: svjetla (svjetla) i signal koji pokazuje kada treba uključiti odbrojavanje (mjerač vremena) ili (t) (oba se koriste naizmjenično).
Druga mašina stanja, tajmer za odbrojavanje, ima 12 stanja: 10 od njih imaju ID-ove povezane sa brojem koji prikazuje sedam segmenata- „seg 10“(id = 1010), „seg 9“(id = 1001), […], „Seg 2“(id = 0010), „seg 1“(id = 0001), a druga dva stanja prikazuju nulu, predstavljajući isključeni tajmer- tako da postoji prva prazna „prazna 1“(id = 1111) i drugo prazno "prazno 2" (id = 0000). Odbrojavač ima jedan ulaz: mjerač vremena (t) i tri izlaza: broj prikazan u binarnom obliku s četiri bita (spremnik) i signal koji pokazuje da je mjerač vremena obavljen (td).
Korak 1: Dijagram Crne kutije
Ovo je pregled načina na koji bi cijeli sistem trebao raditi i opisan je dijagramom u crnoj kutiji.
- Sat se koristi za taktiranje glavne državne mašine i dekodera za sedam segmenata; sporiji sat je potreban za brojač dolje, pa postoji modul razdjelnika sata koji uzima ulaz sata i daje sporiji sat za brojač dolje.
- Srednja varijabla (orx) u omotu vezana je za senzore pokreta i bit će visoka ako barem jedan od senzora nešto otkrije, a u suprotnom niska; logička jednadžba za to je samo orx = s (2) ili s (1) ili s (0).
-
Glavni fsm kontrolira opće stanje u kojem se sistem nalazi, ovisno o ulazima (orx, ms, ns, td) i odašilje trenutno stanje u kojem je (sm) prikazano pojednostavljeno s dva signala za koja se koristi (mjerač vremena i svjetla).
- (timer) je signal omotača koji se šalje donjem brojaču fsm kao njegov ulaz i kontrolira ga trenutno stanje glavnog fsm -a. Pokazuje kada treba uključiti mjerač vremena.
- (svjetla) je signal omotača koji se koristi za kontrolu LED diode i kontrolira se trenutnim stanjem glavnog FM -a.
-
Brojač nadole fsm kontroliše šta prikazuje sedam segmenata u zavisnosti od ulaza (tajmer) i izbacuje trenutno stanje u kojem je (sd) prikazano pojednostavljeno sa dva signala za koja se koristi (td i bin).
- (td) je omotni signal koji se šalje glavnom fsm -u kao njegov ulaz i kontrolira ga trenutno stanje fsm brojača prema dolje. Funkcionira kao povratni signal koji pokazuje kada je odbrojavanje gotovo.
- (bin) je četverobitni signal omotača koji je spojen sa četiri bita nule (“0000” & bin), a kombiniranih osam bitova se šalju na (q), osmobitni signal omotača, koji se zatim šalje na sedam segmentni dekoder pod (ALU_VAL).
-
Modul sa sedam segmenata je isti kao i na Polylearnu; njegovi glavni ulazi uzimaju 8 -bitni broj (bin) do (ALU_VAL) za prikaz na četiri različita ekrana sa sedam segmenata koristeći izlaze (SEGMENTS) do signala omotača (seg) i (DISP_EN) do omotača (disp_en).
- Budući da dva ili više ekrana sa sedam segmenata ne mogu prikazati različite znamenke u isto vrijeme, potreban je sat za kretanje kroz četiri segmenta, prikazujući odgovarajuću znamenku odjednom za svaki pojedinačni uključivanje ssega, a cikličnim ciklusom dovoljno brzo izgleda da su ssegovi uključeni odjednom.
- (znak i važeći) su konstantne u ovom programu, tako da je (znak) trajno nisko postavljeno, a (važeće) trajno visoko.
- (ALU_VAL) uzima signal omotača (q) kao ulaz, koji predstavlja broj koji će biti prikazan na sedmosegmentnom ekranu u binarnom obliku.
- Izlaz (SEGMENTS) se šalje na osmobitni signal omotača (seg) i (DISP_EN) na četverobitni signal omotača (disp_en).
-
Postoji i D flip flop modul koji nije eksplicitno prikazan na dijagramu, ali je potreban za dva stroja stanja kao podmoduli i pomaže sinhronom tranziciji stanja.
- (3) od njih su potrebni za glavni fsm budući da je 2^(3) = 8> 5 stanja za kodiranje
- (4) od njih su potrebni za dolje brojač fsm budući da je 2^4 = 16> 12 stanja za kodiranje
Korak 2: Državne mašine
Da bi se pravilno dizajnirale dvije mašine stanja, pojedina stanja moraju biti jasno definirana, sa njihovim izlazima i stanjem u koje prelaze na osnovu različitih mogućih ulaza.
Glavna stanja fsm -a:
"Svjetla uključena, otkriveno kretanje" (id = 000)
Svjetla su upaljena, barem jedan od detektora pokreta detektira kretanje, pa orx mora biti visok i uključeno je ms.
- Izlazi: svjetla = 1 i tajmer = 0
- Ostaje u ovom stanju kada je ms = 1 i orx = 1.
- Prelazi u stanje "svjetla uključena, nije otkriveno kretanje" ako je ms = 1 i orx = 0.
- Prelazi u stanje "ručno uključeno" ako je ms = 0 i ns = 1.
- Prelazi u stanje "ručno isključeno" ako je ms = 0 i ns = 0.
"Svijetli, svjetlo nije otkriveno" (id = 001)
Svjetla su uključena, nijedan pokret nije detektiran, pa orx mora biti nizak i uključen ms. Također na početku ovog stanja, mjerač vremena postavljen na visoko kaže odbrojavanju fsm da počne odbrojavati, nastavlja odbrojavanje i prestaje odbrojavati nakon što fsm odbrojavanja kaže ovom fsm -u da je završeno odbrojavanje.
- Izlazi: svjetla = 1 i tajmer = 1.
- Ostaje u ovom stanju kada je ms = 1 i orx = 0 i td (timer je gotov) = 0.
- Prelazi u stanje "svjetla uključena, otkriveno kretanje" ako je ms = 1 i orx = 1.
- Prelazi u stanje “svjetla ugašena, nije otkriveno kretanje” ako je ms = 1 i orx = 0 i td = 1.
- Prelazi u stanje "ručno uključeno" ako je ms = 0 i ns = 1.
- Prelazi u stanje "ručno isključeno" ako je ms = 0 i ns = 0.
"Ugašeno svjetlo, nije otkriveno kretanje" (id = 010)
Svjetla su isključena, nijedan pokret nije otkriven s bilo kojeg senzora pokreta i tajmer je završio odbrojavanje, pa orx mora biti nizak, ms je uključen, a td isključen.
- Izlazi: svjetla = 0 i mjerač vremena = 0.
- Ostaje u ovom stanju kada je ms = 1 i orx = 0.
- Prelazi u stanje "svjetla uključena, otkriveno kretanje" ako je ms = 1 i orx = 1.
- Prelazi u stanje "ručno uključeno" ako je ms = 0 i ns = 1.
- Prelazi u stanje "ručno isključeno" ako je ms = 0 i ns = 0.
"Ručno uključeno" (id = 011)
Svjetla su uključena, detektori pokreta su nevažni, pa je ms isključen, a ns uključen.
- Izlazi: svjetla = 1 i tajmer = 0.
- Ostaje u ovom stanju kada je ms = 0 i ns = 1.
- Prelazi u stanje "ručno isključeno" ako je ms = 0 i ns = 0.
- Prelazi u stanje “svjetla su isključena, nije otkriveno kretanje ako je ms = 1.
"Ručno isključeno" (id = 100)
Svjetla su isključena, detektori pokreta su nevažni, pa je ms isključen, a ns isključen.
- Izlazi: svjetla = 0 i mjerač vremena = 0.
- Ostaje u ovom stanju kada je ms = 0 i ns = 0.
- Prelazi u stanje "ručno uključeno" ako je ms = 0 i ns = 1.
- Prelazi u stanje “svjetla su isključena, nije otkriveno kretanje ako je ms = 1.
Dole brojač kaže:
"Seg 10" (id = 1010)
Zaslon sa sedam segmenata prikazuje 10.
- Izlazi: bin = “1010” i td = 0.
- Prelazi u stanje "seg 9" ako je tajmer = 1.
- Prelazi u stanje "prazno 2" ako je tajmer = 0.
"Seg 9" (id = 1001)
Prikaz sa sedam segmenata prikazuje 9.
- Izlazi: bin = “1001” i td = 0.
- Prelazi u stanje "seg 8" ako je tajmer = 1.
- Prelazi u stanje "prazno 2" ako je tajmer = 0.
(Stanja "Seg 8" do "Seg 2" su izostavljena jer slijede isti obrazac kao "Seg 10" i "Seg 9" i nisu potrebna za objašnjenje)
"Seg 1" (id = 0001)
Prikaz sa sedam segmenata prikazuje 1.
- Izlazi: bin = “0001” i td = 0.
- Prelazi u stanje "prazno 2" na sljedećoj rastućoj ivici sata (nije potreban unos).
"Prazno 2" (id = 1111)
Prikaz sa sedam segmenata prikazuje 0. Svrha drugog praznog stanja je da postoji odvojeno stanje za td = 1 radi sigurnosti.
- Izlazi: bin = “1111” i td = 1.
- Prelazi u stanje "prazno 1" na sljedećoj rastućoj ivici sata (nije potreban unos).
"Prazno 1" (id = 0000)
Prikaz sa sedam segmenata prikazuje 0. Ovo je stanje u kojem sistem ostaje kada je glavno stanje mašine u stanju „svjetla su isključena, kretanje nije otkriveno“.
- Izlazi: bin = “0000” i td = 0.
- Prelazi u stanje "seg 10" ako je tajmer = 1.
Korak 3: Navedite tabele istinitosti mašina, jednačine pobude i izlazne jednačine
Sljedeći korak je stvaranje tablica istinitosti za dvije mašine stanja i jednadžbe pobude i izlazne jednadžbe za svaki fsm. Za svaku jednadžbu pobude fsm -a, moraju postojati jednadžbe za svaki bit kodiran za sljedeće stanje u smislu trenutnog stanja i njegovih ulaznih signala. Za svaku fsm izlaznu jednadžbu moraju postojati jednadžbe za svaki izlazni signal u smislu trenutnog stanja. Sva četiri skupa jednadžbi mogu se izvući iz prikazanih tablica istinitosti. (qn je sljedeći bit kodiran za svaku mašinu stanja, a q je trenutno stanje)
(000) ekvivalentno q (2) 'q (1)' q (0) 'i (0000) ekvivalentno q (3)' q (2) 'q (1)' q (0) '
(npr. (0101) je q (3) 'q (2) q (1)' q (0) i (110) je q (2) q (1) q (0) ')
Jednadžbe pobude za glavni fsm:
- 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)]
Izlazne jednadžbe za glavni fsm:
- svjetla = (000) + (001) + (100)
- tajmer = (001)
Jednačine uzbuđenja za dolje brojač 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)]
Izlazne jednadžbe za dolje brojač fsm:
- td = (1111)
- kanta (3) = (1010) + (1001) + (1000) + (1111) + (0000)
- kanta (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
- kanta (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
- bin (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)
Korak 4: Omotač, podmoduli i ograničenje
Kao što je već objašnjeno u koraku 1, ovi moduli su potrebni za ovaj projekt i svi su povezani zajedno s modulom omotača pod nazivom "final_proj.vhd". Datoteka ograničenja pod nazivom "Basys3_Master.xdc" koristi se za povezivanje svih ulaza i izlaza omotača sa sklopkama, sedam segmentnih i I/O portova na Basys 3 ploči. Glavni prekidač trebao bi biti prekidač na ploči najbliže strani na kojoj su žice uključene, normalni/ručni prekidač je drugi najbliži, a tri prekidača koja predstavljaju tri senzora pokreta su tri prekidača odmah pored normalnog/ručnog prekidača. Sav kôd (logičke jednadžbe, deklaracije modula itd.) Već je zapisan u datotekama, tako da ne morate ništa drugo pisati da bi ovo funkcioniralo.
Korak 5: I/O portovi za LED
Posljednji korak za ovaj projekt je korištenje LED diode za pokazivanje da li se (svjetla) zaista pale i isključuju. Ožičenje je prikazano na dvije slike. Uvjerite se da postoji serijski otpornik sa LED diodom (najmanje 330 ohma) kako ne bi pregorio LED diodu i provjerite je li dugačak pin LED -a povezan s istim ženskim zaglavljem na basys ploči kao što je prikazana crvena žica (gore krajnje desno) i kraći pin je spojen na masu, isti ženski zaglavlje kao i prikazana crna žica (gore, drugo slijeva).
Preporučuje se:
Dizajn igre brzim pokretom u 5 koraka: 5 koraka
Dizajn igre u Flick -u u 5 koraka: Flick je zaista jednostavan način da napravite igru, posebno nešto poput zagonetke, vizuelnog romana ili avanturističke igre
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: 3 koraka
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: U ovom uputstvu ćemo izvršiti otkrivanje lica na Raspberry Pi 4 sa Shunya O/S koristeći biblioteku Shunyaface. Shunyaface je biblioteka za prepoznavanje/otkrivanje lica. Cilj projekta je postići najbržu brzinu otkrivanja i prepoznavanja sa
Kako napraviti brojač koraka?: 3 koraka (sa slikama)
Kako napraviti brojač koraka?: Nekada sam se dobro snašao u mnogim sportovima: hodanje, trčanje, vožnja bicikla, igranje badmintona itd. Volim jahanje da bih brzo putovao. Pa, pogledaj moj trbušni trbuh … Pa, u svakom slučaju, odlučujem ponovo početi vježbati. Koju opremu treba pripremiti?
Brojač koraka - Mikro: Bit: 12 koraka (sa slikama)
Brojač koraka - Micro: Bit: Ovaj projekat će biti brojač koraka. Za mjerenje koraka koristit ćemo senzor akcelerometra koji je ugrađen u Micro: Bit. Svaki put kada se Micro: Bit protrese, broju ćemo dodati 2 i prikazati ga na ekranu
Broj koraka / koraka: 3 koraka
পেনড্রাইভ / মেমোরি কার্ডে ভাইরাসের ভাইরাসের হারিয়ে সমাধান সমাধান সমাধান সমাধান সমাধান পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি এখন এখন এখন।।।।।। Zaštita podataka, pristup prečicama / virusima