Sisällysluettelo:

Yleiskatkaisukytkimen malli: 10 vaihetta
Yleiskatkaisukytkimen malli: 10 vaihetta

Video: Yleiskatkaisukytkimen malli: 10 vaihetta

Video: Yleiskatkaisukytkimen malli: 10 vaihetta
Video: Sıcacık Lavaş ile Acılı Ezmeli Et Dürüm Hazırladım ! 2024, Heinäkuu
Anonim
Yleiskatkaisukytkimen malli
Yleiskatkaisukytkimen malli

Oletko kyllästynyt tarkistamaan, että kaikki kodin valot ovat sammuneet ennen nukkumaanmenoa? Haluaisitko sammuttaa kaikki valot kerralla ilman hätää? Virran ja ajan säästämiseksi päätimme luoda järjestelmän, joka voisi teoriassa sulkea koko talon kerralla.

Mallinnimme todistuksen tästä konseptista käyttämällä paria LED -valoa ja basys 3 -piirilevyä ja loimme mallin, joka poistaisi kaikki LEDit käytöstä napin painalluksella. Tätä mallia voitaisiin soveltaa myös todelliseen kodin valaistusjärjestelmään, vaikka se vaatisi monimutkaisempia johdotuksia ja muutoksia annettuihin VHDL -tiedostoihin.

Vaihe 1: Tuo annetut VHDL -tiedostot

Jotta mallimme toimisi oikein, sinun on ladattava ohjelmisto, joka antaa Basys 3 -levyn ohjeet.

Ensin sinun on ladattava synteesityökalu vhdl -tiedostojen toteuttamiseksi laitteistoon. Jos haluat olla varma, että kaikki koodit toistavat suunnittelumme täysin ilman muutoksia, suosittelemme, että käytät Vivado 2016.2 -versiota. Kun olet asentanut Vivadon, voit luoda projektin ja ladata lähdetiedostomme. Lisää ne projektisi lähteiksi, älä unohda lisätä myös rajoitustiedostoa!

Seuraavaksi selitämme, mitä kukin lähdetiedosto tekee. Ohita vaiheet 2–6, jos haluat vain perehtyä laitteen fyysiseen rakenteeseen.

Vaihe 2: VHDL -ylämoduulin jakautuminen

VHDL -huippumoduulin jakautuminen
VHDL -huippumoduulin jakautuminen
VHDL -huippumoduulin jakautuminen
VHDL -huippumoduulin jakautuminen

Projektin huippumoduuli yhdistää kaikki yksittäiset komponenttiyksiköt käytettyyn laitteistoon. Kuten näette, meillä on killSwitch- ja buzzerControl -moduulit, jotka on määritelty komponenteiksi yläosassa.

Alemmassa osassa määritellään, miten nämä moduulit on kytketty yhteen. Olemme liittäneet neljä LEDiä korttiin ja liittäneet ne killSwitch -moduuleihin dev0 - dev3. Meillä on neljä killSwitch -moduulia, jotka on määritetty, koska tarvitsemme yhden hallitaksemme kunkin yhdistetyn LED -valon tilaa. Kukin näistä moduuleista hyödyntää ylemmässä moduulimäärityksessä luomamme kellon ja painikkeen signaalia sekä niiden tulokytkimen ja lähtölaitteen signaaleja.

Pohjassa oleva summerin ohjausmoduuli aktivoi summerin, kun yleispainike painetaan. Kuten huomaat, summerin ohjausmoduuli välitetään kellon ja painikkeen signaalina tuloina. Se ohjataan myös fyysisen summerin ulostulonapilla ohjaamaan sitä vastaavasti.

Vaihe 3: VHDL -tappokytkinmoduulin hajoaminen

VHDL -tappokytkinmoduulin jakautuminen
VHDL -tappokytkinmoduulin jakautuminen
VHDL -tappokytkinmoduulin jakautuminen
VHDL -tappokytkinmoduulin jakautuminen

Tappokytkin on universaali sammutuspainike, ja moduuli keskittyy ensisijaisesti sen liittämiseen muihin piirielementteihin, jotta kaikki valot sammuvat painettaessa.

Vaikka ylempi moduuli käsittelee fyysisen laitteiston yhdistämistä ohjelmistoon, killSwitch -moduuli käsittelee kunkin laitteen päälogiikkaa. Moduuli ottaa sisääntulot kellosignaalille, yleiselle sammutuspainikkeelle ja laitteen kytkimelle. Vastineeksi se ohjaa sen laitteen nastan tilaa, johon se on kytketty.

Koodin arkkitehtuuriosassa näemme, että se on riippuvainen dFlipFlop -moduulista muistin tallentamiseen. Voit myös nähdä, että olemme ilmoittaneet neljä signaalia, joita käytetään yhdistämään flip flop ja toteuttamaan logiikkamme. Koodin käyttäytymisosassa olemme luoneet dFlipFlop -moduulin ilmentymän ja määrittäneet I/O -signaalimme portteihin.

Tästä lähtien logiikkamme pääosa on invertState- ja isDevOn -signaalien arvoissa. Looginen perustamme laitteelle on seuraava: "Aina kun kytkin heitetään, valo kääntää sen päälle/pois -tilan. Aina kun painiketta painetaan ja LED -valo palaa, LED muuttaa tilansa pois päältä. " Näistä kahdesta lausunnosta voimme ekstrapoloida, että LEDin tilan tulee olla kytkimen XOR ja muistielementtimme, jolloin kumman tahansa muutos kääntää LEDin. Tämä näkyy toteutettuna isDevOn -signaalissa. Muistielementin LED -valon tila on invertState -signaalimme käsittelyssä. Jos merkkivalo palaa ja painiketta painetaan, muistielementtimme päivittyy ja muuttaa tilansa. Tämä kääntää sitten myös LEDin tilan.

Vaihe 4: VHDL Flip Flop -moduulin jakautuminen

VHDL Flip Flop -moduulin jakautuminen
VHDL Flip Flop -moduulin jakautuminen

Yksi ongelmamme suunnittelussa oli se, että virrankatkaisimen käytön jälkeen aiemmin sytytetyt valot on ehkä käännettävä kahdesti palatakseen päällä -asentoon. Tämä aiheuttaisi ihmisille suurta haittaa ajan myötä. Onnistuimme kiertämään tämän haitan sisällyttämällä suunnitteluun "Flip Flop" -piirielementin, joka pystyy tallentamaan tietoja. Nyt järjestelmä muistaa, onko valokytkin ollut aiemmin päällä, joten jos se käännetään uudelleen, se syttyy riippumatta alkuperäisestä asennostaan.

VHDL -koodi käyttää if ja else -lausekkeita luodakseen Flip Flopin osana piirisuunnittelua. Se varmistaa, että kun kellosignaali siirtyy matalasta korkeaan tilaan, kun hehkulamppu on päällä ja kun katkaisinta painetaan, varvastossun ulostulo korvaa tulonsa. Kun tulo korvataan, flip flop käännetään.

Vaihe 5: VHDL -pietsosummerimoduulin jakautuminen

VHDL -pietsosummerimoduulin jakautuminen
VHDL -pietsosummerimoduulin jakautuminen
VHDL -pietsosummerimoduulin jakautuminen
VHDL -pietsosummerimoduulin jakautuminen

Tämä tiedosto on hieman tarpeeton laitteiston suunnittelun osalta, mutta se on välttämätön, jotta ylämoduuli ja rajoitustiedostot toimivat sujuvasti. Jos et halua käyttää Piezo -summeria, lataa tämä tiedosto, mutta älä kiinnitä summeria Basys 3 -levyyn.

Piezo -summeri soittaa kahden painikkeen äänimerkin, kun painat poistopainiketta, joka antaa käyttäjälle äänipalautteen siitä, että painiketta on painettu. Toteutimme tämän käyttäytymistavan VHDL: ssä käyttämällä if -lauseita prosessirakenteessa. Aloitimme luomalla kokonaislukuarvon seurataksemme kuinka monta kelloa on muutettu. Kun prosessi alkaa, ohjelma käyttää ensimmäisen puolen sekunnin (0–50 miljoonaa kellopistettä) A -muistiinpanon tuottamiseen 440 hertsillä. Tämä saavutetaan kääntämällä pietsosummerin signaali jokaisen 227272 kellopisteen parillisen kerrannaisena modulo -toiminnolla. Tämä luku on saatu jakamalla kortin kellosignaali (100 MHz) halutulla taajuudella (400 Hz). Toisen puolen sekunnin aikana (50-100 miljoonaa kellotaajuutta) levy tulostaa F -nuotin 349,2 hertsillä samalla menetelmällä kuin aiemmin. Yhden sekunnin kuluttua ohjelma ei lisää kellomuuttujaa enempää ja lakkaa antamasta mitään pietsosummerista. Kun painat yleiskatkaisupainiketta uudelleen, tämä luku nollautuu ja kohinasykli käynnistyy uudelleen.

Vaihe 6: VHDL -rajoitustiedoston erittely

Rajoitustiedosto kertoo Vivadolle, mitä laitteita Basys 3 -levyssä käytämme. Se tarjoaa myös Vivadolle nimet, jotka annoimme koodissamme oleville laitteille. Vivado tarvitsee näitä tietoja, jotta se osaa yhdistää logiikkaelementtimme fyysiseen laitteistoon. Rajoitustiedosto sisältää suuren määrän kommentoitua (käyttämätöntä) koodia. Nämä koodirivit viittaavat taululla oleviin laitteisiin, joita emme käytä.

Käyttämämme laitteet sisältävät neljä tulokytkintä V17, V16, W16 ja W1. Käytämme myös yleiskatkaisupainiketta, merkitty U18. Neljän yhdistetyn LEDin ulostulonapit ovat JB4, JB10, JC4 ja JC10. Piezzosummerissamme käytämme lähtötappia JA9.

Kuten totesimme ylemmässä moduulijakautumisessa, jos haluat lisätä muita LED -valoja tai muita laitteita korttiin, sinun on lisättävä sw- ja dev -signaalien laajuutta, lisättävä lisää killSwitch -moduuleja ja liitettävä ne yhteen. Sinun on sitten linkitettävä nämä muuttujien nimet laitelaitteistoon rajoitustiedoston kautta. Tämä voidaan tehdä poistamalla komennot (ottamalla uudelleen käyttöön) käyttämiisi nastoihin liittyvät koodirivit ja lisäämällä sitten siihen liittyvän muuttujan nimi ylämoduuliin. Oikea syntaksi tälle voidaan kopioida käyttämistämme laitteista. Selvitä taululla käytettävien nastojen nimet Baasys 3 -oppaasta.

Vaihe 7: Perustoimintojen rakentaminen 3

Basien rakentaminen 3
Basien rakentaminen 3
Basien rakentaminen 3
Basien rakentaminen 3

Sinun on kytkettävä LED -valot Basys 3: n oikeisiin I/O -portteihin. Määritä oikeat portit seuraavien kuvien perusteella, koska jos liität LED -valon väärään porttiin, se ei syty. Jos olet päättänyt liittää pietsosummerin, sinun on myös kytkettävä se oikeisiin I/O -portteihin.

Kun kortti on valmis, kytke se tietokoneeseen USB -kaapelilla.

Vaihe 8: VHDL -tiedostojen käyttöönotto Basysissa 3

VHDL -tiedostojen käyttöönotto Basysissa 3
VHDL -tiedostojen käyttöönotto Basysissa 3
VHDL -tiedostojen käyttöönotto Basysissa 3
VHDL -tiedostojen käyttöönotto Basysissa 3

Nyt kun lauta on valmis ja koodisi on valmis, voit vihdoin koota mallin yhteen.

Kun olet määrittänyt projektisi Vivadossa, sinun on napsautettava "Luo bittivirta" -painiketta, jotta voit koota koodin ennen kuin se ladataan taululle. Jos saat virheilmoituksen tällä hetkellä, sinun on tarkistettava, että koodisi vastaa tarkasti koodiamme. Kun sanon täsmälleen, tarkoitan jopa puolipisteitä tai käytettäviä sulkeita. Kun bittivirtasi on kirjoitettu onnistuneesti, siirry Vivadon laitteistonhallintaan ja napsauta "Avaa kohde" -painiketta ja napsauta sitten "Ohjelmoi laite" heti sen jälkeen. Basys 3 -korttisi pitäisi nyt olla täysin toimiva.

Vaihe 9: Basys 3 -levyn käyttäminen

Basys 3 -levyn käyttäminen
Basys 3 -levyn käyttäminen

Nyt kun Basys 3 -levy on toiminnassa ja se on ohjelmoitu edustamaan malliamme, sinun on tiedettävä, miten sitä käytetään.

Jokainen neljästä oikealla olevasta kytkimestä ohjaa yhtä LED -valoista, ja niiden napsauttaminen saa LED -valon syttymään tai sammumaan. Jos merkkivalo ei syty, tarkista, että olet kytketty oikeaan I/O -porttiin ja että LED -valot toimivat ensinnäkin.

Kun haluat poistaa kaikki LEDit käytöstä samanaikaisesti, sinun on painettava yllä näkyvän viiden painikkeen keskipainiketta.

Vaihe 10: Esittele

Malli on siisti pieni uutuus, jonka voit esitellä ystäviesi ja perheesi edessä. Sitä voidaan teoriassa käyttää myös yleiskatkaisukytkimen asentamiseen kodin sähköjärjestelmään, jos vaihdat LEDit valoihin johtaviin johtoihin. Vaikka se on mahdollista, meidän on silti neuvottava olemaan sitä vastaan. On mahdollista tehdä vakavaa haittaa itsellesi tai kotillesi, jos yrität johdottaa uudelleen ilman sähköasentajan apua.

Suositeltava: