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

📄 benif_network2x2.cpp

📁 改进的基于6个mips核的NOC网络
💻 CPP
字号:
#include "benif_network2x2.h"void BENIF_NET_WRAPPER::count(){  if( RST.read() ) cnt = 0;  else cnt = cnt.read()+1;}void BENIF_NET_WRAPPER::register_write(){  sc_uint<8> reg = ADDRESS.read().range(7,0);  if( RST.read() ) {    addr = 0; memsel = 0; control = 0;  }  else if( WRITE_STROBE.read() )    {      switch(reg)        {        case 2 : memsel = DATA.read(); break;        case 3 : addr = DATA.read(); break;        case 4 : control = DATA.read(); break;        }    }  if( (READ_STROBE.read()||WRITE_STROBE.read()) && reg==5 ) addr = addr.read()+4;}void BENIF_NET_WRAPPER::register_read(){  sc_uint<8> reg = ADDRESS.read().range(7,0);  sc_int<32> memout;  sc_lv<32> dout;  sc_lv<32> z32;  sc_uint<32> mem = memsel.read();  for(int i=0;i<32;i++) z32[i]='z';   switch( mem ){  case 0x00000001 : memout = romDO0.read(); break;  case 0x00000002 : memout = ramDO0.read(); break;  case 0x00000004 : memout = romDO1.read(); break;  case 0x00000008 : memout = ramDO1.read(); break;  case 0x00000010 : memout = romDO2.read(); break;  case 0x00000020 : memout = ramDO2.read(); break;  case 0x00000040 : memout = romDO3.read(); break;  case 0x00000080 : memout = ramDO3.read(); break;#ifdef USEXRAM  case 0x00000100 : memout = xDO0.read(); break;  case 0x00000200 : memout = xDO1.read(); break;  case 0x00000400 : memout = xDO2.read(); break;  case 0x00000800 : memout = xDO3.read(); break;#endif  default : memout = 0;  }    switch(reg)    {    case 2 : dout = memsel.read(); break;    case 3 : dout = addr.read(); break;    case 4 : dout = control.read(); break;    case 5 : dout = memout; break;    case 6 : dout = pc0.read(); break;    case 7 : dout = pc1.read(); break;    case 8 : dout = pc2.read(); break;    case 9 : dout = pc3.read(); break;    default : dout = memout; break;    }      if( READ_STROBE.read() )    DATA.write( dout );  else {    DATA.write( z32 );  }    DMA_DATA.write( z32 );}void BENIF_NET_WRAPPER::logic(){  sc_bv<4> leds;    reset.write(RST.read());  enable0.write(control.read()[0] != 0);  enable1.write(control.read()[1] != 0);  enable2.write(control.read()[2] != 0);  enable3.write(control.read()[3] != 0);    leds[3] = !(control.read()[0] != 0);  leds[2] = !(cnt.read()[24] != 0);  leds[1] = 1;  leds[0] = 1;    LEDS.write(leds);    INT.write(false);  DMA_REN.write(false);  DMA_WEN.write(false);}void BENIF_NET_WRAPPER::memory_input(){  sc_uint<8> reg = ADDRESS.read().range(7,0);  bool en = (reg==5);  bool we = (en&&WRITE_STROBE.read());  #ifndef VERILOG  memDI.write( we ? DATA.read() : 0 );#else  memDI.write( DATA.read() );#endif  romWE0.write(we && memsel.read()[0]); ramWE0.write(we && memsel.read()[1]);  romWE1.write(we && memsel.read()[2]); ramWE1.write(we && memsel.read()[3]);  romWE2.write(we && memsel.read()[4]); ramWE2.write(we && memsel.read()[5]);  romWE3.write(we && memsel.read()[6]); ramWE3.write(we && memsel.read()[7]);  memADDR.write( addr.read() );  memCLK.write( IFCLK.read() );  memEN.write(en);  memRST.write(false);#ifdef USEXRAM  xADDR.write( addr.read() );  xCLK.write( IFCLK.read() );  xWE0.write( control.read()[31]!=0 );  xWE1.write( control.read()[31]!=0 );  xWE2.write( control.read()[31]!=0 );  xWE3.write( control.read()[31]!=0 );#endif}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -