Sisukord:

Universaalse väljalülitusmudeli mudel: 10 sammu
Universaalse väljalülitusmudeli mudel: 10 sammu

Video: Universaalse väljalülitusmudeli mudel: 10 sammu

Video: Universaalse väljalülitusmudeli mudel: 10 sammu
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, November
Anonim
Universaalse väljalülitusmudeli mudel
Universaalse väljalülitusmudeli mudel

Kas olete väsinud enne magamaminekut kontrollimast, kas kõik teie maja tuled on välja lülitatud? Kas soovite, et saaksite kõik tuled korraga ilma tülita välja lülitada? Energia ja aja kokkuhoiu eesmärgil otsustasime luua süsteemi, mis teoreetiliselt võib kogu maja korraga sulgeda.

Me modelleerisime selle kontseptsiooni tõestuse, kasutades paari LED -i ja basys 3 trükkplaati, ning lõime disaini, mis lülitaks kõik LED -id nupuvajutusega välja. Seda mudelit saab rakendada ka tegeliku kodu valgustussüsteemi suhtes, kuigi see nõuaks keerukamat juhtmestikku ja antud VHDL -failide muutmist.

Samm: importige antud VHDL -failid

Meie mudeli korrektseks toimimiseks peate alla laadima tarkvara, mis annab Basys 3 tahvlile juhised.

Kõigepealt peate alla laadima sünteesi tööriista vhdl -failide riistvara rakendamiseks. Kui soovite olla kindel, et kogu kood kordab täielikult meie disaini ilma muudatusi tegemata, soovitame kasutada Vivado 2016.2. Pärast Vivado installimist saate luua projekti ja alla laadida meie lähtefailid. Lisage need oma projektile allikatena, ärge unustage lisada ka piirangute faili!

Järgnevalt selgitame, mida iga lähtefail teeb. Kui soovite lihtsalt seadme füüsilisele ehitusele juurde pääseda, jätke sammud 2–6 vahele.

2. samm: VHDL tippmooduli jaotus

VHDL tippmooduli jaotus
VHDL tippmooduli jaotus
VHDL tippmooduli jaotus
VHDL tippmooduli jaotus

Projekti ülemine moodul ühendab kõik üksikud komponendimoodulid kasutatud riistvaraga. Nagu näete, on killSwitch ja buzzerControl moodulid ülaosas määratletud komponentidena.

Alumine osa määrab, kuidas need moodulid omavahel ühendatakse. Oleme ühendanud plaadiga neli LED -i ja seostanud need killSwitch moodulitega dev0 kuni dev3. Meil on määratletud neli killSwitch moodulit, sest iga ühendatud LED -i oleku haldamiseks vajame ühte. Kõik need moodulid kasutavad kella ja nupu signaali, mille lõime mooduli ülemises definitsioonis, samuti nende vastavaid sisendlüliti ja väljundseadme signaale.

Allosas olev summeri juhtimismoodul aktiveerib helisignaali universaalse väljalülitusnupu vajutamisel. Nagu näete, edastatakse summeri juhtimismoodul sisendina kella ja nupu signaali. Samuti edastatakse füüsilise summeri väljundnõel, et seda vastavalt juhtida.

3. samm: VHDL tapmislüliti mooduli lagunemine

VHDL tapmislüliti mooduli jaotus
VHDL tapmislüliti mooduli jaotus
VHDL tapmislüliti mooduli jaotus
VHDL tapmislüliti mooduli jaotus

Kill Switch on universaalne väljalülitusnupp ja moodul on peamiselt seotud selle ühendamisega teiste vooluahela elementidega, nii et kui seda vajutada, lülituvad kõik tuled välja.

Kui ülemine moodul tegeleb füüsilise riistvara ühendamisega tarkvaraga, siis killSwitch moodul tegeleb iga seadme põhiloogikaga. Moodul võtab sisenditesse kella signaali, universaalse väljalülitusnupu ja seadme lüliti. Vastutasuks kontrollib see seadme tihvti olekut, millega see on ühendatud.

Koodi arhitektuuri osas näeme, et sellel on mälu salvestamiseks sõltuvus dFlipFlop moodulist. Samuti näete, et oleme deklareerinud neli signaali, mida kasutatakse flip flopi ühendamiseks ja loogiliste avalduste rakendamiseks. Koodi käitumisjaotises oleme loonud dFlipFlop mooduli eksemplari ja määranud oma I/O signaalid portidele.

