Red de conocimiento informático - Material del sitio web - Diseño integral del juego "2048" basado en FPGA

Diseño integral del juego "2048" basado en FPGA

ID de estudiante: 17020110019 Nombre: Gao Shaokui

El juego "Jianniu Guide 2048" se puede utilizar tanto en la web como en terminales móviles. Este diseño trasplanta el juego a la plataforma de hardware FPGA. , utilizando Digilent La placa de desarrollo Nexys 4 DDR utiliza Xilinx Vivado para construir un entorno operativo de hardware basado en el procesador de núcleo blando MicroBlaze. El programa principal del juego "2048" y el control de pantalla VGA y otros programas están escritos en el SDK de Xilinx. Los controles de dirección arriba, abajo, izquierda y derecha necesarios para el juego se implementan físicamente mediante botones en la placa de desarrollo y se implementan a nivel de software mediante métodos de consulta. Finalmente, los resultados de ejecución del sistema integrado se mostrarán en la pantalla, incluidos los cuadrados de tablero de ajedrez de 4×4, las puntuaciones y los resultados de los juegos.

Niubi FPGA VGA integrada CPU de núcleo blando de sistema integrado mínimo

Texto Niu integrado

1. Diseño de hardware

Diseño general del sistema El circuito El diagrama de bloques se muestra en la figura.

La parte de hardware consta de un sistema integrado mínimo basado en el procesador de núcleo blando MicroBlaze y módulos periféricos de entrada y salida. El sistema integrado mínimo utiliza el procesador de núcleo blando MicroBlaze, el módulo de reloj (Clocking Wizard), el módulo de reinicio del sistema del procesador (Processor System Reset), el módulo de depuración (MicroBlaze Debug Module, MDM), el almacenamiento integrado (LocalMemory) y el módulo de interfaz de almacenamiento externo. (Memory Interface Generator, MIG) como núcleo, con el módulo de interconexión de bus AXI (AXI Interconnect) como base de comunicación entre el procesador y los periféricos, y el controlador de interrupciones AXI (AXI Interrupt Controller) y las interrupciones montadas directa o indirectamente en él. El integrador de solicitudes (Concat) sirve como ruta de datos para las señales de interrupción.

El módulo de entrada y salida de periféricos incluye las siguientes partes, las cuales se comunican con el procesador a través del bus AXI. El módulo UART (AXI Uartlite) realiza la comunicación de depuración entre el sistema integrado y la computadora, el módulo GPIO (AXI GPIO) realiza la entrada clave y el módulo TFT (AXI TFT Controller) genera los resultados de la operación del sistema a través de la interfaz VGA.

Dado que la parte del software necesita almacenar una gran cantidad de recursos de imagen, y el módulo TFT requiere al menos 2 MB de memoria de video, y el espacio de almacenamiento incorporado del procesador es insuficiente, el módulo MIG Se utiliza para utilizar almacenamiento DDR2 externo. El sistema de hardware requiere tres señales de reloj de diferentes frecuencias: el procesador requiere un reloj de 100 MHz, el módulo MIG requiere un reloj de 200 MHz y el módulo TFT requiere un reloj de 25 MHz, por lo que el Asistente de sincronización genera tres relojes.

Para implementar el sistema integrado anterior en FPGA, es necesario agregar restricciones de pines. ***Hay tres lugares donde es necesario agregar restricciones: entrada de señal de reloj, entrada clave del módulo GPIO y salida de interfaz VGA del módulo TFT. Los dos primeros lugares están restringidos al agregar el núcleo IP correspondiente. Las restricciones del módulo TFT deben completarse manualmente, es decir, las señales de color de los canales rojo, verde y azul y las señales de sincronización horizontal y vertical están restringidas al VGA. Terminal.

2. Diseño de software

1. Material gráfico

El resultado de ejecución del sistema integrado, es decir, el estado del juego "2048", debe se enviará gráficamente a la pantalla de visualización, por lo que todo el contenido más complejo que pueda mostrarse debe preproducirse y almacenarse.

Estos contenidos incluyen 2~65536***16 cuadrados numéricos, los diez números del 0 al 9 utilizados para mostrar la puntuación, las indicaciones de "puntuación" y las indicaciones de "ganar" y "perder" que ofrece el juego, todo utilizando Made with Adobe. Photoshop. Luego, utilice el software de la herramienta Image 2 Lcd para generar la imagen como una matriz en formato de lenguaje C para su uso posterior.

2. Parte principal del programa

Las funciones implementadas por el programa principal son: configurar los parámetros de trabajo del hardware, llamar a las funciones de la parte de pantalla VGA para mostrar dos páginas estáticas, inicializar el juego e inicializar la visualización de la pantalla y reconocer las señales de control ingresadas por el usuario y transmitirlas a la parte central del juego.

Los parámetros de funcionamiento del hardware incluyen la dirección de transmisión de datos del canal GPIO, la dirección base de la memoria y el método de escaneo TFT. GPIO se utiliza para obtener información de control ingresada por el usuario, por lo que el valor del registro TRI de entrada de dirección se configura como 0 x1F. La dirección base de la memoria de video es 0x 87 E 00000, el tamaño es 2 MB y esta información se escribe en el registro AR. Los parámetros de trabajo del controlador de pantalla TFT son escanear de izquierda a derecha, encender la salida de la pantalla y escribir 0x 1 en el registro CR en consecuencia.

Cuando el programa comienza a ejecutarse, primero llama a las dos funciones de la parte de visualización VGA 2~ 65536 *** 16 cuadrados numéricos diferentes en el tablero de ajedrez. Luego, llame a la función para comenzar un nuevo juego y dibuje previamente el marco inferior del área del tablero que no necesita actualizarse en la pantalla, la información del mensaje de "puntuación" y el marco inferior del área donde está la puntuación. desplegado. El programa principal utiliza el método de consulta para obtener continuamente la información de entrada del usuario proporcionada por el registro GPIO. Cuando hay entrada, se llama a la función en la parte central del juego para actualizar la información del "tablero".

3. Parte de la pantalla VGA

Esta parte del programa escribe datos en la memoria de video de acuerdo con ciertas reglas para mostrar diferentes contenidos en la pantalla. Estos contenidos incluyen 2~65536*** 16 tipos de tableros cuadrados digitales, información de puntuación, tableros de progreso del juego e información rápida.

2~ 65536 *** El tablero de ajedrez con 16 tipos de cuadrados digitales se muestra cuando el programa comienza a ejecutarse. Cada imagen se muestra durante aproximadamente 5 segundos y se controla aproximadamente mediante un retraso del software. A medida que avanza el juego, la sección de pantalla VGA lee continuamente el "tablero" y dibuja dibujos que representan los números correspondientes en el monitor. Al mismo tiempo, también lee la información de la partitura y la lleva a la posición preestablecida. Si aparece "2048" en el "tablero", generará un mensaje de aviso "ganar". Si no se puede mover ninguna casilla del "tablero de ajedrez" y no aparece "2048", se mostrará un mensaje de "perder".

4. La parte central del juego

La parte central del juego implica principalmente el procesamiento del "tablero de ajedrez", que el programa abstrae en un formato bidimensional de 4 × 4. formación. Las funciones de esta parte incluyen: inicialización del juego, movimiento y combinación de estrategias de bloques en cuatro direcciones, agregar un nuevo bloque al tablero, verificar el estado del juego, calcular puntuaciones y obtener información sobre el estado del juego.

La inicialización del juego borra la puntuación a cero y añade dos números al tablero. El movimiento y las estrategias de fusión de los bloques en las cuatro direcciones son completamente consistentes con los juegos de 2048 que hemos experimentado antes. Después de mover el bloque, se agregará un nuevo bloque al "tablero", posiblemente 2 o 4, con una probabilidad de 9:1. Después, el programa comprueba si 2048 ha aparecido alguna vez en el "tablero". Si ha aparecido (hay al menos un cuadrado en el "tablero" no menos de "2048"), el juego termina y se notificará a la parte del sorteo VGA para que muestre un mensaje de "ganar". Si no ha aparecido, verifique el número de posiciones libres en el tablero y si el bloque aún puede moverse. Si no hay una posición libre y el bloque no puede continuar moviéndose, el juego fallará y se mostrará la parte de visualización VGA. mensaje de aviso. A continuación, envíe el mensaje de aviso "perder".

A continuación, el programa notificará a la sección de visualización VGA para actualizar la visualización del "tablero" y la puntuación. Los puntos actualizan el "tablero" y la visualización de la puntuación.

3. Efecto de operación de diseño

El efecto de operación se muestra a continuación