Indholdsfortegnelse:

Model af en Universal Off Switch: 10 trin
Model af en Universal Off Switch: 10 trin

Video: Model af en Universal Off Switch: 10 trin

Video: Model af en Universal Off Switch: 10 trin
Video: 220 В переменного тока от 12 В 90 А Автомобильный генератор переменного тока 1000 Вт DIY 2024, Juli
Anonim
Model af en Universal Off Switch
Model af en Universal Off Switch

Er du træt af at kontrollere, at alle lysene i dit hus er slukket, før du går i seng? Skulle du ønske, at du kunne slukke hvert lys på en gang uden ballade? For at spare strøm og tid besluttede vi at oprette et system, der teoretisk set kunne lukke et helt hus ned på én gang.

Vi modellerede et bevis på dette koncept ved hjælp af et par LED'er og et basys 3 printkort og skabte et design, der ville deaktivere alle LED'erne med et tryk på en knap. Denne model kunne også anvendes til et faktisk hjemmebelysningssystem, selvom det ville kræve mere komplicerede ledninger og ændringer af de givne VHDL -filer.

Trin 1: Importer de givne VHDL -filer

For at vores model fungerer korrekt, skal du downloade den software, der giver Basys 3 -kortet sine instruktioner.

Først skal du downloade et synteseværktøj til implementering af vhdl -filer til hardware. Hvis du vil være sikker på, at hele koden vil gentage vores design fuldstændigt uden behov for ændringer, anbefaler vi, at du bruger Vivado 2016.2. Når du har installeret Vivado, kan du oprette et projekt og downloade vores kildefiler. Tilføj dem som kilder til dit projekt, glem også at tilføje begrænsningsfilen!

Dernæst forklarer vi, hvad hver af kildefilerne gør. Spring trin 2 til 6 over, hvis du bare vil komme til den fysiske konstruktion af enheden.

Trin 2: Opdeling af VHDL -topmodul

Opdeling af VHDL -topmodul
Opdeling af VHDL -topmodul
Opdeling af VHDL -topmodul
Opdeling af VHDL -topmodul

Det øverste modul i projektet er det, der forbinder alle de individuelle komponentmoduler med den brugte hardware. Som du kan se, har vi killSwitch og buzzerControl -modulerne defineret som komponenter øverst.

Det nederste afsnit angiver, hvordan disse moduler er forbundet med hinanden. Vi har tilsluttet fire lysdioder til tavlen og forbundet dem med killSwitch -modulerne dev0 til og med dev3. Vi har fire killSwitch -moduler defineret, fordi vi har brug for et til at styre tilstanden for hver tilsluttet LED. Hvert af disse moduler anvender det ur- og knappesignal, som vi skabte i den øverste moduldefinition samt deres respektive input -switch og output -enheds signaler.

Summerstyringsmodulet i bunden aktiverer summeren, når der trykkes på universalfunktionsknappen. Som du kan se, sendes summerstyringsmodulet med uret og knappesignalet som input. Det er også passeret den fysiske summer output pin til at styre den i overensstemmelse hermed.

Trin 3: Opdeling af VHDL Kill Switch -modul

Opdeling af VHDL Kill Switch -modul
Opdeling af VHDL Kill Switch -modul
Opdeling af VHDL Kill Switch -modul
Opdeling af VHDL Kill Switch -modul

Kill -kontakten er den universelle sluk -knap, og modulet beskæftiger sig primært med at tilslutte det til andre kredsløbselementer, så alle lysene slukkes, når der trykkes på det.

Mens det øverste modul håndterer tilslutning af fysisk hardware til software, håndterer killSwitch -modulet hovedlogikken for hver enhed. Modulet optager indgange til urets signal, universal sluk -knap og enhedens vippekontakt. Til gengæld styrer den tilstanden på den enhedsstift, den er forbundet til.

I arkitektursektionen af koden ser vi, at den er afhængig af dFlipFlop -modulet for at gemme hukommelse. Du kan også se, at vi har erklæret fire signaler, der skal bruges til at forbinde flip -floppen samt implementere vores logiske udsagn. Inden for adfærdssektionen af koden har vi oprettet en forekomst af dFlipFlop -modulet og tildelt vores I/O -signaler til portene.

Herfra ligger hoveddelen af vores logik i signalværdierne for invertState og isDevOn. Vores logiske grundlag for enheden er som følger: "Hver gang kontakten kastes, vil lyset vende om til/fra -tilstanden. Hver gang der trykkes på knappen, og LED'en er tændt, vil LED'en vende sin tilstand til slukket. " Fra disse to udsagn kan vi ekstrapolere, at LED'ens tilstand skal være XOR for kontakten og vores hukommelseselement. På den måde inverteres LED'en. Dette kan ses implementeret i isDevOn -signalet. LED'en på betingelse af hukommelseselementet håndteres af vores invertState -signal. Hvis lysdioden er tændt, og der trykkes på knappen, opdateres vores hukommelseselement og inverterer dets tilstand. Dette inverterer derefter også LED'ens tilstand.

Trin 4: Opdeling af VHDL Flip Flop -modul

Opdeling af VHDL Flip Flop -modul
Opdeling af VHDL Flip Flop -modul

Et problem med vores design var det faktum, at efter brug af slukkontakten, skulle lys, der tidligere var tændt, måske vendes to gange for at vende tilbage til tændt position. Dette ville være en gener for mennesker over tid. Det lykkedes os at omgå denne ulempe ved at inkludere en "Flip Flop", et kredsløbselement, der er i stand til at lagre information, i vores design. Nu husker systemet, om en lyskontakt tidligere var tændt, så hvis den vendes igen, tænder den uanset dens oprindelige position.

VHDL -koden anvender if and else -sætninger for at oprette Flip Flop som en komponent i vores kredsløbsdesign. Det sikrer, at når urets signal overgår fra en lav til en høj tilstand, når lyspæren er tændt, og når der slukkes for kontakten, overskriver flip -flops -udgangen sit input. Når input er overskrevet, vendes flip -floppen.

Trin 5: Opdeling af VHDL Piezo Buzzer -modul

Opdeling af VHDL Piezo Buzzer -modul
Opdeling af VHDL Piezo Buzzer -modul
Opdeling af VHDL Piezo Buzzer -modul
Opdeling af VHDL Piezo Buzzer -modul

Denne fil er lidt overflødig, hvad angår hardwaredesignet, men det er vigtigt for at få topmodulet og begrænsningsfilerne til at køre gnidningsløst. Hvis du vælger ikke at bruge Piezo -summeren, skal du downloade denne fil, men ikke vedhæfte summeren til Basys 3 -kortet.

Piezo -summeren vil, når der trykkes på deaktiveringsknappen, afspille en tone med to toner, der giver brugeren auditiv feedback om, at der er trykket på knappen. Vi implementerede dette adfærdsmæssigt i VHDL gennem en række if -sætninger i en processtruktur. Vi startede med at oprette en heltalsværdi for at holde styr på, hvor mange urændringer der er sket. Når processen starter, bruger programmet den første halve sekund (0 til 50 millioner urmærker) til at sende en A -note ved 440 hertz. Dette opnås ved at invertere piezo -summer -signalet for hvert lige multiplum af 227272 ur -ticks med en modulo -funktion. Dette tal er resultatet af at dividere kortets kloksignal (100 MHz) med den ønskede frekvens (400 Hz). I løbet af anden halvdel af et sekund (50 til 100 millioner urmærker) udsender tavlen en F -note ved 349,2 hertz via samme metode som før. Efter et sekund øger programmet ikke urvariablen yderligere og stopper med at udsende noget fra piezo -summeren. Ved at trykke på den universelle sluk -knap igen nulstilles dette tal til 0, hvorefter støjcyklussen genstartes.

Trin 6: Opdeling af VHDL -begrænsningsfil

Begrænsningsfilen fortæller Vivado, hvilke enheder på Basys 3 -kortet, vi bruger. Det giver også Vivado de navne, vi har givet enhederne i vores kode. Vivado har brug for disse oplysninger, så den ved, hvordan vi forbinder vores logiske elementer med den fysiske hardware. Begrænsningsfilen indeholder en stor mængde kommenteret (ubrugt) kode. Disse kodelinjer refererer til de enheder på tavlen, som vi ikke bruger.

De enheder, vi bruger, inkluderer fire indgangskontakter mærket V17, V16, W16 og W1 på tavlen. Vi bruger også den universelle sluk -knap, mærket U18. Udgangsstifterne til vores fire tilsluttede lysdioder er JB4, JB10, JC4 og JC10. Til vores piezzo summer bruger vi output pin JA9.

Som vi sagde i den øverste modulopdeling, hvis du vil tilføje yderligere lysdioder eller andre enheder til kortet, skal du øge omfanget af sw- og dev -signalerne, tilføje flere killSwitch -moduler og forbinde dem sammen. Du skal derefter linke disse variabelnavne til enhedshardwaren via begrænsningsfilen. Dette kan gøres ved at ikke kommentere (genaktivering) kodelinjerne, der er knyttet til de ben, du vil bruge, og derefter tilføje navnet på den tilknyttede variabel i det øverste modul. Den korrekte syntaks for dette kan kopieres fra de enheder, vi bruger. For at finde ud af navnene på stifterne, du vil bruge på tavlen, henvises til Baasys 3 referencevejledning her.

Trin 7: Konstruktion af Basys 3

Konstruktion af Basys 3
Konstruktion af Basys 3
Konstruktion af Basys 3
Konstruktion af Basys 3

Du skal tilslutte dine lysdioder til de korrekte I/O -porte i Basys 3. Følg de medfølgende billeder for at afgøre, hvad de korrekte porte er, for hvis du tilslutter en LED til den forkerte port, lyser den ikke. Hvis du har valgt at tilslutte piezo -summeren, skal du også tilslutte den til de korrekte I/O -porte.

Når kortet er klar, skal du tilslutte det til din computer via USB -kabel.

Trin 8: Implementering af VHDL -filer til Basys 3

Implementering af VHDL -filer til Basys 3
Implementering af VHDL -filer til Basys 3
Implementering af VHDL -filer til Basys 3
Implementering af VHDL -filer til Basys 3

Nu hvor dit bord er klar, og din kode er færdig, kan du endelig sætte modellen sammen.

Når du har konfigureret dit projekt i Vivado, skal du klikke på knappen "Generer Bitstream" for at kompilere koden, før den uploades til tavlen. Hvis du modtager en fejlmeddelelse på nuværende tidspunkt, skal du dobbelttjekke, at din kode matcher vores nøjagtigt. Når jeg siger præcist, mener jeg ned til selv semikolonerne eller de typer parenteser, der bruges. Når din bitstream er blevet skrevet med succes, skal du gå til hardwarehåndteringen i Vivado og klikke på knappen "Åbn mål" og derefter klikke på "Programmeringsenhed" umiddelbart bagefter. Dit Basys 3 -kort skal nu være fuldt funktionelt.

Trin 9: Brug af Basys 3 Board

Brug af Basys 3 Board
Brug af Basys 3 Board

Nu hvor Basys 3 Board er i drift og er programmeret til at repræsentere vores model, skal du vide, hvordan du bruger den.

Hver af de fire omskiftere længst til højre styrer en af LED'erne. Hvis du slår dem, får LED'en til at tænde eller slukke. Hvis lysdioden ikke aktiveres, skal du kontrollere, at du er tilsluttet den korrekte I/O -port, og at din LED i første omgang fungerer.

Når du vil deaktivere alle LED'erne på én gang, skal du trykke på midterknappen i sættet med fem knapper vist ovenfor.

Trin 10: Vis frem

Modellen fungerer som en pæn lille nyhed, som du kan demonstrere foran dine venner og familie. Det kan teoretisk også bruges til at implementere universalafbryderen i dit elektriske system i hjemmet, hvis du udskifter LED'erne med ledninger, der fører til dine lys. Selvom det er muligt, er vi stadig nødt til at fraråde det. Der er potentiale til at gøre alvorlig skade på dig selv eller dit hjem, hvis du forsøger at genoprette kablet uden hjælp fra en elektriker.

Anbefalede: