Innehållsförteckning:
- Steg 1: Importera de givna VHDL -filerna
- Steg 2: Fördelning av VHDL -toppmodul
- Steg 3: Fördelning av VHDL Kill Switch Module
- Steg 4: Fördelning av VHDL Flip Flop -modul
- Steg 5: Fördelning av VHDL Piezo Buzzer -modulen
- Steg 6: Fördelning av VHDL -begränsningsfil
- Steg 7: Konstruera Basys 3
- Steg 8: Implementera VHDL -filer till Basys 3
- Steg 9: Använda Basys 3 -kortet
- Steg 10: Visa upp
Video: Modell av en universell avstängningsbrytare: 10 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Ä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
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
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
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
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
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
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
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:
Universell fjärrkontroll med ESP8266 (Wifi -kontrollerad): 6 steg (med bilder)
Universell fjärrkontroll med ESP8266 (Wifi -kontrollerad): Detta projekt är att ersätta den konventionella fjärrkontrollen för alla hushållsapparater som AC, TV, DVD -spelare, musiksystem, SMART -apparater !!! Att göra ett helt skräp av fjärrskräpning, vilket gör att vi pusslar !!! Detta projekt kommer att rädda oss från
DIY universell batteriladdare med magnetiska terminaler: 5 steg
DIY universell batteriladdare med magnetiska terminaler: Hej alla, det här är min andra instruktion, så din feedback kommer att vara till stor hjälp för mig att förbättra ytterligare. Kolla även in min YouTube -kanal för fler projekt. Idag ska jag visa dig hur du gör en universell batteriladdare med magnet
Geststyrd universell fjärrkontroll med nod-MCU: 12 steg
Geststyrd universell fjärrkontroll med nod-MCU: Hej alla och välkommen till detta projekt! Jag är ganska lat och en lat mardröm är att titta på TV när du inser att fjärrkontrollen är för långt borta! Jag insåg att min fjärrkontroll aldrig kommer att vara för långt borta om jag har den till hands alls
24v likströmsmotor till höghastighets universell motor (30 volt): 3 steg
24v DC Motor till High Speed Universal Motor (30 Volt): Hej! I det här projektet ska jag lära dig hur du konverterar en vanlig 24V DC Motor till en 30V Universal Motor. Personligen tror jag att en videodemonstration bäst beskriver ett projekt . Så killar, jag skulle rekommendera er att titta på videon först. Projekt V
Skapa en universell fjärrkontroll med NodeMCU: 7 steg
Skapa en universell fjärrkontroll med NodeMCU: I detta projekt kommer vi att bygga en universell fjärrkontroll som kan klona och skicka infraröda signaler. Ett webbgränssnitt kommer att användas för att styra hela denna process. En NodeMCU tillsammans med en infraröd fotoreceptor kommer att ansvara för att klona