Line 39... |
Line 39... |
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
// CVS Revision History
|
// CVS Revision History
|
//
|
//
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.36 2002/10/18 17:04:20 tadejm
|
|
// Changed BIST scan signals.
|
|
//
|
// Revision 1.35 2002/10/11 13:36:58 mohor
|
// Revision 1.35 2002/10/11 13:36:58 mohor
|
// Typo error fixed. (When using Bist)
|
// Typo error fixed. (When using Bist)
|
//
|
//
|
// Revision 1.34 2002/10/10 16:49:50 mohor
|
// Revision 1.34 2002/10/10 16:49:50 mohor
|
// Signals for WISHBONE B3 compliant interface added.
|
// Signals for WISHBONE B3 compliant interface added.
|
Line 406... |
Line 409... |
assign RegCs = wb_stb_i & wb_cyc_i & DWord & ~wb_adr_i[11] & ~wb_adr_i[10]; // 0x0 - 0x3FF
|
assign RegCs = wb_stb_i & wb_cyc_i & DWord & ~wb_adr_i[11] & ~wb_adr_i[10]; // 0x0 - 0x3FF
|
assign BDCs = wb_stb_i & wb_cyc_i & DWord & ~wb_adr_i[11] & wb_adr_i[10]; // 0x400 - 0x7FF
|
assign BDCs = wb_stb_i & wb_cyc_i & DWord & ~wb_adr_i[11] & wb_adr_i[10]; // 0x400 - 0x7FF
|
assign CsMiss = wb_stb_i & wb_cyc_i & DWord & wb_adr_i[11]; // 0x800 - 0xfFF
|
assign CsMiss = wb_stb_i & wb_cyc_i & DWord & wb_adr_i[11]; // 0x800 - 0xfFF
|
assign temp_wb_ack_o = RegCs | BDAck;
|
assign temp_wb_ack_o = RegCs | BDAck;
|
assign temp_wb_dat_o = (RegCs & ~wb_we_i)? RegDataOut : BD_WB_DAT_O;
|
assign temp_wb_dat_o = (RegCs & ~wb_we_i)? RegDataOut : BD_WB_DAT_O;
|
assign temp_wb_err_o = wb_stb_i & wb_cyc_i & (~DWord | BDCs & r_Rst | CsMiss);
|
//assign temp_wb_err_o = wb_stb_i & wb_cyc_i & (~DWord | BDCs & r_Rst | CsMiss);
|
|
assign temp_wb_err_o = wb_stb_i & wb_cyc_i & (~DWord | CsMiss);
|
|
|
`ifdef ETH_REGISTERED_OUTPUTS
|
`ifdef ETH_REGISTERED_OUTPUTS
|
assign wb_ack_o = temp_wb_ack_o_reg;
|
assign wb_ack_o = temp_wb_ack_o_reg;
|
assign wb_dat_o[31:0] = temp_wb_dat_o_reg;
|
assign wb_dat_o[31:0] = temp_wb_dat_o_reg;
|
assign wb_err_o = temp_wb_err_o_reg;
|
assign wb_err_o = temp_wb_err_o_reg;
|
Line 511... |
Line 515... |
.ReceiveEnd(ReceiveEnd), .ReceivedPacketGood(ReceivedPacketGood),
|
.ReceiveEnd(ReceiveEnd), .ReceivedPacketGood(ReceivedPacketGood),
|
.PassAll(r_PassAll), .TxFlow(r_TxFlow),
|
.PassAll(r_PassAll), .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(r_Rst),
|
.CrcEnOut(CrcEnOut), .TxReset(wb_rst_i),
|
.RxReset(r_Rst), .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)
|
Line 552... |
Line 556... |
|
|
|
|
// Connecting TxEthMAC
|
// Connecting TxEthMAC
|
eth_txethmac txethmac1
|
eth_txethmac txethmac1
|
(
|
(
|
.MTxClk(mtx_clk_pad_i), .Reset(r_Rst), .CarrierSense(TxCarrierSense),
|
.MTxClk(mtx_clk_pad_i), .Reset(wb_rst_i), .CarrierSense(TxCarrierSense),
|
.Collision(Collision), .TxData(TxDataOut), .TxStartFrm(TxStartFrmOut),
|
.Collision(Collision), .TxData(TxDataOut), .TxStartFrm(TxStartFrmOut),
|
.TxUnderRun(TxUnderRun), .TxEndFrm(TxEndFrmOut), .Pad(PadOut),
|
.TxUnderRun(TxUnderRun), .TxEndFrm(TxEndFrmOut), .Pad(PadOut),
|
.MinFL(r_MinFL), .CrcEn(CrcEnOut), .FullD(r_FullD),
|
.MinFL(r_MinFL), .CrcEn(CrcEnOut), .FullD(r_FullD),
|
.HugEn(r_HugEn), .DlyCrcEn(r_DlyCrcEn), .IPGT(r_IPGT),
|
.HugEn(r_HugEn), .DlyCrcEn(r_DlyCrcEn), .IPGT(r_IPGT),
|
.IPGR1(r_IPGR1), .IPGR2(r_IPGR2), .CollValid(r_CollValid),
|
.IPGR1(r_IPGR1), .IPGR2(r_IPGR2), .CollValid(r_CollValid),
|
Line 588... |
Line 592... |
// Connecting RxEthMAC
|
// Connecting RxEthMAC
|
eth_rxethmac rxethmac1
|
eth_rxethmac rxethmac1
|
(
|
(
|
.MRxClk(mrx_clk_pad_i), .MRxDV(MRxDV_Lb), .MRxD(MRxD_Lb),
|
.MRxClk(mrx_clk_pad_i), .MRxDV(MRxDV_Lb), .MRxD(MRxD_Lb),
|
.Transmitting(Transmitting), .HugEn(r_HugEn), .DlyCrcEn(r_DlyCrcEn),
|
.Transmitting(Transmitting), .HugEn(r_HugEn), .DlyCrcEn(r_DlyCrcEn),
|
.MaxFL(r_MaxFL), .r_IFG(r_IFG), .Reset(r_Rst),
|
.MaxFL(r_MaxFL), .r_IFG(r_IFG), .Reset(wb_rst_i),
|
.RxData(RxData), .RxValid(RxValid), .RxStartFrm(RxStartFrm),
|
.RxData(RxData), .RxValid(RxValid), .RxStartFrm(RxStartFrm),
|
.RxEndFrm(RxEndFrm), .ByteCnt(RxByteCnt),
|
.RxEndFrm(RxEndFrm), .ByteCnt(RxByteCnt),
|
.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),
|
Line 600... |
Line 604... |
.r_HASH0(r_HASH0), .r_HASH1(r_HASH1), .RxAbort(RxAbort)
|
.r_HASH0(r_HASH0), .r_HASH1(r_HASH1), .RxAbort(RxAbort)
|
);
|
);
|
|
|
|
|
// MII Carrier Sense Synchronization
|
// MII Carrier Sense Synchronization
|
always @ (posedge mtx_clk_pad_i or posedge r_Rst)
|
always @ (posedge mtx_clk_pad_i or posedge wb_rst_i)
|
begin
|
begin
|
if(r_Rst)
|
if(wb_rst_i)
|
begin
|
begin
|
CarrierSense_Tx1 <= #Tp 1'b0;
|
CarrierSense_Tx1 <= #Tp 1'b0;
|
CarrierSense_Tx2 <= #Tp 1'b0;
|
CarrierSense_Tx2 <= #Tp 1'b0;
|
end
|
end
|
else
|
else
|
Line 618... |
Line 622... |
|
|
assign TxCarrierSense = ~r_FullD & CarrierSense_Tx2;
|
assign TxCarrierSense = ~r_FullD & CarrierSense_Tx2;
|
|
|
|
|
// MII Collision Synchronization
|
// MII Collision Synchronization
|
always @ (posedge mtx_clk_pad_i or posedge r_Rst)
|
always @ (posedge mtx_clk_pad_i or posedge wb_rst_i)
|
begin
|
begin
|
if(r_Rst)
|
if(wb_rst_i)
|
begin
|
begin
|
Collision_Tx1 <= #Tp 1'b0;
|
Collision_Tx1 <= #Tp 1'b0;
|
Collision_Tx2 <= #Tp 1'b0;
|
Collision_Tx2 <= #Tp 1'b0;
|
end
|
end
|
else
|
else
|
Line 643... |
Line 647... |
assign Collision = ~r_FullD & Collision_Tx2;
|
assign Collision = ~r_FullD & Collision_Tx2;
|
|
|
|
|
|
|
// Carrier sense is synchronized to receive clock.
|
// Carrier sense is synchronized to receive clock.
|
always @ (posedge mrx_clk_pad_i or posedge r_Rst)
|
always @ (posedge mrx_clk_pad_i or posedge wb_rst_i)
|
begin
|
begin
|
if(r_Rst)
|
if(wb_rst_i)
|
begin
|
begin
|
CarrierSense_Rx1 <= #Tp 1'h0;
|
CarrierSense_Rx1 <= #Tp 1'h0;
|
RxCarrierSense <= #Tp 1'h0;
|
RxCarrierSense <= #Tp 1'h0;
|
end
|
end
|
else
|
else
|
Line 671... |
Line 675... |
assign Transmitting = ~r_FullD & WillTransmit_q2;
|
assign Transmitting = ~r_FullD & WillTransmit_q2;
|
|
|
|
|
|
|
// Synchronized Receive Enable
|
// Synchronized Receive Enable
|
always @ (posedge mrx_clk_pad_i or posedge r_Rst)
|
always @ (posedge mrx_clk_pad_i or posedge wb_rst_i)
|
begin
|
begin
|
if(r_Rst)
|
if(wb_rst_i)
|
RxEnSync <= #Tp 1'b0;
|
RxEnSync <= #Tp 1'b0;
|
else
|
else
|
if(~RxCarrierSense | RxCarrierSense & Transmitting)
|
if(~RxCarrierSense | RxCarrierSense & Transmitting)
|
RxEnSync <= #Tp r_RxEn;
|
RxEnSync <= #Tp r_RxEn;
|
end
|
end
|
Line 726... |
Line 730... |
|
|
// WISHBONE slave
|
// WISHBONE slave
|
.WB_ADR_I(wb_adr_i[9:2]), .WB_WE_I(wb_we_i),
|
.WB_ADR_I(wb_adr_i[9:2]), .WB_WE_I(wb_we_i),
|
.BDCs(BDCs), .WB_ACK_O(BDAck),
|
.BDCs(BDCs), .WB_ACK_O(BDAck),
|
|
|
.Reset(r_Rst),
|
.Reset(wb_rst_i),
|
|
|
// WISHBONE master
|
// WISHBONE master
|
.m_wb_adr_o(m_wb_adr_o), .m_wb_sel_o(m_wb_sel_o), .m_wb_we_o(m_wb_we_o),
|
.m_wb_adr_o(m_wb_adr_o), .m_wb_sel_o(m_wb_sel_o), .m_wb_we_o(m_wb_we_o),
|
.m_wb_dat_i(m_wb_dat_i), .m_wb_dat_o(m_wb_dat_o), .m_wb_cyc_o(m_wb_cyc_o),
|
.m_wb_dat_i(m_wb_dat_i), .m_wb_dat_o(m_wb_dat_o), .m_wb_cyc_o(m_wb_cyc_o),
|
.m_wb_stb_o(m_wb_stb_o), .m_wb_ack_i(m_wb_ack_i), .m_wb_err_i(m_wb_err_i),
|
.m_wb_stb_o(m_wb_stb_o), .m_wb_ack_i(m_wb_ack_i), .m_wb_err_i(m_wb_err_i),
|
Line 778... |
Line 782... |
|
|
|
|
// Connecting MacStatus module
|
// Connecting MacStatus module
|
eth_macstatus macstatus1
|
eth_macstatus macstatus1
|
(
|
(
|
.MRxClk(mrx_clk_pad_i), .Reset(r_Rst),
|
.MRxClk(mrx_clk_pad_i), .Reset(wb_rst_i),
|
.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),
|