OpenCores

Disabling the transmitter while sending data

Back to bugtracker overview.

Information:
Type :: BUG
Status :: OPENED
Assigned to :: nobody

Description:
Problem symptoms:

Disabling the transmitter (writing 0 to the transmitter enabled bit of the MODER register) while the transmitter is working (i.e., there are buffer descriptors marked as ready in the circular buffer) and reenabling it later will cause the transmitter to skip the first buffer descriptor (BD#0) and to start sending from the second descriptor (BD#1).

Probable cause:

The exact sequence of events inside the device seems to be as follows:
* The device is in the process of sending a packet when the user resets the transmitter enabled bit. The transmitter does not stop until the current frame is transmitted completely.
* Once the transmission is complete, the

Comments:

Ryzhyk, Leonid Apr 27, 2010
I think I've observed another similar bug, where disabling only the receiver, but leaving the transmitter on forced the transmitter to skip over one BD; however I don't have an explanation for this behaviour.
Ryzhyk, Leonid Apr 27, 2010
* Once the transmission is complete, the TxDonePacket_NotCleared register is set to 1 and, because TxEn is now deasserted, it will remain in this state until the transmitter is reenabled.
* eventually, the transmitter is reenabled. At this point, the TxBDAddress register is set to 0.
* The TxDonePacket_NotCleared register is finally reset to 0; however before this it will force the TxStatusWrite wire to 1 for a single cycle. This will in turn cause the TxBDAddress register to be incremented. And so, instead of starting the transmission from BD#0, the transmitter will start looking at BD#1.

Post a comment:
Login to post comments!

Back to bugtracker overview.

© copyright 1999-2012 OpenCores.org, equivalent to ORSoC AB, all rights reserved. OpenCores®, registered trademark.