UTP S12 - s1 - DISEÑO DE SISTEMA COMPUTACIONAL-2024
UTP S12 - s1 - DISEÑO DE SISTEMA COMPUTACIONAL-2024
UTP S12 - s1 - DISEÑO DE SISTEMA COMPUTACIONAL-2024
COMPUTACIONALES PARA
APLICACIÓN ESPECÍFICA
SESION 11
LOGRO
Logros de la sesión
Al finalizar la sesión el estudiante estará en capacidad de:
Conceptos básicos
Una Máquina de Estado Finito en VHDL se compone típicamente de los siguientes elementos:
Estados: Son las condiciones posibles en las que puede estar el sistema. Cada estado representa una
configuración particular del sistema.
Transiciones: Son los cambios de un estado a otro, generalmente disparados
TRANSFORMACIÓN
Ejemplo práctico 1
ejemplo de una máquina de estados finita (FSM) para un semáforo con tiempos establecidos para cada luz
(rojo, amarillo y verde).
Supongamos los siguientes tiempos para las luces del semáforo:
Luz roja: 5 segundos
Luz amarilla: 2 segundos
Luz verde: 4 segundos
TRANSFORMACIÓN
Librerías para
utilizar library IEEE:
Entidad
entity Semaforo_FSM is Define la interfaz del semáforo.
Port ( clk : in STD_LOGIC; Los puertos incluyen:
clk: Señal de reloj.
reset : in STD_LOGIC; reset: Señal de reinicio.
rojo, amarillo, verde : out STD_LOGIC); rojo, amarillo, verde: Salidas para las luces
end Semaforo_FSM; del semáforo.
TRANSFORMACIÓN
Arquitectura
architecture Behavioral of Semaforo_FSM is Define el tipo de estado y las señales internas:
type tipo_estado is (ROJO, AMARILLO, VERDE); tipo_estado: Enumera los estados posibles del semáforo (ROJO,
AMARILLO, VERDE).
signal estado_actual, proximo_estado : tipo_estado;
signal contador : INTEGER range 0 to 500000000; estado_actual, proximo_estado: Señales para mantener el
signal retardo : INTEGER range 0 to 500000000; estado actual y el próximo estado.
Proceso de la
máquina de estado
process(estado_actual) when VERDE =>
begin proximo_estado <= AMARILLO;
case estado_actual is rojo <= '0';
when ROJO => amarillo <= '0';
proximo_estado <= VERDE; verde <= '1';
rojo <= '1'; retardo <= retardo_VERDE;
amarillo <= '0'; when others =>
verde <= '0'; proximo_estado <= ROJO;
retardo <= retardo_ROJO; rojo <= '1';
when AMARILLO => amarillo <= '0';
proximo_estado <= ROJO; verde <= '0';
rojo <= '0'; retardo <= retardo_ROJO;
amarillo <= '1'; end case;
verde <= '0'; end process;
retardo <= retardo_AMARILLO; end Behavioral;
TRANSFORMACIÓN
Ejemplo práctico 2
Sistema de control de una máquina expendedora de refrescos. Este sistema tendrá los siguientes estados:
Suposiciones:
La máquina expendedora acepta una moneda cada 1 segundo.
El costo de una bebida es de 2 monedas.
El tiempo para dispensar una bebida es de 3 segundos.
El tiempo para devolver el cambio es de 2 segundos.
TRANSFORMACIÓN
Librerías a utilizar
library IEEE: Indica que usaremos librerías estándar definidas por el IEEE.
Entidad
Define la interfaz del sistema de control de la máquina
expendedora.
entity Maquina_Expendedora is
clk: Señal de reloj.
Port ( clk : in STD_LOGIC;
reset : in STD_LOGIC;
reset: Señal de reinicio.
moneda : in STD_LOGIC;
dispensar, devolver_cambio : out STD_LOGIC);
moneda: Señal de entrada indicando la inserción de una
end Maquina_Expendedora;
moneda.
Este diseño simula un sistema que recibe datos en paralelo, los almacena temporalmente y luego los
registra en un almacenamiento permanente al recibir una señal de "almacenar".
TRANSFORMACIÓN
Librerias
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
TRANSFORMACIÓN
Entidad
entity Registro_Datos is Define la interfaz del sistema de registro de datos.
Port ( clk : in STD_LOGIC;
clk: Señal de reloj.
reset : in STD_LOGIC;
data_in : in STD_LOGIC_VECTOR(3 downto 0); reset: Señal de reinicio.
store : in STD_LOGIC;
data_in: Entrada de datos de 4 bits.
data_out : out STD_LOGIC_VECTOR(15 downto 0));
end Registro_Datos; store: Señal que indica cuándo almacenar los datos
en el registro permanente.
Arquitectura
architecture Behavioral of Registro_Datos is
Define el tipo de estado y las señales internas.
type tipo_estado is (IDLE, ALMACENAR_TEMPORAL,
tipo_estado: Enumera los estados posibles (IDLE,
REGISTRAR);
ALMACENAR_TEMPORAL, REGISTRAR).
signal estado_actual, proximo_estado : tipo_estado; estado_actual, proximo_estado: Señales para mantener el
signal temp_reg : STD_LOGIC_VECTOR(15 downto 0); -- estado actual y el próximo estado.
Registro temporal de 4 palabras de 4 bits temp_reg: Registro temporal de 4 palabras de 4 bits.
perm_reg: Registro permanente de 4 palabras de 4 bits.
signal perm_reg : STD_LOGIC_VECTOR(15 downto 0); --
Registro permanente de 4 palabras de 4 bits contador: Contador para las palabras (0 a 3).
ALMACENAR_TEMPORAL:
Si el contador es igual a 3, almacena la última palabra y transita al estado REGISTRAR.REGISTRAR: Transfiere los
datos del registro temporal temp_reg al registro permanente perm_reg y transita de vuelta al estado IDLE.
Asignación de salida
data_out <= perm_reg; Asigna el valor del registro permanente perm_reg a la salida
data_out.
Este diseño simula un sistema que recibe datos en paralelo, los almacena temporalmente y luego los
registra en un almacenamiento permanente al recibir una señal de "almacenar".
ESPACIO PRÁCTICO
Ejercicio practico
Diseña una máquina de estados finita (FSM) con tres estados para controlar un temporizador que encienda un LED durante 5
segundos cada vez que se presione un botón. Los estados son:
• IDLE: Estado inicial en el que el sistema espera la activación del botón.
• ENCENDIDO: Estado en el que el LED está encendido durante 5 segundos.
• APAGADO: Estado en el que el LED está apagado.
La FSM debe garantizar que el LED se encienda durante 5 segundos cada vez que se presiona el botón, independientemente
de cuánto tiempo se mantenga presionado el botón.
CIERRE
Preguntas?
CIERRE
Conclusiones
El uso de VHDL para diseñar Máquinas de Estados Finitos (FSM) permite una descripción precisa de sistemas
digitales, facilitando la simulación y depuración antes de su implementación. Esta metodología promueve la
reusabilidad del código y mejora la eficiencia en el desarrollo de proyectos de hardware. VHDL es esencial para
ingenieros que buscan crear sistemas electrónicos complejos y fiables.
MUCHAS GRACIAS