En este momento, estoy tomando un curso sobre Verilog HDL, sin embargo, nuestro instructor nos dio un problema con la máquina en el que estamos obligados a implementar un programa que use verilog mientras que C # es nuestra principal interfaz gráfica de usuario. El problema de la máquina que se nos da es un tipo de juego, llamado "Beatmania" (como el beatmania del juego real de Japón). Su modo de juego consiste en notas que caen desde la parte superior de la pantalla, y cuando llega a la barra de debajo de la pantalla, el jugador debe presionar el botón correspondiente para "golpear" y se anotará una puntuación por cada golpe.
Aquí hay una captura de pantalla de muestra:
beatmania http://img.gamefaqs.net/screens/1/0/5/ gfs_78370_2_2.jpg
Pero, en nuestro problema con la máquina, el número de botones se reduce a solo 4.
Aquí están nuestros pensamientos hasta ahora:
- Se usarán dos módulos primarios, uno llamado ShiftReg y otro HitMiss.
- Usaremos 4 Registros de desplazamiento (uno por columna) para replicar la caída de las notas del juego. El módulo ShiftReg tendrá esto.
- El patrón probablemente se almacenará en una declaración de memoria, de aproximadamente 120 bits de ancho. Esto también está contenido en el módulo ShiftReg.
- Un 1 representará una barra y un 0 en blanco.
- Se utilizará una forma de onda cuadrada o un reloj para controlar la velocidad del juego.
- Cuando una nota llega a la parte inferior, se utilizará una puerta AND, una entrada de la salida en serie del registro de desplazamiento y otra entrada para el interruptor. Esto crea el "hit" de la jugabilidad. Esto se incluirá en el módulo HitMiss.
-
Pensamos en usar un archivo de texto para interactuar entre Verilog y C #. Para interconectar el proceso en verilog con la interfaz gráfica de C #, el módulo ShiftReg creará un archivo de texto como este:
10110101
10010101
01010110
01010110Cada línea representará una columna en C #, luego, cada vez que se produce un cambio, el archivo de texto se actualiza en verilog y se refleja en la GUI en C #. Por lo tanto, causando una rápida apertura y cierre de archivos de texto tanto en Verilog como en C #.
-
El módulo ShiftReg también genera la salida en serie del registro de desplazamiento para que se ingrese en el módulo HitMiss.
- A medida que el módulo HitMiss acepta la salida del módulo ShiftReg, se realizará la comparación (mediante el uso de puertas AND como se indicó anteriormente).
- El módulo HitMiss también contendrá los cálculos para la puntuación, como el número de visitas y la calificación final. Nuevamente, esto se colocará en un archivo de texto, que se reflejará en C #.
- Por lo tanto, a partir de ahora, para los dos módulos, el módulo ShiftReg tendrá cuatro puertos de salida (salida en serie de los registros de desplazamiento), y el módulo HitMiss tendrá 8 puertos de entrada (para aceptar entradas de los botones (4), y las entradas del módulo ShiftReg (4)). Los botones de inicio y los botones de reinicio también se incluirán y los archivos de texto se utilizarán para enlazar Verilog y C #.
Ahora, aquí están mis preguntas:
- ¿Cómo ejecuto ambos programas simultáneamente (Verilog y C #), si el juego está en tiempo real, como usar la señal del reloj o presionar los botones interactivos? Solo sé que Verilog se suele simular a través de bancos de pruebas, con un conjunto de estímulos definidos por el usuario.
- En cuanto al diseño, ¿cómo voy a reflejar un Hit o un Miss en C #? ¿Algunas ideas? También, ¿ideas sobre cómo reflejar los botones de C # a los botones / entrada (probablemente en el módulo HitMiss) en Verilog?
- Sobre el almacenamiento del patrón, ¿cómo accedo a cada bit de forma consecutiva para que utilicen los registros de desplazamiento? ¿Uso bucle?
Por cierto, estoy usando Xilinx ISE Project Navigator.