OpenCores
URL https://opencores.org/ocsvn/ethmac/ethmac/trunk

Subversion Repositories ethmac

[/] [ethmac/] [trunk/] [rtl/] [verilog/] [eth_fifo.v] - Diff between revs 100 and 330

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 100 Rev 330
Line 39... Line 39...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.3  2002/04/22 13:45:52  mohor
 
// Generic ram or Xilinx ram can be used in fifo (selectable by setting
 
// ETH_FIFO_XILINX in eth_defines.v).
 
//
// Revision 1.2  2002/03/25 13:33:04  mohor
// Revision 1.2  2002/03/25 13:33:04  mohor
// When clear and read/write are active at the same time, cnt and pointers are
// When clear and read/write are active at the same time, cnt and pointers are
// set to 1.
// set to 1.
//
//
// Revision 1.1  2002/02/05 16:44:39  mohor
// Revision 1.1  2002/02/05 16:44:39  mohor
Line 77... Line 81...
output                    empty;
output                    empty;
output  [CNT_WIDTH-1:0]   cnt;
output  [CNT_WIDTH-1:0]   cnt;
 
 
`ifdef ETH_FIFO_XILINX
`ifdef ETH_FIFO_XILINX
`else
`else
 
  `ifdef ETH_ALTERA_ALTSYNCRAM
 
  `else
  reg     [DATA_WIDTH-1:0]  fifo  [0:DEPTH-1];
  reg     [DATA_WIDTH-1:0]  fifo  [0:DEPTH-1];
 
    reg     [DATA_WIDTH-1:0]  data_out;
 
  `endif
`endif
`endif
 
 
reg     [CNT_WIDTH-1:0]   cnt;
reg     [CNT_WIDTH-1:0]   cnt;
reg     [CNT_WIDTH-2:0]   read_pointer;
reg     [CNT_WIDTH-2:0]   read_pointer;
reg     [CNT_WIDTH-2:0]   write_pointer;
reg     [CNT_WIDTH-2:0]   write_pointer;
Line 140... Line 148...
    .data_in(data_in),
    .data_in(data_in),
    .read_address( clear ? {CNT_WIDTH-1{1'b0}} : read_pointer),
    .read_address( clear ? {CNT_WIDTH-1{1'b0}} : read_pointer),
    .write_address(clear ? {CNT_WIDTH-1{1'b0}} : write_pointer),
    .write_address(clear ? {CNT_WIDTH-1{1'b0}} : write_pointer),
    .wclk(clk)
    .wclk(clk)
  );
  );
`else
`else   // !ETH_FIFO_XILINX
 
`ifdef ETH_ALTERA_ALTSYNCRAM
 
  altera_dpram_16x32    altera_dpram_16x32_inst
 
  (
 
        .data             (data_in),
 
        .wren             (write & ~full),
 
        .wraddress        (clear ? {CNT_WIDTH-1{1'b0}} : write_pointer),
 
        .rdaddress        (clear ? {CNT_WIDTH-1{1'b0}} : read_pointer ),
 
        .clock            (clk),
 
        .q                (data_out)
 
  );  //exemplar attribute altera_dpram_16x32_inst NOOPT TRUE
 
`else   // !ETH_ALTERA_ALTSYNCRAM
  always @ (posedge clk)
  always @ (posedge clk)
  begin
  begin
    if(write & clear)
    if(write & clear)
      fifo[0] <=#Tp data_in;
      fifo[0] <=#Tp data_in;
    else
    else
   if(write & ~full)
   if(write & ~full)
      fifo[write_pointer] <=#Tp data_in;
      fifo[write_pointer] <=#Tp data_in;
  end
  end
 
 
  assign data_out = clear ? fifo[0] : fifo[read_pointer];
 
`endif
  always @ (posedge clk)
 
  begin
 
    if(clear)
 
      data_out <=#Tp fifo[0];
 
    else
 
      data_out <=#Tp fifo[read_pointer];
 
  end
 
`endif  // !ETH_ALTERA_ALTSYNCRAM
 
`endif  // !ETH_FIFO_XILINX
 
 
 
 
endmodule
endmodule
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.