Stap 4: Beschrijving van VHDL
Hier is een uitleg van onze VHDL. Er zijn een aantal bugs, maar dit zal u helpen te verbeteren of gebruik een aantal van de componenten in uw eigen projecten. Boven zijn foto's van de eindige toestandsmachine en zwarte doos-diagram dat u gebruiken kunt om te helpen begrijpen van de VHDL.
"Spel" is het hoogste niveau-module die verbindt alle onderdelen van het project en worden toegewezen van de uitgangen. Signalen en poort kaarten worden gebruikt om de onderdelen met elkaar verbinden. Dit is ook de module waar we de positie van je karakter en de belemmeringen voor het display output. Dit bevat ook het proces dat alle LEDs flash groen of rood maakt en stelt het spel wanneer je wint of, respectievelijk verliest.
"scroll_clk0" is de module met de vertraagd klok gebruikt voor het verhogen van de vooruitgang en de score van de speler. Dit is een fundamentele klok verdeler dat tellingen klok cycli maken een langzamere klok-puls ongeveer een keer per seconde.
"map_decoder0" is de module die de posities van de belemmering van de ROM leest zodat ze kunnen worden weergegeven op de LED-matrix en aan de positie van de gebruiker getoetst.
"display_counter0" is de module met de teller 3 bits die cycli via welke rij van de matrix LED wordt weergegeven. Dit prestatiemeteritem is gebouwd met knevel slippers die kunnen worden teruggesteld aan 0.
"map_progres_counter0" is de module waarmee wordt bijgehouden hoe ver de gebruiker is gevorderd in het spel. Deze maakt gebruik van een 8 bit teller gemaakt van knevel slippers die kunnen worden teruggesteld aan 0 wanneer het spel wordt beëindigd.
"address_adder" is een module die gebruikmaakt van een halve adder en zeven volledige adders te maken van een 8 bit rimpel dragen adder. Dit wordt gebruikt om de voortgang van de gebruiker toevoegen aan de rij die momenteel wordt weergegeven om te lezen van de belemmering van de juiste posities van de ROM.
"standard_decoder" is de module die een standaard decoder van 3 tot en met 8, die het nummer van de drie bits van de display_counter0 module wordt gebruikt om te bepalen welke rij heeft moet inschakelen.
"map_rom0" is de module waarin het ROM - geheugen van de positie van de obstakels op elke rij. Using zulks maakt de waarschuwing "Instantiating black box module" synthese en verschillende bungelen pin waarschuwingen. Echter, deze waarschuwingen hebben geen invloed op het spel want dit overgebleven van de automatische creatie van blok geheugen is. Om te bewerken van de ROM met de ISE Design Suite 14,5-programma, maak eerst een Kladblok-bestand met de volgende:
memory_initialization_radix = 2;
memory_initialization_vector =
00000000,
01000000,
00100000,
00010000;
1's toevoegen waar u een obstakel wilt te zijn gelegen, en dit bestand mag maximaal 256 regels. Zorg ervoor dat alleen de laatste regel eindigt met een puntkomma.
Vervolgens slaat u dit bestand als een .coe-bestand door ".coe" aan het einde van de bestandsnaam toe te voegen en het veranderen van de "opslaan als type" op "alle bestanden.
Na dit, tweevoudig tikken voort op de module "map_rom0." Nadat dit is geopend, ga naar pagina 2 en zorg ervoor dat het Type geheugen is één poort-ROM in het dropdownmenu. Op pagina 3, ervoor te zorgen dat de breedte gelezen 8 bits is en de diepte van lezen 256 is. Als u wijzigen van de grootte van de kaart wilt, zie bladzijde 6 van dit instructable. Op pagina 4, ervoor te zorgen de Load Init-File en de resterende geheugenlocatie vullen vakken worden gecontroleerd, en dat uw .coe bestand wordt gebruikt in het vak Coe. U kunt de waarden van de kaart zien door het selecteren van de Toon. Tot slot Selecteer genereren.
"buffer_with_output_enable0" is de module die zorgt ervoor dat de belemmeringen zijn output als de actieve laag en kunnen ze worden uitgeschakeld wanneer het spel wordt beëindigd. Dit is gemaakt met behulp van D slippers en omvormers.
"win_lose_logic0" is de module waarmee wordt gecontroleerd als de gebruiker heeft bereikt het einde van de kaart of een belemmering heeft botste zodat het "spel" module kan het scherm met alle rode of groene LEDs flash en resetten van de tellers in "map_decoder0"
"sseg_dec0" is de module die een getal van 8 bits worden gelezen en zijn gelijkwaardige decimale waarde weergegeven in het display van de zeven segment op de Nexys-2 board. Dit bevat ook een verdeler van de klok gebruikt voor het beheersen van de vernieuwingsfrequentie van de eindige toestandsmachine van beweging en het 7 segment display en de LED-matrix.
"move_fsm0" is de module die leest de ingangen van links en rechts en uitgangen van de positie van de gebruiker na het verplaatsen. Dit decodeert ook 3 bitwaarde voor positie naar een één-hete 8-bit output. Boven is een diagram van de statusmachine Moore.
"buffer_with_output_enable1" is een module die heeft dezelfde structuur als "buffer_with_output_enable0." Dit wordt echter gebruikt om de positie van de gebruiker de actieve laag en het kunnen worden uitgeschakeld wanneer het spel wordt beëindigd.
"game.ucf" is de beperking gebruikersbestand waarmee wordt gedefinieerd welke pinnen op het bord sluit aan op de ingangen en de uitgangen van het spel.