www.pudn.com > noc.rar > bregisterfile16.cpp


/*
 *  TU Eindhoven
 *  Eindhoven, The Netherlands
 *
 *  Name            :   bregisterfile16.cpp
 *
 *  Author          :   A.S.Slusarczyk@tue.nl
 *
 *  Date            :   
 *
 *  Function        :   Xilinx-Block-RAM-based register file
 *
 *
 */
 
#include "bregisterfile16.h"


void BRAM512x32_CONV::clock()
{
  bool c = clk.read();
  CLKA.write(c);  
  // writing B - port on falling edge
  CLKB.write(!c);
}

void BRAM512x32_CONV::in()
{  
  // pad read/write address to 9 bits
  sc_bv<4> zero4(0);
  sc_bv<9> w_addr9 = ( zero4, w_addr.read() );
  sc_bv<9> r_addr9 = ( zero4, r_addr.read() );
  
  ADDRA.write(r_addr9); ADDRB.write(w_addr9); 

  // route write data to B ports of the memory
  sc_bv dwr = w_data.read();
  DIB.write(dwr); DIPB.write(0);
  // B-port write enable
  WEB.write(w.read()[0]!=0);

  // A port never writes
  DIA.write(0); DIPA.write(0); WEA.write(0);

  // always enabled
  ENA.write(1); ENB.write(1);
  SSRA.write(0); SSRB.write(0);
}

void BRAM512x32_CONV::out()
{
  sc_bv data;
  
  data = DOA.read();
  r_data.write(data);
}