Line 35... |
Line 35... |
//// from http://www.opencores.org/lgpl.shtml ////
|
//// from http://www.opencores.org/lgpl.shtml ////
|
//// ////
|
//// ////
|
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
// CVS Revision History
|
// CVS Revision History
|
//
|
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator
|
|
// no message
|
|
//
|
|
|
module MAC_rx_ctrl (
|
module MAC_rx_ctrl (
|
Reset ,
|
Reset ,
|
Clk ,
|
Clk ,
|
|
|
Line 119... |
Line 121... |
//******************************************************************************
|
//******************************************************************************
|
parameter State_idle =4'd00;
|
parameter State_idle =4'd00;
|
parameter State_preamble =4'd01;
|
parameter State_preamble =4'd01;
|
parameter State_SFD =4'd02;
|
parameter State_SFD =4'd02;
|
parameter State_data =4'd03;
|
parameter State_data =4'd03;
|
|
parameter State_checkCRC =4'd04;
|
parameter State_OkEnd =4'd07;
|
parameter State_OkEnd =4'd07;
|
parameter State_drop =4'd08;
|
parameter State_drop =4'd08;
|
parameter State_ErrEnd =4'd09;
|
parameter State_ErrEnd =4'd09;
|
parameter State_CRCErrEnd =4'd10;
|
parameter State_CRCErrEnd =4'd10;
|
parameter State_FFFullDrop =4'd11;
|
parameter State_FFFullDrop =4'd11;
|
Line 220... |
Line 223... |
else if (RxErr)
|
else if (RxErr)
|
Next_state =State_drop;
|
Next_state =State_drop;
|
else
|
else
|
Next_state =State_data;
|
Next_state =State_data;
|
State_data:
|
State_data:
|
if (!Crs_dv&&!CRC_err&&!Too_short&&!Too_long)
|
if (!Crs_dv&&!Too_short&&!Too_long)
|
Next_state =State_OkEnd;
|
Next_state =State_checkCRC;
|
else if (!Crs_dv&&(Too_short||Too_long))
|
else if (!Crs_dv&&(Too_short||Too_long))
|
Next_state =State_ErrEnd;
|
Next_state =State_ErrEnd;
|
else if (!Crs_dv&&CRC_err)
|
|
Next_state =State_CRCErrEnd;
|
|
else if (Fifo_full)
|
else if (Fifo_full)
|
Next_state =State_FFFullErrEnd;
|
Next_state =State_FFFullErrEnd;
|
else if (RxErr||MAC_rx_add_chk_err||Too_long||broadcast_drop)
|
else if (RxErr||MAC_rx_add_chk_err||Too_long||broadcast_drop)
|
Next_state =State_drop;
|
Next_state =State_drop;
|
else
|
else
|
Next_state =State_data;
|
Next_state =State_data;
|
|
State_checkCRC:
|
|
if (CRC_err)
|
|
Next_state =State_CRCErrEnd;
|
|
else
|
|
Next_state =State_OkEnd;
|
State_drop:
|
State_drop:
|
if (!Crs_dv)
|
if (!Crs_dv)
|
Next_state =State_ErrEnd;
|
Next_state =State_ErrEnd;
|
else
|
else
|
Next_state =Current_state;
|
Next_state =Current_state;
|
Line 317... |
Line 323... |
//******************************************************************************
|
//******************************************************************************
|
always @ (posedge Clk or posedge Reset)
|
always @ (posedge Clk or posedge Reset)
|
if (Reset)
|
if (Reset)
|
Frame_length_counter <=0;
|
Frame_length_counter <=0;
|
else if (Current_state==State_SFD)
|
else if (Current_state==State_SFD)
|
Frame_length_counter <=0;
|
Frame_length_counter <=1;
|
else if (Current_state==State_data)
|
else if (Current_state==State_data)
|
Frame_length_counter <=Frame_length_counter+ 1;
|
Frame_length_counter <=Frame_length_counter+ 1;
|
|
|
always @ (Frame_length_counter or RX_MIN_LENGTH)
|
always @ (Frame_length_counter or RX_MIN_LENGTH)
|
if (Frame_length_counter<RX_MIN_LENGTH)
|
if (Frame_length_counter<RX_MIN_LENGTH)
|