Բովանդակություն:

L I G H T S: 5 քայլ
L I G H T S: 5 քայլ

Video: L I G H T S: 5 քայլ

Video: L I G H T S: 5 քայլ
Video: Արդյո՞ք ես ստանում եմ մաքսիմալ վաճառք իմ սթարթափից։ 5 Քայլ վաճառքները լավացնելու համար 2024, Նոյեմբեր
Anonim
L I G H T S
L I G H T S

Այս վերջնական նախագծի նպատակն էր ստեղծել մի բան, որը կկենտրոնանար կայունության վրա և կիրառում թվային դիզայնի հայեցակարգեր, և դրա համար ես որոշեցի նախագծել էներգիայի խնայողության մասշտաբային համակարգ vhdl- ի միջոցով և պատրաստված Basys 3 Board- ի համար (Artix-7 35T շարք): Մասշտաբելի է, քանի որ սենյակում կարող են տեղադրվել ցանկացած թվով սենսորներ և այդ համակարգերի ցանկացած քանակ կարող են տեղադրվել շենքի կամ տան շուրջ: Այն, ինչ կանի այս համակարգը, տեսականորեն խնայում է հազարավոր դոլարներ առևտրային շենքերում և նվազեցնում է էներգիայի սպառման մեծ տոկոսը փոքր բնակավայրերում `գործարկելով ակտիվ և պասիվ վերահսկվող լույսերի, շարժիչային դետեկտորների, յոթ հատվածի էկրաններին ցուցադրվող միացված համակարգ և կառավարման անջատիչներ: Այս օրինակը վերաբերում է մեկ շարժման դետեկտոր ունեցող մեկ համակարգին, հիմնական անջատիչին, ձեռքով/նորմալ անջատիչին, չորս յոթ հատվածի էկրաններին և մեկ լուսարձակին, որը վերահսկում է համակարգը:

Օրինակ, ընտրված սենյակում մի քանի շարժման դետեկտորներ կտեղադրվեին շուրջը (այս օրինակը ունի երեք), և յուրաքանչյուրը ազդանշան կուղարկի (1) շարժումը հայտնաբերելու դեպքում, և (0), եթե դա այդպես չէ: Եթե շարժման դետեկտորներից գոնե մեկը հայտնաբերում է շարժումը, լույսերը միանում են, եթե դրանք դեռ միացված չեն և մնում են միացված, եթե արդեն միացված են: Timeանկացած պահի բոլոր շարժիչային դետեկտորները ոչինչ չեն հայտնաբերում, ժամանակաչափը սկսում է հաշվել որոշակի ժամանակով (կարգավորելի է կոդով), և լույսերը մնում են միացված, մինչ ժմչփը հաշվում է: Theամաչափի հաշվարկն ավարտելուց հետո ժամաչափը կանգ է առնում, և լույսերն անջատվում են: Եթե շարժման դետեկտորից առնվազն մեկը հայտնաբերում է շարժումը, երբ ժամաչափը հետ է հաշվում, ժմչփը դադարում և վերակայվում է: Եվ եթե առնվազն մեկ շարժիչ հայտնաբերող սարքը հայտնաբերում է շարժումը, երբ լույսերն անջատված են, լույսերն անմիջապես միանում են:

Այս համակարգն ունի երկու ռեժիմ ՝ մեկը ժամանակաչափով, ինչպես նշված է վերևում, և երկրորդը, երբ կա անջատիչ, որը ձեռքով կառավարում է լույսերը (անտեսելով տվիչները): Գոյություն ունի հիմնական անջատիչ, որը թույլ է տալիս օգտվողին ընտրել այն ռեժիմը, որը ցանկանում է օգտագործել ՝ կախված այն բանից, թե որն է զգում, որ ընդհանուր առմամբ ավելի շատ էներգիա կխնայի: Նախկին Սենյակը, ինչպիսին է միջանցքը, կարող է օգուտ քաղել ժամաչափի պասիվ ռեժիմից. Օգտվողները վստահ չեն, թե երբ են մարդիկ անցնում, բայց լույսերը միացնելն ու անջատելը ամեն անգամ, երբ նրանք մտնում և դուրս են գալիս, անհարմարություն կլինի, մինչդեռ նման սենյակը քանի որ մեկ օգտվող ունեցող ննջասենյակը ավելի լավ կլինի ձեռքով շահագործել: Իսկ հիմնական անջատիչը կարող է օգտակար լինել այնպիսի դեպքերում, ինչպիսին է, եթե ննջասենյակում ապրողը երկար ժամանակ հեռանա, ապա հիմնական անջատիչը կարող է անջատվել, և ժամաչափի ռեժիմը կաշխատի էներգիան ավելի արդյունավետ խնայելու համար:

Այսպիսով, այս համակարգում կա երկու պետական մեքենա, մեկը հիմնական պետական մեքենան է, իսկ մյուսը ՝ հետհաշվարկի ժամաչափի համար: Հիմնական պետական մեքենան ունի հինգ վիճակ, որոնք սահմանվում են որպես այդպիսին. հայտնաբերվել է »(id = 010), 4.« ձեռքով միացված է »(id = 011) և 5.« ձեռքով անջատված է »(id = 100): Այս հիմնական պետական մեքենան ունի չորս մուտք. բարձր է ժամաչափի ավարտից հետո, իսկ հակառակ դեպքում ցածր է (td): Հիմնական վիճակի մեքենան ունի երկու ելք ՝ լույսեր (լույսեր) և ազդանշան, որը ցույց է տալիս, թե երբ միացնել հետհաշվարկի ժամաչափը (ժմչփ) կամ (t) (երկուսն էլ օգտագործվում են փոխարինելի):

Երկրորդ պետական մեքենան ՝ հետհաշվարկի ժամաչափը, ունի 12 վիճակ. Դրանցից 10-ում կան ID- ներ, որոնք կապված են յոթ հատվածի ցուցադրած թվի հետ ՝ «seg 10» (id = 1010), «seg 9» (id = 1001), […], «Seg 2» (id = 0010), «seg 1» (id = 0001), և մյուս երկու վիճակները երկուսն էլ ցուցադրում են զրո ՝ ներկայացնելով ժամաչափի անջատված լինելը, ուստի կա առաջին դատարկ «դատարկ 1» (id = 1111) և երկրորդ դատարկ «դատարկ 2» (id = 0000): Հետհաշվարկի ժամաչափն ունի մեկ մուտք `ժմչփ (t) և երեք ելք. Երկուական բիթում ցուցադրված թիվը չորս բիթով (bin) և ժամացույցը նշող ազդանշանը կատարված է (td):

