I'm currently studying the USB spec and I have a question about who sends the SYNC and EOP fields in a packet. A typical GET_DESCRIPTOR transaction (say) consists of SETUP and DATA0 packets sent from the host and an ACK packet returned from the device. My questions are:
1) am I correct in the understanding that the device sends the SYNC and EOP fields for its own ACK packet (as opposed to them being sent by the host)?
2) if so, does that mean there may also be a delay until the device responds? (I think I remember seeing something along these lines in the spec).
3) does that also mean that the device clock may not necessarily remain synchronized with the host clock during this delay, and that in order to read the response packet I'll need to re-synchronize the host upon receipt of device's SYNC field e.g. by oversampling?