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

Subversion Repositories ethmac

[/] [ethmac/] [trunk/] [rtl/] [verilog/] [eth_rxethmac.v] - Diff between revs 321 and 330

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

Rev 321 Rev 330
Line 41... Line 41...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.12  2004/04/26 15:26:23  igorm
 
// - Bug connected to the TX_BD_NUM_Wr signal fixed (bug came in with the
 
//   previous update of the core.
 
// - TxBDAddress is set to 0 after the TX is enabled in the MODER register.
 
// - RxBDAddress is set to r_TxBDNum<<1 after the RX is enabled in the MODER
 
//   register. (thanks to Mathias and Torbjorn)
 
// - Multicast reception was fixed. Thanks to Ulrich Gries
 
//
// Revision 1.11  2004/03/17 09:32:15  igorm
// Revision 1.11  2004/03/17 09:32:15  igorm
// Multicast detection fixed. Only the LSB of the first byte is checked.
// Multicast detection fixed. Only the LSB of the first byte is checked.
//
//
// Revision 1.10  2002/11/22 01:57:06  mohor
// Revision 1.10  2002/11/22 01:57:06  mohor
// Rx Flow control fixed. CF flag added to the RX buffer descriptor. RxAbort
// Rx Flow control fixed. CF flag added to the RX buffer descriptor. RxAbort
Line 150... Line 158...
reg           Broadcast;
reg           Broadcast;
reg           Multicast;
reg           Multicast;
reg     [5:0] CrcHash;
reg     [5:0] CrcHash;
reg           CrcHashGood;
reg           CrcHashGood;
reg           DelayData;
reg           DelayData;
reg     [3:0] LatchedNibble;
 
reg     [7:0] LatchedByte;
reg     [7:0] LatchedByte;
reg     [7:0] RxData_d;
reg     [7:0] RxData_d;
reg           RxValid_d;
reg           RxValid_d;
reg           RxStartFrm_d;
reg           RxStartFrm_d;
reg           RxEndFrm_d;
reg           RxEndFrm_d;
Line 177... Line 184...
wire          GenerateRxValid;
wire          GenerateRxValid;
wire          GenerateRxStartFrm;
wire          GenerateRxStartFrm;
wire          GenerateRxEndFrm;
wire          GenerateRxEndFrm;
wire          DribbleRxEndFrm;
wire          DribbleRxEndFrm;
wire    [3:0] DlyCrcCnt;
wire    [3:0] DlyCrcCnt;
 
wire          IFGCounterEq24;
 
 
assign MRxDEqD = MRxD == 4'hd;
assign MRxDEqD = MRxD == 4'hd;
assign MRxDEq5 = MRxD == 4'h5;
assign MRxDEq5 = MRxD == 4'h5;
 
 
 
 
Line 202... Line 209...
                            .HugEn(HugEn), .IFGCounterEq24(IFGCounterEq24), .ByteCntEq0(ByteCntEq0),
                            .HugEn(HugEn), .IFGCounterEq24(IFGCounterEq24), .ByteCntEq0(ByteCntEq0),
                            .ByteCntEq1(ByteCntEq1), .ByteCntEq2(ByteCntEq2), .ByteCntEq3(ByteCntEq3),
                            .ByteCntEq1(ByteCntEq1), .ByteCntEq2(ByteCntEq2), .ByteCntEq3(ByteCntEq3),
                            .ByteCntEq4(ByteCntEq4), .ByteCntEq5(ByteCntEq5), .ByteCntEq6(ByteCntEq6),
                            .ByteCntEq4(ByteCntEq4), .ByteCntEq5(ByteCntEq5), .ByteCntEq6(ByteCntEq6),
                            .ByteCntEq7(ByteCntEq7), .ByteCntGreat2(ByteCntGreat2),
                            .ByteCntEq7(ByteCntEq7), .ByteCntGreat2(ByteCntGreat2),
                            .ByteCntSmall7(ByteCntSmall7), .ByteCntMaxFrame(ByteCntMaxFrame),
                            .ByteCntSmall7(ByteCntSmall7), .ByteCntMaxFrame(ByteCntMaxFrame),
                            .ByteCnt(ByteCnt)
                            .ByteCntOut(ByteCnt)
                           );
                           );
 
 
// Rx Address Check
// Rx Address Check
 
 
eth_rxaddrcheck rxaddrcheck1
eth_rxaddrcheck rxaddrcheck1
Line 260... Line 267...
begin
begin
  if(Reset)
  if(Reset)
    begin
    begin
      RxData_d[7:0]      <= #Tp 8'h0;
      RxData_d[7:0]      <= #Tp 8'h0;
      DelayData          <= #Tp 1'b0;
      DelayData          <= #Tp 1'b0;
      LatchedNibble[3:0] <= #Tp 4'h0;
 
      LatchedByte[7:0]   <= #Tp 8'h0;
      LatchedByte[7:0]   <= #Tp 8'h0;
      RxData[7:0]        <= #Tp 8'h0;
      RxData[7:0]        <= #Tp 8'h0;
    end
    end
  else
  else
    begin
    begin
      LatchedNibble[3:0] <= #Tp MRxD[3:0];                        // Latched nibble
      LatchedByte[7:0]   <= #Tp {MRxD[3:0], LatchedByte[7:4]};  // Latched byte
      LatchedByte[7:0]   <= #Tp {MRxD[3:0], LatchedNibble[3:0]};  // Latched byte
 
      DelayData          <= #Tp StateData[0];
      DelayData          <= #Tp StateData[0];
 
 
      if(GenerateRxValid)
      if(GenerateRxValid)
        RxData_d[7:0] <= #Tp LatchedByte[7:0] & {8{|StateData}};  // Data goes through only in data state 
        RxData_d[7:0] <= #Tp LatchedByte[7:0] & {8{|StateData}};  // Data goes through only in data state 
      else
      else

powered by: WebSVN 2.1.0

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