Քայլ 1: Սև արկղի դիագրամ

Սև արկղի դիագրամ
Սև արկղի դիագրամ

Սա ակնարկ է, թե ինչպես է ենթադրվում գործել ամբողջ համակարգը, և նկարագրված է սև արկղի դիագրամով:

  • Clockամացույցը օգտագործվում է հիմնական պետական մեքենայի և յոթ հատվածի ապակոդավորիչի ժամաչափման համար: ներքևի հաշվիչի համար անհրաժեշտ է ավելի դանդաղ ժամացույց, այնպես որ կա ժամացույցի բաժանարար մոդուլ, որը վերցնում է ժամացույցի մուտքը և թողնում է ավելի դանդաղ ժամացույց ներքևի հաշվիչի համար:
  • Փաթաթման միջանկյալ փոփոխականը (orx) կապված է շարժման տվիչների հետ և բարձր կլինի, եթե սենսորներից առնվազն մեկը որևէ բան հայտնաբերի, իսկ հակառակ դեպքում `ցածր; բուլյան հավասարումը դրա համար պարզապես orx = s (2) կամ s (1) կամ s (0) է:
  • Հիմնական fsm- ը վերահսկում է, թե որ վիճակում է գտնվում համակարգը, կախված մուտքերից (orx, ms, ns, td) և ելքերից (sm) ցուցադրված ընթացիկ վիճակից պարզեցված երկու ազդանշաններով, որոնց համար այն օգտագործվում է (ժամաչափ և լույսեր):

    • (ժմչփ) փաթաթման ազդանշան է, որն ուղարկվում է ներքևի հաշվիչ fsm որպես մուտքագրում և վերահսկվում է հիմնական fsm- ի ընթացիկ վիճակով: Այն ցույց է տալիս, թե երբ միացնել ժմչփը:
    • (լույսերը) փաթաթման ազդանշան է, որն օգտագործվում է led- ը վերահսկելու համար և վերահսկվում է հիմնական fsm- ի ընթացիկ վիճակով:
  • Ներքևի fsm հաշվիչը վերահսկում է, թե ինչ է ցուցադրում յոթ հատվածը ՝ կախված մուտքից (ժամաչափ) և ելքեր է տալիս ներկայիս վիճակի (sd) մեջ, որը պարզեցված է երկու ազդանշաններով, որոնց համար այն օգտագործվում է (td և bin):

    • (td) փաթաթման ազդանշան է, որն ուղարկվում է հիմնական fsm- ին որպես մուտք և վերահսկվում է ներքևի հաշվիչի fsm- ի ընթացիկ վիճակով: Այն գործում է որպես հետադարձ ազդանշան, որը ցույց է տալիս, թե երբ է ժամաչափը ավարտված:
    • (bin) չորս բիթանոց փաթաթման ազդանշան է, որը զուգակցված է զրոյի չորս բիթով («0000» & bin), իսկ համակցված ութ բիթերն ուղարկվում են (q), ութ բիթանոց փաթաթման ազդանշան, որն էլ իր հերթին ուղարկվում է յոթին հատվածի ապակոդավորիչ (ALU_VAL) տակ:
  • Յոթ հատվածի մոդուլը նույնն է, ինչ Polylearn- ում; դրա հիմնական մուտքերը տանում են 8 բիթանոց համար (bin) մինչև (ALU_VAL) ՝ չորս տարբեր յոթ հատվածային էկրաններին ցուցադրելու համար ՝ օգտագործելով ելքերը (SEGMENTS) ՝ ազդանշանը փաթաթելու համար (seg) և (DISP_EN) ՝ փաթաթելու համար (disp_en):

    • Քանի որ երկու կամ ավելի յոթ հատվածային էկրաններ չեն կարող միաժամանակ ցուցադրել տարբեր թվանշաններ, չորս ssegs- ով պտտվելու համար անհրաժեշտ է ժամացույց ՝ յուրաքանչյուր sseg- ի համար առանձին միացված համապատասխան թվանշանը միաժամանակ ցուցադրելով, և բավական արագ հեծանվավազքը ստիպում է ssegs- ը կարծես միանգամից միացված է:
    • (նշանը և վավերականությունը) այս ծրագրի ընթացքում հաստատուն են, ուստի (նշանը) մշտապես ցածր է (վավերական) մշտապես բարձր է:
    • (ALU_VAL) որպես մուտքագրում է փաթաթման ազդանշանը (q), որը ներկայացնում է այն թիվը, որը երկուական տեսքով կցուցադրվի յոթ հատվածի ցուցադրման վրա:
    • Ելքը (SEGMENTS) ուղարկվում է ութ բիթ փաթաթան ազդանշանի (seg) և (DISP_EN) չորս բիթ փաթաթան ազդանշանի (disp_en):
  • Կա նաև D- մատնահետքի մոդուլ, որը հստակ ցուցադրված չէ դիագրամում, բայց անհրաժեշտ է երկու պետական մեքենաների համար `որպես ենթամոդուլներ և օգնում է վիճակների տրանզիստիոնին սինխրոն կերպով:

    • Դրանցից 3 -ը անհրաժեշտ են հիմնական fsm- ի համար, քանի որ 2^(3) = 8> 5 վիճակ կոդավորման համար
    • (4) սրանցից անհրաժեշտ է ներքևի հաշվիչ fsm- ի համար, քանի որ 2^4 = 16> 12 վիճակ կոդավորման համար

Քայլ 2: Պետական մեքենաներ

Պետական մեքենաներ
Պետական մեքենաներ

Երկու պետական մեքենաների պատշաճ ձևավորման համար անհրաժեշտ է, որ առանձին պետությունները հստակ սահմանվեն ՝ իր ելքերով և այն վիճակով, որով այն անցնում է ՝ ելնելով տարբեր հնարավոր մուտքերից:

Հիմնական fsm- ը նշում է

«Լույսերը միացված են, շարժումը հայտնաբերված է» (id = 000)

Լույսերը միացված են, շարժման դետեկտորներից առնվազն մեկը հայտնաբերում է շարժումը, ուստի օրեքսը պետք է լինի բարձր, և ms- ը միացված է:

  • Արդյունքներ. Լույսեր = 1 և ժամաչափ = 0
  • Մնում է այս վիճակում, երբ ms = 1 և orx = 1:
  • Անցնում է «լույսերը միացված են, շարժում չի հայտնաբերվել», եթե ms = 1 և orx = 0:
  • Անցնում է «ձեռքով միացված» վիճակին, եթե ms = 0 և ns = 1:
  • Անցնում է «ձեռքով անջատված» վիճակին, եթե ms = 0 և ns = 0:

«Լույսերը միացված են, շարժում չի հայտնաբերվել» (id = 001)

Լույսերը միացված են, շարժում չի հայտնաբերվում որևէ շարժման դետեկտորից, այնպես որ orx- ը պետք է լինի ցածր, և ms- ը միացված է: Նաև այս վիճակի սկզբում բարձր դրված ժամաչափը ասում է, որ հետհաշվարկը սկսի հետհաշվարկը, անցնում է հետհաշվարկի և դադարում է հետհաշվարկը, երբ հետհաշվարկի fsm- ն այս fsm- ին ասի, որ հաշվարկն ավարտված է:

  • Արդյունքներ. Լույսեր = 1 և ժամաչափ = 1:
  • Մնում է այս վիճակում, երբ ms = 1 և orx = 0 և td (ժամանակաչափն ավարտված է) = 0:
  • Գնում է «լույսերը միացված են, շարժումը հայտնաբերված է» վիճակին, եթե ms = 1 և orx = 1:
  • Անցնում է «անջատված լույսեր, շարժում չի հայտնաբերվել», եթե ms = 1 և orx = 0 և td = 1:
  • Գնում է «ձեռքով միացված» վիճակին, եթե ms = 0 և ns = 1:
  • Անցնում է «ձեռքով անջատված» վիճակին, եթե ms = 0 և ns = 0:

«Լույսերն անջատված են, շարժում չի հայտնաբերվել» (id = 010)

Լույսերն անջատված են, շարժման սենսորից ոչ մի շարժում չի հայտնաբերվում, և ժամաչափն ավարտում է հետհաշվարկը, ուստի օրսը պետք է ցածր լինի, ms- ը միացված է, իսկ td- ն անջատված է:

  • Արդյունքներ. Լույսեր = 0 և ժամաչափ = 0:
  • Մնում է այս վիճակում, երբ ms = 1 և orx = 0:
  • Գնում է «լույսերը միացված են, շարժումը հայտնաբերված է» վիճակին, եթե ms = 1 և orx = 1:
  • Անցնում է «ձեռքով միացված» վիճակին, եթե ms = 0 և ns = 1:
  • Անցնում է «ձեռքով անջատված» վիճակին, եթե ms = 0 և ns = 0:

«Միացված է ձեռքով» (id = 011)

Լույսերը միացված են, շարժման դետեկտորներն անտեղի են, ուստի ms- ն անջատված է, իսկ ns- ը ՝ միացված:

  • Արդյունքներ. Լույսեր = 1 և ժամաչափ = 0:
  • Մնում է այս վիճակում, երբ ms = 0 և ns = 1:
  • Անցնում է «ձեռքով անջատված» վիճակին, եթե ms = 0 և ns = 0:
  • Անցնում է դեպի «լույսերը անջատված են, շարժում չի հայտնաբերվել, եթե ms = 1:

«Ձեռքով անջատված է» (id = 100)

Լույսերն անջատված են, շարժման դետեկտորներն անտեղի են, ուստի ms- ն անջատված է, իսկ ns- ն անջատված է:

  • Արդյունքներ. Լույսեր = 0 և ժամաչափ = 0:
  • Մնում է այս վիճակում, երբ ms = 0 և ns = 0:
  • Գնում է «ձեռքով միացված» վիճակին, եթե ms = 0 և ns = 1:
  • Գնում է «անջատված լույսեր, շարժում չի հայտնաբերվում, եթե ms = 1:

Ներքևի հաշվիչը նշում է

«Seg 10» (id = 1010)

Յոթ հատվածի ցուցադրումը ցույց է տալիս 10 -ը:

  • Արդյունքներ ՝ bin = “1010” և td = 0:
  • Անցնում է «seg 9» վիճակին, եթե ժամաչափը = 1 է:
  • Անցնում է «դատարկ 2» վիճակին, եթե ժամաչափը = 0 է:

«Seg 9» (id = 1001)

Յոթ հատվածի ցուցադրումը ցույց է տալիս 9 -ը:

  • Արդյունքներ ՝ bin = «1001» և td = 0:
  • Անցնում է «seg 8» վիճակին, եթե ժամաչափը = 1 է:
  • Անցնում է «դատարկ 2» վիճակին, եթե ժամաչափը = 0 է:

(«Seg 8» –ից մինչև «Seg 2» կետերը բաց են թողնված, քանի որ դրանք հետևում են նույն օրինակին, ինչ «Seg 10» և «Seg 9» և բացատրության համար անհրաժեշտ չեն)

«Seg 1» (id = 0001)

Յոթ հատվածի ցուցադրումը ցույց է տալիս 1 -ը:

  • Արդյունքներ ՝ bin = “0001” և td = 0:
  • Անցնում է «դատարկ 2» վիճակին ՝ ժամացույցի հաջորդ բարձրացող եզրին (մուտքագրման կարիք չկա):

«Դատարկ 2» (id = 1111)

Յոթ հատվածի ցուցադրումը ցույց է տալիս 0. 0. Երկրորդ դատարկ վիճակի նպատակն այն է, որ անվտանգության համար լինի առանձին վիճակ, երբ td = 1:

  • Արդյունքներ ՝ bin = «1111» և td = 1:
  • Գնում է «դատարկ 1» կարգավիճակի ժամացույցի հաջորդ բարձրացող եզրին (մուտքագրման կարիք չկա):

«Դատարկ 1» (id = 0000)

Յոթ հատվածի ցուցադրումը ցույց է տալիս 0. Սա այն վիճակն է, որում համակարգը մնում է, երբ հիմնական պետական մեքենան գտնվում է «անջատված է, շարժում չի հայտնաբերվում» վիճակում:

  • Արդյունքներ ՝ bin = “0000” և td = 0:
  • Անցնում է «seg 10» վիճակին, եթե ժամաչափը = 1 է:

Քայլ 3. Պետական մեքենայի ճշմարտության աղյուսակներ, գրգռման հավասարումներ և ելքային հավասարումներ

Պետական մեքենայի ճշմարտության աղյուսակներ, գրգռման հավասարումներ և ելքային հավասարումներ
Պետական մեքենայի ճշմարտության աղյուսակներ, գրգռման հավասարումներ և ելքային հավասարումներ
Պետական մեքենայի ճշմարտության աղյուսակներ, գրգռման հավասարումներ և ելքային հավասարումներ
Պետական մեքենայի ճշմարտության աղյուսակներ, գրգռման հավասարումներ և ելքային հավասարումներ
Պետական մեքենայի ճշմարտության աղյուսակներ, գրգռման հավասարումներ և ելքային հավասարումներ
Պետական մեքենայի ճշմարտության աղյուսակներ, գրգռման հավասարումներ և ելքային հավասարումներ
Պետական մեքենայի ճշմարտության աղյուսակներ, գրգռման հավասարումներ և ելքային հավասարումներ
Պետական մեքենայի ճշմարտության աղյուսակներ, գրգռման հավասարումներ և ելքային հավասարումներ

