Загрузка данных


module UserLogic(
    input clk_i,
    input nrst_i,
    input data_i,
    output reg trig_o);
    
    localparam S_IDLE = 3'b000,
               S_0  = 3'b001,
               S_01 = 3'b010,
               S_011 = 3'b011,
               S_0110= 3'b100,
               S_01101 = 3'b101,
               S_011010 = 3'b110;
               
    reg [2:0] state, next_state;
    
    // Регистр состояния
    always @(posedge clk_i or negedge nrst_i) begin
        if (!nrst_i)
            state <= S_IDLE;
        else
            state <= next_state;
    end
    
    // Логика выходов
     always @(posedge clk_i or negedge nrst_i) begin
        if (!nrst_i)begin
            trig_o <= 1'b0;
        end else begin
            if (next_state == S_011010)
                trig_o = 1'b1;
            else
                trig_o = 1'b0;
        end
    end
    
    // Логика переходов
    always @(*) begin
        case(state)
            S_IDLE: next_state = data_i ? S_IDLE : S_0;
            S_0: next_state = data_i ? S_01  : S_0;
            S_01:  next_state = data_i ? S_011 : S_0;
            S_011: next_state = data_i ? S_IDLE : S_0110;
            S_0110: next_state = data_i ? S_01101 : S_0110;
            S_01101: next_state = data_i ? S_011 : S_011010;
            S_011010: next_state = data_i ? S_01 : S_0;
            default: next_state = S_IDLE;
        endcase
    end
endmodule