📄 remote_mem.h
字号:
/*
* TU Eindhoven
* Eindhoven, The Netherlands
*
* Name : remote_mem.h
*
* Author : Jose Prats - jprats@step.es
*
* Date :
*
* Function : Remote memory
*/
#ifndef REMOTE_MEM_H_INCLUDED
#define REMOTE_MEM_H_INCLUDED
#include "bram16k.h"
#include "translator_mem.h"
SC_MODULE(CLKDISTR){
sc_in<bool> clkin;
sc_out<bool> clkout;
SC_CTOR(CLKDISTR){
SC_METHOD(clk);
sensitive << clkin;
}
void clk(){
clkout.write(clkin.read());
}
};
SC_MODULE(REMOTE_MEM)
{
sc_in<bool> clock;
//sc_in<bool> enable;
sc_signal< sc_bv<1> > enable;
sc_in<bool> reset;
sc_signal<bool> clk;
/*
* MODULES
*/
//REMOTE MEMORY: BRAM16k
BRAM16K *remote_memory;
sc_signal< bool > memwait;
sc_out<sc_int<32> > ramDO;
sc_in<sc_uint<32> > ramADDR;
sc_in<sc_int<32> > ramDI;
sc_in<bool> ramEN;
sc_in<bool> ramCLK;
sc_in<bool> ramWE;
sc_in<bool> ramRST;
//CLOCK DISTRIBUTION: CLKDISTR
CLKDISTR *clkdistr;
//TRANSLATOR_MEM: It manages the communication between memory node and mMIPS nodes.
TRANSLATOR_MEM *translator_mem;
sc_in < sc_int<8> > xdimension;
sc_in < sc_int<8> > ydimension;
sc_in< sc_bv<DWORD> > dev_din;
sc_in< bool > dev_rdyr;
sc_in< bool > dev_rcv_eop;
sc_in< bool > dev_rdyw;
sc_in< bool > rd_wr;
sc_out< bool > dev_w;
sc_out< bool > dev_r;
sc_out< sc_bv<DWORD> > dev_dout;
sc_out< bool > dev_wdata;
sc_out< bool > dev_waddr;
sc_out<bool> dev_send_eop;
sc_signal< sc_bv<DWORD> > bus_rem_mem_addr;
sc_signal< sc_bv<DWORD> > bus_rem_mem_din;
sc_signal< sc_bv<2> > bus_rem_mem_w;
sc_signal< sc_bv<2> > bus_rem_mem_r;
sc_signal< sc_bv<DWORD> > bus_rem_mem_dout;
SC_CTOR(REMOTE_MEM){
enable.write(1);
clkdistr = new CLKDISTR("clkdistr");
// CLKDISTR
clkdistr->clkin(clock);
clkdistr->clkout(clk);
remote_memory = new BRAM16K("remote_memory");
// Data memory
remote_memory->addr(bus_rem_mem_addr);
remote_memory->din(bus_rem_mem_din);
remote_memory->w(bus_rem_mem_w);
remote_memory->r(bus_rem_mem_r);
remote_memory->dout(bus_rem_mem_dout);
remote_memory->clk(clk);
remote_memory->en(enable);
remote_memory->memwait(memwait);
remote_memory->dbgDO(ramDO);
remote_memory->dbgADDR(ramADDR);
remote_memory->dbgDI(ramDI);
remote_memory->dbgEN(ramEN);
remote_memory->dbgCLK(ramCLK);
remote_memory->dbgWE(ramWE);
remote_memory->dbgRST(ramRST);
// TRANSLATOR_MEM
translator_mem = new TRANSLATOR_MEM("translator_mem");
translator_mem->clk(clk);
translator_mem->rst(reset);
translator_mem->xdimension(xdimension);
translator_mem->ydimension(ydimension);
translator_mem->reg_data_out(dev_din);
translator_mem->data_rdy(dev_rdyr);
translator_mem->rcv_packet_end(dev_rcv_eop);
translator_mem->send_rdy(dev_rdyw);
translator_mem->rd_wr(rd_wr);
translator_mem->rem_mem_dout(bus_rem_mem_dout);
translator_mem->rem_mem_addr(bus_rem_mem_addr);
translator_mem->rem_mem_din(bus_rem_mem_din);
translator_mem->rem_mem_r(bus_rem_mem_r);
translator_mem->rem_mem_w(bus_rem_mem_w);
translator_mem->trans_dev_w(dev_w);
translator_mem->trans_dev_r(dev_r);
translator_mem->trans_dev_din(dev_dout);
translator_mem->trans_dev_wdata(dev_wdata);
translator_mem->trans_dev_waddr(dev_waddr);
translator_mem->trans_dev_send_eop(dev_send_eop);
}
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -