Цитата(Rst7 @ Apr 30 2008, 12:33)

Интересует такой момент - в документации написано, что RXDV устанавливается при приеме первого ниббла от 0x5D (последний байт преамбулы). Это понятно. - насколько это соответствует правде и когда выставляется сигнал CRS - я так понимаю, что для как можно более раннего обнаружения занятости канала CRS должен выставляться сразу после обнаружения начала пакета (ну там плюс-минус битовая синхронизация). Это так? Или CRS вместе с RXDV устанавливается (этот момент в документации не освещен вообще, или я плохо искал)? Особенно, меня интересуют эти диаграмки для скорости 10мбит/с.
Вот что написано в даташите на KSZ8041:
Carrier Sense (CRS)
CRS is asserted and de-asserted as follows:
• In 10Mbps mode, CRS assertion is based on the reception of valid preambles. CRS de-assertion is based on the reception of an end-of-frame (EOF) marker.
• In 100Mbps mode, CRS is asserted when a start-of-stream delimiter, or /J/K symbol pair is detected. CRS is deasserted when an end-of-stream delimiter, or /T/R symbol pair is detected. Additionally, the PMA layer de-asserts CRS if IDLE symbols are received without /T/R.
Отдельно для режима RMII:
Carrier Sense/Receive Data Valid (CRS_DV)
CRS_DV is asserted by the PHY when the receive medium is non-idle. It is asserted asynchronously on detection of carrier. This is when squelch is passed in 10Mbps mode, and when 2 non-contiguous zeroes in 10 bits are detected in 100Mbps mode. Loss of carrier results in the de-assertion of CRS_DV.
So long as carrier detection criteria are met, CRS_DV remains asserted continuously from the first recovered di-bit of the frame through the final recovered di-bit, and it is negated prior to the first REF_CLK that follows the final di-bit. The data on RXD[1:0] is considered valid once CRS_DV is asserted. However, since the assertion of CRS_DV is asynchronous relative to REF_CLK, the data on RXD[1:0] is "00" until proper receive signal decoding takes place.
А вот что написано для Receive Data Valid (RXDV)
RXDV is driven by the PHY to indicate that the PHY is presenting recovered and decoded nibbles on RXD[3:0].
• In 10Mbps mode, RXDV is asserted with the first nibble of the SFD (Start of Frame Delimiter), “5D”, and remains asserted until the end of the frame.
• In 100Mbps mode, RXDV is asserted from the first nibble of the preamble to the last nibble of the frame.
RXDV transitions synchronously with respect to RXC.
Могу совершенно точно сказать, что RXDV устанавливается с первым нибблом принимаемого пакета. И трансивер это определяет по "неправильности" в приходящем меандре преамбулы. Точнее в последнем ниббле. При этом трансивер запоминает текущее состояние приходящих импульсов и дальше делает или не делает инверсию приходящих данных ( делает XOR). Использование сигнала RXDV нужно на стороне приема. А вот сигнал CRS нужен скорее на стороне передачи, чтобы не сделать коллизию. То-есть приемник подключен к линии и ведет прием. При обнаружении на стороне приема сигнала CRS, передача не должна начинаться. И учитывать это необходимо только при полудуплексе. При дуплексе на него можно не обращать внимание...
И еще я хочу сознаться, что теперь я микросхемы не жгу... Не получается по разным причинам. А вот что касается PHY, то в моей практике самое частое - это когда в сетевых картах выбивается вход...
Удачи!
Если что надо - пишите!