Talaan ng mga Nilalaman:

L I G H T S: 5 Mga Hakbang
L I G H T S: 5 Mga Hakbang

Video: L I G H T S: 5 Mga Hakbang

Video: L I G H T S: 5 Mga Hakbang
Video: Daylight Devotion | Mga Hakbang Tungo sa Kapayapaan | October 5, 2023 2024, Nobyembre
Anonim
L I G H T S
L I G H T S

Ang layunin ng huling proyekto na ito ay upang lumikha ng isang bagay na mag-focus sa pagpapanatili at ipatupad ang mga konsepto ng digital na disenyo, at upang gawin ito, nagpasya akong mag-disenyo ng isang nasusukat na sistema ng pag-save ng kuryente gamit ang vhdl at ginawa para sa Basys 3 Board (Artix-7 35T series). Masusukat dahil ang anumang bilang ng mga sensor ay maaaring ilagay sa isang silid at ang anumang bilang ng mga sistemang ito ay maaaring mailagay sa paligid ng isang gusali o isang bahay. Ang gagawin ng sistemang ito, ay teoretikal na makatipid ng libu-libong dolyar sa komersyal na gusali at bawasan ang isang malaking porsyento ng pagkonsumo ng enerhiya sa mas maliit na mga pamayanan ng tirahan sa pamamagitan ng pagpapatupad ng isang konektadong sistema ng mga aktibo at passively kinokontrol na mga ilaw, mga detector ng paggalaw, timer na ipinakita sa pitong segment na ipinapakita, at control switch. Ang halimbawang ito ay nakikipag-usap sa isang solong system na may tatlong mga detector ng paggalaw, isang master switch, isang manu-manong / normal na switch, apat na pitong segment na ipinapakita, at isang solong ilaw na kinokontrol ng system.

Halimbawa, sa isang piling silid, maraming mga detector ng paggalaw ang mailalagay (ang halimbawang disenyo na ito ay may tatlo), at ang bawat isa ay magpapadala ng isang senyas (1) kung nakita nito ang paggalaw, at (0) kung hindi. Kung hindi bababa sa isa sa mga detektor ng paggalaw ang nakakakita ng paggalaw, ang mga ilaw ay bubuksan kung hindi pa nakabukas at mananatili kung naka-on pa. Sa anumang oras ang lahat ng mga detector ng paggalaw ay hindi nakakakita ng anumang bagay, nagsisimulang magbilang ang isang timer para sa isang itinakdang dami ng oras (naaayos sa code), at mananatili ang mga ilaw habang binibilang ang timer. Kapag natapos na ng timer ang pagbibilang, huminto ang timer, at ang mga ilaw ay patayin. Kung hindi bababa sa isang paggalaw ng tiktik ang nakakakita ng paggalaw habang ang timer ay nagbibilang, ang timer ay hihinto at i-reset. At kung hindi bababa sa isang paggalaw na nakakita ng paggalaw habang ang mga ilaw ay patay, ang mga ilaw ay agad na nakabukas.

Ang system na ito ay may dalawang mga mode, isa sa timer tulad ng nakasaad sa itaas, at isang pangalawa kung saan mayroong isang switch na kumokontrol sa mga ilaw nang manu-mano (hindi papansin ang mga sensor). Mayroong isang master switch na nagpapahintulot sa gumagamit na pumili kung aling mode ang nais nilang gamitin batay sa alinman sa palagay nila na makatipid ng mas maraming enerhiya sa pangkalahatan. Hal. Ang isang silid tulad ng isang pasilyo ay maaaring makinabang mula sa passive timer mode- ang mga gumagamit ay hindi sigurado kung ang mga tao ay dumadaan, ngunit ang pag-on at pag-off ng mga ilaw sa tuwing sila ay pumapasok at umalis ay magiging isang abala, samantalang ang isang silid tulad bilang isang silid-tulugan na may isang solong gumagamit ay mas mahusay na pinapatakbo nang manu-mano. At ang master switch ay makakatulong sa mga kaso tulad ng kung ang taong nakatira sa silid-tulugan ay dapat na umalis para sa isang pinahabang panahon, pagkatapos ang master switch ay maaaring patayin, at ang timer mode ay gagana upang mas makatipid ng enerhiya.

Kaya sa sistemang ito, mayroong dalawang mga makina ng estado, ang isa ay ang pangunahing makina ng estado, at isa pa para sa countdown timer. Ang pangunahing makina ng estado ay may limang mga estado na tinukoy tulad ng: 1. "ilaw sa, kilusan nakita" (id = 000), 2. "ilaw sa, walang kilusan napansin" (id = 001), 3. "patayin, walang paggalaw napansin na "(id = 010), 4." manu-manong nakabukas ang "(id = 011), at 5." manu-manong pinatay "(id = 100). Ang pangunahing makina ng estado ay may apat na mga input: ang master switch (ms), ang manu-manong / normal na switch (ns), isang senyas na mataas kapag hindi bababa sa isang switch ang nakakakita ng paggalaw, at mababa kung hindi man (orx), at isang senyas na mataas kapag tapos na ang timer, at mababa kung hindi man (td). Ang pangunahing makina ng estado ay may dalawang output: mga ilaw (ilaw) at isang senyas na nagpapahiwatig kung kailan i-on ang countdown timer (timer) o (t) (parehong ginagamit na palitan).

Ang pangalawang machine ng estado, ang countdown timer, ay may 12 estado: 10 sa kanila ay may mga id na nauugnay sa bilang na ipinapakita ng pitong segment- "seg 10" (id = 1010), "seg 9" (id = 1001), […], “Seg 2” (id = 0010), “seg 1” (id = 0001), at ang dalawa pang estado ay parehong nagpapakita ng zero, na kumakatawan sa timer na off- kaya't mayroong unang blangko na "blangko 1" (id = 1111) at ang pangalawang blangko na "blangko 2" (id = 0000). Ang countdown timer ay may isang input: timer (t), at tatlong output: ang bilang na ipinapakita sa binary na may apat na bit (bin) at isang senyas na nagpapahiwatig na ang timer ay tapos na (td).

Hakbang 1: Diagram ng Itim na Kahon

Diagram ng Itim na Kahon
Diagram ng Itim na Kahon

Ito ay isang pangkalahatang ideya ng kung paano dapat gumana ang buong system, at inilarawan sa isang diagram ng itim na kahon.

  • Ginagamit ang orasan upang mai-orasan ang pangunahing makina ng estado at ang pitong segment na decoder; isang mas mabagal na orasan ang kinakailangan para sa down counter, kaya mayroong isang module na divider ng orasan na kumukuha ng input ng orasan at naglalabas ng isang mas mabagal na orasan para sa down counter.
  • Ang intermediate variable (orx) sa pambalot ay nakatali sa mga sensor ng paggalaw at magiging mataas kung hindi bababa sa isa sa mga sensor ang nakakakita ng isang bagay, at mababa kung hindi man; ang equation ng boolean para doon ay orx = s (2) o s (1) o s (0).
  • Ang pangunahing kontrol ng fsm kung aling pangkalahatang isinasaad ang system ay nasa, depende sa mga input (orx, ms, ns, td) at output ng kasalukuyang estado na nasa (sm) na ipinakita na pinasimple sa dalawang signal na ginamit nito para sa (timer at ilaw).

    • Ang (timer) ay isang signal ng pambalot na ipinadala sa down counter fsm bilang input nito at kinokontrol ng kasalukuyang estado ng pangunahing fsm. Ipinapahiwatig nito kung kailan i-on ang timer.
    • Ang (ilaw) ay isang signal ng pambalot na ginagamit upang makontrol ang pinangunahan at kinokontrol ng kasalukuyang estado ng pangunahing fsm.
  • Kinokontrol ng down counter fsm kung ano ang ipinapakita ng pitong segment depende sa input (timer) at naglalabas ng kasalukuyang estado na nasa (sd) na ipinakita na pinasimple sa dalawang signal na ginamit nito para sa (td at bin).

    • Ang (td) ay isang signal ng pambalot na ipinadala sa pangunahing fsm bilang input nito at kinokontrol ng kasalukuyang estado ng down counter fsm. Gumagana ito bilang isang signal ng feedback na nagpapahiwatig kung tapos na ang timer.
    • Ang (bin) ay isang apat na bit signal ng pambalot na pinagsama sa apat na piraso ng zero ("0000" & bin) at ang pinagsamang walong piraso ay ipinadala sa (q), isang walong bit na pambalot na signal, na ipinadala naman sa pito segment decoder sa ilalim ng (ALU_VAL).
  • Ang pitong segment na module ay pareho sa Polylearn; ang mga pangunahing input nito ay kumukuha ng isang 8 bit na numero (bin) hanggang (ALU_VAL) upang maipakita sa apat na magkakaibang pitong segment na ipinapakita gamit ang mga output (SEGMENTS) upang balutan ang signal (seg) at (DISP_EN) sa balot (disp_en).

    • Dahil ang dalawa o higit pang pitong pagpapakita ng segment ay hindi maaaring magpakita ng magkakaibang mga digit nang sabay, kailangan ng isang orasan upang paikotin ang apat na ssegs, na ipinapakita ang naaangkop na digit nang paisa-isa para sa bawat sseg na paisa-isa na binubuksan, at ang pagbibisikleta ay mabilis na ginagawang Ang mga ssegs ay lilitaw na lahat nang sabay-sabay.
    • Ang (mag-sign at may bisa) ay pare-pareho sa buong program na ito, kaya ang (sign) ay permanenteng itinakda nang mababa at (valid) ay permanenteng itinakda nang mataas.
    • Ang (ALU_VAL) ay kumukuha ng signal ng pambalot (q) bilang isang input, na kumakatawan sa bilang na ipapakita sa pitong segment na display sa binary.
    • Ang output (SEGmentsS) ay ipinadala sa isang walong bit ng signal ng pambalot (seg) at (DISP_EN) sa isang apat na bit signal ng pambalot (disp_en).
  • Mayroon ding isang D flip flop module na hindi malinaw na ipinakita sa diagram ngunit kinakailangan para sa dalawang mga makina ng estado bilang mga submodule at tumutulong sa mga estado na magkasalabay na magkasabay.

    • (3) ng mga ito ay kinakailangan para sa pangunahing fsm mula noong 2 ^ (3) = 8> 5 mga estado para sa pag-encode
    • (4) ng mga ito ay kinakailangan para sa down counter fsm mula noong 2 ^ 4 = 16> 12 na estado para sa pag-encode

Hakbang 2: Mga Makina ng Estado

Mga Makina ng Estado
Mga Makina ng Estado

Upang maayos na idisenyo ang dalawang mga machine ng estado, ang mga indibidwal na estado ay kailangang tukuyin nang malinaw, kasama ang mga output at estado na inililipat nito batay sa iba't ibang mga posibleng input.

Pangunahing estado ng fsm:

"Mga ilaw sa, paggalaw nakita" (id = 000)

Ang mga ilaw ay nakabukas, hindi bababa sa isa sa mga detector ng paggalaw ang nakakakita ng paggalaw, kaya dapat mataas ang orx at nakabukas ang ms.

  • Mga output: ilaw = 1 at timer = 0
  • Manatili bilang estado na ito kapag ms = 1 at orx = 1.
  • Pupunta sa estado na "ilaw sa, walang paggalaw na napansin" kung ms = 1 at orx = 0.
  • Pupunta sa estado na "manu-manong nakabukas" kung ms = 0 at ns = 1.
  • Pupunta sa estado na "manu-manong nakapatay" kung ms = 0 at ns = 0.

"Ang mga ilaw ay nakabukas, walang paggalaw na napansin" (id = 001)

Ang mga ilaw ay nakabukas, walang kilusan na napansin mula sa anumang paggalaw ng paggalaw, kaya't dapat na mababa ang orx at nakabukas ang ms. Sa simula din ng estado na ito ang timer na itinakda nang mataas ay nagsasabi sa countdown fsm upang simulang magbilang, magpatuloy upang mabilang, at ihinto ang pagbibilang kapag sinabi ng countdown fsm sa fsm na ito na natapos na bilangin.

  • Mga output: ilaw = 1 at timer = 1.
  • Manatili bilang estado na ito kapag ms = 1 at orx = 0 at td (tapos na ang timer) = 0.
  • Pupunta sa estado na "ilaw sa, nakita ang paggalaw" kung ms = 1 at orx = 1.
  • Pupunta sa estado na "patayin ang ilaw, walang kilalang napansin 'kung ms = 1 at orx = 0 at td = 1.
  • Pupunta sa estado na "manu-manong nakabukas" kung ms = 0 at ns = 1.
  • Pupunta sa estado na "manu-manong nakapatay" kung ms = 0 at ns = 0.

"Napatay ang ilaw, walang nakitang paggalaw" (id = 010)

Naka-off ang mga ilaw, walang nakitang paggalaw mula sa anumang sensor ng paggalaw at natapos ang pagbilang ng timer, kaya't dapat mababa ang orx, nakabukas ang ms, at naka-off ang td.

  • Mga output: ilaw = 0 at timer = 0.
  • Manatili bilang estado na ito kapag ms = 1 at orx = 0.
  • Pupunta sa estado na "ilaw sa, nakita ang paggalaw" kung ms = 1 at orx = 1.
  • Pupunta sa estado na "manu-manong nakabukas" kung ms = 0 at ns = 1.
  • Pupunta sa estado na "manu-manong nakapatay" kung ms = 0 at ns = 0.

"Manu-manong nakabukas" (id = 011)

Ang mga ilaw ay nakabukas, ang mga detektor ng paggalaw ay hindi nauugnay, kaya't pinatay ang ms, at nakabukas ang ns.

  • Mga output: ilaw = 1 at timer = 0.
  • Manatili bilang estado na ito kapag ms = 0 at ns = 1.
  • Pupunta sa estado na "manu-manong nakapatay" kung ms = 0 at ns = 0.
  • Pupunta sa estado ng “ilaw, walang paggalaw na nakita kung ms = 1.

"Mano-manong pinatay" (id = 100)

Naka-off ang mga ilaw, hindi nauugnay ang mga detektor ng paggalaw, kaya't pinatay ang ms, at naka-off ang ns.

  • Mga output: ilaw = 0 at timer = 0.
  • Manatili bilang estado na ito kapag ms = 0 at ns = 0.
  • Pupunta sa estado na "manu-manong nakabukas" kung ms = 0 at ns = 1.
  • Pupunta sa estado ng “ilaw, walang paggalaw na nakita kung ms = 1.

Mga estado ng Down counter:

"Seg 10" (id = 1010)

Ang pitong segment na pagpapakita ay nagpapakita ng 10.

  • Mga output: bin = "1010" at td = 0.
  • Pupunta sa estado na "seg 9" kung timer = 1.
  • Pupunta sa estado na "blangko 2" kung timer = 0.

"Seg 9" (id = 1001)

Ang pitong segment na pagpapakita ay nagpapakita ng 9.

  • Mga output: bin = "1001" at td = 0.
  • Pupunta sa estado na "seg 8" kung timer = 1.
  • Pupunta sa estado na "blangko 2" kung timer = 0.

(Ang Estadong "Seg 8" pababa sa "Seg 2" ay tinanggal dahil sinusunod nila ang parehong pattern tulad ng "Seg 10" at "Seg 9" at hindi kinakailangan para sa paliwanag)

"Seg 1" (id = 0001)

Ang pitong segment na pagpapakita ay nagpapakita ng isang 1.

  • Mga output: bin = "0001" at td = 0.
  • Pupunta sa estado na "blangko 2" sa susunod na tumataas na gilid ng orasan (hindi kinakailangan ng pag-input).

"Blangko 2" (id = 1111)

Ang pitong segment na pagpapakita ay nagpapakita ng isang 0. Ang layunin ng pangalawang blangko na estado ay upang mayroong isang hiwalay na estado kung kailan td = 1 para sa kaligtasan.

  • Mga output: bin = "1111" at td = 1.
  • Pupunta sa estado na "blangko 1" sa susunod na tumataas na gilid ng orasan (hindi kailangan ng pag-input).

"Blangko 1" (id = 0000)

Ipinapakita ng pitong segment na display ang isang 0. Ito ang estado na mananatili ang system kapag ang pangunahing makina ng estado ay nasa estado na "ilaw, hindi nakita ang kilusan".

  • Mga output: bin = "0000" at td = 0.
  • Pupunta sa estado na "seg 10" kung timer = 1.

Hakbang 3: Mga Talaan ng Katotohanan sa Makina ng Estado, Mga Equation ng Pagkaganyak, at Mga Equation ng Output

