examples: Update EVN example Signed-off-by: David Shah <dave@ds0.me>
diff --git a/examples/ecp5_evn/Makefile b/examples/ecp5_evn/Makefile index 88496ae..b977449 100644 --- a/examples/ecp5_evn/Makefile +++ b/examples/ecp5_evn/Makefile
@@ -2,20 +2,21 @@ all: ${PROJ}.bit - %.json: %.v yosys -p "synth_ecp5 -noccu2 -nobram -nomux -json $@" $< %_out.config: %.json - nextpnr-ecp5 --json $< --basecfg ../../misc/basecfgs/empty_lfe5um5g-85f.config --textcfg $@ --um5g-85k --package CABGA381 + nextpnr-ecp5 --json $< --basecfg ../../misc/basecfgs/empty_lfe5um5g-85f.config --textcfg $@ --um5g-85k --package CABGA381 --lpf ecp5evn.lpf %.bit: %_out.config - ecppack $< $@ + ecppack --svf ${PROJ}.svf $< $@ -%.svf: %.bit - ../../tools/bit_to_svf.py $< $@ +${PROJ}.svf : ${PROJ}.bit prog: ${PROJ}.svf openocd -f ../../misc/openocd/ecp5-evn.cfg -c "transport select jtag; init; svf $<; exit" -.PHONY: prog +clean: + rm -f *.svf *.bit *.config *.json + +.PHONY: prog clean
diff --git a/examples/ecp5_evn/blinky.v b/examples/ecp5_evn/blinky.v index 5d48712..5730865 100644 --- a/examples/ecp5_evn/blinky.v +++ b/examples/ecp5_evn/blinky.v
@@ -1,36 +1,4 @@ -module top(input clk_pin, input btn_pin, output [7:0] led_pin); - - wire clk; - wire [7:0] led; - wire btn; - - (* LOC="A10" *) (* IO_TYPE="LVCMOS33" *) - TRELLIS_IO #(.DIR("INPUT")) clk_buf (.B(clk_pin), .O(clk)); - - // Pressing and holding SW4 will trigger led array fading - (* LOC="P4" *) (* IO_TYPE="LVCMOS33" *) - TRELLIS_IO #(.DIR("INPUT")) btn_buf (.B(btn_pin), .O(btn)); - - (* LOC="B17" *) (* IO_TYPE="LVCMOS33" *) - TRELLIS_IO #(.DIR("OUTPUT")) led_buf_0 (.B(led_pin[0]), .I(!led[0])); - (* LOC="A17" *) (* IO_TYPE="LVCMOS33" *) - TRELLIS_IO #(.DIR("OUTPUT")) led_buf_1 (.B(led_pin[1]), .I(!led[1])); - (* LOC="C17" *) (* IO_TYPE="LVCMOS33" *) - TRELLIS_IO #(.DIR("OUTPUT")) led_buf_2 (.B(led_pin[2]), .I(!led[2])); - (* LOC="B18" *) (* IO_TYPE="LVCMOS33" *) - TRELLIS_IO #(.DIR("OUTPUT")) led_buf_3 (.B(led_pin[3]), .I(!led[3])); - - (* LOC="A18" *) (* IO_TYPE="LVCMOS33" *) - TRELLIS_IO #(.DIR("OUTPUT")) led_buf_4 (.B(led_pin[4]), .I(!led[4])); - (* LOC="B19" *) (* IO_TYPE="LVCMOS33" *) - TRELLIS_IO #(.DIR("OUTPUT")) led_buf_5 (.B(led_pin[5]), .I(!led[5])); - (* LOC="A12" *) (* IO_TYPE="LVCMOS33" *) - TRELLIS_IO #(.DIR("OUTPUT")) led_buf_6 (.B(led_pin[6]), .I(!led[6])); - (* LOC="A13" *) (* IO_TYPE="LVCMOS33" *) - TRELLIS_IO #(.DIR("OUTPUT")) led_buf_7 (.B(led_pin[7]), .I(!led[7])); - - - +module top(input clk, input btn, output [7:0] led); localparam ctr_width = 24; localparam ctr_max = 2**ctr_width - 1; reg [ctr_width-1:0] ctr = 0;
diff --git a/examples/ecp5_evn/ecp5evn.lpf b/examples/ecp5_evn/ecp5evn.lpf new file mode 100644 index 0000000..aaa9f28 --- /dev/null +++ b/examples/ecp5_evn/ecp5evn.lpf
@@ -0,0 +1,23 @@ +LOCATE COMP "clk" SITE "A10"; +IOBUF PORT "clk" IO_TYPE=LVCMOS33; + +LOCATE COMP "btn" SITE "P4"; +IOBUF PORT "btn" IO_TYPE=LVCMOS33; + +LOCATE COMP "led[0]" SITE "B17"; +LOCATE COMP "led[1]" SITE "A17"; +LOCATE COMP "led[2]" SITE "C17"; +LOCATE COMP "led[3]" SITE "B18"; +LOCATE COMP "led[4]" SITE "A18"; +LOCATE COMP "led[5]" SITE "B19"; +LOCATE COMP "led[6]" SITE "A12"; +LOCATE COMP "led[7]" SITE "F16"; + +IOBUF PORT "led[0]" IO_TYPE=LVCMOS33; +IOBUF PORT "led[1]" IO_TYPE=LVCMOS33; +IOBUF PORT "led[2]" IO_TYPE=LVCMOS33; +IOBUF PORT "led[3]" IO_TYPE=LVCMOS33; +IOBUF PORT "led[4]" IO_TYPE=LVCMOS33; +IOBUF PORT "led[5]" IO_TYPE=LVCMOS33; +IOBUF PORT "led[6]" IO_TYPE=LVCMOS33; +IOBUF PORT "led[7]" IO_TYPE=LVCMOS33;
diff --git a/misc/openocd/ulx3s_85k.cfg b/misc/openocd/ulx3s_85k.cfg new file mode 100644 index 0000000..f3e792f --- /dev/null +++ b/misc/openocd/ulx3s_85k.cfg
@@ -0,0 +1,13 @@ +interface ft232r +ft232r_vid_pid 0x0403 0x6015 +# ULX3S specific GPIO setting +ft232r_tck_num DSR +ft232r_tms_num DCD +ft232r_tdi_num RI +ft232r_tdo_num CTS +# trst/srst are not used but must have different values than above +ft232r_trst_num RTS +ft232r_srst_num DTR +adapter_khz 1000 + +jtag newtap ecp5 tap -irlen 8 -expected-id 0x41113043