retardo del sistema de semáforos verilog

-2

Estoy intentando crear un controlador de semáforo usando un FSM. Tengo uno simple funcionando, pero todo lo que tengo que hacer es agregar una demora para que cuando las luces pasen de amarillo a rojo, no cambien instantáneamente.

Si observa los estados, el estado 1 al estado 2 es de amarillo a rojo y el estado 3 al estado 0 es de amarillo a rojo para el otro semáforo. ¿Cómo agrego un pequeño retraso aquí en lugar de tener el siguiente estado = S2, para que cambie al instante?

module 4_way_traffic_light (
         input clk,
         input rst,
         input sensor1, sensor2,
         output highway, farm,
         output [1:0] state, nextstate
);

reg [1:0] state, nextstate;

parameter S0 = 2'b00;
parameter S1 = 2'b01;
parameter S2 = 2'b10;
parameter S3 = 2'b11;

always @(posedge clk or posedge reset)
    if (reset) state <= S0;
    else state <= nextstate;

always @ (state or sensor1 or sensor2)
begin
    case (state)
        S0: if (sensor1) nextstate = S1;
            else nextstate = S0;
        S1: nextstate = S2;
        S2: if (sensor2) nextstate = S3;
            else nextstate = S2;
        S3: nextstate = S0;
    endcase
end
endmodule
    
pregunta nothing9099

0 respuestas

Lea otras preguntas en las etiquetas