//=========================================== // Function : Asynchronous read write RAM // Coder : Deepak Kumar Tala // Date : 18-April-2002 //=========================================== #include "systemc.h" #define DATA_WIDTH 8 #define ADDR_WIDTH 8 #define RAM_DEPTH 1 << ADDR_WIDTH SC_MODULE (ram_sp_ar_aw) { sc_in > address ; sc_in cs ; sc_in we ; sc_in oe ; sc_in > data_in ; sc_out > data_out; //-----------Internal variables------------------- sc_uint mem [RAM_DEPTH]; // Memory Write Block // Write Operation : When we = 1, cs = 1 void write_mem () { if (cs.read() && we.read()) { mem[address.read()] = data_in.read(); } } // Memory Read Block // Read Operation : When we = 0, oe = 1, cs = 1 void read_mem () { if (cs.read() && !we.read() && oe.read()) { data_out.write(mem[address.read()]); } } SC_CTOR(ram_sp_ar_aw) { SC_METHOD (read_mem); sensitive << address << cs << we << oe; SC_METHOD (write_mem); sensitive << address << cs << we << data_in; } };