diff options
Diffstat (limited to 'ice40/blinky.v')
-rw-r--r-- | ice40/blinky.v | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/ice40/blinky.v b/ice40/blinky.v new file mode 100644 index 00000000..6b97c5a9 --- /dev/null +++ b/ice40/blinky.v @@ -0,0 +1,57 @@ +module blinky ( + input clk_pin, + output led1_pin, + output led2_pin, + output led3_pin, + output led4_pin, + output led5_pin +); + wire clk, led1, led2, led3, led4, led5; + + SB_IO #( + .PIN_TYPE(6'b 0110_01), + .PULLUP(1'b0), + .NEG_TRIGGER(1'b0) + ) led_iob [4:0] ( + .PACKAGE_PIN({led1_pin, led2_pin, led3_pin, led4_pin, led5_pin}), + .LATCH_INPUT_VALUE(), + .CLOCK_ENABLE(), + .INPUT_CLK(), + .OUTPUT_CLK(), + .OUTPUT_ENABLE(), + .D_OUT_0({led1, led2, led3, led4, led5}), + .D_OUT_1(), + .D_IN_0(), + .D_IN_1() + ); + + SB_IO #( + .PIN_TYPE(6'b 0000_01), + .PULLUP(1'b0), + .NEG_TRIGGER(1'b0) + ) clk_iob ( + .PACKAGE_PIN(clk_pin), + .LATCH_INPUT_VALUE(), + .CLOCK_ENABLE(), + .INPUT_CLK(), + .OUTPUT_CLK(), + .OUTPUT_ENABLE(), + .D_OUT_0(), + .D_OUT_1(), + .D_IN_0(clk), + .D_IN_1() + ); + + localparam BITS = 5; + localparam LOG2DELAY = 22; + + reg [BITS+LOG2DELAY-1:0] counter = 0; + reg [BITS-1:0] outcnt; + + always @(posedge clk) begin + counter <= counter + 1; + outcnt <= counter >> LOG2DELAY; + end + + assign {led1, led2, led3, led4, led5} = outcnt ^ (outcnt >> 1); +endmodule |