Line 39... |
Line 39... |
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
// CVS Revision History
|
// CVS Revision History
|
//
|
//
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.27 2002/07/25 18:15:37 mohor
|
|
// RxAbort changed. Packets received with MRxErr (from PHY) are also
|
|
// aborted.
|
|
//
|
// Revision 1.26 2002/07/17 18:51:50 mohor
|
// Revision 1.26 2002/07/17 18:51:50 mohor
|
// EXTERNAL_DMA removed. External DMA not supported.
|
// EXTERNAL_DMA removed. External DMA not supported.
|
//
|
//
|
// Revision 1.25 2002/05/03 10:15:50 mohor
|
// Revision 1.25 2002/05/03 10:15:50 mohor
|
// Outputs registered. Reset changed for eth_wishbone module.
|
// Outputs registered. Reset changed for eth_wishbone module.
|
Line 259... |
Line 263... |
wire TxUnderRun;
|
wire TxUnderRun;
|
wire TxDone;
|
wire TxDone;
|
wire [5:0] CollValid;
|
wire [5:0] CollValid;
|
|
|
|
|
|
reg WillSendControlFrame_sync1;
|
|
reg WillSendControlFrame_sync2;
|
|
reg WillSendControlFrame_sync3;
|
|
reg RstTxPauseRq;
|
|
|
|
|
// Connecting Miim module
|
// Connecting Miim module
|
eth_miim miim1
|
eth_miim miim1
|
(
|
(
|
Line 305... |
Line 313... |
wire [7:0] r_TxBDNum; // Receive buffer descriptor number
|
wire [7:0] r_TxBDNum; // Receive buffer descriptor number
|
wire [6:0] r_IPGT; //
|
wire [6:0] r_IPGT; //
|
wire [6:0] r_IPGR1; //
|
wire [6:0] r_IPGR1; //
|
wire [6:0] r_IPGR2; //
|
wire [6:0] r_IPGR2; //
|
wire [5:0] r_CollValid; //
|
wire [5:0] r_CollValid; //
|
wire r_TPauseRq; // Transmit PAUSE request pulse
|
wire [15:0] r_TxPauseTV; // Transmit PAUSE value
|
|
wire r_TxPauseRq; // Transmit PAUSE request
|
|
|
wire [3:0] r_MaxRet; //
|
wire [3:0] r_MaxRet; //
|
wire r_NoBckof; //
|
wire r_NoBckof; //
|
wire r_ExDfrEn; //
|
wire r_ExDfrEn; //
|
wire TX_BD_NUM_Wr; // Write enable that writes RX_BD_NUM to the registers.
|
wire TX_BD_NUM_Wr; // Write enable that writes RX_BD_NUM to the registers.
|
wire TPauseRq; // Sinhronized Tx PAUSE request
|
|
wire [15:0] TxPauseTV; // Tx PAUSE timer value
|
|
wire r_TxFlow; // Tx flow control enable
|
wire r_TxFlow; // Tx flow control enable
|
wire r_IFG; // Minimum interframe gap for incoming packets
|
wire r_IFG; // Minimum interframe gap for incoming packets
|
|
|
wire TxB_IRQ; // Interrupt Tx Buffer
|
wire TxB_IRQ; // Interrupt Tx Buffer
|
wire TxE_IRQ; // Interrupt Tx Error
|
wire TxE_IRQ; // Interrupt Tx Error
|
wire RxB_IRQ; // Interrupt Rx Buffer
|
wire RxB_IRQ; // Interrupt Rx Buffer
|
wire RxE_IRQ; // Interrupt Rx Error
|
wire RxE_IRQ; // Interrupt Rx Error
|
wire Busy_IRQ; // Interrupt Busy (lack of buffers)
|
wire Busy_IRQ; // Interrupt Busy (lack of buffers)
|
wire TxC_IRQ; // Interrupt Tx Control Frame
|
|
wire RxC_IRQ; // Interrupt Rx Control Frame
|
|
|
|
wire DWord;
|
wire DWord;
|
wire BDAck;
|
wire BDAck;
|
wire [31:0] BD_WB_DAT_O; // wb_dat_o that comes from the Wishbone module (for buffer descriptors read/write)
|
wire [31:0] BD_WB_DAT_O; // wb_dat_o that comes from the Wishbone module (for buffer descriptors read/write)
|
wire BDCs; // Buffer descriptor CS
|
wire BDCs; // Buffer descriptor CS
|
Line 376... |
Line 381... |
temp_wb_err_o_reg <=#Tp temp_wb_err_o & ~temp_wb_err_o_reg;
|
temp_wb_err_o_reg <=#Tp temp_wb_err_o & ~temp_wb_err_o_reg;
|
end
|
end
|
end
|
end
|
`endif
|
`endif
|
|
|
|
wire [31:0] reg1, reg2, reg3, reg4;
|
|
|
// Connecting Ethernet registers
|
// Connecting Ethernet registers
|
eth_registers ethreg1
|
eth_registers ethreg1
|
(
|
(
|
.DataIn(wb_dat_i), .Address(wb_adr_i[9:2]), .Rw(wb_we_i),
|
.DataIn(wb_dat_i), .Address(wb_adr_i[9:2]), .Rw(wb_we_i),
|
Line 391... |
Line 396... |
.r_ExDfrEn(r_ExDfrEn), .r_NoBckof(r_NoBckof), .r_LoopBck(r_LoopBck),
|
.r_ExDfrEn(r_ExDfrEn), .r_NoBckof(r_NoBckof), .r_LoopBck(r_LoopBck),
|
.r_IFG(r_IFG), .r_Pro(r_Pro), .r_Iam(),
|
.r_IFG(r_IFG), .r_Pro(r_Pro), .r_Iam(),
|
.r_Bro(r_Bro), .r_NoPre(r_NoPre), .r_TxEn(r_TxEn),
|
.r_Bro(r_Bro), .r_NoPre(r_NoPre), .r_TxEn(r_TxEn),
|
.r_RxEn(r_RxEn), .Busy_IRQ(Busy_IRQ), .RxE_IRQ(RxE_IRQ),
|
.r_RxEn(r_RxEn), .Busy_IRQ(Busy_IRQ), .RxE_IRQ(RxE_IRQ),
|
.RxB_IRQ(RxB_IRQ), .TxE_IRQ(TxE_IRQ), .TxB_IRQ(TxB_IRQ),
|
.RxB_IRQ(RxB_IRQ), .TxE_IRQ(TxE_IRQ), .TxB_IRQ(TxB_IRQ),
|
.TxC_IRQ(TxC_IRQ), .RxC_IRQ(RxC_IRQ), .r_IPGT(r_IPGT),
|
.r_IPGT(r_IPGT),
|
.r_IPGR1(r_IPGR1), .r_IPGR2(r_IPGR2), .r_MinFL(r_MinFL),
|
.r_IPGR1(r_IPGR1), .r_IPGR2(r_IPGR2), .r_MinFL(r_MinFL),
|
.r_MaxFL(r_MaxFL), .r_MaxRet(r_MaxRet), .r_CollValid(r_CollValid),
|
.r_MaxFL(r_MaxFL), .r_MaxRet(r_MaxRet), .r_CollValid(r_CollValid),
|
.r_TxFlow(r_TxFlow), .r_RxFlow(r_RxFlow), .r_PassAll(r_PassAll),
|
.r_TxFlow(r_TxFlow), .r_RxFlow(r_RxFlow), .r_PassAll(r_PassAll),
|
.r_MiiMRst(r_MiiMRst), .r_MiiNoPre(r_MiiNoPre), .r_ClkDiv(r_ClkDiv),
|
.r_MiiMRst(r_MiiMRst), .r_MiiNoPre(r_MiiNoPre), .r_ClkDiv(r_ClkDiv),
|
.r_WCtrlData(r_WCtrlData), .r_RStat(r_RStat), .r_ScanStat(r_ScanStat),
|
.r_WCtrlData(r_WCtrlData), .r_RStat(r_RStat), .r_ScanStat(r_ScanStat),
|
.r_RGAD(r_RGAD), .r_FIAD(r_FIAD), .r_CtrlData(r_CtrlData),
|
.r_RGAD(r_RGAD), .r_FIAD(r_FIAD), .r_CtrlData(r_CtrlData),
|
.NValid_stat(NValid_stat), .Busy_stat(Busy_stat),
|
.NValid_stat(NValid_stat), .Busy_stat(Busy_stat),
|
.LinkFail(LinkFail), .r_MAC(r_MAC), .WCtrlDataStart(WCtrlDataStart),
|
.LinkFail(LinkFail), .r_MAC(r_MAC), .WCtrlDataStart(WCtrlDataStart),
|
.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_HASH0(r_HASH0), .r_HASH1(r_HASH1), .r_TxPauseRq(r_TxPauseRq),
|
|
.r_TxPauseTV(r_TxPauseTV), .RstTxPauseRq(RstTxPauseRq), .TxCtrlEndFrm(TxCtrlEndFrm),
|
|
.StartTxDone(StartTxDone), .TxClk(mtx_clk_pad_i), .RxClk(mrx_clk_pad_i),
|
|
.ReceivedPauseFrm(ReceivedPauseFrm),
|
|
|
|
.reg1(reg1), .reg2(reg2), .reg3(reg3), .reg4(reg4)
|
|
|
);
|
);
|
|
|
|
|
|
|
wire [7:0] RxData;
|
wire [7:0] RxData;
|
Line 417... |
Line 428... |
|
|
wire WillTransmit; // Will transmit (to RxEthMAC)
|
wire WillTransmit; // Will transmit (to RxEthMAC)
|
wire ResetCollision; // Reset Collision (for synchronizing collision)
|
wire ResetCollision; // Reset Collision (for synchronizing collision)
|
wire [7:0] TxDataOut; // Transmit Packet Data (to TxEthMAC)
|
wire [7:0] TxDataOut; // Transmit Packet Data (to TxEthMAC)
|
wire WillSendControlFrame;
|
wire WillSendControlFrame;
|
wire TxCtrlEndFrm;
|
|
wire ReceivedPauseFrm;
|
|
wire ReceiveEnd;
|
wire ReceiveEnd;
|
wire ReceivedPacketGood;
|
wire ReceivedPacketGood;
|
wire ReceivedLengthOK;
|
wire ReceivedLengthOK;
|
wire InvalidSymbol;
|
wire InvalidSymbol;
|
wire LatchedCrcError;
|
wire LatchedCrcError;
|
wire RxLateCollision;
|
wire RxLateCollision;
|
wire [3:0] RetryCntLatched;
|
wire [3:0] RetryCntLatched;
|
wire [3:0] RetryCnt;
|
wire [3:0] RetryCnt;
|
wire StartTxDone;
|
|
wire StartTxAbort;
|
wire StartTxAbort;
|
wire MaxCollisionOccured;
|
wire MaxCollisionOccured;
|
wire RetryLimit;
|
wire RetryLimit;
|
wire StatePreamble;
|
wire StatePreamble;
|
wire [1:0] StateData;
|
wire [1:0] StateData;
|
|
|
// Connecting MACControl
|
// Connecting MACControl
|
eth_maccontrol maccontrol1
|
eth_maccontrol maccontrol1
|
(
|
(
|
.MTxClk(mtx_clk_pad_i), .TPauseRq(TPauseRq),
|
.MTxClk(mtx_clk_pad_i), .TPauseRq(r_TxPauseRq),
|
.TxPauseTV(TxPauseTV), .TxDataIn(TxData),
|
.TxPauseTV(r_TxPauseTV), .TxDataIn(TxData),
|
.TxStartFrmIn(TxStartFrm), .TxEndFrmIn(TxEndFrm),
|
.TxStartFrmIn(TxStartFrm), .TxEndFrmIn(TxEndFrm),
|
.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),
|
Line 620... |
Line 628... |
RxEnSync <= #Tp r_RxEn;
|
RxEnSync <= #Tp r_RxEn;
|
end
|
end
|
|
|
|
|
|
|
|
// Synchronizing WillSendControlFrame to WB_CLK;
|
|
always @ (posedge wb_clk_i or posedge wb_rst_i)
|
|
begin
|
|
if(wb_rst_i)
|
|
WillSendControlFrame_sync1 <= 1'b0;
|
|
else
|
|
WillSendControlFrame_sync1 <=#Tp WillSendControlFrame;
|
|
end
|
|
|
|
always @ (posedge wb_clk_i or posedge wb_rst_i)
|
|
begin
|
|
if(wb_rst_i)
|
|
WillSendControlFrame_sync2 <= 1'b0;
|
|
else
|
|
WillSendControlFrame_sync2 <=#Tp WillSendControlFrame_sync1;
|
|
end
|
|
|
|
always @ (posedge wb_clk_i or posedge wb_rst_i)
|
|
begin
|
|
if(wb_rst_i)
|
|
WillSendControlFrame_sync3 <= 1'b0;
|
|
else
|
|
WillSendControlFrame_sync3 <=#Tp WillSendControlFrame_sync2;
|
|
end
|
|
|
|
always @ (posedge wb_clk_i or posedge wb_rst_i)
|
|
begin
|
|
if(wb_rst_i)
|
|
RstTxPauseRq <= 1'b0;
|
|
else
|
|
RstTxPauseRq <=#Tp WillSendControlFrame_sync2 & ~WillSendControlFrame_sync3;
|
|
end
|
|
|
|
|
// Connecting Wishbone module
|
// Connecting Wishbone module
|
eth_wishbone wishbone
|
eth_wishbone wishbone
|
(
|
(
|
.WB_CLK_I(wb_clk_i), .WB_DAT_I(wb_dat_i),
|
.WB_CLK_I(wb_clk_i), .WB_DAT_I(wb_dat_i),
|
Line 642... |
Line 683... |
|
|
//TX
|
//TX
|
.MTxClk(mtx_clk_pad_i), .TxStartFrm(TxStartFrm), .TxEndFrm(TxEndFrm),
|
.MTxClk(mtx_clk_pad_i), .TxStartFrm(TxStartFrm), .TxEndFrm(TxEndFrm),
|
.TxUsedData(TxUsedData), .TxData(TxData),
|
.TxUsedData(TxUsedData), .TxData(TxData),
|
.TxRetry(TxRetry), .TxAbort(TxAbort), .TxUnderRun(TxUnderRun),
|
.TxRetry(TxRetry), .TxAbort(TxAbort), .TxUnderRun(TxUnderRun),
|
.TxDone(TxDone), .TPauseRq(TPauseRq), .TxPauseTV(TxPauseTV),
|
.TxDone(TxDone),
|
.PerPacketCrcEn(PerPacketCrcEn), .PerPacketPad(PerPacketPad), .WillSendControlFrame(WillSendControlFrame),
|
.PerPacketCrcEn(PerPacketCrcEn), .PerPacketPad(PerPacketPad),
|
.TxCtrlEndFrm(TxCtrlEndFrm),
|
|
|
|
// 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), .r_RecSmall(r_RecSmall),
|
.TX_BD_NUM_Wr(TX_BD_NUM_Wr),
|
|
|
//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), .TxC_IRQ(TxC_IRQ),
|
.TxE_IRQ(TxE_IRQ), .TxB_IRQ(TxB_IRQ),
|
.RxC_IRQ(RxC_IRQ),
|
|
|
|
.RxAbort(RxAbort | (ShortFrame & ~r_RecSmall) | LatchedMRxErr & ~InvalidSymbol),
|
.RxAbort(RxAbort | (ShortFrame & ~r_RecSmall) | LatchedMRxErr & ~InvalidSymbol | ReceivedPauseFrm & ~r_PassAll),
|
|
|
.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)
|
.CarrierSenseLost(CarrierSenseLost),.ReceivedPacketGood(ReceivedPacketGood),
|
|
|
|
|
|
.reg1(reg1), .reg2(reg2), .reg3(reg3), .reg4(reg4)
|
|
|
);
|
);
|
|
|
|
|
|
|
Line 691... |
Line 730... |
.StartTxAbort(StartTxAbort), .RetryCntLatched(RetryCntLatched), .MTxClk(mtx_clk_pad_i),
|
.StartTxAbort(StartTxAbort), .RetryCntLatched(RetryCntLatched), .MTxClk(mtx_clk_pad_i),
|
.MaxCollisionOccured(MaxCollisionOccured), .RetryLimit(RetryLimit), .LateCollision(LateCollision),
|
.MaxCollisionOccured(MaxCollisionOccured), .RetryLimit(RetryLimit), .LateCollision(LateCollision),
|
.LateCollLatched(LateCollLatched), .StartDefer(StartDefer), .DeferLatched(DeferLatched),
|
.LateCollLatched(LateCollLatched), .StartDefer(StartDefer), .DeferLatched(DeferLatched),
|
.TxStartFrm(TxStartFrmOut), .StatePreamble(StatePreamble), .StateData(StateData),
|
.TxStartFrm(TxStartFrmOut), .StatePreamble(StatePreamble), .StateData(StateData),
|
.CarrierSense(CarrierSense_Tx2), .CarrierSenseLost(CarrierSenseLost), .TxUsedData(TxUsedDataIn),
|
.CarrierSense(CarrierSense_Tx2), .CarrierSenseLost(CarrierSenseLost), .TxUsedData(TxUsedDataIn),
|
.LatchedMRxErr(LatchedMRxErr)
|
.LatchedMRxErr(LatchedMRxErr), .Loopback(r_LoopBck)
|
);
|
);
|
|
|
|
|
endmodule
|
endmodule
|
|
|
No newline at end of file
|
No newline at end of file
|