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

Ունիվերսալ անջատիչ մոդելը `10 քայլ
Ունիվերսալ անջատիչ մոդելը `10 քայլ

Video: Ունիվերսալ անջատիչ մոդելը `10 քայլ

Video: Ունիվերսալ անջատիչ մոդելը `10 քայլ
Video: Արժե վերցնել ԱՄԵՆ ԻՆՉ?? Եվ ինչն է լավ ATS25X1 ռադիոընդունիչի մանրամասն վերանայման մասին 2024, Դեկտեմբեր
Anonim
Ունիվերսալ անջատիչի մոդել
Ունիվերսալ անջատիչի մոդել

Հոգնե՞լ եք քնելուց առաջ ստուգելուց, որ ձեր տան բոլոր լույսերն անջատված են: Wishանկանու՞մ եք, որ միանգամից անջատեք յուրաքանչյուր լույս առանց աղմուկի: Էներգիա և ժամանակ խնայելու համար մենք որոշեցինք ստեղծել մի համակարգ, որը տեսականորեն կարող էր մի ամբողջ տուն փակել միանգամից:

Մենք մոդելավորեցինք այս հայեցակարգի ապացույցը ՝ օգտագործելով մի քանի լուսադիոդային և բազային 3 միակցիչ տախտակ և ստեղծեցինք դիզայն, որը կոճակի սեղմումով կանջատեր բոլոր LED- ները: Այս մոդելը կարող է կիրառվել նաև տան լուսավորության իրական համակարգի նկատմամբ, չնայած այն կպահանջի ավելի բարդ էլեկտրագծեր և փոփոխություններ տվյալ VHDL ֆայլերի համար:

Քայլ 1: Ներմուծեք տրված VHDL ֆայլերը

Որպեսզի մեր մոդելը ճիշտ աշխատի, դուք պետք է ներբեռնեք այն ծրագրաշարը, որը տալիս է Basys 3 տախտակին իր ցուցումները:

Նախ պետք է ներբեռնեք սինթեզի գործիք ՝ vhdl ֆայլերը ապարատային ծրագրերի իրականացման համար: Եթե ցանկանում եք վստահ լինել, որ ամբողջ ծածկագիրը ամբողջությամբ կկրկնօրինակի մեր դիզայնը ՝ առանց որևէ փոփոխության անհրաժեշտության, խորհուրդ ենք տալիս օգտագործել Vivado 2016.2 -ը: Vivado- ի տեղադրումից հետո կարող եք ստեղծել նախագիծ և ներբեռնել մեր սկզբնական ֆայլերը: Ավելացրեք դրանք որպես աղբյուր ձեր նախագծին, մի մոռացեք ավելացնել նաև սահմանափակումների ֆայլը:

Հաջորդը մենք կբացատրենք, թե ինչ է անում աղբյուրի ֆայլերից յուրաքանչյուրը: Բաց թողեք 2 -ից 6 -րդ քայլերը, եթե պարզապես ցանկանում եք հասնել սարքի ֆիզիկական կառուցվածքին:

Քայլ 2. VHDL վերին մոդուլի խզումը

VHDL վերին մոդուլի խափանում
VHDL վերին մոդուլի խափանում
VHDL վերին մոդուլի խափանում
VHDL վերին մոդուլի խափանում

Topրագրի վերին մոդուլն այն է, ինչը կապում է բոլոր առանձին բաղադրիչ մոդուլները օգտագործված սարքավորման հետ: Ինչպես տեսնում եք, մենք ունենք killSwitch և buzzerControl մոդուլներ, որոնք սահմանված են որպես բաղադրիչներ վերևում:

Ստորին հատվածում նշվում է, թե ինչպես են այս մոդուլները միացված միմյանց: Մենք չորս LED միացրել ենք տախտակին և դրանք կապել kill0witch մոդուլների հետ dev0 միջոցով dev3: Մենք ունենք killSwitch- ի չորս մոդուլ, քանի որ մեզ անհրաժեշտ է մեկը `միացված յուրաքանչյուր LED- ի վիճակը կառավարելու համար: Այս մոդուլներից յուրաքանչյուրն օգտագործում է ժամացույցի և կոճակի ազդանշանը, որը մենք ստեղծել ենք վերին մոդուլի սահմանման մեջ, ինչպես նաև դրանց համապատասխան մուտքային և ելքային սարքի ազդանշանները:

Ներքևի ազդանշանային կառավարման մոդուլը ակտիվացնում է ազդանշանը, երբ սեղմված է համընդհանուր անջատման կոճակը: Ինչպես տեսնում եք, ազդանշանային կառավարման մոդուլը փոխանցվում է ժամացույցի և կոճակի ազդանշանին որպես մուտքագրում: Այն նաև փոխանցվում է ֆիզիկական ազդանշանի ելքային քորոցին `համապատասխանաբար այն կառավարելու համար:

