From 9b66219ceb47037b11f55f698648c01aef51ac96 Mon Sep 17 00:00:00 2001 From: dam1n19 <dam1n19@soton.ac.uk> Date: Mon, 19 Jun 2023 15:35:20 +0100 Subject: [PATCH] Created SRAM wrapper to allow SRAM to be substitute with Technology dependent version --- sram/sl_ahb_sram.v | 86 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 sram/sl_ahb_sram.v diff --git a/sram/sl_ahb_sram.v b/sram/sl_ahb_sram.v new file mode 100644 index 0000000..3c0fe76 --- /dev/null +++ b/sram/sl_ahb_sram.v @@ -0,0 +1,86 @@ +//----------------------------------------------------------------------------- +// SoCLabs FPGA SRAM Wrapper +// - to be substitued with same name file in filelist when moving to ASIC +// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license. +// +// Contributors +// +// David Mapstone (d.a.mapstone@soton.ac.uk) +// +// Copyright 2021-3, SoC Labs (www.soclabs.org) +//----------------------------------------------------------------------------- + +module sl_ahb_sram #( + parameter RAM_ADDR_W = 14, // Size of SRAM + parameter FILENAME = "image.hex" // Initial Image to Populate Memory with +)( + // -------------------------------------------------------------------------- + // Port Definitions + // -------------------------------------------------------------------------- + input wire HCLK, // system bus clock + input wire HRESETn, // system bus reset + input wire HSEL, // AHB peripheral select + input wire HREADY, // AHB ready input + input wire [1:0] HTRANS, // AHB transfer type + input wire [2:0] HSIZE, // AHB hsize + input wire HWRITE, // AHB hwrite + input wire [RAM_ADDR_W-1:0] HADDR, // AHB address bus + input wire [31:0] HWDATA, // AHB write data bus + output wire HREADYOUT, // AHB ready output to S->M mux + output wire HRESP, // AHB response + output wire [31:0] HRDATA // AHB read data bus +); + + // Internal Wiring + wire [RAM_ADDR_W-3:0] addr; + wire [RAM_ADDR_W-1:0] wdata; + wire [RAM_ADDR_W-1:0] rdata; + wire [3:0] wen; + wire cs; + + // AHB to SRAM Conversion + cmsdk_ahb_to_sram #( + .AW (RAM_ADDR_W) + ) u_ahb_to_sram ( + // AHB Inputs + .HCLK (HCLK), + .HRESETn (HRESETn), + .HSEL (HSEL), + .HADDR (HADDR[RAM_ADDR_W-1:0]), + .HTRANS (HTRANS), + .HSIZE (HSIZE), + .HWRITE (HWRITE), + .HWDATA (HWDATA), + .HREADY (HREADYMUX), + + // AHB Outputs + .HREADYOUT (HREADYOUT), + .HRDATA (HRDATA), + .HRESP (HRESP), + + // SRAM input + .SRAMRDATA (rdata), + + // SRAM Outputs + .SRAMADDR (addr), + .SRAMWDATA (wdata), + .SRAMWEN (wen), + .SRAMCS (cs) + ); + + // FPGA SRAM model + cmsdk_fpga_sram #( + .AW (RAM_ADDR_W), + .filename (FILENAME) + ) u_sram ( + // SRAM Inputs + .CLK (HCLK), + .ADDR (addr), + .WDATA (wdata), + .WREN (wen), + .CS (cs), + + // SRAM Output + .RDATA (rdata) + ); +endmodule \ No newline at end of file -- GitLab