Paso 6: VHDL Descripción de módulos
Temporizador contador:
Temporizador depende de algunas variables. La variable principal es el at, que ha sido hablado en la máquina de estados finitos. Este es el programa que asegura que después de cierto tiempo de ciclo (en nuestro caso 4), el programa termina. Si la en = 1, entonces el módulo añade uno a un número binario de 3 bits, que es inicialmente cero, en el levantamiento de clk. de otra manera el contador se restablece a cero. También hay una salida para ver si el tiempo o si ha pulsado el botón derecho.
Contador de puntuación:
Funcionalmente, el contador suma 1 a la puntuación total si recibe una señal del partido. De lo contrario la puntuación se establece en la puntuación anterior. La puntuación se establece inicialmente en cero. El resultado es que se restablece a cero en el estado de inactividad de la máquina de estados finitos.
Comparador:
El comparador toma en dos autobuses de pedacito 3 y compara a autobuses cuando el at es 1. De los autobuses representa los btns y el otro es el LED. Este comparador básicamente es comprobar si los LEDs y los btns coinciden. Si lo hacen, envía una señal de partido, de lo contrario no señal del partido está siendo enviar. Si la comparación considera que el btn no han sido la prensa, no dando igualar o no coincide con ninguna señal.
sseg_dec:
Código ha sido creado por Bryan Mealy. Este código tiene pocos componentes. Se convierte de binario a decimal, gestiona el displays de siete segmentos con el valor de entrada, y también contiene un divisor de reloj.
División de reloj:
El código de divisor de reloj ha sido escrito por Bryan Mealy. Un divisor de reloj disminuye o aumenta la frecuencia del reloj. Hemos ajustado los valores máximos para que la estructura de tiempo / ciclo estabas buscando. Nuestro divisor del reloj modificado se ejecuta en un cuarto al segundo período.
Decodificadores:
Tenemos sólo un decodificador que asigna el valor al azar de 8 bit a bit 3 diferentes valores. El representa número de 8 bits el valor aleatorio que estamos recibiendo del generador de bit al azar que habló más sobre en detalles más adelante. El número de bit 3 representa el LED que se iluminan.
Controlador de LED:
Este módulo estaba destinado a ser el controlador para el botón y el tempo del LED indicador. El tempo LED simplemente copia la señal de reloj lentas de nuestro divisor de reloj y brilló al ritmo del juego. El indicador LED del botón parpadea en para los dos primeros de los cuatro golpes que se muestra por el indicador de tempo, como copian la señal de nuestro reloj super lento (período de cuatro tiempos).
Selector de botón al azar:
El selector de botón al azar que habíamos usado un pseudo al azar poco generador, creado por un registro de cambio linear de regeneración (LFSR o para abreviar). Este LFSR es simplemente una cadena d-flip flops con unas salidas de seleccionar flip-flop en puertas XOR que conducen al primera d-flip flop. Esta cadena crea una secuencia semi-aleatoria que se repetirá en algún momento (pero no que rápidamente). Este LFSR crea un número binario de bits al azar de ocho (en decimal, entre 0 y 255), que luego enviamos a nuestro decodificador para seleccionar un botón. (Nuestra PRBG fue modelada después PRBG de 16 bits de Debashish Mohapatra, que se puede encontrar en herehttp://www.debashish.info/index.php/e-learning/vlsi-design/vhdl-codes/174-prbs-pseudo-random-binary-sequence-generator-vhdl-code-and-vhdl-testbench-creation)