Paso 4: Descripción de VHDL
Aquí hay una explicación de nuestro VHDL. Hay algunos errores, pero esto ayudará a mejorar o utilizar algunos de sus componentes en sus propios proyectos. Arriba son fotos de la máquina de estado finito y el diagrama de caja negra que puede utilizar para ayudar a entender el VHDL.
"Juego" es el módulo de nivel superior que conecta todos los componentes del proyecto y asigna las salidas. Señales y mapas de puerto se utilizan para conectar los componentes entre sí. Este también es el módulo donde nos salida la posición de tu personaje y los obstáculos a la pantalla. También contiene el proceso que hace que todos los LEDs flash verde o rojo y se reinicia el juego cuando usted gane o pierda, respectivamente.
"scroll_clk0" es el módulo que contiene el reloj lento utilizado para incrementar el progreso y la puntuación del jugador. Se trata de un divisor de reloj básico que cuenta reloj ciclos para crear un pulso de reloj más lento una vez por segundo.
"map_decoder0" es el módulo que lee la posición del obstáculo de la ROM para que puedan aparecen en la matriz de LED y comprueba con la posición del usuario.
"display_counter0" es el módulo con el contador de 3 bits ciclos a través del cual se muestra la fila de la matriz de LED. Este contador se construye con los fracasos de tirón de palanca que se pueden reajustar a 0.
"map_progres_counter0" es el módulo que realiza un seguimiento de cuánto ha progresado el usuario a través del juego. Esto utiliza un contador de 8 bits de los fracasos de tirón de palanca que se pueden reajustar a 0 cuando el juego termina.
"address_adder" es un módulo que utiliza un medio sumador y siete serpientes completos para hacer un pedacito 8 ondulación llevan adder. Esto se utiliza para aumentar el progreso del usuario a la fila que se muestra actualmente para leer las posiciones correctas del obstáculo de la ROM.
"standard_decoder" es el módulo que tiene un decodificador de 3 a 8 estándar que utiliza el número de tres bits desde el módulo de display_counter0 para determinar qué fila para encender.
"map_rom0" es el módulo que contiene la memoria de sólo lectura de la posición de los obstáculos en cada fila. El uso de este crea la síntesis "Crear instancias módulo de caja negra" de advertencia y colgando varias advertencias del perno. Sin embargo, estas advertencias no afectan el juego porque se trata de sobrante de la creación automática de memoria de bloque. Para poder editar la ROM con el programa ISE Design Suite 14.5, primero cree un archivo de Bloc de notas con lo siguiente:
memory_initialization_radix = 2;
memory_initialization_vector =
00000000,
01000000,
00100000,
00010000;
Añadir 1 dondequiera que usted quiere un obstáculo que se encuentra, y este archivo puede ser hasta 256 líneas de largo. Asegúrese de que sólo la última línea finaliza con un punto y coma.
A continuación, guarde este archivo como un archivo .coe agregando ".coe" hasta el final del nombre del archivo y cambiar el "guardar como tipo" a "todos los archivos.
Después de esto, haga doble clic en el módulo "map_rom0." Después de esto se abre, ir a la página 2 y asegúrese de que el tipo de memoria es el único puerto ROM en el menú desplegable. En la página 3, asegúrese de que el ancho de la lectura es de 8 bits y la profundidad de la lectura es 256. Si desea cambiar el tamaño del mapa, vea la página 6 de este instructivo. En la página 4, asegúrese de que el archivo de inicio de carga y los cuadros de localización de memoria restante llenar son comprobados, y que su archivo .coe se utiliza en el cuadro archivo de Coe. Puede ver los valores del mapa seleccionando Mostrar. Por último, seleccione generar.
"buffer_with_output_enable0" es el módulo que hace que los obstáculos se generan como activo bajo y les permite ser dado vuelta apagado cuando el juego termina. Esto se realiza mediante inversores y ojotas D.
"win_lose_logic0" es el módulo que comprueba si el usuario ha llegado al final del mapa o ha chocado con un obstáculo para que el módulo de "juego" puede flash la pantalla con todos los LEDs rojos o verdes y reconfigurar los contadores en "map_decoder0"
"sseg_dec0" es el módulo que lee un número de 8 bits y muestra su valor decimal equivalente en el display de siete segmentos en la Junta de SDMONexys-2. También contiene un divisor de reloj utilizado para el control de la tasa de refresco de la máquina de estados finitos de movimiento y la exhibición de siete segmento y la matriz de LED.
"move_fsm0" es el módulo que lee las entradas de la izquierda y derecha y salidas de la posición del usuario después de mover. Esto también decodifica el valor 3 para la posición a una salida de caliente uno de 8 bits. Es un diagrama de la máquina de Estados de Moore.
"buffer_with_output_enable1" es un módulo que tiene la misma estructura como "buffer_with_output_enable0." Sin embargo, esto se utiliza para hacer la posición del usuario activo bajo y se pueden apagar cuando el juego termina.
"game.ucf" es el archivo de restricciones de usuario que define que pines en la placa de conexión a las entradas y salidas del juego.