⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remote_mem.h

📁 改进的基于6个mips核的NOC网络
💻 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 + -