Քայլ 3. VHDL Kill Switch մոդուլի խափանում

VHDL Kill Switch մոդուլի խափանում
VHDL Kill Switch մոդուլի խափանում
VHDL Kill Switch մոդուլի խափանում
VHDL Kill Switch մոդուլի խափանում

Kill Switch- ը ունիվերսալ անջատման կոճակ է, և մոդուլը հիմնականում վերաբերում է այն միացման այլ տարրերին միացնելուն, որպեսզի սեղմելիս բոլոր լույսերը անջատվեն:

Մինչ վերին մոդուլը կարգավորում է ֆիզիկական ապարատը ծրագրային ապահովման հետ միացնելը, killSwitch մոդուլը կարգավորում է յուրաքանչյուր սարքի հիմնական տրամաբանությունը: Մոդուլը ընդունում է ժամացույցի ազդանշանի, ունիվերսալ անջատման կոճակի և սարքի միացման անջատիչի մուտքերը: Դրա դիմաց այն վերահսկում է սարքի կապի վիճակը, որին միացված է:

Կոդի ճարտարապետության բաժնում մենք տեսնում ենք, որ այն կախվածություն ունի dFlipFlop մոդուլից `հիշողություն պահելու համար: Կարող եք նաև տեսնել, որ մենք հայտարարագրել ենք չորս ազդանշան, որոնք կօգտագործվեն մատով խփելիս միացնելու, ինչպես նաև մեր տրամաբանական հայտարարություններն իրականացնելու համար: Կոդի վարքագծային բաժնում մենք ստեղծել ենք dFlipFlop մոդուլի օրինակ և մեր մուտքի/ելքի ազդանշանները նշանակել նավահանգիստներին:

Այստեղից մեր տրամաբանության հիմնական մասը գտնվում է invertState- ի և isDevOn- ի ազդանշանային արժեքների մեջ: Սարքի մեր տրամաբանական հիմքը հետևյալն է. Այս երկու հայտարարություններից կարող ենք եզրակացնել, որ LED- ի վիճակը պետք է լինի անջատիչի XOR- ը և մեր հիշողության տարրը: Այդ կերպ կամ LED- ի փոփոխությունը շրջում է LED- ը: Սա կարելի է տեսնել isDevOn ազդանշանի իրագործման մեջ: Հիշողության տարրի պայմանով LED- ը մշակվում է մեր invertState ազդանշանի միջոցով: Եթե LED- ը միացված է, և կոճակը սեղմված է, մեր հիշողության տարրը կթարմացվի և կշրջի իր վիճակը: Սա նաև շրջում է LED- ի վիճակը:

Քայլ 4. VHDL Flip Flop մոդուլի խափանում

VHDL Flip Flop մոդուլի խափանում
VHDL Flip Flop մոդուլի խափանում

Մեր դիզայնի հետ կապված խնդիրներից մեկն այն էր, որ անջատիչ անջատիչն օգտագործելուց հետո նախկինում միացված լույսերը կարող էին երկու անգամ պտտվել `միացված դիրքին վերադառնալու համար: Սա ժամանակի ընթացքում բավականին անհարմարություն կլինի մարդկանց համար: Մեզ հաջողվեց շրջանցել այս անհարմարությունը ՝ ներառելով «Flip Flop» - ը, որը կարող է տեղեկատվություն պահպանել ՝ մեր նախագծում: Այժմ համակարգը հիշում է, թե արդյոք լույսի անջատիչը նախկինում միացված էր, որպեսզի այն նորից շրջվելու դեպքում այն միանա անկախ իր սկզբնական դիրքից:

VHDL ծածկագիրը օգտագործում է if և else հայտարարությունները, որպեսզի Flip Flop- ը ստեղծի որպես բաղադրիչ մեր սխեմայի նախագծման մեջ: Այն ապահովում է, որ ժամացույցի ազդանշանը ցածրից բարձր վիճակի անցնելիս, երբ լամպը միացված է, և երբ անջատիչը սեղմված է, մատանի շղթայի ելքը փոխարինում է նրա մուտքին: Երբ մուտքը վերաշարադրվում է, մատով խափանումը շրջվում է:

Քայլ 5. VHDL Piezo Buzzer մոդուլի խափանում

