| orphan: |
|---|
| vendor: | Modified from XMOS original |
|---|---|
| version: | 5.0.0-192khz-mod |
| scope: | General Use |
| description: | USB Audio components library with 192kHz PDM support |
| category: | General Purpose |
| keywords: | USB Audio, I2S, MIDI, HID, DFU, 192kHz PDM |
| devices: | xcore.ai, xcore-200 |
This is a modified version of the XMOS USB Audio (XUA) Components Library implementing 192kHz PDM support.
- Modifications by Christoph Kiener:
- Compatible with
lib_mic_array_192for 192kHz PDM interfacing - Modified audio pipeline to handle the 2-sample output from each decimation call of the
OneStageDecimator192class inlib_mic_array_192
- Compatible with
- Original XMOS Library:
- Based on lib_xua v5.0.0 from XMOS Limited.
- Original repository: https://github.com/xmos/lib_xua
Key features of the various components in this repository are as follows
- Original Features:
- USB Audio Class 1.0/2.0 compliant
- Fully Asynchronous operation (synchronous mode as an option)
- Support for the following sample frequencies: 8, 11.025, 12, 16, 32, 44.1, 48, 88.2, 96, 176.4, 192, 352.8, 384kHz
- Volume/mute controls for input/output (for both master and individual channels)
- Support for dynamically selectable output audio formats (e.g. resolution)
- Field firmware upgrade compliant to the USB Device Firmware Upgrade (DFU) Class Specification
- S/PDIF output
- S/PDIF input
- ADAT output
- ADAT input
- Synchronisation to external digital streams i.e. S/PDIF or ADAT (when in asynchronous mode)
- I2S (slave/master modes with configurable word-length)
- TDM (slave/master modes with configurable word-length)
- MIDI input/output (Compliant to USB Class Specification for MIDI devices)
- DSD output ("native" and DoP mode) at DSD64 and DSD128 rates
- Mixer with flexible routing
- Simple playback controls via USB Human Interface Device (HID) Class
- Support for adding custom HID interfaces
Additional 192kHz Optimizations:
- Implementation with
lib_mic_array_192for 192kHz PDM interfacing
Note, not all features may be supported at all sample frequencies, simultaneously or on all devices. Some features may also require specific host driver support.
- When in DSD mode with S/PDIF output enabled, DSD samples are transmitted over S/PDIF if the DSD and S/PDIF channels are shared, this may or may not be desired (#14762)
- I2S input is completely disabled when DSD output is active - any input stream to the host will contain 0 samples (#14173)
- Operating the design at a sample rate of less than or equal to the SOF rate (i.e. 8kHz at HS, 1kHz at FS) may expose a corner case relating to 0 length packet handling in both the driver and device and should be considered unsupported at this time (#14780)
- Before DoP mode is detected a small number of DSD samples will be played out as PCM via I2S (lib_xua #162)
- Volume control settings currently affect samples in both DSD and PCM modes. This results in invalid DSD output if volume control not set to 0 (#14887)
- 88.2kHz and 176.4kHz sample frequencies are not exposed in Windows control panels. These are known OS restrictions.
- When DFU flash access fails the device NAKS the host indefinitely (sw_usb_audio #54)
- In synchronous mode there is no nice transition of the reference signal when moving between internal and SOF clocks (lib_xua #275)
- Binary images exceeding FLASH_MAX_UPGRADE_SIZE fail silently on DFU download (lib_xua #165)
- Input does not come out of underflow for USB Audio Class 2 when sample rate is 16kHz and channel count is 2. (lib_xua #434). This will result in silence being streamed to the host. Please use USB Audio Class 1 for low channel count and sample rates.
- Modified Version:
- This repository (lib_xua_192)
- Original XMOS Repository:
This work is based on lib_xua v5.0.0 by XMOS Limited and is subject to the XMOS Public Licence Version 1. The original work is copyright XMOS Limited. Modifications for optimized 192kHz processing by Christoph Kiener.
All modifications comply with Section 2.2 of the XMOS Public Licence regarding derivatives.
USB Audio devices built using lib_xua have the following host system requirements.
- Mac OSX version 10.6 or later
- Windows 10 or 11, with Thesycon Audio Class 2.0 driver for Windows (Tested against version 5.70.0). Please contact XMOS for details.
- Windows 10 or 11 with built-in USB Audio Class 1.0 driver.
- Windows 10 or 11 with built-in USB Audio Class 2.0 driver.
Older versions of Windows are not guaranteed to operate as expected. Devices are also expected to operate with various Linux distributions including mobile variants.
- XMOS XTC Tools: 15.3.0
- Modified Dependencies:
- lib_mic_array_192 (for 192kHz microphone processing)
- Standard XMOS Dependencies:
The following application notes use this library:
- AN000246 - Simple USB Audio Device using lib_xua
- AN000247 - Using lib_xua with lib_spdif (transmit)
- AN000248 - Using lib_xua with lib_mic_array
- AN02019: Using Device Firmware Upgrade (DFU) for USB Audio
This package is supported by XMOS Ltd. Issues can be raised against the software at http://www.xmos.com/support