Práctica 4 – Proyecto final
Máquinas de Estados (FSM)
Introducción
En esta última práctica se pretende desarrollar un proyecto que incluye un sistema de control
digital. Se realizará el diseño y simulación de un sistema de control sencillo por medio de una
máquina de estados finitos (FSM).
Nota: En cursos posteriores se verá cómo utilizar VHDL para evitar tener que definir funciones
lógicas de salida y transición a partir de las tablas de verdad y los mapas de Karnaugh.
Diseño con Vivado
La carretera M-108, que une Daganzo de Arriba con Ajalvir, tiene cortado un sentido de la
circulación en un tramo debido a las obras de reacondicionamiento del firme. Los atascos que se
forman a primeras horas de la mañana y por la tarde aconsejan regular el tráfico en la zona
afectada mediante un sistema automático de semáforos. El concejal de urbanismo de Ajalvir tiene
un sobrino que estudia Informática en la EPS y le ha solicitado resolver este problema usando una
máquina de estados.
Diseñe y simule el siguiente control de semáforos. En un estado inicial, como el que diseña el
sistema es del pueblo de Ajalvir, el tráfico debe permitir el paso de Ajalvir (derecha) hacia
Daganzo de Arriba (izquierda). Por tanto, el semáforo de la derecha deberá estar en verde (VD –
Verde Derecha) y el de la izquierda en rojo (RI – Rojo Izquierda). En este estado se debe
permanecer mientras no haya coches detectados en el sensor 1 (S1).
Desde el estado inicial, cuando se detecte un coche en el sensor 1 (S1), el sistema debe permanecer
en VD durante 2 ciclos más y cambiar en el siguiente ciclo el semáforo derecho a ámbar (AD).
El semáforo derecho permanece en ámbar un ciclo y cambia a Rojo. En ese instante el semáforo
izquierdo pasa a verde (VI – Verde Izquierda). El sistema permanece en este estado mientras no
se active el sensor 0 (S0).
Una vez detectado el sensor 0, el sistema se deberá realizar los cambios de forma similar al cambio
anterior en el sentido de paso. El semáforo de la izquierda permanecerá en verde (VI) durante 2
ciclos más y pasará a ámbar durante un ciclo (AI). Pasado ese ciclo, el sistema vuelve al estado
inicial, poniendo el semáforo rojo izquierda (RI) y activando el semáforo verde derecha (VD)
Adicionalmente, el sistema debe incluir una entrada de Reset activa a nivel bajo, que se utilizará
para inicializar la máquina de estados.
1
Diseñar con la herramienta Vivado la FSM de tipo Moore. Para ello, debe realizar dos pasos:
1. En un primer código en VHDL diseñe, utilizando exclusivamente lógica combinacional,
una entidad que se llamará control_obras. Observar el correcto funcionamiento
utilizando el archivo proporcionado ‘control_obras_tb.vhd’ y respetando las siguientes
etiquetas:
a. Nombre del fichero de diseño: control_obras.vhd
b. Nombre de las entradas: S0, S1, Q0, Q1, Q2
c. Nombre de las salidas: D0, D1, D2, RI, RD, AI, AD, VI, VD
También se proporciona el .xdc por si se desea su comprobación en la FPGA.
2. En un segundo archivo denominado [Link], diseñe la FSM utilizando, además del
componente que acaba de crear, biestables tipo D como únicos elementos secuenciales.
El valor inicial para cada biestable es un cero lógico. A la hora de codificar el diseño en
VHDL se debe respetar las siguientes etiquetas de la FSM:
La FSM a diseñar tendrá, por tanto:
5 entradas (CLK, Reset, Enable, S0, S1)
6 salidas (RD, RI, AI, AD, VI, VD)
Se proporciona el .xdc por si se desea su comprobación en la FPGA.