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

Subversion Repositories ethmac

[/] [ethmac/] [trunk/] [bench/] [verilog/] [eth_phy.v] - Diff between revs 191 and 209

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

Rev 191 Rev 209
Line 39... Line 39...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.5  2002/09/18 17:55:08  tadej
 
// Bug repaired in eth_phy device
 
//
// Revision 1.3  2002/09/13 14:50:15  mohor
// Revision 1.3  2002/09/13 14:50:15  mohor
// Bug in MIIM fixed.
// Bug in MIIM fixed.
//
//
// Revision 1.2  2002/09/13 12:29:14  mohor
// Revision 1.2  2002/09/13 12:29:14  mohor
// Headers changed.
// Headers changed.
Line 1121... Line 1124...
  mrxerr_o = 0;
  mrxerr_o = 0;
  mcrs_rx = 0;
  mcrs_rx = 0;
end
end
 
 
task send_rx_packet;
task send_rx_packet;
  input  [(8*32)-1:0] preamble_data; // preamble data to be sent
  input  [(8*8)-1:0] preamble_data; // preamble data to be sent - correct is 64'h0055_5555_5555_5555
  input   [3:0] preamble_len; // length of preamble - max is 8
  input   [3:0] preamble_len; // length of preamble in bytes - max is 4'h8, correct is 4'h7 
  input   [7:0] sfd_data; // SFD data to be sent
  input   [7:0] sfd_data; // SFD data to be sent - correct is 8'hD5
  input  [31:0] start_addr; // start address
  input  [31:0] start_addr; // start address
  input  [31:0] len; // length of frame in Bytes (without preamble and SFD)
  input  [31:0] len; // length of frame in Bytes (without preamble and SFD)
  input         plus_drible_nibble; // if length is longer for one nibble
  input         plus_drible_nibble; // if length is longer for one nibble
  integer       rx_cnt;
  integer       rx_cnt;
  reg    [31:0] rx_mem_addr_in; // address for reading from RX memory       
  reg    [31:0] rx_mem_addr_in; // address for reading from RX memory       
Line 1147... Line 1150...
  `endif
  `endif
  // set initial rx memory address
  // set initial rx memory address
  rx_mem_addr_in = start_addr;
  rx_mem_addr_in = start_addr;
 
 
  // send preamble
  // send preamble
  for (rx_cnt = 0; (rx_cnt < preamble_len) || (rx_cnt < 8); rx_cnt = rx_cnt + 1)
      for (rx_cnt = 0; (rx_cnt < (preamble_len << 1)) && (rx_cnt < 16); rx_cnt = rx_cnt + 1)
  begin
  begin
    #1 mrxd_o = preamble_data[3:0];
    #1 mrxd_o = preamble_data[3:0];
    #1 preamble_data = preamble_data >> 4;
    #1 preamble_data = preamble_data >> 4;
    @(posedge mrx_clk_o);
    @(posedge mrx_clk_o);
  end
  end
Line 1167... Line 1170...
  $fdisplay(phy_log, "   (%0t)(%m) RX frame preamble and SFD sent!", $time);
  $fdisplay(phy_log, "   (%0t)(%m) RX frame preamble and SFD sent!", $time);
  `endif
  `endif
  // send packet's addresses, type/length, data and FCS
  // send packet's addresses, type/length, data and FCS
  for (rx_cnt = 0; rx_cnt < len; rx_cnt = rx_cnt + 1)
  for (rx_cnt = 0; rx_cnt < len; rx_cnt = rx_cnt + 1)
  begin
  begin
    @(posedge mrx_clk_o);
 
    #1;
    #1;
    rx_mem_data_out = rx_mem[rx_mem_addr_in[21:0]];
    rx_mem_data_out = rx_mem[rx_mem_addr_in[21:0]];
    mrxd_o = rx_mem_data_out[3:0];
    mrxd_o = rx_mem_data_out[3:0];
    @(posedge mrx_clk_o);
    @(posedge mrx_clk_o);
    #1;
    #1;
    mrxd_o = rx_mem_data_out[7:4];
    mrxd_o = rx_mem_data_out[7:4];
    rx_mem_addr_in = rx_mem_addr_in + 1;
    rx_mem_addr_in = rx_mem_addr_in + 1;
 
        @(posedge mrx_clk_o);
    #1;
    #1;
  end
  end
  if (plus_drible_nibble)
  if (plus_drible_nibble)
  begin
  begin
    @(posedge mrx_clk_o);
 
    #1;
 
    rx_mem_data_out = rx_mem[rx_mem_addr_in[21:0]];
    rx_mem_data_out = rx_mem[rx_mem_addr_in[21:0]];
    mrxd_o = rx_mem_data_out[3:0];
    mrxd_o = rx_mem_data_out[3:0];
 
        @(posedge mrx_clk_o);
  end
  end
  `ifdef VERBOSE
  `ifdef VERBOSE
  $fdisplay(phy_log, "   (%0t)(%m) RX frame addresses, type/length, data and FCS sent!", $time);
  $fdisplay(phy_log, "   (%0t)(%m) RX frame addresses, type/length, data and FCS sent!", $time);
  `endif
  `endif
  @(posedge mrx_clk_o);
 
  #1 mcrs_rx = 0;
  #1 mcrs_rx = 0;
  #1 mrxdv_o = 0;
  #1 mrxdv_o = 0;
 
      @(posedge mrx_clk_o);
  `ifdef VERBOSE
  `ifdef VERBOSE
  $fdisplay(phy_log, "   (%0t)(%m) RX frame ended with rx_dv reset!", $time);
  $fdisplay(phy_log, "   (%0t)(%m) RX frame ended with rx_dv reset!", $time);
  `endif
  `endif
end
end
endtask // send_rx_packet
endtask // send_rx_packet

powered by: WebSVN 2.1.0

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