From e7a3f6377c18b346f455f5f7e5ad2a73d0a032f7 Mon Sep 17 00:00:00 2001 From: David Phillips Date: Mon, 25 Oct 2021 14:54:57 +1300 Subject: Initial commit --- .gitignore | 4 ++++ Makefile | 38 ++++++++++++++++++++++++++++++++++++++ blink.v | 23 +++++++++++++++++++++++ top.lpf | 24 ++++++++++++++++++++++++ top.v | 17 +++++++++++++++++ 5 files changed, 106 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 blink.v create mode 100644 top.lpf create mode 100644 top.v diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..de9b7e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.svf +*.bit +*.json +*.config diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a1842aa --- /dev/null +++ b/Makefile @@ -0,0 +1,38 @@ +TOP = top +OBJS = top.v blink.v + +FREQ_MHZ = 65 +DEVICE_TYPE = 25k +PACKAGE = CABGA256 +SPEED_GRADE = 6 + +.PHONY: all clean program +all: $(TOP).svf + +clean: + rm -f *.svf *.bit *.json + +program: $(TOP).svf + # probably not very useful to anyone without more configurable paths + openocd -f /usr/share/openocd/scripts/interface/ftdi/dp_busblaster_kt-link.cfg \ + -f ~/jtag/5a-75e.cfg \ + -c "init; svf $^; shutdown" + +%.json: $(OBJS) + yosys -p "synth_ecp5 -json $@" $(OBJS) + +%.config: %.json %.lpf + nextpnr-ecp5 \ + --$(DEVICE_TYPE) \ + --package $(PACKAGE) \ + --speed $(SPEED_GRADE) \ + --freq $(FREQ_MHZ) \ + --json $< \ + --textcfg $@ \ + --lpf $(word 2,$^) + +%.bit %.svf: %.config + ecppack \ + --bit "$*.bit" \ + --svf "$*.svf" \ + --input "$^" diff --git a/blink.v b/blink.v new file mode 100644 index 0000000..d11cd1c --- /dev/null +++ b/blink.v @@ -0,0 +1,23 @@ +module blink( + input rst_i, + input clk_i, + output reg led_o +); + +parameter COUNTER_WIDTH = 32; +parameter OVERFLOW = 25_000_000; + +reg[COUNTER_WIDTH-1:0] counter; + +always @(posedge clk_i) begin + if (rst_i) begin + counter <= 0; + led <= 1; + end else if (counter == OVERFLOW-1) begin + led_o <= ~led_o; + counter <= 0; + end else + counter <= counter + 1; +end + +endmodule diff --git a/top.lpf b/top.lpf new file mode 100644 index 0000000..16ad6e7 --- /dev/null +++ b/top.lpf @@ -0,0 +1,24 @@ +LOCATE COMP "clk_i" SITE "P6"; +IOBUF PORT "clk_i" IO_TYPE=LVCMOS33; +FREQUENCY PORT "clk_i" 25 MHZ; + +LOCATE COMP "led_o" SITE "P11"; +IOBUF PORT "led_o" IO_TYPE=LVCMOS33; + +LOCATE COMP "oe_n_o" SITE "F12"; +IOBUF PORT "oe_n_o" IO_TYPE=LVCMOS33; + +#LOCATE COMP "clk25M_o" SITE "J14"; +#IOBUF PORT "clk25M_o" IO_TYPE=LVCMOS33; +#LOCATE COMP "clk12M5_o" SITE "K2"; +#IOBUF PORT "clk12M5_o" IO_TYPE=LVCMOS33; +#LOCATE COMP "clk6M25_o" SITE "K1"; +#IOBUF PORT "clk6M25_o" IO_TYPE=LVCMOS33; +#LOCATE COMP "clk5M_o" SITE "F15"; +#IOBUF PORT "clk5M_o" IO_TYPE=LVCMOS33; +#LOCATE COMP "clk4M17_o" SITE "F13"; +#IOBUF PORT "clk4M17_o" IO_TYPE=LVCMOS33; +#LOCATE COMP "clk3M57_o" SITE "G12"; +#IOBUF PORT "clk3M57_o" IO_TYPE=LVCMOS33; +#LOCATE COMP "clk3M125_o" SITE "G13"; +#IOBUF PORT "clk3M125_o" IO_TYPE=LVCMOS33; diff --git a/top.v b/top.v new file mode 100644 index 0000000..6d98150 --- /dev/null +++ b/top.v @@ -0,0 +1,17 @@ +module top( + input clk_i, + output led_o, +); + +blink #( + .COUNTER_WIDTH(24), + // 25 MHz clock => 1 Hz + .OVERFLOW(12_500_000) +) +blink_inst( + .clk_i(clk_i), + .rst_i(1'b0), + .led_o(led_o) +); + +endmodule -- cgit v1.1