Innehållsförteckning:

Modell av en universell avstängningsbrytare: 10 steg
Modell av en universell avstängningsbrytare: 10 steg

Video: Modell av en universell avstängningsbrytare: 10 steg

Video: Modell av en universell avstängningsbrytare: 10 steg
Video: How to install the NEW AV Mobile TV Cart - |Texonic Model ACV500| 2024, Juli
Anonim
Modell av en Universal Off Switch
Modell av en Universal Off Switch

Är du trött på att kontrollera att alla lampor i ditt hus är släckta innan du somnar? Önskar du att du kunde släcka alla lampor samtidigt utan krångel? För att spara ström och tid bestämde vi oss för att skapa ett system som teoretiskt kunde stänga av ett helt hus på en gång.

Vi modellerade ett bevis på detta koncept med ett par lysdioder och ett basys 3 kretskort och skapade en design som skulle inaktivera alla lysdioder med ett tryck på en knapp. Denna modell kan också tillämpas på ett verkligt hembelysningssystem, även om det skulle kräva mer komplicerade kablar och modifieringar av de angivna VHDL -filerna.

Steg 1: Importera de givna VHDL -filerna

För att vår modell ska fungera korrekt måste du ladda ner programvaran som ger Basys 3 -kortet dess instruktioner.

Först måste du ladda ner ett syntesverktyg för att implementera vhdl -filer till hårdvara. Om du vill vara säker på att hela koden kommer att replikera vår design helt utan att det behövs några ändringar rekommenderar vi att du använder Vivado 2016.2. När du har installerat Vivado kan du skapa ett projekt och ladda ner våra källfiler. Lägg till dem som källor till ditt projekt, glöm inte att lägga till begränsningsfilen också!

Därefter förklarar vi vad var och en av källfilerna gör. Hoppa över steg 2 till 6 om du bara vill komma till den fysiska konstruktionen av enheten.

Steg 2: Fördelning av VHDL -toppmodul

Fördelning av VHDL -toppmodul
Fördelning av VHDL -toppmodul
Fördelning av VHDL -toppmodul
Fördelning av VHDL -toppmodul

Den översta modulen i projektet är det som ansluter alla enskilda komponentmoduler till den använda maskinvaran. Som du kan se har vi killSwitch och buzzerControl -modulerna definierade som komponenter på toppen.

Det nedre avsnittet anger hur dessa moduler är sammankopplade. Vi har anslutit fyra lysdioder till kortet och associerat dem med killSwitch -modulerna dev0 till dev3. Vi har fyra killSwitch -moduler definierade eftersom vi behöver en för att hantera tillståndet för varje ansluten lysdiod. Var och en av dessa moduler använder klocka och knappsignalen som vi skapade i den övre moduldefinitionen samt deras respektive ingångsbrytare och utsignalenheter.

Summermodulen på undersidan aktiverar summern när den universella avstängningsknappen trycks in. Som du kan se summerstyrenheten skickas klockan och knappsignalen som ingångar. Det passerar också den fysiska summerns utgångsstift för att styra det i enlighet därmed.

Steg 3: Fördelning av VHDL Kill Switch Module

Fördelning av VHDL Kill Switch -modul
Fördelning av VHDL Kill Switch -modul
Fördelning av VHDL Kill Switch -modul
Fördelning av VHDL Kill Switch -modul

Kill Switch är den universella avstängningsknappen, och modulen handlar främst om att ansluta den till andra kretselement så att alla lampor släcks när den trycks ned.

Medan den övre modulen hanterar anslutning av fysisk hårdvara till programvara, hanterar killSwitch -modulen huvudlogiken för varje enhet. Modulen tar in ingångar för klocksignalen, universell avstängningsknapp och enhetens omkopplare. I gengäld styr den tillståndet för enhetens stift som den är ansluten till.

I arkitektursektionen i koden ser vi att den är beroende av dFlipFlop -modulen för att lagra minne. Du kan också se att vi har deklarerat fyra signaler som kommer att användas för att ansluta vippan samt implementera våra logiska uttalanden. Inom beteendeavsnittet i koden har vi skapat en instans av dFlipFlop -modulen och tilldelat våra I/O -signaler till portarna.

Härifrån ligger huvuddelen av vår logik i signalvärdena för invertState och isDevOn. Vår logiska grund för enheten är följande: "Varje gång omkopplaren kastas kommer lampan att vända på/av. Varje gång knappen trycks in och lysdioden är på för närvarande, kommer lysdioden att inaktivera dess läge till av. " Från dessa två påståenden kan vi extrapolera att lysdiodens tillstånd ska vara omkopplarens XOR och vårt minneelement. På så sätt inverterar LED -lampan. Detta kan ses implementerat i isDevOn -signalen. Lysdioden vid tillstånd för minneselementet hanteras av vår invertState -signal. Om lysdioden lyser och knappen trycks in kommer vårt minneselement att uppdateras och invertera dess tillstånd. Detta inverterar då även LED: ns tillstånd.

Steg 4: Fördelning av VHDL Flip Flop -modul

Fördelning av VHDL Flip Flop -modul
Fördelning av VHDL Flip Flop -modul

Ett problem med vår design var det faktum att efter att ha använt avstängningsknappen kan lampor som tidigare var tända behöva vändas två gånger för att återgå till på -läget. Detta skulle vara ganska besvärligt för människor över tid. Vi lyckades kringgå detta besvär genom att inkludera en "Flip Flop", ett kretselement som kan lagra information, i vår design. Nu kommer systemet ihåg om en ljusströmbrytare tidigare var på så att om den vänds igen kommer den att slås på oavsett dess utgångsläge.

VHDL -koden använder if och else -satser för att skapa Flip Flop som en komponent i vår kretsdesign. Det säkerställer att när klocksignalen övergår från ett lågt till ett högt tillstånd, när glödlampan är på och när strömbrytaren trycks in, vippar utgången från flip -flopsna över dess ingång. När ingången skrivs över vänds vippan.

Steg 5: Fördelning av VHDL Piezo Buzzer -modulen

Fördelning av VHDL Piezo Buzzer Module
Fördelning av VHDL Piezo Buzzer Module
Fördelning av VHDL Piezo Buzzer Module
Fördelning av VHDL Piezo Buzzer Module

Den här filen är lite överflödig när det gäller maskinvarudesign, men det är viktigt för att den övre modulen och begränsningsfiler ska fungera smidigt. Om du väljer att inte använda Piezo -summern, ladda ner den här filen, men fäst inte summern på Basys 3 -kortet.

Piezo -summern kommer, när du trycker på inaktiveringsknappen, att spela en ton med två toner som ger användaren auditiv feedback om att knappen har tryckts in. Vi implementerade detta beteendemässigt i VHDL genom en serie if -uttalanden i en processstruktur. Vi började med att skapa ett heltal för att hålla reda på hur många klockförändringar som har inträffat. När processen har börjat spenderar programmet den första halva sekunden (0 till 50 miljoner klockfickor) på att skriva ut en A -not på 440 hertz. Detta åstadkoms genom att invertera piezo -summernsignalen varje jämn multipel av 227272 klockfickor med en modulofunktion. Detta nummer är resultatet av att dela kortets klocksignal (100 MHz) med önskad frekvens (400 Hz). Under den andra halvan av en sekund (50 till 100 miljoner klockfickor) matar kortet ut en F -not på 349,2 hertz via samma metod som tidigare. Efter en sekund ökar programmet inte klockvariabeln ytterligare och slutar mata ut någonting från piezo -summern. Genom att trycka på universal -knappen igen återställs detta nummer till 0 och bullercykeln startas om.

Steg 6: Fördelning av VHDL -begränsningsfil

Begränsningsfilen berättar för Vivado vilka enheter på Basys 3 -kortet vi använder. Det ger också Vivado namnen som vi gav till enheterna i vår kod. Vivado behöver denna information så att den vet hur man ansluter våra logiska element till den fysiska hårdvaran. Begränsningsfilen innehåller en stor mängd kommenterad (oanvänd) kod. Dessa kodrader refererar till enheterna på kortet som vi inte använder.

De enheter vi använder inkluderar fyra ingångsbrytare märkta V17, V16, W16 och W1 på kortet. Vi använder också den universella avstängningsknappen, märkt U18. Utgångsstiften för våra fyra anslutna lysdioder är JB4, JB10, JC4 och JC10. För vår piezzo summer använder vi utgångsstift JA9.

Som vi sa i den översta moduluppdelningen, om du vill lägga till ytterligare lysdioder eller andra enheter på kortet måste du öka omfattningen av sw- och dev -signalerna, lägga till fler killSwitch -moduler och ansluta dem tillsammans. Du måste sedan länka dessa variabelnamn till enhetshårdvaran via begränsningsfilen. Detta kan göras genom att inte kommentera (återaktivera) kodraderna som är associerade med stiften du vill använda och sedan lägga till namnet på dess associerade variabel i den övre modulen. Rätt syntax för detta kan kopieras från de enheter vi använder. För att ta reda på namnen på stiften som du vill använda på tavlan hänvisar du till Baasys 3 referensguide här.

Steg 7: Konstruera Basys 3

Konstruera Basys 3
Konstruera Basys 3
Konstruera Basys 3
Konstruera Basys 3

Du måste ansluta dina lysdioder till rätt I/O -portar på Basys 3. Följ de medföljande bilderna för att avgöra vad som är rätt portar, för om du ansluter en lysdiod till fel port lyser den inte. Om du har valt att ansluta piezo -summern måste du också ansluta den till rätt I/O -portar.

När kortet är klart, anslut det till din dator via USB -kabel.

Steg 8: Implementera VHDL -filer till Basys 3

Implementera VHDL -filer till Basys 3
Implementera VHDL -filer till Basys 3
Implementera VHDL -filer till Basys 3
Implementera VHDL -filer till Basys 3

Nu när ditt kort är klart och din kod är klar kan du äntligen sätta ihop modellen.

När du har konfigurerat ditt projekt i Vivado måste du klicka på knappen "Generera Bitstream" för att kunna sammanställa koden innan den laddas upp till tavlan. Om du får ett felmeddelande just nu måste du dubbelkolla att din kod stämmer exakt med vår. När jag säger exakt menar jag ner till och med semikolon eller de typer av parenteser som används. När din bitström har skrivits framgångsrikt, gå till hårdvaruhanteraren i Vivado och klicka på knappen "Öppna mål", klicka sedan på "Programmera enhet" direkt efteråt. Ditt Basys 3 -kort bör nu vara fullt fungerande.

Steg 9: Använda Basys 3 -kortet

Använda Basys 3 -kortet
Använda Basys 3 -kortet

Nu när Basys 3 -styrelsen är i drift och har programmerats för att representera vår modell måste du veta hur du använder den.

Var och en av de fyra omkopplarna längst till höger styr en av lysdioderna. Om du slår på dem kommer lysdioden att slås på eller av. Om lysdioden inte aktiveras, kontrollera att du är ansluten till rätt I/O -port och att din lysdiod fungerar i första hand.

Om du vill inaktivera alla lysdioder samtidigt, måste du trycka på mittknappen i uppsättningen med fem knappar som visas ovan.

Steg 10: Visa upp

Modellen fungerar som en snygg liten nyhet som du kan visa inför dina vänner och familj. Det kan teoretiskt också användas för att implementera den universella avstängningsomkopplaren i ditt hem elektriska system, om du byter ut lysdioderna med ledningar som leder till dina lampor. Även om det är möjligt, måste vi fortfarande avråda det. Det finns potential att skada dig själv eller ditt hem allvarligt om du försöker köra om utan hjälp av en elektriker.

Rekommenderad: