always@ ( * ) begin
        l_r_nextState = l_r_currentState ;
 
        case ( l_r_currentState )
            STATE_Initial : begin
                l_r_nextState = STATE_1 ;
            end
            STATE_1 : begin
                if (!i_w_in)
                    l_r_nextState = STATE_2 ;
            end
            STATE_2 : begin
                if (i_w_in)
                    l_r_nextState = STATE_3 ;
            end
            STATE_3 : begin
                if (i_w_in)
                    l_r_nextState = STATE_4 ;
                else
                    l_r_nextState = STATE_2 ;
            end
            STATE_4 : begin
                if (i_w_in)
                    l_r_nextState = STATE_1 ;
                else
                    l_r_nextState = STATE_2 ;
            end
            // Stări pentru tratarea erorilor
            // Dacă automatul ajunge în aceste stări se va reseta.
            STATE_5_PlaceHolder : begin
                l_r_nextState = STATE_Initial ;
            end
            STATE_6_PlaceHolder : begin
                l_r_nextState = STATE_Initial ;
            end
            STATE_7_PlaceHolder : begin
                l_r_nextState = STATE_Initial ;
            end
        endcase
    end