URL
https://opencores.org/ocsvn/ethmac/ethmac/trunk
Subversion Repositories ethmac
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 271 to Rev 272
- ↔ Reverse comparison
Rev 271 → Rev 272
/trunk/rtl/verilog/eth_wishbone.v
41,6 → 41,10
// CVS Revision History |
// |
// $Log: not supported by cvs2svn $ |
// Revision 1.49 2003/01/21 12:09:40 mohor |
// When receiving normal data frame and RxFlow control was switched on, RXB |
// interrupt was not set. |
// |
// Revision 1.48 2003/01/20 12:05:26 mohor |
// When in full duplex, transmit was sometimes blocked. Fixed. |
// |
244,7 → 248,7
PerPacketPad, |
|
//RX |
MRxClk, RxData, RxValid, RxStartFrm, RxEndFrm, RxAbort, |
MRxClk, RxData, RxValid, RxStartFrm, RxEndFrm, RxAbort, RxStatusWriteLatched_sync2, |
|
// Register |
r_TxEn, r_RxEn, r_TxBDNum, TX_BD_NUM_Wr, r_RxFlow, r_PassAll, |
351,6 → 355,7
input RxStartFrm; // |
input RxEndFrm; // |
input RxAbort; // This signal is set when address doesn't match. |
output RxStatusWriteLatched_sync2; |
|
//Register |
input r_TxEn; // Transmit enable |
417,7 → 422,6
reg TxBDReady; |
|
reg RxBDRead; |
wire RxStatusWrite; |
|
reg [31:0] TxDataLatched; |
reg [1:0] TxByteCnt; |
485,6 → 489,8
wire SetGotData; |
wire GotDataEvaluate; |
|
wire RxStatusWrite; |
|
reg WB_ACK_O; |
|
wire [8:0] RxStatusIn; |
722,11 → 728,11
if(Reset) |
BlockingTxStatusWrite <=#Tp 1'b0; |
else |
if(~TxDone_wb & ~TxAbort_wb) |
BlockingTxStatusWrite <=#Tp 1'b0; |
else |
if(TxStatusWrite) |
BlockingTxStatusWrite <=#Tp 1'b1; |
else |
if(~TxDone_wb & ~TxAbort_wb) |
BlockingTxStatusWrite <=#Tp 1'b0; |
end |
|
|
1432,11 → 1438,12
if(Reset) |
TxAbortPacket_NotCleared <=#Tp 1'b0; |
else |
if(TxEn & TxEn_q & TxAbortPacket_NotCleared) |
TxAbortPacket_NotCleared <=#Tp 1'b0; |
else |
if(TxAbort_wb & !tx_burst_en & MasterWbTX & MasterAccessFinished | |
TxAbort_wb & !MasterWbTX) |
TxAbortPacket_NotCleared <=#Tp 1'b1; |
else |
TxAbortPacket_NotCleared <=#Tp 1'b0; |
end |
|
|
1472,11 → 1479,12
if(Reset) |
TxRetryPacket_NotCleared <=#Tp 1'b0; |
else |
if(StartTxBDRead) |
TxRetryPacket_NotCleared <=#Tp 1'b0; |
else |
if(TxRetry_wb & !tx_burst_en & MasterWbTX & MasterAccessFinished | |
TxRetry_wb & !MasterWbTX) |
TxRetryPacket_NotCleared <=#Tp 1'b1; |
else |
TxRetryPacket_NotCleared <=#Tp 1'b0; |
end |
|
|
1512,11 → 1520,12
if(Reset) |
TxDonePacket_NotCleared <=#Tp 1'b0; |
else |
if(TxEn & TxEn_q & TxDonePacket_NotCleared) |
TxDonePacket_NotCleared <=#Tp 1'b0; |
else |
if(TxDone_wb & !tx_burst_en & MasterWbTX & MasterAccessFinished | |
TxDone_wb & !MasterWbTX) |
TxDonePacket_NotCleared <=#Tp 1'b1; |
else |
TxDonePacket_NotCleared <=#Tp 1'b0; |
end |
|
|
2392,6 → 2401,60
// mode and is not an error |
assign RxError = (|RxStatusInLatched[6:3]) | (|RxStatusInLatched[1:0]); |
|
|
|
reg RxStatusWriteLatched; |
reg RxStatusWriteLatched_sync1; |
reg RxStatusWriteLatched_sync2; |
reg RxStatusWriteLatched_syncb1; |
reg RxStatusWriteLatched_syncb2; |
|
|
// Latching and synchronizing RxStatusWrite signal. This signal is used for clearing the ReceivedPauseFrm signal |
always @ (posedge WB_CLK_I or posedge Reset) |
begin |
if(Reset) |
RxStatusWriteLatched <=#Tp 1'b0; |
else |
if(RxStatusWriteLatched_syncb2) |
RxStatusWriteLatched <=#Tp 1'b0; |
else |
if(RxStatusWrite) |
RxStatusWriteLatched <=#Tp 1'b1; |
end |
|
|
always @ (posedge MRxClk or posedge Reset) |
begin |
if(Reset) |
begin |
RxStatusWriteLatched_sync1 <=#Tp 1'b0; |
RxStatusWriteLatched_sync2 <=#Tp 1'b0; |
end |
else |
begin |
RxStatusWriteLatched_sync1 <=#Tp RxStatusWriteLatched; |
RxStatusWriteLatched_sync2 <=#Tp RxStatusWriteLatched_sync1; |
end |
end |
|
|
always @ (posedge WB_CLK_I or posedge Reset) |
begin |
if(Reset) |
begin |
RxStatusWriteLatched_syncb1 <=#Tp 1'b0; |
RxStatusWriteLatched_syncb2 <=#Tp 1'b0; |
end |
else |
begin |
RxStatusWriteLatched_syncb1 <=#Tp RxStatusWriteLatched_sync2; |
RxStatusWriteLatched_syncb2 <=#Tp RxStatusWriteLatched_syncb1; |
end |
end |
|
|
|
// Tx Done Interrupt |
always @ (posedge WB_CLK_I or posedge Reset) |
begin |
/trunk/rtl/verilog/eth_receivecontrol.v
41,6 → 41,10
// CVS Revision History |
// |
// $Log: not supported by cvs2svn $ |
// Revision 1.4 2002/11/22 01:57:06 mohor |
// Rx Flow control fixed. CF flag added to the RX buffer descriptor. RxAbort |
// synchronized. |
// |
// Revision 1.3 2002/01/23 10:28:16 mohor |
// Link in the header changed. |
// |
77,7 → 81,7
RxEndFrm, RxFlow, ReceiveEnd, MAC, DlyCrcEn, TxDoneIn, |
TxAbortIn, TxStartFrmOut, ReceivedLengthOK, ReceivedPacketGood, |
TxUsedDataOutDetected, Pause, ReceivedPauseFrm, AddressOK, |
LoadRxStatus, SetPauseTimer |
RxStatusWriteLatched_sync2, r_PassAll, SetPauseTimer |
); |
|
parameter Tp = 1; |
101,7 → 105,8
input ReceivedLengthOK; |
input ReceivedPacketGood; |
input TxUsedDataOutDetected; |
input LoadRxStatus; |
input RxStatusWriteLatched_sync2; |
input r_PassAll; |
|
output Pause; |
output ReceivedPauseFrm; |
108,6 → 113,7
output AddressOK; |
output SetPauseTimer; |
|
|
reg Pause; |
reg AddressOK; // Multicast or unicast address detected |
reg TypeLengthOK; // Type/Length field contains 0x8808 |
209,7 → 215,7
if(RxReset) |
OpCodeOK <= #Tp 1'b0; |
else |
if(RxStartFrm) |
if(ByteCntEq16) |
OpCodeOK <= #Tp 1'b0; |
else |
begin |
421,11 → 427,11
if(RxReset) |
ReceivedPauseFrm <=#Tp 1'b0; |
else |
if(RxStatusWriteLatched_sync2 & r_PassAll | ReceivedPauseFrm & (~r_PassAll)) |
ReceivedPauseFrm <=#Tp 1'b0; |
else |
if(ByteCntEq16 & TypeLengthOK & OpCodeOK) |
ReceivedPauseFrm <=#Tp 1'b1; |
else |
if(RxStartFrm) |
ReceivedPauseFrm <=#Tp 1'b0; |
end |
|
|
/trunk/rtl/verilog/eth_maccontrol.v
41,6 → 41,10
// CVS Revision History |
// |
// $Log: not supported by cvs2svn $ |
// Revision 1.6 2002/11/22 01:57:06 mohor |
// Rx Flow control fixed. CF flag added to the RX buffer descriptor. RxAbort |
// synchronized. |
// |
// Revision 1.5 2002/11/21 00:14:39 mohor |
// TxDone and TxAbort changed so they're not propagated to the wishbone |
// module when control frame is transmitted. |
86,7 → 90,7
ReceivedPacketGood, ReceivedLengthOK, TxFlow, RxFlow, DlyCrcEn, TxPauseTV, |
MAC, PadIn, PadOut, CrcEnIn, CrcEnOut, TxDataOut, TxStartFrmOut, TxEndFrmOut, |
TxDoneOut, TxAbortOut, TxUsedDataOut, WillSendControlFrame, TxCtrlEndFrm, |
ReceivedPauseFrm, ControlFrmAddressOK, LoadRxStatus, SetPauseTimer |
ReceivedPauseFrm, ControlFrmAddressOK, SetPauseTimer, r_PassAll, RxStatusWriteLatched_sync2 |
); |
|
|
118,7 → 122,8
input DlyCrcEn; // Delayed CRC enabled (from registers) |
input [15:0] TxPauseTV; // Transmit Pause Timer Value (from registers) |
input [47:0] MAC; // MAC address (from registers) |
input LoadRxStatus; |
input RxStatusWriteLatched_sync2; |
input r_PassAll; |
|
output [7:0] TxDataOut; // Transmit Packet Data (to TxEthMAC) |
output TxStartFrmOut; // Transmit packet start frame (output to TxEthMAC) |
248,7 → 253,7
.TxAbortIn(TxAbortIn), .TxStartFrmOut(TxStartFrmOut), .ReceivedLengthOK(ReceivedLengthOK), |
.ReceivedPacketGood(ReceivedPacketGood), .TxUsedDataOutDetected(TxUsedDataOutDetected), |
.Pause(Pause), .ReceivedPauseFrm(ReceivedPauseFrm), .AddressOK(ControlFrmAddressOK), |
.LoadRxStatus(LoadRxStatus), .SetPauseTimer(SetPauseTimer) |
.r_PassAll(r_PassAll), .RxStatusWriteLatched_sync2(RxStatusWriteLatched_sync2), .SetPauseTimer(SetPauseTimer) |
); |
|
|
/trunk/rtl/verilog/eth_top.v
41,6 → 41,10
// CVS Revision History |
// |
// $Log: not supported by cvs2svn $ |
// Revision 1.44 2003/01/21 12:09:40 mohor |
// When receiving normal data frame and RxFlow control was switched on, RXB |
// interrupt was not set. |
// |
// Revision 1.43 2002/11/22 01:57:06 mohor |
// Rx Flow control fixed. CF flag added to the RX buffer descriptor. RxAbort |
// synchronized. |
549,7 → 553,8
.TxDoneOut(TxDone), .TxAbortOut(TxAbort), |
.WillSendControlFrame(WillSendControlFrame), .TxCtrlEndFrm(TxCtrlEndFrm), |
.ReceivedPauseFrm(ReceivedPauseFrm), .ControlFrmAddressOK(ControlFrmAddressOK), |
.LoadRxStatus(LoadRxStatus), .SetPauseTimer(SetPauseTimer) |
.SetPauseTimer(SetPauseTimer), |
.RxStatusWriteLatched_sync2(RxStatusWriteLatched_sync2), .r_PassAll(r_PassAll) |
); |
|
|
867,7 → 872,7
.Busy_IRQ(Busy_IRQ), .RxE_IRQ(RxE_IRQ), .RxB_IRQ(RxB_IRQ), |
.TxE_IRQ(TxE_IRQ), .TxB_IRQ(TxB_IRQ), |
|
.RxAbort(RxAbort_wb), |
.RxAbort(RxAbort_wb), .RxStatusWriteLatched_sync2(RxStatusWriteLatched_sync2), |
|
.InvalidSymbol(InvalidSymbol), .LatchedCrcError(LatchedCrcError), .RxLength(RxByteCnt), |
.RxLateCollision(RxLateCollision), .ShortFrame(ShortFrame), .DribbleNibble(DribbleNibble), |