oqueue.cpp

来自「基于4个mips核的noc设计」· C++ 代码 · 共 99 行

CPP
99
字号
/* *  TU Eindhoven *  Eindhoven, The Netherlands * *  Name            :   oqueue.cpp * *  Author          :   A.S.Slusarczyk@tue.nl * *  Date            :   13-09-2003 * *  Function        :   Output queue of the e-cube router * * */#include "oqueue.h"// FSM controling the buffervoid OUTPUT_QUEUE::control_logic(){  bool req_v, ack_in_v, buffer_write_v, buffer_clear_v;    req_v = false;  ack_in_v = false;  buffer_write_v = false;  buffer_clear_v = false;  next_state = EMPTY;    switch( current_state.read() )    {    case EMPTY :       // empty buffer - wait for request from switch      if( req_in.read() ){        // buffer the input data, acknowledge its storing and try sending further        buffer_write_v = true;        next_state = BUFFERING;        ack_in_v = true;#ifdef ROUTEPRINT        cout << name() << " got flit 0x" << hex << data_in.read().to_uint() << dec << " @" << sc_time_stamp() << endl;        #endif      }      else         next_state = EMPTY;      break;                case BUFFERING :       // sending buffered data - assert network request, wait for ack      req_v = true;      if( ack.read() ){        next_state = EMPTY;#ifdef ROUTEPRINT        cout << name() << " sent flit 0x" << hex << buffer.read().to_uint() << dec << " @" << sc_time_stamp() << endl;        #endif      }      else        next_state = BUFFERING;      break;          }    req.write(req_v);  ack_in.write(ack_in_v);  buffer_write.write(buffer_write_v);  buffer_clear.write(buffer_clear_v);  }void OUTPUT_QUEUE::control_change_state(){  if( rst.read() )    current_state = EMPTY;  else     current_state = next_state;}void OUTPUT_QUEUE::buffer_process(){  if( rst.read() )    {      buffer = 0;    }  else     {      if( buffer_clear.read() ){        buffer = 0;      }      else if( buffer_write.read() ){        buffer = data_in.read();      }    } }void OUTPUT_QUEUE::data_out(){  data.write( buffer.read() );}

⌨️ 快捷键说明

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