[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [usb] Corrupted Ack during Last Burst In Transaction




As far as I have understood, this is done using the DATA PID toggle:

- Host transmits an IN token to the Device
- Device responds with a data packet with PID DATA0
- Host receives this packets, and responds with an ACK token.
- This ACK token is lost, and the Device retransmits the data packet with
PID DATA0
- The Host is now expecting a DATA1 PID (not DATA0), and will therefore know
that this was a retransmission. It will therefore pretend that everything is
OK, and transmit an ACK. The packet will, however, be ignored.
- The Device receives this ACK, and the next data packet it transmits will
be DATA1. The host will, since it ignored the last data packet, also be
expecting a DATA1 PID on the next data transmission. I.e.: All is well! :)

Check out Section 8.6.4 in the Spec to confirm that this is correct.

-m



-----Original Message-----
From:	owner-usb@opencores.org [mailto:owner-usb@opencores.org] On Behalf Of
PeGe@mail.ru
Sent:	25. april 2003 13:30
To:	usb@opencores.org
Subject:	[usb] Corrupted Ack during Last Burst In Transaction

Sorry for poor English ;)

Host reads data (Bulk transactions) from USB device.
..
When host need to read last portion of data,
he send IN packet,
device send DATA packet,
host receives it with out error and send ACK packet

Question:  How host can be sure,
that device received ACK packet without error?

For example, if host reads from FIFO (USB device),
how he can be sure, that he reads all data from it?
And FIFO become epmty !!!
--
To unsubscribe from usb mailing list please visit
http://www.opencores.org/mailinglists.shtml

--
To unsubscribe from usb mailing list please visit http://www.opencores.org/mailinglists.shtml