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

📄 netmemif.cpp

📁 改进的基于6个mips核的NOC网络
💻 CPP
字号:
#include "netmemif.h"void NETMEMIF::buffers_process(){  if( rst.read() )    {      write_address.write(0);      read_address.write(0);      read_counter.write(0);      write_counter.write(0);      byte.write(0);      operation.write(0);      read_return_address.write(0);      write_return_address.write(0);      memory_buffer.write(0);    }  else     {      sc_int<16> data = sc_bv<16>(data_in.read().range(15,0));      sc_int<16> wah = write_address.read().range(31,16), wal = write_address.read().range(15,0);      sc_int<16> rah = read_address.read().range(31,16), ral = read_address.read().range(15,0);        if( wr_wah.read() || wr_wal.read() )        {          if( wr_wah.read() ) write_address.write( (data,wal) );          if( wr_wal.read() ) write_address.write( (wah,data) );        }      else if( inc_wa.read() )        write_address.write( write_address.read()+4 );      if( wr_rah.read() || wr_ral.read() ){        if( wr_rah.read() ) read_address.write( (data,ral) );        if( wr_ral.read() ) read_address.write( (rah,data) );      }      else if( inc_ra.read() )        read_address.write( read_address.read()+4 );          sc_int<8> d70 = data.range(7,0);      sc_uint<2> d1514 = data.range(15,14);        if( wr_rc.read() ) read_counter.write( d70 );      else if( dec_rc.read() ) read_counter.write( read_counter.read()-1 );      if( wr_wc.read() ) write_counter.write( d70 );      else if( dec_wc.read() ) write_counter.write( write_counter.read()-1 );      if( wr_b.read() )        byte.write( d70 );      if( wr_op.read() )        operation.write( d1514.read() );      if( wr_rra.read() )        read_return_address.write( data );      if( wr_wra.read() )        write_return_address.write( data );        if( wr_mb.read() )        memory_buffer.write( mem_dout.read() );    }  }void NETMEMIF::rcv_change_state(){  if( rst.read() ){    rcv_current_state.write( RCV );    rcv_current_flit.write( HEADER );  }  else {    rcv_current_state.write( rcv_next_state );    rcv_current_flit.write( rcv_next_flit );  }}void NETMEMIF::rcv_logic(){  sc_bv<FLIT_LEN> data_out_v;  bool ack_out_v=false;  bool mem_wh_v=false, mem_wl_v=false, mem_wb_v=false, mem_r_v=false;  bool wr_wah_v=false,wr_wal_v=false,wr_rah_v=false,wr_ral_v=false;  bool inc_wa_v=false;  bool wr_rc_v=false, wr_wc_v=false;  bool dec_wc_v=false,wr_rra_v=false,wr_wra_v=false,wr_b_v=false,wr_op_v=false;      data_out.write(data_out_v);  ack_out.write(ack_out_v);  mem_wh.write(mem_wh_v);  mem_wl.write(mem_wl_v);  mem_wb.write(mem_wb_v);  mem_r.write(mem_r_v);  wr_wah.write(wr_wah_v);  wr_wal.write(wr_wal_v);  wr_rah.write(wr_rah_v);  wr_ral.write(wr_ral_v);  inc_wa.write(inc_wa_v);  wr_rc.write(wr_rc_v);  wr_wc.write(wr_wc_v);  dec_wc.write(dec_wc_v);  wr_rra.write(wr_rra_v);  wr_wra.write(wr_wra_v);  wr_b.write(wr_b_v);  wr_op.write(wr_op_v);}void NETMEMIF::send_change_state(){  if( rst.read() ){    send_current_state.write( SEND );    send_current_flit.write( HEADER );  }  else {    send_current_state.write( send_next_state );    send_current_flit.write( send_next_flit );  }}void NETMEMIF::memory_input(){  sc_uint<2> mem_partition;  sc_uint<32> addr = (mem_r.read() ? read_address.read() : write_address.read());  sc_uint<14> addr14 = addr.range(13,0);  sc_uint<16> zero16(0);  sc_uint<16> return_address = (mem_r.read() ? read_return_address.read() : write_return_address.read());    switch(return_address){  case 0x0001 : mem_partition = 0; break;  case 0x0100 : mem_partition = 1; break;  case 0x0101 : mem_partition = 2; break;  default : mem_partition = 0; break;  };  mem_addr.write( (zero16, mem_partition, addr14) );    sc_bv<8> din = data_in.read().range(7,0);  sc_int<8> d = din;    mem_din.write( mem_wb.read() ? byte.read() : d );   }

⌨️ 快捷键说明

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