190 lines
3.5 KiB
Verilog
190 lines
3.5 KiB
Verilog
module icebreaker (
|
|
input clk_pin,
|
|
input btn1_pin,
|
|
input btn2_pin,
|
|
input btn3_pin,
|
|
output led1_pin,
|
|
output led2_pin,
|
|
output led3_pin,
|
|
output led4_pin,
|
|
output led5_pin
|
|
);
|
|
wire clk, clk_pre, led1, led2, led3, led4, led5, btn1, btn2, btn3;
|
|
|
|
(* BEL="18_31_io1" *) //27
|
|
SB_IO #(
|
|
.PIN_TYPE(6'b 0110_01),
|
|
.PULLUP(1'b0),
|
|
.NEG_TRIGGER(1'b0)
|
|
) led1_iob (
|
|
.PACKAGE_PIN(led1_pin),
|
|
.LATCH_INPUT_VALUE(),
|
|
.CLOCK_ENABLE(),
|
|
.INPUT_CLK(),
|
|
.OUTPUT_CLK(),
|
|
.OUTPUT_ENABLE(),
|
|
.D_OUT_0(led1),
|
|
.D_OUT_1(),
|
|
.D_IN_0(),
|
|
.D_IN_1()
|
|
);
|
|
|
|
(* BEL="19_31_io1" *) //25
|
|
SB_IO #(
|
|
.PIN_TYPE(6'b 0110_01),
|
|
.PULLUP(1'b0),
|
|
.NEG_TRIGGER(1'b0)
|
|
) led2_iob (
|
|
.PACKAGE_PIN(led2_pin),
|
|
.LATCH_INPUT_VALUE(),
|
|
.CLOCK_ENABLE(),
|
|
.INPUT_CLK(),
|
|
.OUTPUT_CLK(),
|
|
.OUTPUT_ENABLE(),
|
|
.D_OUT_0(led2),
|
|
.D_OUT_1(),
|
|
.D_IN_0(),
|
|
.D_IN_1()
|
|
);
|
|
|
|
(* BEL="18_0_io1" *) //21
|
|
SB_IO #(
|
|
.PIN_TYPE(6'b 0110_01),
|
|
.PULLUP(1'b0),
|
|
.NEG_TRIGGER(1'b0)
|
|
) led3_iob (
|
|
.PACKAGE_PIN(led3_pin),
|
|
.LATCH_INPUT_VALUE(),
|
|
.CLOCK_ENABLE(),
|
|
.INPUT_CLK(),
|
|
.OUTPUT_CLK(),
|
|
.OUTPUT_ENABLE(),
|
|
.D_OUT_0(led3),
|
|
.D_OUT_1(),
|
|
.D_IN_0(),
|
|
.D_IN_1()
|
|
);
|
|
|
|
(* BEL="19_31_io0" *) //23
|
|
SB_IO #(
|
|
.PIN_TYPE(6'b 0110_01),
|
|
.PULLUP(1'b0),
|
|
.NEG_TRIGGER(1'b0)
|
|
) led4_iob (
|
|
.PACKAGE_PIN(led4_pin),
|
|
.LATCH_INPUT_VALUE(),
|
|
.CLOCK_ENABLE(),
|
|
.INPUT_CLK(),
|
|
.OUTPUT_CLK(),
|
|
.OUTPUT_ENABLE(),
|
|
.D_OUT_0(led4),
|
|
.D_OUT_1(),
|
|
.D_IN_0(),
|
|
.D_IN_1()
|
|
);
|
|
|
|
(* BEL="18_31_io0" *) //26
|
|
SB_IO #(
|
|
.PIN_TYPE(6'b 0110_01),
|
|
.PULLUP(1'b0),
|
|
.NEG_TRIGGER(1'b0)
|
|
) led5_iob (
|
|
.PACKAGE_PIN(led5_pin),
|
|
.LATCH_INPUT_VALUE(),
|
|
.CLOCK_ENABLE(),
|
|
.INPUT_CLK(),
|
|
.OUTPUT_CLK(),
|
|
.OUTPUT_ENABLE(),
|
|
.D_OUT_0(led5),
|
|
.D_OUT_1(),
|
|
.D_IN_0(),
|
|
.D_IN_1()
|
|
);
|
|
|
|
(* BEL="12_31_io1" *) //35
|
|
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_pre),
|
|
.D_IN_1()
|
|
);
|
|
|
|
(* BEL="19_0_io1" *) //20
|
|
SB_IO #(
|
|
.PIN_TYPE(6'b 0000_01),
|
|
.PULLUP(1'b0),
|
|
.NEG_TRIGGER(1'b0)
|
|
) btn1_iob (
|
|
.PACKAGE_PIN(btn1_pin),
|
|
.LATCH_INPUT_VALUE(),
|
|
.CLOCK_ENABLE(),
|
|
.INPUT_CLK(),
|
|
.OUTPUT_CLK(),
|
|
.OUTPUT_ENABLE(),
|
|
.D_OUT_0(),
|
|
.D_OUT_1(),
|
|
.D_IN_0(btn1),
|
|
.D_IN_1()
|
|
);
|
|
|
|
(* BEL="21_0_io1" *) //19
|
|
SB_IO #(
|
|
.PIN_TYPE(6'b 0000_01),
|
|
.PULLUP(1'b0),
|
|
.NEG_TRIGGER(1'b0)
|
|
) btn2_iob (
|
|
.PACKAGE_PIN(btn2_pin),
|
|
.LATCH_INPUT_VALUE(),
|
|
.CLOCK_ENABLE(),
|
|
.INPUT_CLK(),
|
|
.OUTPUT_CLK(),
|
|
.OUTPUT_ENABLE(),
|
|
.D_OUT_0(),
|
|
.D_OUT_1(),
|
|
.D_IN_0(btn2),
|
|
.D_IN_1()
|
|
);
|
|
|
|
(* BEL="22_0_io1" *) //18
|
|
SB_IO #(
|
|
.PIN_TYPE(6'b 0000_01),
|
|
.PULLUP(1'b0),
|
|
.NEG_TRIGGER(1'b0)
|
|
) btn3_iob (
|
|
.PACKAGE_PIN(btn3_pin),
|
|
.LATCH_INPUT_VALUE(),
|
|
.CLOCK_ENABLE(),
|
|
.INPUT_CLK(),
|
|
.OUTPUT_CLK(),
|
|
.OUTPUT_ENABLE(),
|
|
.D_OUT_0(),
|
|
.D_OUT_1(),
|
|
.D_IN_0(btn3),
|
|
.D_IN_1()
|
|
);
|
|
|
|
SB_GB clk_gb(.USER_SIGNAL_TO_GLOBAL_BUFFER(clk_pre), .GLOBAL_BUFFER_OUTPUT(clk));
|
|
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);
|
|
//assign {led1, led2, led3, led4, led5} = {!btn1, btn2, btn3, btn2, btn1};
|
|
endmodule
|