Sisukord:
- Samm: importige antud VHDL -failid
- 2. samm: VHDL tippmooduli jaotus
- 3. samm: VHDL tapmislüliti mooduli lagunemine
- 4. samm: VHDL Flip Flop mooduli jaotus
- Samm: VHDL pieso -sumina mooduli lagunemine
- 6. samm: VHDL -piirangute faili jaotus
- Samm: aluste ehitamine 3
- Samm 8: VHDL -failide juurutamine Basysse 3
- 9. samm: Basys 3 tahvli kasutamine
- Samm: näidake ennast välja
Video: Universaalse väljalülitusmudeli mudel: 10 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
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
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
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
Ü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
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
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
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
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:
Universaalse kaugjuhtimispuldi loomine NodeMCU -ga: 7 sammu
Universaalse kaugjuhtimispuldi loomine NodeMCU abil: Selles projektis ehitame universaalse kaugjuhtimispuldi, mis on võimeline kloonima ja infrapunasignaale saatma. Kogu selle protsessi juhtimiseks kasutatakse veebiliidest. NodeMCU koos infrapuna fotoretseptoriga vastutab kloonimise eest
Uus DIY idee universaalse mootori toitevahendite käivitamiseks ilma elektrita: 4 sammu (piltidega)
Uus DIY idee universaalse mootori toitevahendite käivitamiseks ilma elektrita: Hei, poisid !!!! Selles juhendis saate teada, kuidas teha hädaolukorras elektrit, et saaksite kasutada universaalseid mootoriga elektrilisi tööriistu, kui kodus pole elektrit. See seadistus on meeles puhumine elektritööriistade kasutamiseks kaugetes piirkondades või isegi
Universaalse trükkplaadi jaoks konsoolikaabli ehitamine: 11 sammu
Universaalse trükkplaadi jaoks konsoolikaabli ehitamine: universaalse trükkplaadi (lühendatult UPCB) projektiga alustati, et võimaldada ühte mängukontrollerit, eriti võitluspulki, võimalikult paljudel erinevatel konsoolidel. Projekti kohta leiate teavet Shoryuken.com järgmisest lõimest
Universaalse trükkplaadi püsivara uuendamine: 4 sammu
Kuidas uuendada püsivara universaalsel trükkplaadil: universaalse PCB (lühidalt UPCB) projektiga alustati nii, et see võimaldaks ühte mängukontrollerit, eriti võitluspulki, võimalikult paljudel erinevatel konsoolidel. Projekti kohta leiate teavet Shoryuken.com järgmisest lõimest
Universaalse trükkplaadi jaoks USB -kaabli ehitamine: 11 sammu
Universaalse trükkplaadi jaoks USB -kaabli ehitamine: Universaalse trükkplaadi (lühendatult UPCB) projektiga alustati nii, et see võimaldaks ühte mängukontrollerit, eriti võitluspulki, võimalikult paljudel erinevatel konsoolidel. Projekti kohta leiate teavet Shoryuken.com järgmisest lõimest