[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ethmac] bug found?
I think I found a bug.
It has something to do with the carrier sense bit in the TxBD when
working in full duplex.
When using full duplex, the carrier sense line from the PHY will not be
asserted when transmitting data, only when it is receiving data (in half
duplex it will be asserted when sending AND receiving data).
In eth_macstatus.v, the last lines of the code:
// CarrierSenseLost
always @ (posedge MTxClk or posedge Reset)
begin
if(Reset)
CarrierSenseLost <=#Tp 1'b0;
else
if((StatePreamble | (|StateData)) & ~CarrierSense & ~Loopback &
~Collision)
CarrierSenseLost <=#Tp 1'b1;
else
if(TxStartFrm)
CarrierSenseLost <=#Tp 1'b0;
end
--> shouldn't there be something like :
if((StatePreamble | (|StateData)) & ~CarrierSense & ~Loopback &
~Collision) & ~r_FullD )
If you don't use ~r_FullD, you always get an Tx error, because the
carrier sense of the PHY isn't asserted when transmitting.
Greetings,
David
--
To unsubscribe from ethmac mailing list please visit http://www.opencores.org/mailinglists.shtml