Turinys:

Universalaus išjungimo jungiklio modelis: 10 žingsnių
Universalaus išjungimo jungiklio modelis: 10 žingsnių

Video: Universalaus išjungimo jungiklio modelis: 10 žingsnių

Video: Universalaus išjungimo jungiklio modelis: 10 žingsnių
Video: High Density 2022 2024, Lapkritis
Anonim
Universalaus išjungimo jungiklio modelis
Universalaus išjungimo jungiklio modelis

Ar pavargote prieš eidami miegoti patikrinti, ar jūsų namuose yra išjungtos visos šviesos? Ar norėtumėte, kad galėtumėte be jokių rūpesčių išjungti visas šviesas vienu metu? Norėdami sutaupyti energijos ir laiko, nusprendėme sukurti sistemą, kuri teoriškai galėtų uždaryti visą namą vienu metu.

Mes sukūrėme šios koncepcijos įrodymą naudodami keletą šviesos diodų ir „basys 3“plokštę ir sukūrėme dizainą, kuris vienu mygtuko paspaudimu išjungtų visus šviesos diodus. Šis modelis taip pat galėtų būti pritaikytas tikrojoje namų apšvietimo sistemoje, nors tam prireiktų sudėtingesnių laidų ir modifikuotų VHDL failų.

1 veiksmas: importuokite nurodytus VHDL failus

Kad mūsų modelis veiktų tinkamai, turėsite atsisiųsti programinę įrangą, kuri pateikia „Basys 3“plokštės instrukcijas.

Pirmiausia turėsite atsisiųsti sintezės įrankį, skirtą įdiegti vhdl failus į aparatūrą. Jei norite būti tikri, kad visas kodas visiškai pakartos mūsų dizainą be jokių pakeitimų, rekomenduojame naudoti „Vivado 2016.2“. Įdiegę „Vivado“, galite sukurti projektą ir atsisiųsti mūsų šaltinio failus. Pridėkite juos kaip šaltinius prie savo projekto, nepamirškite pridėti ir apribojimų failo!

Toliau paaiškinsime, ką daro kiekvienas šaltinio failas. Praleiskite 2–6 veiksmus, jei norite tik fiziškai susipažinti su įrenginiu.

2 žingsnis: VHDL viršutinio modulio suskirstymas

VHDL viršutinio modulio suskirstymas
VHDL viršutinio modulio suskirstymas
VHDL viršutinio modulio suskirstymas
VHDL viršutinio modulio suskirstymas

Viršutinis projekto modulis sujungia visus atskirus komponentų modulius su naudojama aparatūra. Kaip matote, „killSwitch“ir „buzzerControl“moduliai yra apibrėžti kaip komponentai viršuje.

Apatinėje dalyje nurodoma, kaip šie moduliai yra sujungti. Prie plokštės prijungėme keturis šviesos diodus ir susiejome juos su „killSwitch“moduliais nuo dev0 iki dev3. Mes turime keturis „killSwitch“modulius, nes mums reikia vieno, kad valdytume kiekvieno prijungto šviesos diodo būseną. Kiekvienas iš šių modulių naudoja laikrodžio ir mygtuko signalą, kurį sukūrėme viršutinėje modulio apibrėžtyje, taip pat atitinkamus įvesties jungiklio ir išvesties įrenginio signalus.

Apačioje esantis garso signalo valdymo modulis įjungia signalą, kai paspaudžiamas universalus išjungimo mygtukas. Kaip matote, garso signalo valdymo modulis perduodamas laikrodžio ir mygtuko signalu. Taip pat perduodamas fizinis garsinio signalo išvesties kaištis, kad jis būtų atitinkamai valdomas.

3 žingsnis: VHDL nužudymo jungiklio modulio suskirstymas

VHDL nužudymo jungiklio modulio suskirstymas
VHDL nužudymo jungiklio modulio suskirstymas
VHDL nužudymo jungiklio modulio suskirstymas
VHDL nužudymo jungiklio modulio suskirstymas

Nužudymo jungiklis yra universalus išjungimo mygtukas, o modulis pirmiausia yra susijęs su jo prijungimu prie kitų grandinės elementų, kad paspaudus visos lemputės išsijungtų.

Nors viršutinis modulis tvarko fizinės aparatūros prijungimą prie programinės įrangos, „killSwitch“modulis tvarko pagrindinę kiekvieno įrenginio logiką. Modulis įeina į laikrodžio signalo, universalaus išjungimo mygtuko ir įrenginio perjungimo jungiklio įvestis. Savo ruožtu jis kontroliuoja prietaiso kaiščio, prie kurio jis prijungtas, būseną.

Kodo architektūros skyriuje matome, kad jis priklauso nuo „dFlipFlop“modulio atminties saugojimui. Taip pat galite pastebėti, kad mes paskelbėme keturis signalus, kurie bus naudojami prijungti šnipštą ir įgyvendinti loginius teiginius. Kodo elgesio skyriuje sukūrėme dFlipFlop modulio egzempliorių ir priskyrėme įvesties/išvesties signalus prievadams.

Iš čia pagrindinė mūsų logikos dalis yra „invertState“ir „isDevOn“signalo reikšmės. Mūsų loginis prietaiso pagrindas yra toks: "Kiekvieną kartą, kai paspaudžiamas jungiklis, šviesa apvers jo įjungimo/išjungimo būseną. Kiekvieną kartą, kai paspaudžiamas mygtukas ir šviesos diodas šiuo metu dega, šviesos diodas pakeis būseną į išjungtą. " Iš šių dviejų teiginių galime ekstrapoliuoti, kad šviesos diodo būsena turėtų būti jungiklio XOR ir mūsų atminties elementas. Tokiu būdu pasikeitus bet kuriam šviesos diodui, jis pasikeičia. Tai galima pamatyti įgyvendinus isDevOn signalą. Atminties elemento šviesos diodo būklę tvarko mūsų invertState signalas. Jei šviečia šviesos diodas ir paspaudžiamas mygtukas, mūsų atminties elementas atnaujins ir pakeis būseną. Tai taip pat apverčia šviesos diodo būseną.

4 žingsnis: „VHDL Flip Flop“modulio suskirstymas

„VHDL Flip Flop“modulio suskirstymas
„VHDL Flip Flop“modulio suskirstymas

Viena mūsų dizaino problema buvo ta, kad panaudojus išjungimo jungiklį, anksčiau įjungtas lemputes gali tekti du kartus apversti, kad grįžtumėte į įjungtą padėtį. Laikui bėgant tai žmonėms sukeltų nemalonumų. Mums pavyko apeiti šiuos nepatogumus, į savo dizainą įtraukdami „Flip Flop“- grandinės elementą, galintį saugoti informaciją. Dabar sistema prisimena, ar prieš tai buvo įjungtas šviesos jungiklis, kad jei jis vėl būtų apverstas, jis įsijungtų nepriklausomai nuo pradinės padėties.

VHDL kodas naudoja teiginius „if and else“, kad sukurtų „Flip Flop“kaip komponentą mūsų grandinės konstrukcijoje. Tai užtikrina, kad kai laikrodžio signalas pereina iš žemos į aukštą būseną, kai lemputė yra įjungta ir kai paspaudžiamas išjungimo jungiklis, „flip flops“išvestis perrašo jo įvestį. Kai įvestis perrašoma, apversta.

5 žingsnis: „VHDL Piezo Buzzer“modulio suskirstymas

„VHDL Piezo Buzzer“modulio suskirstymas
„VHDL Piezo Buzzer“modulio suskirstymas
„VHDL Piezo Buzzer“modulio suskirstymas
„VHDL Piezo Buzzer“modulio suskirstymas

Kalbant apie aparatūros dizainą, šis failas yra šiek tiek nereikalingas, tačiau jis yra būtinas norint, kad viršutinio modulio ir apribojimų failai veiktų sklandžiai. Jei nuspręsite nenaudoti „Piezo“garsinio signalo, atsisiųskite šį failą, bet neprijunkite garso signalo prie „Basys 3“plokštės.

Paspaudus išjungimo mygtuką, pjezo garsinis signalas paleis dviejų natų toną, kuris vartotojui suteiks garsinį atsiliepimą apie mygtuko paspaudimą. Mes tai įgyvendinome VHDL, atlikdami keletą teiginių proceso struktūroje. Pradėjome nuo sveiko skaičiaus vertės, kad galėtume stebėti, kiek laikrodžio pakeitimų įvyko. Kai procesas prasideda, programa praleidžia pirmąją pusę sekundės (nuo 0 iki 50 milijonų laikrodžio varnelių), kad išleistų A užrašą 440 hercų dažniu. Tai pasiekiama apverčiant pjezo signalizatoriaus signalą kas porą 227272 laikrodžio varnelių su modulio funkcija. Šis skaičius gaunamas padalijus plokštės laikrodžio signalą (100 MHz) iš norimo dažnio (400 Hz). Per antrąją pusę sekundės (nuo 50 iki 100 milijonų laikrodžio varnelių) plokštė išleidžia 349,2 hercų F natą tuo pačiu metodu kaip ir anksčiau. Po vienos sekundės programa toliau nedidina laikrodžio kintamojo ir nustoja nieko išleisti iš pjezo garsinio signalo. Dar kartą paspaudus universalų išjungimo mygtuką, šis skaičius atkuriamas į 0, o triukšmo ciklas atnaujinamas.

6 veiksmas: VHDL apribojimų failo suskirstymas

Apribojimų failas nurodo „Vivado“, kokius įrenginius naudojame „Basys 3“plokštėje. Jame taip pat pateikiami „Vivado“pavadinimai, kuriuos davėme įrenginiams savo kode. „Vivado“reikia šios informacijos, kad ji žinotų, kaip prijungti mūsų loginius elementus prie fizinės įrangos. Apribojimų faile yra daug pakomentuotų (nepanaudotų) kodų. Šios kodo eilutės nurodo įrenginius, kurių nenaudojame.

Mūsų naudojami įrenginiai apima keturis įvesties jungiklius, pažymėtus lentoje V17, V16, W16 ir W1. Mes taip pat naudojame universalų išjungimo mygtuką, pažymėtą U18. Mūsų keturių prijungtų šviesos diodų išvesties kaiščiai yra JB4, JB10, JC4 ir JC10. Savo pjezo skambesiui naudojame išvesties kaištį JA9.

Kaip minėjome viršutiniame modulio suskirstyme, jei norite prie plokštės pridėti papildomų šviesos diodų ar kitų įrenginių, turite padidinti sw ir dev signalų apimtį, pridėti daugiau killSwitch modulių ir sujungti juos. Tada turėsite susieti tuos kintamųjų pavadinimus su įrenginio aparatine įranga per apribojimų failą. Tai galima padaryti nekomentuojant (iš naujo įjungiant) kodo eilutes, susietas su kaiščiais, kuriuos norite naudoti, tada pridėdami susijusio kintamojo pavadinimą viršutiniame modulyje. Tinkamą sintaksę galima nukopijuoti iš mūsų naudojamų įrenginių. Norėdami sužinoti kaiščių, kuriuos norite naudoti lentoje, pavadinimus, skaitykite „Baasys 3“informacinį vadovą čia.

7 žingsnis: pagrindo kūrimas 3

„Basys“statymas 3
„Basys“statymas 3
„Basys“statymas 3
„Basys“statymas 3

Šviesos diodus turėsite prijungti prie tinkamų „Basys“įvesties/išvesties prievadų. 3. Vadovaukitės pateiktomis nuotraukomis, kad nustatytumėte, kokie yra tinkami prievadai, nes jei įjungsite šviesos diodą į netinkamą prievadą, jis neužsidegs. Jei pasirinkote prijungti pjezo garsinį signalą, jį taip pat turėsite prijungti prie tinkamų įvesties/išvesties prievadų.

Kai plokštė bus paruošta, prijunkite ją prie kompiuterio per USB kabelį.

8 veiksmas: VHDL failų diegimas „Basys“3

VHDL failų diegimas „Basys 3“
VHDL failų diegimas „Basys 3“
VHDL failų diegimas „Basys 3“
VHDL failų diegimas „Basys 3“

Dabar, kai jūsų lenta yra paruošta ir jūsų kodas baigtas, galite pagaliau sudėti modelį.

Sukūrę projektą „Vivado“, turite spustelėti mygtuką „Generuoti srautą“, kad galėtumėte surinkti kodą prieš jį įkeldami į lentą. Jei šiuo metu gaunate klaidos pranešimą, turite dar kartą patikrinti, ar jūsų kodas tiksliai atitinka mūsiškį. Kai sakau tiksliai, turiu galvoje net kabliataškius ar naudojamų skliaustelių tipus. Sėkmingai įrašę bitų srautą, eikite į „Vivado“aparatinės įrangos tvarkyklę ir spustelėkite mygtuką „Atidaryti tikslą“, tada iškart spustelėkite „Programuoti įrenginį“. Dabar jūsų „Basys 3“plokštė turėtų būti visiškai funkcionali.

9 veiksmas: „Basys 3“lentos naudojimas

„Basys 3“lentos naudojimas
„Basys 3“lentos naudojimas

Dabar, kai „Basys 3“lenta veikia ir yra užprogramuota atstovauti mūsų modeliui, turite žinoti, kaip ja naudotis.

Kiekvienas iš keturių toliausiai dešinėje esančių jungiklių valdo vieną iš šviesos diodų, juos spustelėjus, šviesos diodas įsijungs arba išsijungs. Jei šviesos diodas neįsijungia, patikrinkite, ar esate prijungtas prie tinkamo įvesties/išvesties prievado ir ar jūsų šviesos diodas veikia.

Jei norite išjungti visus šviesos diodus vienu metu, turite paspausti centrinį mygtuką iš penkių aukščiau pateiktų mygtukų.

10 žingsnis: parodykite

Modelis yra maža tvarkinga naujovė, kurią galite pademonstruoti savo draugų ir šeimos akivaizdoje. Teoriškai jis taip pat gali būti naudojamas universalaus išjungimo jungikliui įdiegti į jūsų namų elektros sistemą, jei šviesos diodus pakeisite laidais, vedančiais į jūsų žibintus. Nors tai įmanoma, vis tiek turėtume patarti to nedaryti. Jei bandysite perjungti laidus be elektriko pagalbos, galite rimtai pakenkti sau ar savo namams.

Rekomenduojamas: