Innholdsfortegnelse:
- Trinn 1: Importer de gitte VHDL -filene
- Trinn 2: Fordeling av VHDL toppmodul
- Trinn 3: Nedbrytning av VHDL Kill Switch Module
- Trinn 4: Nedbrytning av VHDL Flip Flop -modul
- Trinn 5: Nedbrytning av VHDL Piezo Buzzer -modulen
- Trinn 6: Nedbryting av VHDL -begrensningsfil
- Trinn 7: Konstruere Basys 3
- Trinn 8: Implementere VHDL -filer til Basys 3
- Trinn 9: Bruke Basys 3 -kortet
- Trinn 10: Vis deg frem
Video: Modell av en universell avbryter: 10 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Er du lei av å sjekke at alle lysene i huset ditt er slukket før du skal sove? Skulle du ønske at du kunne slå av hvert lys samtidig uten oppstyr? For å spare strøm og tid bestemte vi oss for å lage et system som teoretisk sett kunne stenge et helt hus på en gang.
Vi modellerte et bevis på dette konseptet ved å bruke et par LED -er og et grunnleggende 3 kretskort, og laget et design som ville deaktivere alle LED -ene med et tastetrykk. Denne modellen kan også brukes på et faktisk hjemmebelysningssystem, selv om det ville kreve mer kompliserte ledninger og modifikasjoner av de gitte VHDL -filene.
Trinn 1: Importer de gitte VHDL -filene
For at modellen vår skal fungere riktig må du laste ned programvaren som gir Basys 3 -kortet instruksjonene.
Først må du laste ned et synteseverktøy for å implementere vhdl -filer til maskinvare. Hvis du vil være sikker på at hele koden vil replikere designet vårt fullt ut uten behov for endringer, anbefaler vi at du bruker Vivado 2016.2. Etter at du har installert Vivado kan du opprette et prosjekt og laste ned kildefilene våre. Legg dem som kilder til prosjektet ditt, ikke glem å legge til begrensningsfilen også!
Deretter forklarer vi hva hver av kildefilene gjør. Hopp over trinn 2 til 6 hvis du bare vil komme til den fysiske konstruksjonen til enheten.
Trinn 2: Fordeling av VHDL toppmodul
Den øverste modulen i prosjektet er det som kobler alle individuelle komponentmoduler til den brukte maskinvaren. Som du kan se har vi killSwitch og buzzerControl -modulene definert som komponenter på toppen.
Den nedre delen angir hvordan disse modulene er koblet sammen. Vi har koblet fire lysdioder til brettet og knyttet dem til killSwitch -modulene dev0 til og med dev3. Vi har fire killSwitch -moduler definert fordi vi trenger en for å styre tilstanden til hver tilkoblet LED. Hver av disse modulene bruker klokke- og knappesignalet som vi opprettet i den øverste moduldefinisjonen, så vel som deres respektive inngangsbryter og utgangssignaler.
Summermodulen på bunnen aktiverer summeren når du trykker på universal -knappen. Som du kan se, sendes summermodulen over klokke- og knappesignalet som innganger. Den passeres også den fysiske summerens utgangspinne for å kontrollere den deretter.
Trinn 3: Nedbrytning av VHDL Kill Switch Module
Kill -bryteren er den universelle av -knappen, og modulen er først og fremst opptatt av å koble den til andre kretselementer, slik at alle lysene slås av når den trykkes ned.
Mens toppmodulen håndterer tilkobling av fysisk maskinvare til programvare, håndterer killSwitch -modulen hovedlogikken til hver enhet. Modulen tar inn innganger for klokkesignal, universell av -knapp og enhetens vippebryter. Til gjengjeld styrer den tilstanden til enhetens pinne den er koblet til.
I arkitekturdelen av koden ser vi at den er avhengig av dFlipFlop -modulen for å lagre minne. Du kan også se at vi har erklært fire signaler som skal brukes til å koble flip -floppen samt implementere våre logiske utsagn. Innen adferdsdelen av koden har vi opprettet en forekomst av dFlipFlop -modulen og tilordnet våre I/O -signaler til portene.
Herfra ligger hoveddelen av vår logikk i signalverdiene for invertState og isDevOn. Vårt logiske grunnlag for enheten er som følger: "Hver gang bryteren kastes, vil lyset invertere at den er på/av. Hver gang knappen trykkes og LED -en er på, vil LED -en snu tilstanden til å slukke. " Fra disse to utsagnene kan vi ekstrapolere at LED -tilstanden skal være XOR for bryteren og minneelementet. På den måten inverterer LED -lampen. Dette kan sees implementert i isDevOn -signalet. Lysdioden på betingelse for minneelementet håndteres av vårt invertState -signal. Hvis lysdioden er på og knappen trykkes, oppdateres minnelementet og inverterer tilstanden. Dette inverterer deretter LED -tilstanden også.
Trinn 4: Nedbrytning av VHDL Flip Flop -modul
Et problem med designen vår var det faktum at etter at du har brukt av -bryteren, må du kanskje slå på lysene som var tent tidligere to ganger for å gå tilbake til på -posisjonen. Dette vil være ganske ulempe for folk over tid. Vi klarte å omgå denne ulempen ved å inkludere en "Flip Flop", et kretselement som er i stand til å lagre informasjon, i designet vårt. Nå husker systemet om en lysbryter var på før, slik at hvis den vendes igjen, vil den slås på uavhengig av utgangsposisjonen.
VHDL -koden bruker setninger if if else for å lage Flip Flop som en komponent i kretsdesignet vårt. Det sikrer at når klokkesignalet overgår fra lav til høy tilstand, når lyspæren er på, og når av -bryteren trykkes, overskriver flip -flops -utgangen sin inngang. Når inngangen er overskrevet, er flip -floppen invertert.
Trinn 5: Nedbrytning av VHDL Piezo Buzzer -modulen
Denne filen er litt overflødig når det gjelder maskinvaredesignet, men det er viktig for å få toppmodulen og begrensningsfilene til å kjøre jevnt. Hvis du velger å ikke bruke Piezo -summeren, last ned denne filen, men ikke fest summeren til Basys 3 -kortet.
Piezo -summeren vil, når du trykker på deaktiveringsknappen, spille en to -toners tone som vil gi brukeren lydhør tilbakemelding om at knappen har blitt trykket. Vi implementerte dette atferdsmessig i VHDL gjennom en rekke if -setninger i en prosessstruktur. Vi startet med å opprette en heltallsverdi for å holde oversikt over hvor mange klokkeendringer som har skjedd. Når prosessen starter, bruker programmet det første halve sekundet (0 til 50 millioner urmerker) på å skrive ut et A -notat på 440 hertz. Dette oppnås ved å invertere piezo -summer -signalet til og med flere 227272 klokkemerker med en modulo -funksjon. Dette tallet er resultatet av å dele brettets klokkesignal (100 MHz) med ønsket frekvens (400 Hz). I løpet av den andre halvdelen av et sekund (50 til 100 millioner klokker) sender tavlen ut en F -note på 349,2 hertz via samme metode som før. Etter ett sekund øker programmet ikke klokkevariabelen ytterligere og slutter å sende noe fra piezo -summeren. Hvis du trykker på den universelle av -knappen igjen, tilbakestilles dette tallet til 0, og støysyklusen startes på nytt.
Trinn 6: Nedbryting av VHDL -begrensningsfil
Begrensningsfilen forteller Vivado hvilke enheter på Basys 3 -kortet vi bruker. Det gir også Vivado navnene vi ga til enhetene i koden vår. Vivado trenger denne informasjonen, slik at den vet hvordan han kobler våre logiske elementer til den fysiske maskinvaren. Begrensningsfilen inneholder en stor mengde kommentert (ubrukt) kode. Disse kodelinjene refererer til enhetene på brettet som vi ikke bruker.
Enhetene vi bruker inkluderer fire inngangsbrytere merket V17, V16, W16 og W1 på brettet. Vi bruker også den universelle av -knappen, merket U18. Utgangspinnene for våre fire tilkoblede lysdioder er JB4, JB10, JC4 og JC10. For vår piezzo summer bruker vi utgangsstift JA9.
Som vi sa i den øverste moduloppdelingen, hvis du vil legge til flere lysdioder eller andre enheter på brettet, må du øke omfanget av sw- og dev -signalene, legge til flere killSwitch -moduler og koble dem sammen. Du må deretter koble disse variabelnavnene til enhetsmaskinvaren via begrensningsfilen. Dette kan gjøres ved å ikke kommentere (re-aktivere) kodelinjene som er knyttet til pinnene du vil bruke, og deretter legge til navnet på den tilknyttede variabelen i toppmodulen. Den riktige syntaksen for dette kan kopieres fra enhetene vi bruker. For å finne ut navnene på pinnene du vil bruke på brettet, se Baasys 3 referansehåndbok her.
Trinn 7: Konstruere Basys 3
Du må koble LED -lampene til de riktige I/O -portene på Basys 3. Følg bildene som følger med for å finne ut hva de riktige portene er, for hvis du kobler en LED til feil port, lyser den ikke. Hvis du har valgt å koble piezo -summeren, må du også koble den til de riktige I/O -portene.
Når kortet er klart, kobler du det til datamaskinen via USB -kabel.
Trinn 8: Implementere VHDL -filer til Basys 3
Nå som tavlen er klar og koden er ferdig, kan du endelig sette modellen sammen.
Når du har satt opp prosjektet ditt i Vivado, må du klikke på "Generer Bitstream" -knappen for å kompilere koden før den lastes opp til brettet. Hvis du får en feilmelding på dette tidspunktet, må du dobbeltsjekke at koden samsvarer nøyaktig med vår. Når jeg sier nøyaktig, mener jeg ned til og med semikolonene eller typene parenteser som brukes. Når bitstrømmen din er skrevet vellykket, går du til maskinvarebehandleren i Vivado og klikker på "Åpne mål" -knappen, og klikker deretter på "Programmeringsenhet" umiddelbart etterpå. Basys 3 -kortet ditt skal nå være fullt funksjonelt.
Trinn 9: Bruke Basys 3 -kortet
Nå som Basys 3 Board er operativt og har blitt programmert til å representere modellen vår, må du vite hvordan du bruker den.
Hver av de fire bryterne lengst til høyre styrer en av lysdiodene. Hvis du slår dem, vil LED -en slås på eller av. Hvis lysdioden ikke aktiveres, må du kontrollere at du er koblet til riktig I/O -port, og at lysdioden din er funksjonell i utgangspunktet.
Når du vil deaktivere alle lysdiodene samtidig, må du trykke på midtknappen i settet med fem knapper som vises ovenfor.
Trinn 10: Vis deg frem
Modellen fungerer som en fin liten nyhet som du kan demonstrere foran venner og familie. Den kan teoretisk sett også brukes til å implementere den universelle av -bryteren i ditt elektriske system i hjemmet, hvis du bytter lysdioder med ledninger som fører til lysene dine. Selv om det er mulig, må vi fortsatt fraråde det. Det er potensial for å gjøre alvorlig skade på deg selv eller hjemmet ditt hvis du prøver å koble til igjen uten hjelp fra en elektriker.
Anbefalt:
12v universell blinkerkrets: 3 trinn
12v Universal Flasher Circuit: Da vi kjøpte vår brukte bil, var det en blinker ckt festet til bilens horn. det var så irriterende for meg å ha et blinkende horn, så jeg fjernet blinker -ckt og lagret det til et annet formål. Dette er den universelle 12vdc -blitsen for å blinke
Universell fjernkontroll ved bruk av ESP8266 (Wifi -kontrollert): 6 trinn (med bilder)
Universell fjernkontroll ved bruk av ESP8266 (Wifi -kontrollert): Dette prosjektet skal erstatte den konvensjonelle fjernkontrollen for alle husholdningsapparater som AC, TV, DVD -spillere, musikksystem, SMART apparater !!! Gjør en hel søppel av fjern søppel rundt, noe som gjør oss puslespill !!! Dette prosjektet vil redde oss fra
Avbryter laboratoriet (pågår): 3 trinn
Interrupts Lab (Work in Progress): Formålet med denne laben er å kjøre et Arduino -program som bruker Interrupts. Dette laboratoriet fungerer ikke fullt ut på grunn av kodingsproblemer. Hva du trenger:- 1 Arduino Uno- 1 brødbrett- 1 trykknapp- 3 LED- 220 Ohm motstander- Jumper ledninger
AVR mikrokontroller. Lysdioder Blinker ved hjelp av tidtaker. Timere avbryter. Timer CTC -modus: 6 trinn
AVR mikrokontroller. Lysdioder Blinker ved hjelp av tidtaker. Timere avbryter. Timer CTC Mode: Hei alle! Timere er et viktig konsept innen elektronikk. Hver elektronisk komponent fungerer tidsmessig. Denne tidsbasen hjelper til med å holde alt arbeidet synkronisert. Alle mikrokontrollerne jobber med en forhåndsdefinert klokkefrekvens
Brytermodus avbryter IPOD -lader ved bruk av 3 AA -batterier: 7 trinn
Byttemodus Altoids IPOD -lader ved bruk av 3 'AA' batterier: Målet med dette prosjektet var å bygge en effektiv Altoids tinn iPod (firewire) lader som går på 3 (oppladbare) 'AA' batterier. Dette prosjektet startet som et samarbeid med Sky om PCB -design og -konstruksjon, og jeg om krets- og fir