Nexys-2 ljus Dodger spel (4 / 6 steg)
Steg 4: Beskrivning av VHDL
Här är en förklaring till våra VHDL. Det finns några buggar, men detta kommer att hjälpa dig förbättra det eller använder någon av dess komponenter i ditt eget projekt. Ovan är bilder av ändlig tillståndsmaskin och svart låda diagram som du kan använda för att förstå VHDL.
"Spelet" är den högsta nivån modul som ansluter alla komponenter av projektet och tilldelar utgångarna. Signaler och port kartor används för att ansluta komponenterna tillsammans. Detta är också den modul där vi utgång positionen för din karaktär och hindren för displayen. Detta innehåller också den process som gör att alla lysdioder flash grön eller röd och återställer spelet när du vinner eller förlorar, respektive.
"scroll_clk0" är den modul som innehåller långsammare klockan används för att öka utvecklingen och värdering av spelaren. Detta är en grundläggande klocka avdelare att räkningarna klockan cykler för att skapa en långsammare puls klocka ungefär en gång per sekund.
"map_decoder0" är den modul som läser ståndpunkterna som hinder från ROM så att de kan visas på LED matrix och kontrolleras mot användaren position.
"display_counter0" är modul med 3 bitars räknare som cyklar genom vilken rad LED matris visas. Den här räknaren är byggd med växla flip flops som kan återställas till 0.
"map_progres_counter0" är den modul som håller reda på hur långt användaren har gjort framsteg genom spelet. Detta använder en 8 bitars räknare från växla flip flops som kan återställas till 0 när spelet slutar.
"address_adder" är en modul som använder en halv adder och sju full tilläggsfunktioner att göra en 8 bitars rippel bär huggorm. Detta används för att Lägg till utvecklingen av användaren i raden som visas för tillfället för att läsa rätt hinder positioner från ROM.
"standard_decoder" är modul med 3 till 8 standard avkodare som använder tre bitars tal från modulen display_counter0 för att avgöra vilken rad att slå på.
"map_rom0" är den modul som innehåller läsminne av placera av hinder på varje rad. Med hjälp av detta skapar syntesen varning "Instantiating black box modul" och flera dinglande pin varningar. Dessa varningar påverkar dock inte spelet eftersom det är kvarleva från det automatiska skapandet av block minne. För att redigera den ROM med programmet ISE Design Suite 14,5, först skapa en anteckningar-fil med följande:
memory_initialization_radix = 2;
memory_initialization_vector =
00000000,
01000000,
00100000,
00010000;
Lägg till 1: var du vill ett hinder att vara belägen, och denna fil kan vara upp till 256 rader. Se till att endast den sista raden slutar med ett semikolon.
Spara denna fil som en .coe-fil genom att lägga till ".coe" i slutet av filnamnet och ändra "Spara som typ" till "alla filer.
Efter detta, dubbel klick på på modulen "map_rom0." Efter detta öppnas, gå till sidan 2 och kontrollera minne är enda Port ROM i rullgardinsmenyn. På sidan 3, se till att läsa bredd är 8 bitar och Läs djupet är 256. Om du vill ändra storlek på karta, se sidan 6 i detta instructable. På sidan 4, kontrollera att filen ladda Init och rutorna fylla återstående minnesplats kontrolleras, och att din .coe fil används i rutan Coe. Du kan se värdena på kartan genom att välja Visa. Välj slutligen generera.
"buffer_with_output_enable0" är den modul som ser till att hindren är utdata som aktiv låg och tillåter dem att vara avstängd när spelet slutar. Detta görs med hjälp av D badtofflor och växelriktare.
"win_lose_logic0" är den modul som kontrollerar om användaren har nått slutet av kartan eller har kolliderat med ett hinder så att "spelet" modulen kan flash displayen med alla röda eller gröna lysdioder och nollställa räknarna i "map_decoder0"
"sseg_dec0" är den modul som läser en 8 bitars tal och visar dess motsvarande decimalvärde på sju segment display ombord Nexys-2. Detta innehåller också en klocka avdelare för att styra uppdateringsfrekvensen för flytta ändlig tillståndsmaskin och sju segment display och LED-matris.
"move_fsm0" är den modul som läser vänster och höger ingångar och utgångar positionen för användaren efter att ha flyttat. Detta avkodar också 3 bitvärdet ställningstagande för en en-het 8 bitars utdata. Ovan är ett diagram över Moore tillståndsdatorn.
"buffer_with_output_enable1" är en modul som har samma struktur som "buffer_with_output_enable0." Men, detta är för att göra användarens position aktiv låg och det kan stängas av när spelet slutar.
"game.ucf" är den användare constraint fil som definierar vilket stift i styrelsen ansluta till in- och utgångar av spelet.