www.pudn.com > noc.rar > brom64k.h
/*
* TU Eindhoven
* Eindhoven, The Netherlands
*
* Name : brom64k.h
*
* Author : A.S.Slusarczyk@tue.nl
*
* Date :
*
*
*/
#ifndef BROM64K_H_INCLUDED
#define BROM64K_H_INCLUDED
#include "mips.h"
#include "mem64k.h"
// BlockRAM wrapper
SC_MODULE(BROM64KCONV) {
sc_in < sc_bv > addr;
sc_out< sc_bv > dout;
sc_in< bool > clk;
sc_in< sc_bv<1> > en;
sc_out< bool > memwait;
sc_out< sc_uint<32> > mem_addr;
sc_in< sc_int<32> > mem_dout;
sc_out< sc_int<32> > mem_din;
sc_out< bool > mem_ww, mem_wb, mem_rw, mem_rb;
sc_out< bool > mem_clk;
void in();
void out();
SC_CTOR(BROM64KCONV) {
SC_METHOD(in);
sensitive << addr << en << clk;
SC_METHOD(out);
sensitive << mem_dout;
};
};
SC_MODULE(BROM64K) {
sc_in < sc_bv > addr;
sc_out< sc_bv > dout;
sc_in< bool > clk;
sc_in< sc_bv<1> > en;
sc_out< bool > memwait;
MEM64K *memory;
BROM64KCONV *conv;
// independent access to the second set of ports for debugging
sc_out > dbgDO;
sc_in > dbgADDR;
sc_in > dbgDI;
sc_in dbgEN;
sc_in dbgCLK;
sc_in dbgWE;
sc_in dbgRST;
sc_signal< sc_uint<32> > mem_addr;
sc_signal< sc_int<32> > mem_dout;
sc_signal< sc_int<32> > mem_din;
sc_signal< bool > mem_ww, mem_wb, mem_rw, mem_rb;
sc_signal< bool > mem_clk;
#ifndef VERILOG
void mem_init(const char *filename, int size=ROMSIZE){
memory->mem_init(filename,size);
}
void mem_dump(const char *filename, int size=ROMSIZE){
memory->mem_dump(filename,size);
}
#endif
SC_CTOR(BROM64K) {
memory = new MEM64K("memory");
conv = new BROM64KCONV("conv");
conv->addr(addr);
conv->dout(dout);
conv->clk(clk);
conv->memwait(memwait);
conv->en(en);
conv->mem_addr(mem_addr);
conv->mem_dout(mem_dout);
conv->mem_din(mem_din);
conv->mem_ww(mem_ww);
conv->mem_wb(mem_wb);
conv->mem_rw(mem_rw);
conv->mem_rb(mem_rb);
conv->mem_clk(mem_clk);
memory->addr(mem_addr);
memory->dout(mem_dout);
memory->din(mem_din);
memory->ww(mem_ww);
memory->wb(mem_wb);
memory->rw(mem_rw);
memory->rb(mem_rb);
memory->clk(mem_clk);
memory->dbgDO(dbgDO);
memory->dbgADDR(dbgADDR);
memory->dbgDI(dbgDI);
memory->dbgEN(dbgEN);
memory->dbgCLK(dbgCLK);
memory->dbgWE(dbgWE);
memory->dbgRST(dbgRST);
};
};
#endif