Asynchronous USB vs Network data transfers
Hello...I understand that running the USB interface asynchronously has a major advantage over source controlled clocking, namely that in async mode the downstream device can precisely control clock skew as it relates to data alignment and D/A conversion. The data coming off the input buffer prior to the DAC is the same clock that handles flow control over the USB. Some hardware process monitors the buffer and asks for more data, ensuring the pipe is full as long as the audio data is streaming. Timing uncertainties are very low, as the skew is well understood and the conversions are happening in the right places. In synchronous USB the upstream master (the PC) clocks this process. The way I understand it, this is so because the DAC sample rate and USB packet timing are independent. It is in this clock domain crossing where timing errors in conversion become a factor.
Network based transfer (squeezebox, transporter, etc) seems equally well positioned in the battle against timing uncertainties. in the squeezebox, for example, there is a 64 MByte RAM that is monitored by hardware flow control in the squeezebox. This ensure that the buffer before the DAC is always full (this buffer provides the elasticity between the data rate coming off the server, and the data going out for D/A conversions). It seems to me that here we have another example of optimal timing; The same clock that drives the data out of the buffer is the same clock that drives the D/A converter. If the same DAC, filters, and analog circuitry were identical between the async USB front end and the network front end it seems to me we could expect identical audio performance. What do you think?