Paso 2: Módulos VHDL
Máquina de estado finito del LED (led_fsm.vhd)
Este módulo se utiliza para controlar los LEDs. En su estado predeterminado, mientras que su entrada de habilitación es alta, este módulo simplemente cambia la actual LED iluminado a la derecha un espacio en el flanco ascendente de la entrada de reloj (var_clk_div.vhd abajo). Si la entrada enable es baja, el LED tendrá su estado actual. Cuando se llega al final, los LEDs "abrigo alrededor" volver al principio. Después se pasa el nivel final, cuando la señal de la victoria es alto, todos los LEDs se iluminarán. Si en cualquier momento reset es alto, como en el estado de Victoria, los LEDs se reiniciará a su estado predeterminado.
Máquina de estado finito de nivel (level_fsm.vhd)
Este módulo almacena un valor binario de cuatro bits que representa el nivel actual. La salida de este módulo se muestra en el display de siete segmentos en la SDMONexys 3. La salida también se utiliza para determinar la velocidad de la luz móvil. Para cambiar el valor del nivel, debe enviarse un pulso en la señal de enable haciendo que el nivel se incrementa por "0001". Si en cualquier momento la señal de reset es alta, el valor del nivel se reposiciona a "0000".
Decodificador de siete segmentos (sseg_dec.vhd)
Este módulo es el trabajo del profesor Cal Poly, Bryan Mealy. Toma en un binario de ocho bits de entrada y muestra el valor decimal correspondiente en el display de siete segmentos de SDMONexys 3. Se utiliza para mostrar la salida de level_fsm.vhd.
Divisor de reloj variable (var_clk_div.vhd)
Este módulo se basa en un módulo suministrado por el profesor de Cal Poly, Bryan Mealy. Este módulo toma el nivel actual (de level_fsm.vhd) como entrada y salidas de una señal de reloj. La frecuencia de este reloj aumenta junto con el nivel para hacer el juego más difícil.
Juego de LED (led_game.vhd)
Aquí vamos! El módulo principal del juego! Propósito de este módulo es para conectar todos los módulos anteriores y para proporcionar la lógica intermedia para jugar el juego. Este módulo envía señales diferentes a los módulos relevantes cuando se pulsa el botón de parada. También se encarga el estado de espera después de que se pulse el botón de parada. Este estado de espera detiene el juego durante dos segundos antes de la próxima, más rápido y emocionante, nivel comienza. Este estado de espera también ignora el botón de parada adicional empuja para evitar contra rebotes temas. Bloque diagrama que muestra las conexiones entre los módulos del componente está conectado (diagrama de bloques de juego de LED).