1.
Introducción
El objetivo de esta práctica es diseñar y simular un controlador de máquina de lavado
usando una FPGA Cyclone IV. Este sistema reproduce las fases de un ciclo de lavado
(llenado, lavado, enjuague y centrifugado) controladas por un cronograma y sensores
virtuales. La práctica permite explorar la implementación de máquinas de estados finitos
(FSM) en hardware digital, utilizando el entorno de desarrollo Quartus Prime.
2. Materiales
Tarjeta FPGA Cyclone IV (DE0-Nano o similar).
Botones o interruptores para simular sensores (entrada).
LEDs o displays para mostrar el estado del sistema (salida).
Computadora con Quartus Prime Lite Edition instalado.
Fuente de alimentación para la tarjeta FPGA.
Cables de conexión.
3. Desarrollo
module ciclo_lavado (
input clk, // Reloj del sistema
input reset, // Botón de reinicio
input sensor_nivel, // Sensor de nivel de agua (1: nivel alcanzado)
input fin_tiempo, // Señal de fin de temporizador
output reg [2:0] estado, // Estado actual (para LEDs o displays)
output reg agua, // Control de entrada de agua
output reg motor // Control del motor
);
// Definición de estados
parameter IDLE = 3'b000;
parameter LLENADO = 3'b001;
parameter LAVADO = 3'b010;
parameter ENJUAGUE = 3'b011;
parameter CENTRIFUGADO = 3'b100;
reg [2:0] estado_actual, estado_siguiente;
// Máquina de estados secuencial
always @(posedge clk or posedge reset) begin
if (reset)
estado_actual <= IDLE;
else
estado_actual <= estado_siguiente;
end
// Lógica combinacional para transiciones de estado
always @(*) begin
// Valores predeterminados
estado_siguiente = estado_actual;
agua = 0;
motor = 0;
case (estado_actual)
IDLE: begin
if (sensor_nivel == 0)
estado_siguiente = LLENADO;
end
LLENADO: begin
agua = 1;
if (sensor_nivel == 1)
estado_siguiente = LAVADO;
end
LAVADO: begin
motor = 1;
if (fin_tiempo)
estado_siguiente = ENJUAGUE;
end
ENJUAGUE: begin
agua = 1;
motor = 1;
if (fin_tiempo)
estado_siguiente = CENTRIFUGADO;
end
CENTRIFUGADO: begin
motor = 1;
if (fin_tiempo)
estado_siguiente = IDLE;
end
endcase
end
// Salida para mostrar el estado actual
always @(*) begin
estado = estado_actual;
end
endmodule
4. Resultados
5. Conclusiones
La implementación de máquinas de estados finitos (FSM) en FPGA permite modelar
sistemas secuenciales como un ciclo de lavado de manera eficiente.
El uso de Quartus y ModelSim facilita el diseño, simulación y depuración de sistemas
digitales complejos.
Este proyecto puede extenderse para incluir más funciones, como selección de programas,
ajustes de tiempo y monitoreo en tiempo real.