VHDL Piezo Buzzer մոդուլի խափանում
VHDL Piezo Buzzer մոդուլի խափանում
VHDL Piezo Buzzer մոդուլի խափանում
VHDL Piezo Buzzer մոդուլի խափանում

Ինչ վերաբերում է ապարատային դիզայնին, այս ֆայլը մի փոքր ավելորդ է, բայց այն էական է, որպեսզի վերին մոդուլը և սահմանափակումների ֆայլերը սահուն աշխատեն: Եթե որոշեք չօգտագործել Piezo ազդանշանը, ներբեռնեք այս ֆայլը, բայց միացրեք ազդանշանը Basys 3 տախտակին:

Piezo ազդանշանը, սեղմելով անջատելու կոճակը, կհնչի երկու նոտայի հնչերանգով, որը օգտվողին կտրամադրի կոճակը սեղմված լսողական արձագանք: Մենք դա վարքագծով իրականացրեցինք VHDL- ում `գործընթացային կառուցվածքում մի շարք if հայտարարությունների միջոցով: Մենք սկսեցինք ստեղծել մի ամբողջ թիվ ՝ հետևելու համար, թե ժամացույցի քանի փոփոխություն է տեղի ունեցել: Գործընթացը սկսվելուց հետո ծրագիրը առաջին կես վայրկյանը (0 -ից մինչև 50 միլիոն ժամացույց) տալիս է A նոտա ՝ 440 հերց արագությամբ: Դա արվում է ՝ պիեզո -ազդանշանային ազդանշանը շրջելով 227272 ժամացույցի յուրաքանչյուր նույնիսկ բազմակի ՝ մոդուլային գործառույթով: Այս թիվը տախտակի ժամացույցի ազդանշանը (100 ՄՀց) բաժանելու արդյունքն է ցանկալի հաճախականությանը (400 Հց): Երկրորդ կեսի ընթացքում (50 -ից 100 միլիոն ժամացույցի հարված) տախտակը թողարկում է F նոտա 349.2 հերց արագությամբ ՝ նույն մեթոդով, ինչ նախկինում: Մեկ վայրկյան անց ծրագիրը այլևս չի ավելացնում ժամացույցի փոփոխականը և դադարում է որևէ բան դուրս բերել պիեզո ազդանշանից: Համընդհանուր անջատման կոճակը կրկին սեղմելը այս թիվը 0 -ի է վերադարձնում ՝ վերսկսելով աղմուկի ցիկլը:

Քայլ 6: VHDL սահմանափակումների ֆայլի խզում

Սահմանափակումների ֆայլը պատմում է Vivado- ին, թե ինչ սարքեր ենք մենք օգտագործում Basys 3 տախտակի վրա: Այն նաև տրամադրում է Vivado- ի անունները, որոնք մենք տվել ենք մեր ծածկագրում գտնվող սարքերին: Vivado- ն կարիք ունի այս տեղեկատվության, որպեսզի իմանա, թե ինչպես միացնել մեր տրամաբանական տարրերը ֆիզիկական սարքավորումներին: Արգելքների ֆայլը ներառում է մեծ քանակությամբ մեկնաբանված (չօգտագործված) ծածկագիր: Կոդի այս տողերը վերաբերում են տախտակի վրա գտնվող սարքերին, որոնք մենք չենք օգտագործում:

Սարքերը, որոնք մենք օգտագործում ենք, ներառում են չորս մուտքային անջատիչ ՝ տախտակի վրա մակնշված V17, V16, W16 և W1: Մենք նաև օգտագործում ենք ունիվերսալ անջատման կոճակը ՝ U18 պիտակով: Մեր չորս միացված LED- ների ելքային կապերն են `JB4, JB10, JC4 և JC10: Մեր պիեցցո ազդանշանի համար մենք օգտագործում ենք ելքային կապ JA9:

Ինչպես նշեցինք վերևի մոդուլի խզման մեջ, եթե ցանկանում եք լրացուցիչ լուսադիոդային լուսարձակներ կամ այլ սարքեր ավելացնել տախտակին, անհրաժեշտ է մեծացնել sw և dev ազդանշանների շրջանակը, ավելացնել ավելի killSwitch մոդուլներ և դրանք միացնել միասին: Այնուհետեւ դուք պետք է այդ փոփոխականների անունները կապեք սարքի ապարատին `սահմանափակումների ֆայլի միջոցով: Դա կարելի է անել ՝ չմեկնաբանելով (նորից միացնելով) այն կոդերը, որոնք կապված են այն կապում, որը ցանկանում եք օգտագործել, այնուհետև վերին մոդուլում ավելացնելով դրա հետ կապված փոփոխականի անունը: Դրա համար համապատասխան շարահյուսությունը կարող է պատճենվել մեր օգտագործած սարքերից: Գրատախտակների անունները պարզելու համար, որոնք ցանկանում եք օգտագործել գրատախտակին, հղեք այստեղ Baasys 3 տեղեկատու ուղեցույցը:

Քայլ 7. Հիմքերի կառուցում 3

Բասիսի կառուցում 3
Բասիսի կառուցում 3
Բասիսի կառուցում 3
Բասիսի կառուցում 3

Դուք պետք է ձեր LED- ները միացնեք Basys- ի ճիշտ I/O նավահանգիստներին: Հետևեք ներկայացված նկարներին `որոշելու, թե որոնք են ճիշտ նավահանգիստները, քանի որ LED- ը սխալ նավահանգստին միացնելու դեպքում այն չի լուսավորվի: Եթե դուք ընտրել եք կցել պիեզո ազդանշանը, ապա ձեզ նույնպես պետք է այն միացնել ճիշտ մուտքի/ելքի պորտերին:

Երբ տախտակը պատրաստ լինի, միացրեք այն համակարգչին USB մալուխի միջոցով:

Քայլ 8. VHDL ֆայլերի ներդրում Basys 3 -ում

VHDL ֆայլերի ներդրում Basys 3 -ում
VHDL ֆայլերի ներդրում Basys 3 -ում
VHDL ֆայլերի ներդրում Basys 3 -ում
VHDL ֆայլերի ներդրում Basys 3 -ում

Այժմ, երբ ձեր տախտակը պատրաստ է, և ձեր ծածկագիրն ավարտված է, դուք կարող եք վերջապես համատեղել մոդելը:

Երբ դուք ստեղծեք ձեր նախագիծը Vivado- ում, դուք պետք է սեղմեք «Ստեղծել Bitstream» կոճակը ՝ ծածկագիրը կազմելու համար, նախքան այն տախտակ վերբեռնվելը: Եթե այս պահին դուք ստանում եք սխալի հաղորդագրություն, դուք պետք է կրկնակի ստուգեք, որ ձեր կոդը ճշգրիտ համընկնում է մեր կոդի հետ: Երբ ես հստակ ասում եմ, ես նկատի ունեմ նույնիսկ ստորակետները կամ փակագծերի տեսակները, որոնք օգտագործվում են: Երբ ձեր bitstream- ը հաջողությամբ գրվի, գնացեք Vivado- ի ապարատային մենեջեր և կտտացրեք «Բաց թիրախ» կոճակին, այնուհետև անմիջապես սեղմեք «Deրագրի սարք»: Ձեր Basys 3 տախտակն այժմ պետք է լիովին գործի:

Քայլ 9. Օգտագործելով Basys 3 տախտակը

Օգտագործելով Basys 3 խորհուրդը
Օգտագործելով Basys 3 խորհուրդը

Այժմ, երբ Basys 3 խորհուրդը գործում է և ծրագրված է ներկայացնել մեր մոդելը, դուք պետք է իմանաք, թե ինչպես օգտագործել այն:

Աջից ամենահեռավոր չորս անջատիչներից յուրաքանչյուրը վերահսկում է LED- ներից մեկը, դրանք սեղմելը կհանգեցնի LED- ի միացման կամ անջատման: Եթե LED- ը չի ակտիվանում, ստուգեք, որ միացված եք ճիշտ մուտքի/ելքի պորտին, և որ ձեր LED- ն առաջին հերթին ֆունկցիոնալ է:

Երբ ուզում եք անջատել բոլոր LED- ները միանգամից, դուք պետք է սեղմեք կենտրոնական կոճակը վերևում ցուցադրված հինգ կոճակների հավաքածուի մեջ:

Քայլ 10: Offույց տվեք:

Մոդելը ծառայում է որպես կոկիկ փոքրիկ նորույթ, որը կարող եք ցուցադրել ձեր ընկերների և ընտանիքի առջև: Այն տեսականորեն կարող է օգտագործվել նաև ձեր տան էլեկտրական համակարգում ունիվերսալ անջատիչ տեղադրելու համար, եթե LED- ները փոխարինեք ձեր լույսերին տանող լարերով: Թեև դա հնարավոր է, մենք դեռ պետք է խորհուրդ տանք դրա դեմ: Հնարավոր է լուրջ վնաս հասցնել ինքներդ ձեզ կամ ձեր տանը, եթե փորձեք վերալիցքավորել առանց էլեկտրիկի օգնության:

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