// 规则切换控制器 - 支持时间切换和条件切换
module rule_switcher #(
    parameter NUM_RULES = 8,
    parameter SWITCH_PERIOD = 100
)(
    input  wire             clk,
    input  wire             rst_n,
    input  wire             enable,
    input  wire [7:0]       rules [0:NUM_RULES-1],
    input  wire             auto_switch,  // 自动切换模式
    output reg  [7:0]       current_rule,
    output reg  [2:0]       rule_index,
    output reg  [31:0]      switch_counter
);
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            current_rule <= rules[0];
            rule_index <= 3'd0;
            switch_counter <= 32'd0;
        end else if (enable && auto_switch) begin
            switch_counter <= switch_counter + 32'd1;
            if (switch_counter >= SWITCH_PERIOD - 1) begin
                switch_counter <= 32'd0;
                rule_index <= (rule_index == NUM_RULES-1) ? 3'd0 : rule_index + 3'd1;
                current_rule <= rules[(rule_index + 3'd1) % NUM_RULES];
            end
        end
    end
endmodule