XMOS xCORE-200 Multi-channel Audio board Design Manual page 26

Usb audio
Hide thumbs Also See for xCORE-200 Multi-channel Audio board:
Table of Contents

Advertisement

USB Audio Design Guide
The audio system sends a word over a channel to the decouple core to request
sample transfer (using the build in outuint function). The receipt of this word in
the channel causes the handle_audio_request interrupt to fire.
The first operation the interrupt handler does is to send back a word acknowledging
the request (if there was a change of sample frequency a control token would
instead be sent—the audio system uses a testct() to inspect for this case).
Sample transfer may now take place. First the audio subsystem transfers samples
destined for the host, then the decouple core sends samples from the host to
device. These transfers always take place in channel count sized chunks (i.e.
NUM_USB_CHAN_OUT and NUM_USB_CHAN_IN ). That is, if the device has 10 output
channels and 8 input channels, 10 samples are sent from the decouple core and 8
received every interrupt.
The complete communication scheme is shown in the table below (for non sample
frequency change case):
Decouple
inuint()
outuint()
inuint()
inuint()
inuint()
...
outuint()
Figure 10:
outuint()
Decouple/Audio
outuint()
System
Channel Com-
outuint()
munication
...
The request and acknowledgement sent to/from Decouple to the Audio System is
an "output underflow" sample value. If in PCM mode it will be 0, in DSD mode it will
be DSD silence. This allows the buffering system to output a suitable underflow
value without knowing the format of the stream (this is especially advantageous in
the DSD over PCM (DoP) case)
3.4.4.1 Asynchronous Feedback
The device uses a feedback endpoint to report the rate at which audio is output/in-
put to/from external audio interfaces/devices. This feedback is in accordance with
the USB 2.0 Specification.
XM0088546.1
Audio System
Note
outuint()
Audio system requests sample exchange
Interrupt fires and inuint performed
Decouple sends ack
testct()
Checks for CT indicating SF change
inuint()
Word indication ACK input (No SF change)
outuint()
Sample transfer (Device to Host)
outuint()
outuint()
inuint()
Sample transfer (Host to Device)
inuint()
inuint()
inuint()
26/110

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents