created a wishbone wrapper for openram
diff --git a/verilog/rtl/wishbone_wrapper.v b/verilog/rtl/wishbone_wrapper.v
new file mode 100644
index 0000000..10e4b33
--- /dev/null
+++ b/verilog/rtl/wishbone_wrapper.v
@@ -0,0 +1,71 @@
+`default_nettype none
+
+module wishbone_wrapper
+#(
+ parameter BASE_ADDR = 32'h30c0_0000,
+ parameter ADDR_WIDTH = 8
+)
+(
+ `ifdef USE_POWER_PINS
+ inout vccd1, // User area 1 1.8V supply
+ inout vssd1, // User area 1 digital ground
+ `endif
+
+ // Wishbone port A
+ input wb_clk_i,
+ input wb_rst_i,
+ input wbs_stb_i,
+ input wbs_cyc_i,
+ input wbs_we_i,
+ input [3:0] wbs_sel_i,
+ input [31:0] wbs_dat_i,
+ input [31:0] wbs_adr_i,
+ output wbs_ack_o,
+ output [31:0] wbs_dat_o,
+
+ // OpenRAM interface - almost dual port: RW + R
+ // Port 0: RW
+ output ram_clk0, // clock
+ output ram_csb0, // active low chip select
+ output ram_web0, // active low write control
+ output [3:0] ram_wmask0, // write (byte) mask
+ output [ADDR_WIDTH-1:0] ram_addr0,
+ input [31:0] ram_din0,
+ output [31:0] ram_dout0
+);
+
+ parameter ADDR_LO_MASK = (1 << ADDR_WIDTH) - 1;
+ parameter ADDR_HI_MASK = 32'hffff_ffff - ADDR_LO_MASK;
+
+ wire ram_cs;
+ assign ram_cs = wbs_stb_i && wbs_cyc_i && ((wbs_adr_i & ADDR_HI_MASK) == BASE_ADDR) && !wb_rst_i;
+
+ reg ram_cs_r;
+ reg ram_wbs_ack_r;
+ always @(negedge wb_clk_i) begin
+ if (wb_rst_i) begin
+ ram_cs_r <= 0;
+ ram_wbs_ack_r <= 0;
+ end
+ else begin
+ ram_cs_r <= !ram_cs_r && ram_cs;
+ ram_wbs_ack_r <= ram_cs_r;
+ end
+ end
+
+ assign ram_clk0 = wb_clk_i;
+ assign ram_csb0 = !ram_cs_r;
+ assign ram_web0 = ~wbs_we_i;
+ assign ram_wmask0 = wbs_sel_i;
+ assign ram_addr0 = wbs_adr_i[ADDR_WIDTH-1:0];
+ assign ram_dout0 = wbs_dat_i;
+
+ assign wbs_dat_o = ram_din0;
+ assign wbs_ack_o = ram_wbs_ack_r && ram_cs;
+
+
+
+
+endmodule
+
+`default_nettype wire