From ff6351960762343708f1ee822d050dea89b340f4 Mon Sep 17 00:00:00 2001 From: Olof Kindgren Date: Sun, 18 Nov 2018 21:42:26 +0100 Subject: [PATCH] Temporary hack to blink LED on tinyfpga BX --- bench/serv_wrapper.v | 16 +++++++++++++++- bitbang.hex | 4 ++-- rtl/wb_gpio.v | 18 ++++++++++++------ serv.core | 4 ++-- 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/bench/serv_wrapper.v b/bench/serv_wrapper.v index 0d11cbf..ad0373e 100644 --- a/bench/serv_wrapper.v +++ b/bench/serv_wrapper.v @@ -89,10 +89,24 @@ module serv_wrapper wb_gpio gpio (.i_wb_clk (wb_clk), + .i_wb_rst (wb_rst), .i_wb_dat (wb_m2s_gpio_dat[0]), .i_wb_cyc (wb_m2s_gpio_cyc), .o_wb_ack (wb_s2m_gpio_ack), - .o_gpio (q)); + .o_gpio (/*q*/)); + + reg canary; + + always @(posedge wb_clk) + if (wb_rst) + canary <= 1'b0; + /*else if (wb_m2s_cpu_ibus_cyc & + wb_s2m_cpu_ibus_ack & + (wb_m2s_cpu_ibus_adr == 32'h00000020))*/ + else if (wb_m2s_cpu_dbus_cyc & wb_s2m_cpu_dbus_ack) + canary <= ~canary; + + assign q = canary; assign wb_s2m_gpio_dat = 32'h0; diff --git a/bitbang.hex b/bitbang.hex index 608e2fc..5dbef99 100644 --- a/bitbang.hex +++ b/bitbang.hex @@ -1,5 +1,6 @@ 30000537 -00a00313 +00018337 +6a030313 00550023 0012c293 000073b3 @@ -2045,4 +2046,3 @@ fedff06f 0 0 0 -0 diff --git a/rtl/wb_gpio.v b/rtl/wb_gpio.v index e3a3642..5759693 100644 --- a/rtl/wb_gpio.v +++ b/rtl/wb_gpio.v @@ -1,14 +1,20 @@ module wb_gpio ( input wire i_wb_clk, + input wire i_wb_rst, input wire i_wb_dat, input wire i_wb_cyc, - output reg o_wb_ack = 1'b0, + output reg o_wb_ack, output reg o_gpio = 1'b0); - always @(posedge i_wb_clk) - if (i_wb_cyc) begin - o_wb_ack <= ~o_wb_ack; - o_gpio <= i_wb_dat; - end + always @(posedge i_wb_clk) begin + o_wb_ack <= 1'b0; + if (i_wb_cyc) begin + if (!o_wb_ack) + o_wb_ack <= 1'b1; + o_gpio <= i_wb_dat; + end + if (i_wb_rst) + o_wb_ack <= 1'b0; + end endmodule diff --git a/serv.core b/serv.core index 9de6e36..70dd1a6 100644 --- a/serv.core +++ b/serv.core @@ -66,13 +66,13 @@ targets: synth: default_tool : icestorm - filesets : [core, wrapper, pcf] + filesets : [core, mem_files, wrapper, pcf] generate : [wb_intercon] toplevel : serv_wrapper tinyfpga_bx: default_tool : icestorm - filesets : [core, wrapper, tinyfpga_bx] + filesets : [core, mem_files, wrapper, tinyfpga_bx] generate : [wb_intercon] tools: icestorm: