diff options
| author | David Phillips <david@yeah.nah.nz> | 2021-10-25 14:54:57 +1300 | 
|---|---|---|
| committer | David Phillips <david@yeah.nah.nz> | 2021-10-25 21:03:32 +1300 | 
| commit | e7a3f6377c18b346f455f5f7e5ad2a73d0a032f7 (patch) | |
| tree | f9fc1134c9ef7ab3519f9dcff1420c6b5d67309c | |
| download | colorlight-5a-75e-blinky-e7a3f6377c18b346f455f5f7e5ad2a73d0a032f7.tar.xz | |
Initial commit
| -rw-r--r-- | .gitignore | 4 | ||||
| -rw-r--r-- | Makefile | 38 | ||||
| -rw-r--r-- | blink.v | 23 | ||||
| -rw-r--r-- | top.lpf | 24 | ||||
| -rw-r--r-- | top.v | 17 | 
5 files changed, 106 insertions, 0 deletions
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 "$^" @@ -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 @@ -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; @@ -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  | 