Siit tuleneb meie loogika põhiosa invertState ja isDevOn signaali väärtustes. Meie seadme loogiline alus on järgmine: "Iga kord, kui lülitit visatakse, pöörab valgus selle sisse/välja lülitatud oleku. Iga kord, kui nuppu vajutatakse ja LED -tuli põleb, pöörab LED oma oleku välja. " Nendest kahest väitest saame ekstrapoleerida, et LED -i olek peaks olema lüliti XOR ja meie mäluelement. Sel viisil muudab kumbagi LED -i. Seda saab näha rakendatuna isDevOn signaalis. Mäluelemendi sisselülitatud LED -i olekut haldab meie invertState signaal. Kui valgusdiood põleb ja nuppu vajutatakse, värskendab meie mäluelement oma olekut. See muudab seejärel ka LED -i oleku.

4. samm: VHDL Flip Flop mooduli jaotus

VHDL Flip Flop mooduli jaotus
VHDL Flip Flop mooduli jaotus

Üks meie disaini probleem oli asjaolu, et pärast väljalülituslüliti kasutamist võib varem sisse lülitatud tulesid sisse lülitatud asendisse naasmiseks vaja kaks korda ümber pöörata. See oleks inimestele aja jooksul üsna ebamugav. Meil õnnestus sellest ebamugavusest mööda hiilida, lisades oma disaini "Flip Flop", vooluahela elemendi, mis suudab teavet salvestada. Nüüd mäletab süsteem, kas valguslüliti oli varem sisse lülitatud, nii et kui see uuesti pööratakse, lülitub see sisse sõltumata selle esialgsest asendist.

VHDL -kood kasutab lauset if ja else, et luua Flip Flop meie vooluahela kujunduse komponendina. See tagab, et kui kella signaal liigub madalalt kõrgele, kui pirn on sisse lülitatud ja väljalülitusnuppu vajutatakse, kirjutab klappide väljund oma sisendi üle. Sisendi ülekirjutamisel pööratakse klapp ümber.

Samm: VHDL pieso -sumina mooduli lagunemine

VHDL piezo summeri mooduli jaotus
VHDL piezo summeri mooduli jaotus
VHDL piezo summeri mooduli jaotus
VHDL piezo summeri mooduli jaotus

See fail on riistvara disaini osas pisut üleliigne, kuid see on hädavajalik, et ülemise mooduli ja piirangute failid sujuks. Kui otsustate Piezo summeri mitte kasutada, laadige see fail alla, kuid ärge kinnitage summerit Basys 3 tahvlile.

Piezo summeri mängib pärast keelamisnupu vajutamist kahe noodiga tooni, mis annab kasutajale kuuldava tagasiside nupu vajutamise kohta. Rakendasime seda VHDL -is käitumuslikult protsessistruktuuri if -lausete kaudu. Alustasime täisväärtuse loomisest, et jälgida kella muutuste arvu. Kui protsess algab, kulutab programm esimese poole sekundi (0–50 miljonit kella tiksumist) A -noodi väljastamiseks 440 hertsil. See saavutatakse, pöörates piesosummeri signaali iga 227272 kella tiksumise paarismooduli abil ümber, kasutades modulo -funktsiooni. See arv on saadud plaadi kella signaali (100 MHz) jagamisel soovitud sagedusega (400 Hz). Teise poole sekundi jooksul (50–100 miljonit kella tiksumist) väljastab plaat F -noodi 349,2 hertsiga sama meetodi abil nagu varem. Ühe sekundi pärast ei suurenda programm enam kella muutujat ja lõpetab piesohelisignaali väljastamise. Universaalse väljalülitusnupu uuesti vajutamine lähtestab selle numbri väärtuseks 0, käivitades müratsükli uuesti.

6. samm: VHDL -piirangute faili jaotus

Piirangute fail ütleb Vivadole, milliseid seadmeid me Basys 3 tahvlil kasutame. Samuti annab see Vivadole nimed, mille me oma koodis seadmetele andsime. Vivado vajab seda teavet, et ta teaks, kuidas ühendada meie loogikaelemendid füüsilise riistvaraga. Piirangute fail sisaldab suures koguses kommenteeritud (kasutamata) koodi. Need koodiread viitavad tahvli seadmetele, mida me ei kasuta.

Meie kasutatavate seadmete hulgas on tahvlil neli sisendlülitit, mis on märgistatud V17, V16, W16 ja W1. Kasutame ka universaalset väljalülitusnuppu, märgistusega U18. Meie nelja ühendatud LED -i väljundtihvtid on JB4, JB10, JC4 ja JC10. Meie piezzo summeri jaoks kasutame väljundtihvti JA9.

Nagu me ülaltoodud moodulite jaotuses märkisime, kui soovite tahvlile lisada täiendavaid LED -e või muid seadmeid, peate suurendama sw- ja dev -signaalide ulatust, lisama rohkem killSwitch -mooduleid ja ühendama need kokku. Seejärel peate piirangute faili kaudu need muutujate nimed seadme riistvaraga siduma. Seda saab teha, eemaldades soovitud tihvtidega seotud koodiridade kommentaarid (uuesti lubades) ja lisades ülemise mooduli juurde selle seotud muutuja nime. Selle õige süntaksi saab kopeerida meie kasutatavatest seadmetest. Tahvlil kasutatavate tihvtide nimede leidmiseks vaadake Baasys 3 teatmikku siit.

Samm: aluste ehitamine 3

Aluste ehitamine 3
Aluste ehitamine 3
Aluste ehitamine 3
Aluste ehitamine 3

Peate oma valgusdioodid ühendama Basys 3 õigetesse sisend-/väljundportidesse. Järgige kaasasolevaid pilte, et teha kindlaks, millised on õiged pordid, sest kui ühendate valgusdioodi vale porti, ei sütti see. Kui olete valinud piesosummeri kinnitamise, peate selle ühendama ka õigete sisend-/väljundportidega.

Kui plaat on valmis, ühendage see USB -kaabli abil arvutiga.

Samm 8: VHDL -failide juurutamine Basysse 3

VHDL -failide rakendamine Basys 3
VHDL -failide rakendamine Basys 3
VHDL -failide rakendamine Basys 3
VHDL -failide rakendamine Basys 3

Nüüd, kui teie plaat on valmis ja kood on valmis, saate mudeli lõpuks kokku panna.

Kui olete oma projekti Vivados seadistanud, peate koodi koostamiseks enne tahvlile üleslaadimist klõpsama nupul „Loo bitivool”. Kui saate sel ajal veateate, peate uuesti kontrollima, kas teie kood vastab täpselt meie koodile. Kui ma ütlen täpselt, siis pean silmas isegi semikooloneid või kasutatavate sulgude tüüpe. Kui teie bitivoog on edukalt kirjutatud, minge Vivado riistvarahalduri juurde ja klõpsake nuppu "Ava sihtmärk", seejärel klõpsake kohe pärast seda "Programmi seade". Teie Basys 3 plaat peaks nüüd täielikult toimima.

9. samm: Basys 3 tahvli kasutamine

Basys 3 tahvli kasutamine
Basys 3 tahvli kasutamine

Nüüd, kui Basys 3 tahvel on töökorras ja see on programmeeritud meie mudelit esindama, peate teadma, kuidas seda kasutada.

Kõik neli paremale kõige kaugemal asuvat lülitit juhivad üht LED -i, nende klõpsamisel lülitub LED sisse või välja. Kui valgusdiood ei sütti, kontrollige, kas olete ühendatud õigesse sisend-/väljundporti ja kas teie LED on esiteks töökorras.

Kui soovite kõik LED -id korraga välja lülitada, peate vajutama ülaltoodud viie nupu komplekti keskmist nuppu.

Samm: näidake ennast välja

Mudel on puhas väike uudis, mida saate oma sõprade ja pere ees näidata. Seda saab teoreetiliselt kasutada ka universaalse väljalülitamise rakendamiseks teie kodu elektrisüsteemi, kui asendate LED -id juhtmetega, mis viivad teie tulede juurde. Kuigi see on võimalik, peame siiski selle vastu soovitama. Kui proovite elektrijuhi abita uuesti ühendada, võite endale või oma kodule tõsist kahju teha.

Soovitan: