add emmc dummy class master
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 5 Aug 2018 10:41:02 +0000 (11:41 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 5 Aug 2018 10:41:02 +0000 (11:41 +0100)
src/peripherals/emmc/emmc_dummy.bsv [new file with mode: 0644]

diff --git a/src/peripherals/emmc/emmc_dummy.bsv b/src/peripherals/emmc/emmc_dummy.bsv
new file mode 100644 (file)
index 0000000..4207230
--- /dev/null
@@ -0,0 +1,101 @@
+/* 
+Copyright (c) 2013, IIT Madras All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+* Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+* Neither the name of IIT Madras  nor the names of its contributors
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+--------------------------------------------------------------------
+
+Author: Neel Gala
+Email id: neelgala@gmail.com
+Details:
+
+-------------------------------------------------------------------
+*/
+
+package emmc_dummy;
+  `define SDBUSWIDTH 8
+  `include "instance_defines.bsv"
+  import GetPut::*;
+  import ClockDiv::*;
+  import ConcatReg::*;
+       import Semi_FIFOF::*;
+       import BUtils ::*;
+       import AXI4_Lite_Types::*;
+
+  interface Ifc_emmc_dummy;
+         interface AXI4_Lite_Slave_IFC#(`PADDR, `DATA, `USERSPACE) slave;
+    interface Get#(Bit#(1)) cmd;
+    interface Get#(Bit#(1)) clk;
+    interface Get#(Bit#(`SDBUSWIDTH)) out;
+    interface Get#(Bit#(`SDBUSWIDTH)) out_en;
+    interface Put#(Bit#(`SDBUSWIDTH)) in;
+  endinterface
+
+  (*synthesize*)
+  module mkemmc_dummy(Ifc_emmc_dummy);
+               AXI4_Lite_Slave_Xactor_IFC#(`PADDR,`DATA, `USERSPACE)
+                s_xactor<-mkAXI4_Lite_Slave_Xactor();
+
+      Reg#(Bit#(1)) rg_cmd <- mkReg(0);
+      Reg#(Bit#(1)) rg_clk <- mkReg(0);
+      Reg#(Bit#(`SDBUSWIDTH)) rg_out <- mkReg(0);
+      Reg#(Bit#(`SDBUSWIDTH)) rg_out_en <- mkReg(0);
+      Reg#(Bit#(`SDBUSWIDTH)) rg_in <- mkReg(0);
+
+      interface cmd = interface Get
+        method ActionValue#(Bit#(1)) get;
+          return rg_cmd;
+        endmethod
+      endinterface;
+
+      interface clk = interface Get
+        method ActionValue#(Bit#(1)) get;
+          return rg_clk;
+        endmethod
+      endinterface;
+
+      interface out_en = interface Get
+        method ActionValue#(Bit#(`SDBUSWIDTH)) get;
+          return rg_out_en;
+        endmethod
+      endinterface;
+
+      interface out = interface Get
+        method ActionValue#(Bit#(`SDBUSWIDTH)) get;
+          return rg_out;
+        endmethod
+      endinterface;
+
+      interface in = interface Put
+        method Action put(Bit#(`SDBUSWIDTH) in);
+          rg_in <= in;
+        endmethod
+      endinterface;
+
+    interface slave=s_xactor.axi_side;
+
+  endmodule
+
+endpackage