Paso 9: Nivel superior
La parte final de este proyecto es el cableado de alto nivel. Hemos escrito ocho módulos independientes y tuvo que encontrar la manera de conectarlos todos juntos. Hemos comenzado con nuestra entidad top_level con entradas de Clk y player_input y salidas de rgb, HS, HV, LD7, LD6, LD5, segs y AN. El primer componente, game_logic, se implementa con clk y player_input como entradas. Hemos decidido p_i [2] que "up", el botón p_i [1] para ser "down" y el p_i [0] botón a "confirmar selección".
A continuación, necesitamos una señal externa para current_player_location y esto va a otro módulo que consumirá el reproductor en la pantalla. Otra señal externa es necesario para la ubicación de obstáculos que serán dibujados por otro módulo.
Componentes son necesarios para todos los módulos previamente escritos para cablear todo juntos. Un componente para el monitor VGA y es necesario también con insumos de primera y pixel_clk y salidas de HS, VS, hcount, vcount, en blanco. Un componente de la clk_wiz_v3_6 se pone en acción con una entrada de clk_in1 y una salida de clk_out1. Necesitamos también un componente para gráficos. Este componente tiene entradas de pixel_clk, player_loc, obst_locs_1, obst_locs_2, obst_locs_3, obst_locs_4, muertos, hcount, vcount y una salida de rgb.
También necesitamos un componente para mostrar la puntuación del jugador en la pantalla de siete segmentos en la Junta de SDMONexys 3. Este componente llamado sseg_dec fue escrito y realizado por Bryan Mealy y otra vez al final de este tutorial.
Entonces tenemos que crear una instancia de 15 señales. Estas señales son: pixel_clk, reset, puntuación, 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, en blanco, signos y es válido. La señal de "reset" es global reset y, cuando la alta, ajusta a todos los componentes a su estado inicial. Las señales internas "puntuación", "top_lives_left" y "top_level_dead" en el módulo de game_logic y vienen en el módulo de gráficos que luego decide qué píxeles serán colores que cada vez las actualizaciones de pantalla (60 veces por segundo). La señal de "en blanco" siempre será cero, porque no estamos utilizando en nuestro diseño de juego; es parte del controlador estándar VGA diligente. Por último, señales "signo" y "válidos" son señales para el módulo de sseg_dec y se inicializan sólo aquí para satisfacer los requisitos de puerto para el módulo VHDL de pre-construidos sseg_dec.
Mediante estas señales, asignamos pixel_clock ser clk_wiz_v3_6, game_mechanics para game_logic, sync_module para vga_controller_640_60, draw_the_boxes para gráficos y score_disp a sseg_dec.
El último toque que hicimos fue Mostrar la vida a la izquierda para el jugador en los LEDs de la tarjeta SDMONexys 3. Esto se realizó mediante un proceso llamado lives_on_LEDs con solo top_lives_left en la lista de sensibilidad. Utilizando un if/else sentencia que es determinado cuántas luces para visualizar sobre los LEDs hasta sin luces sobre lo que significa "Game Over".