00001 00002 /* 00003 * fifo.h 00004 * 00005 * This program is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU General Public License, 00007 * version 2, as published by the Free Software Foundation. 00008 * 00009 * This program is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 * GNU General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU General Public License along 00015 * with this program; if not, write to the Free Software Foundation, Inc., 00016 * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. 00017 * 00018 * Author: Lavina Jain 00019 * 00020 */ 00021 00026 00027 #ifndef _FIFO_ 00028 #define _FIFO_ 00029 #include "flit.h" 00030 #include "../config/extern.h" 00031 00035 struct fifo { 00036 sc_uint<BUF_BITSIZE> num_bufs; 00037 flit regs[MAX_NUM_BUFS]; 00038 bool full; 00039 bool empty; 00040 sc_uint<BUF_BITSIZE> pntr; 00041 00043 fifo() { 00044 full = false; // initialize full status to false 00045 empty = true; // initialize empty status to true 00046 pntr = 0; // no registers are occupied 00047 num_bufs = NUM_BUFS; // initialize depth of buffer as read from user 00048 }; 00049 00050 // FUNCTIONS ///////////////////////////////////////////////////////////////////////////// 00051 void flit_in(const flit& data_flit); 00052 flit flit_out(); 00053 void flit_push(flit pack); 00054 // FUNCTIONS END ///////////////////////////////////////////////////////////////////////////// 00055 }; 00056 00057 #endif