Line 39... |
Line 39... |
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
// CVS Revision History
|
// CVS Revision History
|
//
|
//
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.42 2002/11/21 00:09:19 mohor
|
|
// TPauseRq synchronized to tx_clk.
|
|
//
|
// Revision 1.41 2002/11/19 18:13:49 mohor
|
// Revision 1.41 2002/11/19 18:13:49 mohor
|
// r_MiiMRst is not used for resetting the MIIM module. wb_rst used instead.
|
// r_MiiMRst is not used for resetting the MIIM module. wb_rst used instead.
|
//
|
//
|
// Revision 1.40 2002/11/19 17:34:25 mohor
|
// Revision 1.40 2002/11/19 17:34:25 mohor
|
// AddressMiss status is connecting to the Rx BD. AddressMiss is identifying
|
// AddressMiss status is connecting to the Rx BD. AddressMiss is identifying
|
Line 488... |
Line 491... |
.RStatStart(RStatStart), .UpdateMIIRX_DATAReg(UpdateMIIRX_DATAReg), .Prsd(Prsd),
|
.RStatStart(RStatStart), .UpdateMIIRX_DATAReg(UpdateMIIRX_DATAReg), .Prsd(Prsd),
|
.r_TxBDNum(r_TxBDNum), .TX_BD_NUM_Wr(TX_BD_NUM_Wr), .int_o(int_o),
|
.r_TxBDNum(r_TxBDNum), .TX_BD_NUM_Wr(TX_BD_NUM_Wr), .int_o(int_o),
|
.r_HASH0(r_HASH0), .r_HASH1(r_HASH1), .r_TxPauseRq(r_TxPauseRq),
|
.r_HASH0(r_HASH0), .r_HASH1(r_HASH1), .r_TxPauseRq(r_TxPauseRq),
|
.r_TxPauseTV(r_TxPauseTV), .RstTxPauseRq(RstTxPauseRq), .TxCtrlEndFrm(TxCtrlEndFrm),
|
.r_TxPauseTV(r_TxPauseTV), .RstTxPauseRq(RstTxPauseRq), .TxCtrlEndFrm(TxCtrlEndFrm),
|
.StartTxDone(StartTxDone), .TxClk(mtx_clk_pad_i), .RxClk(mrx_clk_pad_i),
|
.StartTxDone(StartTxDone), .TxClk(mtx_clk_pad_i), .RxClk(mrx_clk_pad_i),
|
.ReceivedPauseFrm(ReceivedPauseFrm)
|
.SetPauseTimer(SetPauseTimer)
|
|
|
);
|
);
|
|
|
|
|
|
|
Line 529... |
Line 532... |
.TxUsedDataIn(TxUsedDataIn), .TxDoneIn(TxDoneIn),
|
.TxUsedDataIn(TxUsedDataIn), .TxDoneIn(TxDoneIn),
|
.TxAbortIn(TxAbortIn), .MRxClk(mrx_clk_pad_i),
|
.TxAbortIn(TxAbortIn), .MRxClk(mrx_clk_pad_i),
|
.RxData(RxData), .RxValid(RxValid),
|
.RxData(RxData), .RxValid(RxValid),
|
.RxStartFrm(RxStartFrm), .RxEndFrm(RxEndFrm),
|
.RxStartFrm(RxStartFrm), .RxEndFrm(RxEndFrm),
|
.ReceiveEnd(ReceiveEnd), .ReceivedPacketGood(ReceivedPacketGood),
|
.ReceiveEnd(ReceiveEnd), .ReceivedPacketGood(ReceivedPacketGood),
|
.PassAll(r_PassAll), .TxFlow(r_TxFlow),
|
.TxFlow(r_TxFlow),
|
.RxFlow(r_RxFlow), .DlyCrcEn(r_DlyCrcEn),
|
.RxFlow(r_RxFlow), .DlyCrcEn(r_DlyCrcEn),
|
.MAC(r_MAC), .PadIn(r_Pad | PerPacketPad),
|
.MAC(r_MAC), .PadIn(r_Pad | PerPacketPad),
|
.PadOut(PadOut), .CrcEnIn(r_CrcEn | PerPacketCrcEn),
|
.PadOut(PadOut), .CrcEnIn(r_CrcEn | PerPacketCrcEn),
|
.CrcEnOut(CrcEnOut), .TxReset(wb_rst_i),
|
.CrcEnOut(CrcEnOut), .TxReset(wb_rst_i),
|
.RxReset(wb_rst_i), .ReceivedLengthOK(ReceivedLengthOK),
|
.RxReset(wb_rst_i), .ReceivedLengthOK(ReceivedLengthOK),
|
.TxDataOut(TxDataOut), .TxStartFrmOut(TxStartFrmOut),
|
.TxDataOut(TxDataOut), .TxStartFrmOut(TxStartFrmOut),
|
.TxEndFrmOut(TxEndFrmOut), .TxUsedDataOut(TxUsedData),
|
.TxEndFrmOut(TxEndFrmOut), .TxUsedDataOut(TxUsedData),
|
.TxDoneOut(TxDone), .TxAbortOut(TxAbort),
|
.TxDoneOut(TxDone), .TxAbortOut(TxAbort),
|
.WillSendControlFrame(WillSendControlFrame), .TxCtrlEndFrm(TxCtrlEndFrm),
|
.WillSendControlFrame(WillSendControlFrame), .TxCtrlEndFrm(TxCtrlEndFrm),
|
.ReceivedPauseFrm(ReceivedPauseFrm)
|
.ReceivedPauseFrm(ReceivedPauseFrm), .ControlFrmAddressOK(ControlFrmAddressOK),
|
|
.LoadRxStatus(LoadRxStatus), .SetPauseTimer(SetPauseTimer)
|
);
|
);
|
|
|
|
|
|
|
wire TxCarrierSense; // Synchronized CarrierSense (to Tx clock)
|
wire TxCarrierSense; // Synchronized CarrierSense (to Tx clock)
|
Line 618... |
Line 622... |
.ByteCntEq0(RxByteCntEq0), .ByteCntGreat2(RxByteCntGreat2), .ByteCntMaxFrame(RxByteCntMaxFrame),
|
.ByteCntEq0(RxByteCntEq0), .ByteCntGreat2(RxByteCntGreat2), .ByteCntMaxFrame(RxByteCntMaxFrame),
|
.CrcError(RxCrcError), .StateIdle(RxStateIdle), .StatePreamble(RxStatePreamble),
|
.CrcError(RxCrcError), .StateIdle(RxStateIdle), .StatePreamble(RxStatePreamble),
|
.StateSFD(RxStateSFD), .StateData(RxStateData),
|
.StateSFD(RxStateSFD), .StateData(RxStateData),
|
.MAC(r_MAC), .r_Pro(r_Pro), .r_Bro(r_Bro),
|
.MAC(r_MAC), .r_Pro(r_Pro), .r_Bro(r_Bro),
|
.r_HASH0(r_HASH0), .r_HASH1(r_HASH1), .RxAbort(RxAbort),
|
.r_HASH0(r_HASH0), .r_HASH1(r_HASH1), .RxAbort(RxAbort),
|
.AddressMiss(AddressMiss)
|
.AddressMiss(AddressMiss), .PassAll(r_PassAll), .ControlFrmAddressOK(ControlFrmAddressOK)
|
);
|
);
|
|
|
|
|
// MII Carrier Sense Synchronization
|
// MII Carrier Sense Synchronization
|
always @ (posedge mtx_clk_pad_i or posedge wb_rst_i)
|
always @ (posedge mtx_clk_pad_i or posedge wb_rst_i)
|
Line 768... |
Line 772... |
else
|
else
|
TPauseRq <= #Tp TxPauseRq_sync2 & (~TxPauseRq_sync3);
|
TPauseRq <= #Tp TxPauseRq_sync2 & (~TxPauseRq_sync3);
|
end
|
end
|
|
|
|
|
|
wire LatchedMRxErr;
|
|
reg RxAbort_latch;
|
|
reg RxAbort_sync1;
|
|
reg RxAbort_sync2;
|
|
reg RxAbort_wb;
|
|
reg RxAbortRst_sync1;
|
|
reg RxAbortRst;
|
|
|
|
// Synchronizing RxAbort to the WISHBONE clock
|
|
always @ (posedge mrx_clk_pad_i or posedge wb_rst_i)
|
|
begin
|
|
if(wb_rst_i)
|
|
RxAbort_latch <= #Tp 1'b0;
|
|
else if(RxAbort | (ShortFrame & ~r_RecSmall) | LatchedMRxErr & ~InvalidSymbol | (ReceivedPauseFrm & (~r_PassAll)))
|
|
RxAbort_latch <= #Tp 1'b1;
|
|
else if(RxAbortRst)
|
|
RxAbort_latch <= #Tp 1'b0;
|
|
end
|
|
|
|
always @ (posedge wb_clk_i or posedge wb_rst_i)
|
|
begin
|
|
if(wb_rst_i)
|
|
begin
|
|
RxAbort_sync1 <= #Tp 1'b0;
|
|
RxAbort_wb <= #Tp 1'b0;
|
|
RxAbort_wb <= #Tp 1'b0;
|
|
end
|
|
else
|
|
begin
|
|
RxAbort_sync1 <= #Tp RxAbort_latch;
|
|
RxAbort_wb <= #Tp RxAbort_sync1;
|
|
end
|
|
end
|
|
|
|
always @ (posedge mrx_clk_pad_i or posedge wb_rst_i)
|
|
begin
|
|
if(wb_rst_i)
|
|
begin
|
|
RxAbortRst_sync1 <= #Tp 1'b0;
|
|
RxAbortRst <= #Tp 1'b0;
|
|
end
|
|
else
|
|
begin
|
|
RxAbortRst_sync1 <= #Tp RxAbort_wb;
|
|
RxAbortRst <= #Tp RxAbortRst_sync1;
|
|
end
|
|
end
|
|
|
|
|
|
|
// Connecting Wishbone module
|
// Connecting Wishbone module
|
eth_wishbone wishbone
|
eth_wishbone wishbone
|
(
|
(
|
Line 801... |
Line 853... |
.TxDone(TxDone),
|
.TxDone(TxDone),
|
.PerPacketCrcEn(PerPacketCrcEn), .PerPacketPad(PerPacketPad),
|
.PerPacketCrcEn(PerPacketCrcEn), .PerPacketPad(PerPacketPad),
|
|
|
// Register
|
// Register
|
.r_TxEn(r_TxEn), .r_RxEn(r_RxEn), .r_TxBDNum(r_TxBDNum),
|
.r_TxEn(r_TxEn), .r_RxEn(r_RxEn), .r_TxBDNum(r_TxBDNum),
|
.TX_BD_NUM_Wr(TX_BD_NUM_Wr),
|
.TX_BD_NUM_Wr(TX_BD_NUM_Wr), .r_RxFlow(r_RxFlow),
|
|
|
//RX
|
//RX
|
.MRxClk(mrx_clk_pad_i), .RxData(RxData), .RxValid(RxValid),
|
.MRxClk(mrx_clk_pad_i), .RxData(RxData), .RxValid(RxValid),
|
.RxStartFrm(RxStartFrm), .RxEndFrm(RxEndFrm),
|
.RxStartFrm(RxStartFrm), .RxEndFrm(RxEndFrm),
|
.Busy_IRQ(Busy_IRQ), .RxE_IRQ(RxE_IRQ), .RxB_IRQ(RxB_IRQ),
|
.Busy_IRQ(Busy_IRQ), .RxE_IRQ(RxE_IRQ), .RxB_IRQ(RxB_IRQ),
|
.TxE_IRQ(TxE_IRQ), .TxB_IRQ(TxB_IRQ),
|
.TxE_IRQ(TxE_IRQ), .TxB_IRQ(TxB_IRQ),
|
|
|
.RxAbort(RxAbort | (ShortFrame & ~r_RecSmall) | LatchedMRxErr & ~InvalidSymbol | ReceivedPauseFrm & ~r_PassAll),
|
.RxAbort(RxAbort_wb),
|
|
|
.InvalidSymbol(InvalidSymbol), .LatchedCrcError(LatchedCrcError), .RxLength(RxByteCnt),
|
.InvalidSymbol(InvalidSymbol), .LatchedCrcError(LatchedCrcError), .RxLength(RxByteCnt),
|
.RxLateCollision(RxLateCollision), .ShortFrame(ShortFrame), .DribbleNibble(DribbleNibble),
|
.RxLateCollision(RxLateCollision), .ShortFrame(ShortFrame), .DribbleNibble(DribbleNibble),
|
.ReceivedPacketTooBig(ReceivedPacketTooBig), .LoadRxStatus(LoadRxStatus), .RetryCntLatched(RetryCntLatched),
|
.ReceivedPacketTooBig(ReceivedPacketTooBig), .LoadRxStatus(LoadRxStatus), .RetryCntLatched(RetryCntLatched),
|
.RetryLimit(RetryLimit), .LateCollLatched(LateCollLatched), .DeferLatched(DeferLatched),
|
.RetryLimit(RetryLimit), .LateCollLatched(LateCollLatched), .DeferLatched(DeferLatched),
|
.CarrierSenseLost(CarrierSenseLost),.ReceivedPacketGood(ReceivedPacketGood), .AddressMiss(AddressMiss)
|
.CarrierSenseLost(CarrierSenseLost),.ReceivedPacketGood(ReceivedPacketGood), .AddressMiss(AddressMiss),
|
|
.ReceivedPauseFrm(ReceivedPauseFrm)
|
|
|
`ifdef ETH_BIST
|
`ifdef ETH_BIST
|
,
|
,
|
.scanb_rst (scanb_rst),
|
.scanb_rst (scanb_rst),
|
.scanb_clk (scanb_clk),
|
.scanb_clk (scanb_clk),
|
Line 838... |
Line 891... |
.ReceiveEnd(ReceiveEnd), .ReceivedPacketGood(ReceivedPacketGood), .ReceivedLengthOK(ReceivedLengthOK),
|
.ReceiveEnd(ReceiveEnd), .ReceivedPacketGood(ReceivedPacketGood), .ReceivedLengthOK(ReceivedLengthOK),
|
.RxCrcError(RxCrcError), .MRxErr(MRxErr_Lb), .MRxDV(MRxDV_Lb),
|
.RxCrcError(RxCrcError), .MRxErr(MRxErr_Lb), .MRxDV(MRxDV_Lb),
|
.RxStateSFD(RxStateSFD), .RxStateData(RxStateData), .RxStatePreamble(RxStatePreamble),
|
.RxStateSFD(RxStateSFD), .RxStateData(RxStateData), .RxStatePreamble(RxStatePreamble),
|
.RxStateIdle(RxStateIdle), .Transmitting(Transmitting), .RxByteCnt(RxByteCnt),
|
.RxStateIdle(RxStateIdle), .Transmitting(Transmitting), .RxByteCnt(RxByteCnt),
|
.RxByteCntEq0(RxByteCntEq0), .RxByteCntGreat2(RxByteCntGreat2), .RxByteCntMaxFrame(RxByteCntMaxFrame),
|
.RxByteCntEq0(RxByteCntEq0), .RxByteCntGreat2(RxByteCntGreat2), .RxByteCntMaxFrame(RxByteCntMaxFrame),
|
.ReceivedPauseFrm(ReceivedPauseFrm),.InvalidSymbol(InvalidSymbol),
|
.InvalidSymbol(InvalidSymbol),
|
.MRxD(MRxD_Lb), .LatchedCrcError(LatchedCrcError), .Collision(mcoll_pad_i),
|
.MRxD(MRxD_Lb), .LatchedCrcError(LatchedCrcError), .Collision(mcoll_pad_i),
|
.CollValid(r_CollValid), .RxLateCollision(RxLateCollision), .r_RecSmall(r_RecSmall),
|
.CollValid(r_CollValid), .RxLateCollision(RxLateCollision), .r_RecSmall(r_RecSmall),
|
.r_MinFL(r_MinFL), .r_MaxFL(r_MaxFL), .ShortFrame(ShortFrame),
|
.r_MinFL(r_MinFL), .r_MaxFL(r_MaxFL), .ShortFrame(ShortFrame),
|
.DribbleNibble(DribbleNibble), .ReceivedPacketTooBig(ReceivedPacketTooBig), .r_HugEn(r_HugEn),
|
.DribbleNibble(DribbleNibble), .ReceivedPacketTooBig(ReceivedPacketTooBig), .r_HugEn(r_HugEn),
|
.LoadRxStatus(LoadRxStatus), .RetryCnt(RetryCnt), .StartTxDone(StartTxDone),
|
.LoadRxStatus(LoadRxStatus), .RetryCnt(RetryCnt), .StartTxDone(StartTxDone),
|