Innehållsförteckning:
Video: 2 -spelare konkurrenskraftigt VS -tidsspel: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Du kommer behöva:
1. Digilent Basys 3, FPGA Board (eller någon annan FPGA,)
2. En relativt aktuell version av Vivado, eller någon annan VHDL -miljö
3. En dator som kan köra det nämnda programmet.
Steg 1: Spelet själv
Hur FSM interagerar med modulerna.
Hur man spelar
För att starta trycker du på mittknappen. Detta kommer att leda till att "99", som representerar spelarens två hälsa, visas på displayen med sju segment. Därefter tänds lysdioderna i följd från höger till vänster. Detta bildar en power bar. När strömmen är full återställs den. Spelarens syfte är att vända omkopplaren när ribban är så hög som möjligt. Ju fler lysdioder som tänds, desto mer skada gör spelaren för spelare två. Efter att spelare en har slagit omkopplaren, dras skadan från spelarens två hälsa. Sedan växlar den till spelare två. Numret som visas representerar spelarens hälsa och strömfältet fylls från vänster till höger. När spelare två gör sitt drag, dras skadan ifrån, och det är tillbaka till spelare ens tur igen. Detta upprepas tills en spelare når 0 hälsa. Video om denna funktion bifogas.
Steg 2: FSM
Detta spel är i huvudsak en stor ändlig tillståndsmaskin, som en viss komplex logik sker baserat på tillståndet som FSM är i.
Status 1: Meny Det första tillståndet är menyskärmen, som är ett av de enklare tillstånden. Den innehåller den sju segmentiga displayen som visar ordet "PLAY" och knappen som får spelet att starta. Knappen, BTN, leder oss till nästa tillstånd, vilket är spelarens tur.
Stat 2: Spelarens tur
Spelarens tur aktiverar en signal som får sjusegmentdisplayen att visa spelarens två hälsa. En annan signal tänds för att aktivera ett skiftregister som importerats från en annan modul som vi skapade (Pone.vhd). Detta skiftregister gör att lysdioderna tänds som en ökande effektmätare skulle göra i andra spel, och det återställs sedan till 0 när det når den maximala mängden lysdioder som kan tändas. Den uppdateras om klockans stigande kant från barclock.vhd, som är modifierad från en lånad labfil. Vi fick spelarens ena start från höger och fyllning till vänster, eftersom spelarens omkopplare också är till vänster (för intuitiv användarupplevelse). När omkopplaren välts, går tillståndet vidare till spelare ett avdrag och mängden aktiva lysdioder sparas i en signal.
State 3: Player One -avdrag Signalen med mängden LED -lampor är aktiv bestämmer mängden hälsa som får avdrag. Detta görs genom att ha ett annat skiftregister (deductor1.vhd) som snarare än att öka LED: erna, minskar dem. Detta minskar på den stigande kanten av en av klockdiv -modulerna som vi lånat och modifierat (downcounterclock.vhd). Precis när en lysdiod släcks, dras en hälsopunkt från spelarens två hälsa. Om två under denna process når 0 hälsa, stannar vi och går omedelbart vidare till tillståndet "Game over". Annars, när LED -vektorn når "0000000000000000", går vi vidare till spelare två.
State 4: Player Two's turn Player two's turn är exakt som player one's turn, förutom att skiftregistret för det (Ptwo.bhd) går från vänster till höger och omkopplaren är på höger sida av brädet. En signal aktiveras för att ha Player 1: s hälsodisplay. När switch 2 är aktiv går detta vidare till Player Two: s avdragsvridning.
Steg 5: Spelare två -avdrag Precis som spelare tvåas tur, spelar spelare två -avdrag ungefär som spelare ett -avdrag. Huvudskillnaden är att skiftregistret som styr lysdiodernas avstängning går i motsatt riktning, vilket är en enkel modifiering att göra när du har spelarens avdrag fungerar korrekt.
Steg 6: Spel över Om någon av spelarna vid något tillfälle når noll hälsa, växlar spelet till detta tillstånd. Inget fina skärmar. Om BTN en trycks in, återställs hälsan till 99, och staten går tillbaka till menyn och startar faktiskt spelet om.
Steg 3: Moduler
Black Box Diagram för spelet
Downcounterclock (baserat på clk_div.vhd -modulen av Bryan Mealy):
Detta är klockan som hanterar tidpunkten för avdragarna. Konstanten som heter max_count är 3x mer än barclocks max_count -konstant. Detta gör avdragarna tre gånger långsammare än barens hastighet.
Barclock - (baserat på clk_div.vhd -modulen av Bryan Mealy):
Den här klockan hanterar tidtagningen av effektmätarna, som vi snabbt ökade för att göra spelet svårare. Denna tidpunkt kan justeras efter eget tycke, öka hastigheten genom att göra konstanten max_count till ett större antal, eller minska den genom att göra max_count till ett mindre antal. Sseg_dec - (Skriven av Bryan Mealy): Den här modulen tar ett 8 -bitars tal som inmatning, som det avkodar, konverterar numret till dess decimalekvivalent och matar sedan ut till sju segmentvisning. För att den här filen ska fungera måste du se till att dina begränsningar matchar vår.
Pone:
Detta är ett skiftregister som flyttar bitar till vänster och lägger till en het bit för att det ska se ut som att effektmätaren ökar. När alla bitar är heta återställs alla bitar till '0' och cykeln börjar om.
Ptwo:
Detta är en omvänd version av P1 -modulen.
Avdragare 1:
Detta är en kombination av ett skiftregister och en subtraktor. Skiftregistret går i motsatt riktning mot P1: s skiftregister, vilket indikerar ett avdrag. Detta subtraherar också 1 från spelare 2: s hälsa för varje klockcykel, så med kombinationen av dessa två funktioner kommer det att se ut som motståndarens hälsa minskar med 1 för varje led i hälsofältet som går ner.
Deductor2: Detta är en omvänd version av Deductor1 -modulen.
PlayDecoder (lånad och modifierad av ekchen35649 hans 133 instruerbara): Detta används i menyläget för att visa ordet "PLAY" på sju segmentavkodaren.
Steg 4: Testa
Detta spel var ursprungligen inspirerat av ett av minispel från Kirby. Det är ett enkelt spel för två spelare som kan spelas på ett Basys 3 Board eller någon FPGA.
Steg 1: Obligatoriskt material
Du behöver: Digilent Basys 3, FPGA Board (eller någon annan) En relativt uppdaterad version av Vivado, eller någon annan vhdl -miljö En dator som kan köra det nämnda programmet A brain
Steg 2: Spelet själv
Hur man spelar
För att starta trycker du på mittknappen. Detta kommer att leda till att "99", som representerar spelarens två hälsa, visas på displayen med sju segment. Därefter tänds lysdioderna i följd från höger till vänster. Detta bildar en power bar. När strömmen är full återställs den. Spelarens syfte är att vända omkopplaren när ribban är så hög som möjligt. Ju fler lysdioder som tänds, desto mer skada gör spelaren för spelare två. Efter att spelare en har slagit omkopplaren, dras skadan från spelarens två hälsa. Sedan växlar den till spelare två. Numret som visas representerar spelarens hälsa och strömfältet fylls från vänster till höger. När spelare två gör sitt drag, dras skadan ifrån, och det är tillbaka till spelare ens tur igen. Detta upprepas tills en spelare når 0 hälsa. Video om denna funktion bifogas.
För att spela spelet, ladda det på ett grundläggande bräda och tryck på mittknappen. Försök att vända omkopplaren med så många lysdioder som är aktiva och vänta och se hur styrelsen drar bort dessa poäng från din motståndares hälsa. Ge det sedan vidare till din vän och
Steg 3: FSM
Detta spel är i huvudsak en stor ändlig tillståndsmaskin, som en komplex logik sker baserat på tillståndet som FSM är i.
(Statligt diagram)
Stat 1: Meny
Det första tillståndet är menyskärmen, som är ett av de enklare tillstånden. Den innehåller den sju segmentiga displayen som visar ordet "PLAY" och knappen som får spelet att starta. Knappen, BTN, leder oss till nästa tillstånd, vilket är spelarens tur.
Stat 2: Spelarens tur
Spelarens tur aktiverar en signal som får sju segmentvisning att visa spelarens två hälsa. En annan signal tänds för att aktivera ett skiftregister som importerats från en annan modul som vi skapade (Pone.vhd). Detta skiftregister gör att lysdioderna tänds som en ökande effektmätare skulle göra i andra spel, och det återställs sedan till 0 när det når den maximala mängden lysdioder som kan tändas. Den uppdateras om klockans stigande kant från barclock.vhd, som är modifierad från en lånad labfil. Vi fick spelarens ena start från höger och fyllning till vänster, eftersom spelarens omkopplare också är till vänster (för intuitiv användarupplevelse). När omkopplaren välts, går tillståndet vidare till spelare ett avdrag, och mängden lysdioder som är aktiva sparas i en signal.
State 3: Player One -avdrag
Signalen med mängden lysdioder aktiv avgör mängden hälsa som dras av. Detta görs genom att ha ett annat skiftregister (deductor1.vhd) som snarare än att öka LED: erna, minskar dem. Detta minskar på den stigande kanten av en av klockdiv -modulerna som vi lånat och modifierat (downcounterclock.vhd). Precis när en lysdiod släcks, dras en hälsopunkt från spelarens två hälsa. Om två under denna process når 0 hälsa, stannar vi och går omedelbart vidare till tillståndet "Game over". Annars, när LED -vektorn når "0000000000000000", går vi vidare till spelare två.
Stat 4: Spelare två
Spelarens två tur är precis som spelarens en, förutom att skiftregistret för den (Ptwo.bhd) går från vänster till höger och omkopplaren är på höger sida av brädet. En signal aktiveras för att ha Player 1: s hälsodisplay. När switch 2 är aktiv går detta vidare till Player Two: s avdragsvridning.
Steg 5: Player Two -avdrag
Precis som spelare tvåas tur, spelar spelare två -avdrag ungefär som spelare ett -avdrag. Huvudskillnaden är att skiftregistret som styr lysdiodernas avstängning går i motsatt riktning, vilket är en enkel modifiering att göra när du har spelarens avdrag fungerar korrekt.
Steg 6: Spel över Om någon av spelarna vid något tillfälle når noll hälsa, växlar spelet till detta tillstånd. Inget fina skärmar. Om BTN en trycks in, återställs hälsan till 99, och staten går tillbaka till menyn och startar faktiskt spelet om.
Svart låda
Steg 4: Moduler
Downcounterclock (baserat på clk_div.vhd -modulen av Bryan Mealy):
Detta är klockan som hanterar tidpunkten för avdragarna. Konstanten som heter max_count är 3x mer än barclocks max_count -konstant. Detta gör avdragarna tre gånger långsammare än barens hastighet.
Barclock - (baserat på clk_div.vhd -modulen av Bryan Mealy): Den här klockan hanterar tidtagningen av effektmätarna, som vi snabbt ökade för att öka svårigheten i spelet. Denna tidpunkt kan justeras efter eget tycke, öka hastigheten genom att göra konstanten max_count till ett större antal, eller minska den genom att göra max_count till ett mindre antal. Sseg_dec - (Skriven av Bryan Mealy): Den här modulen tar ett 8 -bitars tal som inmatning, som det avkodar, konverterar numret till dess decimalekvivalent och matar sedan ut till sju segmentvisning. För att den här filen ska fungera måste du se till att dina begränsningar matchar vår.
Pone: Detta är ett skiftregister som flyttar bitar till vänster och lägger till en het bit för att det ska se ut som att effektmätaren ökar. När alla bitar är heta återställs alla bitar till '0' och cykeln börjar om.
Ptwo: Detta är en omvänd version av P1 -modulen.
Deductor1: Detta är en kombination av ett skiftregister och en subtraktor. Skiftregistret går i motsatt riktning mot P1: s skiftregister, vilket indikerar ett avdrag. Detta subtraherar också 1 från spelare 2: s hälsa för varje klockcykel, så med kombinationen av dessa två funktioner kommer det att se ut som motståndarens hälsa minskar med 1 för varje led i hälsofältet som går ner.
Deductor2: Detta är en omvänd version av Deductor1 -modulen.
PlayDecoder (lånad och något modifierad från ekchen35649 hans 133 instruerbara):
Detta används i menyläget för att visa ordet "PLAY" på sju segmentavkodaren.
Att göra: bilder, video
Rekommenderad:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg
Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Tre högtalarkretsar -- Steg-för-steg handledning: 3 steg
Tre högtalarkretsar || Steg-för-steg-handledning: Högtalarkretsen förstärker ljudsignalerna som tas emot från miljön till MIC och skickar den till högtalaren varifrån förstärkt ljud produceras. Här visar jag dig tre olika sätt att göra denna högtalarkrets med:
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Konkurrenskraftigt summer -system: 5 steg
Konkurrenskraftigt summer -system: Det konkurrenskraftiga summer -systemet som utformats i detta projekt fungerar på samma sätt som de summer -system som används i Regional och National Science Bowl -tävlingar. Detta projekt inspirerades av mitt engagemang med mitt gymnasieskolor för science bowl för tre