Հաջորդ քայլը երկու վիճակ մեքենաների համար ճշմարտության աղյուսակներ ստեղծելն է և յուրաքանչյուր fsm- ի համար գրգռման հավասարումներ և ելքային հավասարումներ: Յուրաքանչյուր fsm գրգռման հավասարման համար անհրաժեշտ է լինել հավասարումներ յուրաքանչյուր հաջորդ վիճակի համար, որը կոդավորված բիտ է `ներկա վիճակի և դրա մուտքային ազդանշանների առումով: Յուրաքանչյուր fsm ելքային հավասարման համար անհրաժեշտ է, որ յուրաքանչյուր ելքային ազդանշանի համար լինեն հավասարումներ ընթացիկ վիճակի առումով: Բոլոր չորս հավասարումների հավաքածուները կարելի է քաղել պատկերված ճշմարտության աղյուսակներից: (qn- ը յուրաքանչյուր պետական մեքենայի համար հաջորդ կարգավորված բիթն է, իսկ q- ն ընթացիկ վիճակն է)

(000) համարժեք q (2) 'q (1)' q (0) ', և (0000) համարժեք q (3)' q (2) 'q (1)' q (0) '

(օր. (0101) q (3) 'q (2) q (1)' q (0) և (110) q (2) q (1) q (0) ')

Հիմնական 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)]

Հիմնական fsm- ի ելքային հավասարումներ.

  • լույսեր = (000) + (001) + (100)
  • ժամաչափ = (001)

Ստորին հաշվիչի 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)]

Ելքային հավասարումներ ներքևի հաշվիչի fsm- ի համար.

  • td = (1111)
  • աղբարկղ (3) = (1010) + (1001) + (1000) + (1111) + (0000)
  • աղբարկղ (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
  • աղբարկղ (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
  • աղբարկղ (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)

Քայլ 4: Փաթաթիչ, ենթամոդուլներ և սահմանափակում

Ինչպես արդեն բացատրված է Քայլ 1 -ում, այս մոդուլներն անհրաժեշտ են այս նախագծի համար և բոլորը կապված են «final_proj.vhd» վերնագրով փաթաթման մոդուլի հետ: «Basys3_Master.xdc» վերնագրով սահմանափակման ֆայլը օգտագործվում է բոլոր փաթաթման մուտքերն ու ելքերը միացնելու անջատիչներին, յոթ հատվածին և մուտքի/ելքի պորտերին Basys 3 տախտակին: Գլխավոր անջատիչը պետք է լինի տախտակի անջատիչը, որի լարերը միացված են, նորմալ/ձեռքով անջատիչը երկրորդն է, և երեք անջատիչները, որոնք ներկայացնում են շարժման երեք սենսորները, երեք անջատիչներն են `նորմալ/ձեռքով անջատիչի կողքին:. Բոլոր ծածկագրերը (բուլյան հավասարումներ, մոդուլային հայտարարագրեր և այլն) արդեն գրված են ֆայլերում, այնպես որ այլևս ոչինչ չպետք է գրեք այս աշխատանքը կատարելու համար:

Քայլ 5: I/O նավահանգիստներ LED- ի համար

I/O նավահանգիստներ LED- ի համար
I/O նավահանգիստներ LED- ի համար
I/O նավահանգիստներ LED- ի համար
I/O նավահանգիստներ LED- ի համար

Այս նախագծի վերջին քայլը led- ի օգտագործումն է `ցույց տալու համար, թե արդյոք լույսերը իրականում միանում կամ անջատվում են: Էլեկտրագծերը ցուցադրվում են երկու նկարներում: Համոզվեք, որ լուսարձակով մի շարք դիմադրություն կա (առնվազն 330 օմ), որպեսզի այն չայրվի և համոզվեք, որ լուսադիոդի երկար քորոցը միացված է բազայի տախտակի նույն կանացի վերնագրին, ինչպես ցույց է տրված կարմիր մետաղալարը (վերև աջից) և ավելի կարճ քորոցը միացված է գետնին, նույն կին վերնագրով, ինչպես ցույց է տրված սև մետաղալարը (վերև, ձախից երկրորդ):

Խորհուրդ ենք տալիս: