Stap 9: Hoogste niveau
Het laatste deel van dit project is de bedrading van het hoogste niveau. Wij hebben geschreven acht aparte modules en moest een manier vinden om ze allemaal samen te verbinden. We begonnen met onze top_level entiteit met van Clk en player_input in- en uitgangen van de rgb, HS HV, LD7, LD6, LD5, segs en AN. Het eerste onderdeel, game_logic, is geïmplementeerd met clk en player_input als input. We besloten p_i [2] knop om te worden "up", de p_i [1] knop om te worden "down", en de knop p_i [0] als "bevestigen/select".
Vervolgens moeten we een extern signaal voor current_player_location en dit gaat naar een andere module die zal de speler op het scherm tekent. Een ander extern signaal is nodig voor locaties van obstakels die zal worden getrokken door een andere module.
Componenten zijn nodig voor alle modules eerder geschreven draad alles samen. Een component voor de VGA monitor is nodig ook met eerste-en pixel_clk in- en uitgangen van HS, VS, hcount, vcount, en leeg. Een component voor de clk_wiz_v3_6 wordt in actie met een inbreng van clk_in1 en een output van clk_out1 gebracht. We moeten ook een component voor afbeeldingen. Dit onderdeel heeft ingangen van pixel_clk, player_loc, obst_locs_1, obst_locs_2, obst_locs_3, obst_locs_4, dood, hcount, vcount en een uitgang van rgb.
We moeten ook een onderdeel weer te geven van de score van de speler op het 7-segment display op het bord Nexys 3. Dit onderdeel met de naam sseg_dec werd geschreven en geboden door Bryan Mealy en opnieuw is verstrekt aan het einde van deze tutorial.
Wij moeten vervolgens instantiëren 15 signalen. Deze signalen zijn: pixel_clk, reset, score, top_lives_left, top_level_dead, player_loc, obstacles_to_draw_1, obstacles_to_draw_2, obstacles_to_draw_3, obstacles_to_draw_4, horizcount, verticount, lege, teken, en geldig. Het signaal "reset" is een mondiale reset en, wanneer hoog, zullen alle onderdelen terug naar hun oorspronkelijke toestand. De interne signalen "score", de "top_lives_left" en de "top_level_dead" uit de game_logic module komen en gaan van de grafische module die vervolgens bepaalt welke pixels welke kleuren elke keer het scherm vernieuwd (60 keer per seconde). Het signaal "leeg" zal altijd nul, omdat we niet het gebruikt in onze game-design; het is onderdeel van de standaard ijverig VGA-controller. Ten slotte, de signalen "teken" en "geldig" zijn signalen voor de sseg_dec-module en zijn alleen hier om te voldoen aan de eisen van de poort voor de pre-gebouwde sseg_dec VHDL module geïnitialiseerd.
Met behulp van deze signalen, toewijzen we pixel_clock als de clk_wiz_v3_6 game_mechanics tot game_logic, sync_module tot vga_controller_640_60, draw_the_boxes naar afbeeldingen en score_disp te sseg_dec.
De laatste aanraking die we gemaakt was om het leven liet voor de speler op de LED's op het bord Nexys-3 weer te geven. Dit werd gedaan door een proces genaamd lives_on_LEDs met alleen top_lives_left in de lijst van de gevoeligheid. Met behulp van een if/else statement is bepaald hoeveel lampjes weer te geven op de LED's tot geen lichten zijn op de betekenis van "Spel in".