Runner spel i VHDL (9 / 10 steg)
Steg 9: Översta nivån
Den sista delen av detta projekt är den översta nivån ledningar. Vi har skrivit åtta separata moduler och var tvungen att hitta ett sätt att ansluta dem alla tillsammans. Vi börjat med våra top_level enhet med ingångar Clk och player_input och utgångar för rgb, HS, HV, LD7, LD6, LD5, segs och AN. Den första komponenten, game_logic, genomföras med clk och player_input som insatsvaror. Vi beslutade p_i [2] knappen ska "upp" knappen p_i [1] att vara "down" och p_i [0] knappen för att "bekräfta/select".
Nästa, vi behöver en extern signal för current_player_location och detta går till en annan modul som kommer att dra spelaren på skärmen. En annan extern signal behövs för platser hinder som kommer att dras av en annan modul.
Komponenter är nödvändiga för alla moduler tidigare skrivit tråd allt tillsammans. En komponent för VGA monitor är behövs också med rst och pixel_clk in- och utgångar för HS, VS, hcount, vcount, och tom. En komponent för clk_wiz_v3_6 sätts in i åtgärden med en inmatning av clk_in1 och produktion av clk_out1. Vi behöver också en komponent för grafik. Denna komponent har ingångar för pixel_clk, player_loc, obst_locs_1, obst_locs_2, obst_locs_3, obst_locs_4, döda, hcount, vcount och produktion av rgb.
Vi behöver också en del att visa spelarens poäng på sju-segment display ombord Nexys 3. Denna komponent som kallas sseg_dec skrevs och som tillhandahålls av Bryan Mealy och ges igen i slutet av denna handledning.
Vi måste initiera 15 signaler. Dessa signaler är: pixel_clk, reset, poäng, 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, Tom, tecken, och giltig. Signalen "reset" är en global återställa och, när hög, kommer att sätta alla komponenter tillbaka till deras ursprungliga skick. Den inre signalerar "poäng", "top_lives_left" och "top_level_dead" kommit ur modulen game_logic och gå in i grafik modulen som sedan beslutar vilka pixlar kommer att vara vilka färger varje gång skärmuppdateringarna (60 gånger per sekund). Signalen "blank" kommer alltid att vara noll eftersom vi inte använder det i vår speldesign; Det är en del av standard flitig VGA-styrenhet. Slutligen, signaler "tecken" och "giltig" är signaler för modulen sseg_dec och endast initieras här för att uppfylla portkrav som för färdiga sseg_dec VHDL-modulen.
Med hjälp av dessa signaler, tilldelar vi pixel_clock vara clk_wiz_v3_6, game_mechanics till game_logic, sync_module till vga_controller_640_60, draw_the_boxes till grafik och score_disp till sseg_dec.
Den sista touch vi gjorde var att Visa liv lämnade för spelaren på lysdioderna på Nexys 3 styrelsen. Detta gjordes genom en process som kallas lives_on_LEDs med bara top_lives_left i listan känslighet. Använda en if/else uttalande är det bestäms hur många ljus att visa på lysdioderna tills inga lampor är på vilket betyder "Game Over".