`timescale 1ns/1ns

module tb_lm();

reg k_1;
reg k_2;

reg flag;  // 状态改变周期 现在500ns改变一次状态

reg sys_clk;
reg sys_rst;


always #10 sys_clk = ~sys_clk;

initial begin
    sys_clk <= 1'b0;
    sys_rst <= 1'b0;
    #200
    sys_rst <= 1'b1;

    {k_2, k_1} <= 2'b10;

    #4000
    {k_2, k_1} <= 2'b01;

    #4000
    {k_2, k_1} <= 2'b00;
end


reg [5:0] CNT;
always @(posedge sys_clk or negedge sys_rst) begin
    if (sys_rst == 1'b0) begin
        CNT <= 5'd0;
    end
    else if (CNT < (5'd25 - 5'd1)) begin
        CNT <= CNT + 5'd1;
    end
    else begin
        CNT <= 5'b0;
    end
end


reg [7:0]x;
reg [7:0]y;
always @(posedge sys_clk or negedge sys_rst) begin
    if (sys_rst == 1'b0) begin
        {k_2, k_1} <= 2'b11;
        x <= 8'b00000000;
        y <= 8'b11111111;  // 所有的都显示算了
    end
    else if ({k_2, k_1} == 2'b10) begin
        case (flag)
            1'b0: x <= 8'b1010_1010;
            1'b1: x <= 8'b0101_0101;
        endcase
    end
    else if ({k_2, k_1} == 2'b01) begin
        case (flag)
            1'b0: x <= 8'b1111_0000;
            1'b1: x <= 8'b0000_1111;
        endcase
    end
    else begin
        x <= 8'b00000000;
    end
end

always @(posedge sys_clk or negedge sys_rst) begin
    if (sys_rst == 1'b0) begin
        flag <= 1'b0;
    end
    else if (CNT == (5'd25 - 5'd1)) begin
        flag <= !flag;
    end
    else begin
    end
end


lm u_lm(
    .x (x),
    .y (y)
);


endmodule