Reloj de ajedrez disenado en vhdl

Solo disponible en BuenasTareas
  • Páginas : 7 (1682 palabras )
  • Descarga(s) : 0
  • Publicado : 8 de diciembre de 2010
Leer documento completo
Vista previa del texto
Introducción a los sistemas digitales.
Proyecto: Reloj de Ajedrez
Lenguaje: VHDL
Software: Xilinx ISE 12.1 WebPack.

Tabla de Contenido

1 Descripción del Proyecto
2 Objetivo
3 Descripción
4 Diseño de la Maquina de estados
5 Código
6 Simulación
7 Conclusiones
8 Bibliografía

1 Descripción del Proyecto

El sistema controlara una partida de Ajedrez para gestionar los tiemposutilizados en cada partida. Las premisas son las siguientes:

El reloj correrá de manera descendente, al llegar el tiempo de cualquier jugador a “00:00:00” la partida habrá terminado.

El numero de partidas sera contabilizado y mostrado a los jugadores, inicialmente contaran con 40 movimiento cada jugador.

Habrá un indicador (Led) para representar el jugador en turno.

Las entradas del sistemaserán: Jug A, Jug B, Reset, Hold.

2 Objetivo

Controlar el tiempo de una partida de ajedrez para agilizar cada partida de manera autómata desde el lenguaje VHDL.

Esquemático del Proyecto:

3 Descripción

Las entradas del sistema son cinco (CLK, JugA, JugB, Hold Reset), las cuales se encargaran de determinar el estado de la maquina, a la salida seis Displays decodificados por un modulode Decodificación, Para la contabilidad de las horas se utilizan dos indicadores luminosos que simbolizan las horas restantes.

El modulo Main internamente estará estructurado de la siguiente forma:

Los módulos Timer A, Timer B son similares, construidos de un manera Comportamental en VHDL, se encargaran de almacenar el tiempo recorrido de cada jugador, su comportamiento es el siguiente:____________________________________________________________

_______________________
ENTITY timer IS
PORT(enable,clear,one_sec : IN std_logic;
time_used : INOUT elapsed_time);
END timer;

ARCHITECTURE behaviour OF timer IS
BEGIN
time_used <= zero_time WHEN clear = '1'
ELSE
inctime(time_used) WHEN (enable = '1' AND one_sec'EVENT AND one_sec = '1')
ELSE
time_used;
ENDbehaviour;

La función inictime, se encuentra declarada en un paquete VHDL, llamado chesspack, y se encargara de determinar como reducir el tiempo transcurrido en cada reloj, su código es el siguiente:

FUNCTION inctime (intime :elapsed_time) RETURN elapsed_time IS
VARIABLE result : elapsed_time;
BEGIN
result := intime;
IF result.ss = 0 THEN
result.ss := 59;
IF result.mm = 0 THEN
IFresult.hh>0 then
result.mm := 59;
result.hh := result.hh - 1;
ELSE
result.ss :=0;
result.mm :=0;
END IF;
ELSE
result.mm := result.mm - 1;
END IF;
ELSE
result.ss := result.ss - 1;
END IF;
RETURN result;
END inctime;

La variable elapsed_time, es una variable compuesta, definida por el usuario de la siguiente manera:

SUBTYPE hours IS NATURAL;
SUBTYPE minutes IS INTEGER RANGE 0 TO60;
SUBTYPE seconds IS INTEGER RANGE 0 TO 60;

TYPE elapsed_time IS
RECORD
hh : hours;
mm : minutes;
ss : seconds;
END RECORD;

TYPE state IS (reset,hold,runb,runa);

4 Diseño de la Maquina de estados

La maquina de estados es una maquina finita, diseñada como maquina de Moore, donde el siguiente estado solo dependerá de las entradas. Para entender mejor el funcionamiento de lamaquina véase la siguiente figura:

El diagrama anterior nos muestra que la maquina tendrá solo cuatro estados, en base a esto se conforma la tabla de estados siguiente:

Estado Actual | Estado Siguiente | Salidas |
Q2 | Q1 | Q2 | Q1 | Hold | Run A | Run B | Reset |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 0| 1 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 1...
tracking img