Mga Talahanayan ng Katotohanan sa Machine ng Estado, Mga Equation na Katuwaan, at Mga Equation ng Output
Mga Talahanayan ng Katotohanan sa Machine ng Estado, Mga Equation na Katuwaan, at Mga Equation ng Output
Mga Talahanayan ng Katotohanan sa Machine ng Estado, Mga Equation na Katuwaan, at Mga Equation ng Output
Mga Talahanayan ng Katotohanan sa Machine ng Estado, Mga Equation na Katuwaan, at Mga Equation ng Output
Mga Talahanayan ng Katotohanan sa Machine ng Estado, Mga Equation na Katuwaan, at Mga Equation ng Output
Mga Talahanayan ng Katotohanan sa Machine ng Estado, Mga Equation na Katuwaan, at Mga Equation ng Output
Mga Talahanayan ng Katotohanan sa Machine ng Estado, Mga Equation ng Pagkaganyak, at Mga Equation ng Output
Mga Talahanayan ng Katotohanan sa Machine ng Estado, Mga Equation ng Pagkaganyak, at Mga Equation ng Output

Ang susunod na hakbang ay upang lumikha ng mga talahanayan ng katotohanan para sa dalawang mga makina ng estado at mga equation ng paggulo at mga equation ng output para sa bawat fsm. Para sa bawat equation ng fsm na paggulo, kailangang may mga equation para sa bawat susunod na estado na naka-encode ng kaunti sa mga tuntunin ng kasalukuyang estado at mga input signal nito. Para sa bawat equation ng output ng fsm, kailangang may mga equation para sa bawat output signal sa mga tuntunin ng kasalukuyang estado. Ang lahat ng apat na hanay ng mga equation ay maaaring makuha mula sa mga talahanayan ng katotohanan na nakalarawan. (Ang qn ay ang susunod na naka-encode ng kaunti para sa bawat machine ng estado, at ang q ay ang kasalukuyang estado)

(000) katumbas ng q (2) 'q (1)' q (0) ', at (0000) katumbas ng q (3)' q (2) 'q (1)' q (0) '

(hal. (0101) ay q (3) 'q (2) q (1)' q (0) at (110) ay q (2) q (1) q (0) ')

Mga equation equation para sa pangunahing 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)]

Mga equation ng output para sa pangunahing fsm:

  • ilaw = (000) + (001) + (100)
  • timer = (001)

Mga equation equation para sa down counter 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)]

Mga equation ng output para sa down counter fsm:

  • td = (1111)
  • bin (3) = (1010) + (1001) + (1000) + (1111) + (0000)
  • bin (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
  • bin (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
  • bin (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)

Hakbang 4: Wrapper, Submodules, & Constraint

Tulad ng ipinaliwanag sa Hakbang 1, ang mga modyul na ito ay kinakailangan para sa proyektong ito at lahat ay nakatali kasama ang module ng pambalot na pinamagatang "final_proj.vhd". Ang pagpipilit na file na pinamagatang "Basys3_Master.xdc" ay ginagamit upang maiugnay ang lahat ng mga input at output ng pambalot sa mga switch, ang pitong segment, at mga port ng I / O sa board ng Basys 3. Ang master switch ay dapat na switch sa board na pinakamalapit sa gilid ng mga wire, ang normal / manual switch ay ang pangalawang pinakamalapit, at ang tatlong switch na kumakatawan sa tatlong mga sensor ng galaw ay ang tatlong switch agad sa tabi ng normal / manual switch.. Ang lahat ng mga code (mga equation ng boolean, pagdedeklara ng module, atbp) ay nakasulat na sa mga file, kaya't hindi mo na kailangang magsulat ng anupaman upang magawa ito.

Hakbang 5: I / O Mga Port para sa LED

I / O Mga Port para sa LED
I / O Mga Port para sa LED
I / O Mga Port para sa LED
I / O Mga Port para sa LED

Ang huling hakbang para sa proyektong ito ay ang paggamit ng isang humantong upang maipakita kung o hindi (mga ilaw) na aktwal na nakabukas at naka-off. Ang mga kable ay ipinapakita sa dalawang larawan. Siguraduhin na mayroong isang risistor sa serye na may led (hindi bababa sa 330 ohms) upang hindi masunog ang humantong at siguraduhin na ang mahabang pin ng led ay konektado sa parehong babaeng header sa basys board habang ipinakita ang pulang kawad (itaas kanan) at ang mas maikling pin ay konektado sa lupa, ang parehong babaeng header tulad ng itim na kawad na ipinakita (itaas, pangalawa mula sa kaliwa).

Inirerekumendang: