module top( input wire CLOCK_50, output wire WS2812_OUT ); localparam integer LED_NUM = 10; localparam integer TICK_1SEC = 50_000_000; localparam integer COUNTER_WIDTH = 26; reg [COUNTER_WIDTH-1:0] sec_count; reg [LED_NUM-1:0] led_mask; initial begin sec_count = 0; led_mask = 10'b0000000001; end always @(posedge CLOCK_50) begin if (sec_count == TICK_1SEC - 1) begin sec_count <= 0; // LED0 -> LED1 -> ... -> LED9 -> LED0 led_mask <= {led_mask[LED_NUM-2:0], led_mask[LED_NUM-1]}; end else begin sec_count <= sec_count + 1'b1; end end omdazz_WS2812b #( .WS2812_NUM(LED_NUM), .CLK_FRE (50_000_000) ) u_ws2812 ( .CLOCK_50(CLOCK_50), .LED_MASK(led_mask), .WS2812 (WS2812_OUT) ); endmodule