Table of Contents

Advertisement

Quick Links

®
VocalFusion
XVF3510 USER GUIDE
V4.0

Advertisement

Table of Contents
loading

Summary of Contents for XMOS VocalFusion XVF3510

  • Page 1 ® VocalFusion XVF3510 USER GUIDE V4.0...
  • Page 2: Table Of Contents

    CONTENTS ® vocalFusion VF3510 User Guide ............... 5 1.1. Scope of document ...................... 5 1.2. XVF3510 Far-field Voice processors ................5 1.3. System Block Diagrams ....................6 1.3.1. XVF3510-INT Configuration ................6 1.3.2. XVF3510-UA Configuration ................6 1.4. Device firmware and configuration ................7 XVF3510 Voice Processor Architecture ..............
  • Page 3 XVF3510 Features and Configuration ............... 24 4.1. Booting ........................24 4.1.1. Flash storage structure ................24 4.1.2. Programming the Factory Boot image and Data Partition ......25 4.1.3. Upgrade Images and Data Partitions ............25 4.1.4. Factory restore .................... 27 4.1.5.
  • Page 4 Additional Information ..................63 5.1. Documentation ......................63 5.2. Device firmware and drivers ..................63 Revision History ....................63 Appendices ....................... 64 APPENDIX A: PARAMETER SUMMARY ..................65 APPENDIX B: BOOT STATUS CODES (RUN_STATUS) ............75 APPENDIX C: EXAMPLE .SPISPEC FILE FORMAT ..............76 APPENDIX D: SPI BOOT CUSTOM CONNECTION ..............
  • Page 5: Vocalfusion ® Vf3510 User Guide

    1.2. XVF3510 FAR-FIELD VOICE PROCESSORS The XMOS XVF3510 range of processors use microphone array processing to capture clear, high- quality voice from anywhere in the room. XVF3510 processors use highly optimised digital signal processing algorithms implementing ‘barge-in', point noise and ambient noise reduction to increase the Signal-to-Noise Ratio (SNR) achieving a reliable voice interface whatever the environment.
  • Page 6: System Block Diagrams

    These application use cases are described in more detail in the following sections. 1.3. SYSTEM BLOCK DIAGRAMS 1.3.1. XVF3510-INT CONFIGURATION The XVF3510-INT device has been optimized for integration on a system board. A standard I2C interface is provided to enable the main processor on the system board to configure and monitor the XVF3510-INT.
  • Page 7: Device Firmware And Configuration

    In addition to the standard USB configuration shown above, the XVF3510-UA also supports an alternative configuration in which the AEC reference signal is supplied over an I2S bus. Figure 1-3 XVF3510-UA Configuration using I2S audio reference 1.4. DEVICE FIRMWARE AND CONFIGURATION The operation of the XVF3510 device is controlled through a firmware image that is loaded onto the device when it is powered up.
  • Page 8: Xvf3510 Voice Processor Architecture

    XVF3510 VOICE PROCESSOR ARCHITECTURE 2.1. OVERVIEW The core of the XVF3510 Voice processor is a high-performance audio processing pipeline that takes its input from a pair of the microphone and executes a series of signal processing algorithms to extract a voice signal from a complex soundscape. The audio pipeline can accept a reference signal from a host system which is used to perform Acoustic Echo Cancellation (AEC) to remove audio being played by the host.
  • Page 9: Asr And Communication Processing

    of. A reference copy of the audio is provided to the AEC in order for it to accurately estimate the echo. Automatic Delay Estimation & Control (ADEC): Automatically monitors and automatically compensates for the delay between the reference audio and the echo received by the microphone.
  • Page 10: Xvf3510-Ua - For Usb Accessory Voice Interface Applications

    The system architecture of the XVF3510-INT is shown below. Figure 2-2 XVF3510-INT System architecture 2.5. XVF3510-UA - FOR USB ACCESSORY VOICE INTERFACE APPLICATIONS The XVF3510-UA variant includes the same audio infrastructure as the XFV3510-INT, but it includes a USB interface that implements a UAC1.0 audio device to interface to the host system. The USB interface also supports an Endpoint 0 control channel and a USB HID to signal input events to the host.
  • Page 11: Principles Of Configuration, Control And Usage

    There are two release packages available for the XVF3510, one for the XVF3510-UA and one for the XVF3510-INT. Both are available to download from https://www.xmos.com/software/vocalfusion Release packages and firmware builds are identified via a version number, which follows the standard semantic version specification.
  • Page 12: Bin" Directory

    Each package consists of several directories and files containing released firmware binaries, data- partition tools, host binaries and host source code. A simplified directory structure is shown below. ├── bin ├── data-partition │ ├── images │ └── input └── host ├──...
  • Page 13: Required Tools

    3.2.1. XTIMECOMPOSER The XMOS xTIMEcomposer contains a comprehensive suite of tools for compilation, debug and programming of XMOS devices. It is available to download from www.xmos.com/tools. NOTE: At the time of writing v14.4.1 of the xTIMEcomposer tools is recommend for XVF3510 operation.
  • Page 14: Python 3

    3.2.2. PYTHON 3 Some operations, such as running the SPI boot example on the Raspberry Pi, require the use of Python 3 (v3.7 onward is recommended). Python can be downloaded from http://python.org/downloads. 3.2.3. HOST BUILD TOOLS In order to build the host utilities, the use of a platform-specific compiler is required. WINDOWS x86 Native Tools Command Prompt for VS The host utilities are built with the...
  • Page 15: Configuration Via Control Interface

    The available commands are described in detail in specific sections later in this document, and a summary table of all the parameters is provided in Appendix A. Following the <COMMAND_VERB> there are a number of optional arguments [arg 1]..[arg N] which depend on the specific parameter.
  • Page 16: Host Application

    This is shown below: Table 3-3 Development kit variants and firmware pre-loaded FIRMWARE DEVELOPMENT KIT NOTES LOADED https://www.xmos.com/products/voice/amazon VocalFusion development kit for XVF3510-INT Firmware named “XVF3510 I2S Firmware binary.xe” in v0.12.0 Amazon AVS (v0.12.0) release https://www.xmos.com/products/voice/kits...
  • Page 17 Figure 3-2 Signal flow of the VocalFusion dev kit (XVF33510-UA) NOTE: In order to operate the latest firmware releases on v1.0 and v1.1 development kits a simple modification is required. This is detailed in a design advisory available on the website (https://www.xmos.com/documents/vocalfusion) XM-014232-PC...
  • Page 18: Updating The Firmware

    XTAG connector, marked ‘DEBUG ONLY’, and power the board using micro USB connection marked USB on the XMOS processor board. (The power can be supplied via a USB connection from the system used to update, or a Raspberry Pi if used).
  • Page 19: Operation

    The VocalFusion dev kit for Amazon AVS uses the XVF3510-INT to provide far-field voice to an AVS client running on a Raspberry Pi (not provided in development kit). The VocalFusion Development Kit for Amazon AVS Quick Start Guide (https://www.xmos.com/file/xvf3510-avs-quick-start-pdf_idd/) and VocalFusion Development Kit for Amazon AVS User Guide (https://www.xmos.com/file/vocalfusion-...
  • Page 20: Xvf3510-Ua Usb Connected Demonstration

    (https://www.xmos.com/file/xvf3510-quick-start/) detail the setup and usage instructions. For completeness, it is also summarised below. Connect the USB Host (eg. laptop or SBC) to the XVF3510-UA via a USB cable, and connect speakers to the host processor system. Once connected the XVF3510 will enumerate as “XVF3510 (UAC1.0) Adaptive”.
  • Page 21 The following steps show how to install the libusb driver using Zadig: Connect the XVF3510 board to the host PC using a USB cable. Open Zadig and select XMOS Control (Interface 3) from the list of devices. If the device is not present, ensure Options -> List All Devices is checked.
  • Page 22: Host Utilities

    3.9.3. HOST UTILITIES There are seven host utilities provided in the VocalFusion XVF3510 Release Package as pre-compiled utilities and also as source code to allow rebuilding other system architectures. The utilities are summarised below: data_partition_generator, vfctrl_json - Uses .json configuration definition and generates binary Data Partitions for download to flash memory.
  • Page 23: Default Operation

    XVF3510 (UAC1.0) USB Product String -n/a- Adaptive USB Vendor ID 0x20B1 (8369) -n/a- USB Product ID 0x0014 (20) -n/a- USB Vendor String XMOS -n/a- USB Serial Number null -n/a- I2C address 0X2C MCLK 24.576MHz OUTPUT 24.576MHz INPUT Acoustic Echo Canceller...
  • Page 24: Xvf3510 Features And Configuration

    The following sections discuss the structure of data within the flash memory, and operation of DFU. 4.1.1. FLASH STORAGE STRUCTURE The structure of data within the VocalFusion XVF3510 is arranged to contain a factory image, a single upgrade image, device serial numbers and data partitions for both the factory and upgrade image.
  • Page 25: Programming The Factory Boot Image And Data Partition

    The Serial Number is a custom field which can be programmed via USB and I2S control interfaces and remains untouched by the subsequent DFU operations. The Factory and Upgrade Data Partitions are the associated Data Partitions for the Factory and Upgrade images (where upgrade is present).
  • Page 26 The following examples show how to add DFU Suffix to Update binaries for both XVF3510-INT and XVF3510-UA products. For XVF3510-UA (default XMOS Vendor and XVF3510-UA product identifiers are used for illustration): dfu_suffix_generator.exe 0x20B1 0x0014 app_xvf3510_ua_v4.0.0.bin boot.dfu dfu_suffix_generator.exe 0x20B1 0x0014 data_partition_upgrade_ua_v4_0_0.bin data.dfu For XVF3510-INT: dfu_suffix_generator.exe 0xFFFF 0xFFFF app_xvf3510_int_v4.0.0.bin boot.dfu...
  • Page 27: Factory Restore

    dfu_i2c [OPTIONS] write_upgrade BOOT_IMAGE_BINARY DATA_PARTITION_BIN OPTIONS: --quiet --i2c-address 0x2c (default) --block-size 128 (default) The two binary files passed to the utility, the boot image and data partition, must have the DFU suffix present otherwise the DFU utility will generate an error. Example DFU utility usage is shown for both XVF3510-UA and XVF3510-INT below.
  • Page 28: Custom Flash Memory Devices

    Appendix B: Boot Status codes (RUN_STATUS). NOTE: Fail safe mode uses default vendor ID of 0x20B1 (XMOS) and product ID of 0x14. In this event, host needs to be equipped with the ability to locate USB device under different IDs.
  • Page 29: Spi Slave Boot

    4.1.7. SPI SLAVE BOOT Both -UA and -INT configurations of XVF3510 have an SPI slave boot mode, in addition to the boot from flash mode. The SPI slave boot downloads the boot image in binary form, provided in the Release Package.
  • Page 30: Configuration And The Data Partition

    4.2. CONFIGURATION AND THE DATA PARTITION As described in a previous section, when using flash to boot the XVF3510 processor, the Data partition can be used to store commands which are executed immediately after boot-up to configure and define the functionality of the device. The following sections describe the definition of the Data Partition, how to generate, and the customisation for specific applications.
  • Page 31: Generating A Data Partition For Custom Applications

    ITEM FILES The item files contain the commands used to configure the system. The commands are simply added to the file in the same format as the command line control utility. For clarity, multiple item files can be included in the .json definition, each specifying a sub-set of commands relating to a particular function or aspect.
  • Page 32: Serial Number

    For the above example these files will be called: data_partition_factory_<build_type>.bin data_partition_upgrade_<build_type>.bin. These two binary files can be used to factory program or upgrade as described in Updating the firmware Generation and application of Upgrade Image and Data Partition sections respectively. A .JSON file is also produced for debugging purposes.
  • Page 33: Usb Interface

    4.3.1. USB INTERFACE Due to the nature of the USB enumeration process, USB setup must be done using a Data Partition so that the configuration is complete prior to enumeration. The following table summarises the USB interface parameters which can be configured. Table 4-1 USB configuration parameters COMMAND TYPE ARGUMENTS DEFINITION...
  • Page 34: Usb Hid

    4.3.2. USB HID A Human Interface Device (HID) is an electronic device with an interface which a human can use for control. Examples include a Personal Computer with a keyboard and mouse or a consumer appliance with control knobs, push buttons or a voice interface. The XVF3510-UA uses the HID interface to inform the host system of events which have occurred on the General Purpose Inputs (GPI).
  • Page 35: I2C Slave Control Interface (Xvf3510-Int Only)

    4.3.3. I2C SLAVE CONTROL INTERFACE (XVF3510-INT ONLY) The XVF3510-INT implements an I2C slave interface for Control and Setup of the device. The interface conforms to the following specifications. Table 4-2 I2S interface specificatoin SPECIFICATION VALUE Maximum I2C operation speed 100kbps I2C Slave Address 0x2C 4.3.4.
  • Page 36: General Purpose I/O Pins

    I2C Master (XVF3510-UA only) 100kbps SCL clock speed Register read/write (byte) Up to 56 byte I2C read/write The following sections describe the configuration and usage of each peripheral interface. 4.3.5. GENERAL PURPOSE I/O PINS There are four general input and four general output pins provided on the XVF3510. Table 4-3 GPIO pin table NAME DESCRIPTION...
  • Page 37 COMMAND TYPE DIR ARGS DESCRIPTION Read whether interrupt was triggered for all pins on selected GET_GPI_INT_PENDING_PORT uint32 READ port. The interrupt pending register for the whole port is cleared by this command. Set the active level for a specific GPI pin. Arguments are <Port SET_GPI_PIN_ACTIVE_LEVEL uint8 WRITE...
  • Page 38: General Purpose Outputs

    Continuing the example, assume now that IP_1 & IP_2 are asserted high, and the port queried again: vfctrl_i2C GET_GPI_INT_PENDING_PORT > GET_GPI_INT_PENDING_PORT: 2 The result 2 (b‘0010) shows that IP_2 has triggered on a rising edge. Rechecking the port status shows this event has been cleared.
  • Page 39 To set all GPOs high and then low: vfctrl_usb SET_GPO_PORT 0 15 vfctrl_usb SET_GPO_PORT 0 0 The PWM runs at a fixed 500Hz frequency designed to minimise visible flicker when dimming LEDs and supports 100 discrete duty settings to permit gradual off to fully-on control. The following commands illustrate setting individual PWM frequencies on each output by setting GPO pins 0, 1, 2 and 3 to output 25%, 50%, 75% and 100% duty cycles respectively: vfctrl_usb SET_GPO_PWM_DUTY 0 0 25...
  • Page 40: I 2 C Master Peripheral Interface (Xvf3510-Ua Only)

    4.3.8. I C MASTER PERIPHERAL INTERFACE (XVF3510-UA ONLY) The XVF3510-UA variant provides an I C master interface which can be used as: a bridge from the USB interface, i.e. VFCTRL_USB commands can be used from the host to read and write devices connected to the I C Peripheral Port;...
  • Page 41 NUMBER NUMBER COMMAND TYPE DEFINITION RETURN OF ARGS VALUES Write to an I2C slave device. Arguments: 1: The 7-bit I2C slave device address. SET_I2C uint8 WRITE 2: The number of data bytes to write (n). 3 to 56: Data bytes. All 54 values must be given but only n will be sent.
  • Page 42: Spi Master

    Raw I C read/writes may also be performed as shown below. Figure 4-6 I2C protocol for raw reads and writes USING I2C MASTER TO WRITE TO A DEVICE Typically byte register read/writes are used to configure external I2C controlled hardware. As an example, assume there is a device connected at address 0x40 (64) with three, single byte, registers.
  • Page 43 The SPI master peripheral supports the following fixed specifications: Single chip select line 1Mbps fixed clock speed Supports either reads or writes. Duplex read/writes are not supported. Most significant bit transferred first Mode 0 transfer (CPOL = 0, CPHA = 0) NOTE: The chip select is asserted a minimum of before 20ns the start of the transfer and de-asserted a minimum of 20ns after the transfer ends.
  • Page 44 The control protocol does not support variadic (variable number of) arguments. Hence, even when writing a single byte, the total number of arguments passed must be the maximum. Unwritten values are ignored. The following example writes one byte of data (with value 122) to a control register as address 6. vfctrl_usb SET_SPI_PUSH_AND_EXEC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 1 122...
  • Page 45: Audio Routing And Filtering

    4.4. AUDIO ROUTING AND FILTERING Many of the parameters and functions of the XVF3510 may be controlled via the control interface. This control extends to being able to configure signal routing through the pipeline itself, providing flexibility useful in: Hardware testing of mics by monitoring the raw mic signal. Improving pipeline performance by filtering known noise sources at the raw mic input.
  • Page 46: Signal Routing And Scaling

    4.4.1. SIGNAL ROUTING AND SCALING The following controls are provided for configuring the signal control blocks. Table 4-8 I/O Mapping Commands COMMAND TYPE ARGS DEFINITION Configures the two input switches and four output switches. See Destination and Source index table for valid argument options. SET_IO_MAP uint8 arg1 <Destination Index>...
  • Page 47 CHANNEL (SOURCE) VALUE DEFINITION Half of the difference between ch0 and ch1 of USB input from host to USB_TO_DEVICE_DIFFERENCE device. I2S_TO_DEVICE_AVERAGE Average of I2S input to device. I2S_TO_DEVICE_DIFFERENCE Half of the difference between ch0 and ch1 of I2S input to device. PIPELINE_OUT_0 Pipeline output channel 0 PIPELINE_OUT_1...
  • Page 48 Signal routing is also useful for hardware debugging of microphone or reference signal connection. As an example, the following command routes USB reference channel 0 from host to the USB audio output channel 0 of XVF3510: vfctrl_usb SET_IO_MAP 0 7 A loopback of reference signal input XVF3510 and its audio output is formed.
  • Page 49: General Purpose Filter

    4.4.2. GENERAL PURPOSE FILTER The general-purpose filter blocks each comprise of two cascade biquad filters permitting configuration as bandpass, notch, low-pass, high-pass filters etc. By default, all filters are disabled (bypassed). NOTE: A maximum of two output filters may be enabled simultaneously, e.g. two channels of USB filtering or one I2S and one USB output.
  • Page 50 Table 4-12 Filter output indexes available to be used with filter setting commands CHANNEL VALUE DEFINITION FILTER_USB_FROM_DEVICE_0 USB channel 0 from device to host (Left) FILTER_USB_FROM_DEVICE_1 USB channel 1 from device to host (Right) FILTER_I2S_FROM_DEVICE_0 I2S channel 0 from device (Left) FILTER_I2S_FROM_DEVICE_1 I2S channel 1 output from device (Right) FILTER_MIC_TO_PIPELINE_0...
  • Page 51: Far-Field Voice Processing

    4.5. FAR-FIELD VOICE PROCESSING 4.5.1. PDM MICROPHONE INTERFACE The PDM microphone interface converts Pulse Density Modulation (PDM) audio input from the microphones to Pulse Code Modulation (PCM) format allowing further processing. The PDM microphone interface consists of the physical pins connecting to the two microphones and a series of filters resulting in a 16kHz PCM, two-channel output stream suitable for far-field voice processing.
  • Page 52: Automatic Echo Cancellation (Aec)

    4.5.2. AUTOMATIC ECHO CANCELLATION (AEC) This process uses the stereo audio from the product as a reference signal to model the echo characteristics between each loudspeaker and microphone, caused by the acoustic environment of the device and room. The AEC uses four models to continuously remove echoes in the microphone audio input created in the room by the loudspeakers.
  • Page 53: Automatic Delay Estimation & Correction (Adec)

    For optimal AEC settling-time performance, the volume of the speakers must be linearly proportional to the level of the reference audio sent to the XVF3510. If the volume of the speakers change without the level of the reference changing by the same linear factor, the AEC will respond as if the environment has changed such that all echo paths have increased/decreased energy, and will therefore incur a settling time in the AEC.
  • Page 54 The time window modelled by the AEC is finite, and to maximise its performance it is important to ensure that the reference audio is presented to the AEC time aligned to the audio being reproduced by the loudspeakers. The diagram below highlights how the reference audio path delay and the audio reproduction path may be significantly different, therefore requiring additional delay to be inserted into one of the two paths, correcting this delay difference.
  • Page 55 The delay estimation process supports two stages: Fine delay estimation, during which AEC adaption is paused. Fine delay estimation searches over a limited delay window to detect small changes in delay. If the delay correction is not resolved the coarse estimation is triggered. Coarse delay estimation, re-purposes the AEC to detect larger delays.
  • Page 56 NOTE COMMAND TYPE VALUE DESCRIPTION Select the direction of input delay - either the microphone input path or the reference signal GET_DELAY_DIRECTION path. uint32 [0,1] SET_DELAY_DIRECTION 0 - Delay the reference input (default) 1 - Delay the microphone input Get an estimate of the number of samples of delay on the reference input at a sample rate of 16kHz.
  • Page 57: Interference Canceller

    NOTE COMMAND TYPE VALUE DESCRIPTION Set the delay setpoint enabled flag. When enabled, if the fine-grain delay estimator is unable to find the correct delay, then instead of triggering a coarse-grain delay estimate it sets the delay to a user defined value. This can reduce recovery time after a delay change.
  • Page 58: Noise Suppressor (Ns)

    Table 4-17 Interference Canceller (IC) parameter NOTE COMMAND TYPE VALUE DESCRIPTION Set IC bypass parameter. If set to one, IC processing is bypassed. SET_BYPASS_IC uint32 [0,1] 0 = IC bypass disabled (default) GET_BYPASS_IC 1 = IC bypass enabled Enable beamformed output on IC output channel index 1.
  • Page 59 The desired output level of voice content is defined by an upper and lower threshold. If a voice signal is outside of the upper and lower threshold then the gain will adapt accordingly. If the voice signal is within the upper and lower threshold then the gain will remain constant. The rate at which the gain increases or decreases per audio frame can also be configured.
  • Page 60: Alternative Architecture Mode (Alt_Arch)

    COMMAND TYPE VALUE DESCRIPTION SET_INCREMENT_GAIN_STEPSIZE_CH0_ SET_INCREMENT_GAIN_STEPSIZE_CH1_ Set the rate at which the gain increases. This value Q16.16 [1..32767] is applied on a per-frame basis when voice content GET_INCREMENT_GAIN_STEPSIZE_CH0_ is detected. GET_INCREMENT_GAIN_STEPSIZE_CH1_ SET_DECCREMENT_GAIN_STEPSIZE_CH 0_AGC SET_DECREMENT_GAIN_STEPSIZE_CH1 Set the rate at which the gain decreases. This value _AGC Q16.16 [0..1]...
  • Page 61 Figure 4-15 Audio pipeline configuration, [ALT_ARCH=0] mode Whenever ALT_ARCH=1, then the pipeline dynamically switches between AEC alone, or IC alone. In this condition the AEC is able to make use of additional memory increasing the echo cancelling period, and making it more resilient to echo in highly reverberant conditions. Figure 4-16 Audio pipeline configuration, [ALT_ARCH=1] when reference signal is present The dynamic switching uses statistics collected from the reference signal to establish if echo cancelling is required.
  • Page 62 Figure 4-17 Audio pipeline configuration, [ALT_ARCH=1] when reference signal is absent The following table summarises the audio characteristics for standard and alternative architectures. Table 4-20 Alternative pipeline mode characteristics PIPELINE FAR-END AUDIO (AEC REF) PIPELINE CONFIGURATION STATUS FUNCTIONALITY CHARACTERISTICS IC enabled ALT_ARCH = 0 With and without Far-end audio present Max echo delay = 150mS...
  • Page 63: Additional Information

    “AS IS” with no warranty of any kind, express or implied and shall have no liability in relation to its use. XMOS Ltd makes no representation that the Information, or any particular implementation thereof, is or will be free from any claims of infringement and again, shall have no liability in relation to any such claims.
  • Page 64: Appendices

    APPENDICES LIST OF APPENDICES Appendix A: Parameter summary Appendix B: Boot Status codes (RUN_STATUS) Appendix C: Example SPISPEC file format Appendix D: Custom connection for SPI Booting of XVF3510-UA on Development kit Appendix E: USB Enumeration data Appendix F: USB HID - Development kit worked example Appendix G: General purpose filter example Appendix H: Control parameter protocol Appendix I: Flash programming and update flow...
  • Page 65: Appendix A: Parameter Summary

    APPENDIX A: PARAMETER SUMMARY The following section summarises the XVF3510 parameters which are programmable via the control interfaces or flash data partition. These parameters allow the setup of the XVF3510 processor’s interfaces and tuning of the internal signal processing. To aid quick reference of the key parameters the summary is split into two sections. The first details the most frequently used parameters which are required for interface configuration and basic control, and the second detail advanced parameters which will not generally need to be modified.
  • Page 66 3510-UA 3510-INT READ / DESCRIPTION PARAMETER WRITE DEFAULT DEFAULT Set the serial flash mask for a specific pin. Each bit in the mask describes the GPO GPO_FLASHING state for 100ms intervals Write to a specific GPIO pin GPO_PIN Set the active level for a specific GPO pin. GPO_PIN_ACTIVE_LEVE 0: active low 1: active high GPIO: Write to all pins of a GPIO port...
  • Page 67 USB to device bit resolution USB to device rate 48000 USB_TO_DEVICE_RATE USB Vendor ID 8369 (0x20B1) USB_VENDOR_ID USB Vendor string XMOS USB_VENDOR_STRING xCORE divider from input master clock to MCLK_IN_TO_PDM_CLK _DIVIDER 6.144MHz DDR PDM microphone clock Automatic delay estimator controller ADEC_ENABLED...
  • Page 68 ADVANCED PARAMETERS The following parameters are exposed to allow configuration and measurement of all the stages in the pipeline. These values are for advanced customisation and tuning of the device operation. In most applications they should be left at their default values. Table A-2 Advanced parameter summary READ 3510-UA...
  • Page 69 READ 3510-UA 3510-INT DESCRIPTION PARAMETER DEFAULT DEFAULT WRITE Get microphone client start status. MIC_START_STATUS Reset the max user buffer REMAX_UBM_CYCLES management cycles count Gets run status for the device (See RUN_STATUS Appendix B ) Gets the contents of the SPI read buffer Push SPI command data onto the SPI_PUSH...
  • Page 70 READ 3510-UA 3510-INT DESCRIPTION PARAMETER DEFAULT DEFAULT WRITE AEC X energy delta X_ENERGY_DELTA_AEC X_ENERGY_GAMMA_LOG AEC X energy gamma log2 2_AEC AEC y channels Y_CHANNELS_AEC IC: get adaptation config ADAPTATION_CONFIG_IC IC: get bypass state BYPASS_IC CH1_BEAMFORM_ENABL Channel 1 Beamforming enabled IC Coefficient index COEFFICIENT_INDEX_IC IC Filter coefficients FILTER_COEFFICIENTS_IC...
  • Page 71 READ 3510-UA 3510-INT DESCRIPTION PARAMETER DEFAULT DEFAULT WRITE AEC Goodness Metric estimate (0.0 - 1.0) State of XVF3510 alternate ALT_ARCH_ENABLED architecture setting ERLE bad threshold in bits (log2) ERLE_BAD_BITS Set how steeply AGM drops off when 0.0664 0.0664 ERLE_BAD_GAIN ERLE below threshold ERLE good threshold in bits (log2) ERLE_GOOD_BITS LOCKER_DELAY_SETPOI...
  • Page 72 READ 3510-UA 3510-INT DESCRIPTION PARAMETER DEFAULT DEFAULT WRITE ERLE gain PHASE_POWER_INDEX 0.000000 dB 0.000000 dB 5 phase powers (240 samples per 0.000000 dB 0.000000 dB phase) used in delay estimation from 0.000000 dB 0.000000 dB PHASE_POWERS the index set. 0.000000 dB 0.000000 dB 0.000000 dB 0.000000 dB...
  • Page 73 READ 3510-UA 3510-INT DESCRIPTION PARAMETER DEFAULT DEFAULT WRITE Loss control enable for channel 1 LC_ENABLED_CH1_AGC Lower threshold of AGC desired level LOWER_THRESHOLD_CH 0.1905 0.1905 for channel 0 0_AGC Lower threshold of AGC desired level LOWER_THRESHOLD_CH 1_AGC for channel 1 Upper threshold of AGC desired UPPER_THRESHOLD_CH0 0.7079 0.7079...
  • Page 74 FIRMWARE INFORMATION The following parameters can also be read from the device. They provide information on the firmware construction for XMOS support purposes only. Table 6-3 XMOS Internal Information READ 3510-UA 3510-INT PARAMETER DESCRIPTION DEFAULT DEFAULT WRITE BLD_HOST Build host...
  • Page 75: Appendix B: Boot Status Codes (Run_Status)

    APPENDIX B: BOOT STATUS CODES (RUN_STATUS) The following table describes the Boot status codes returned by the startup processes accessible though the GET_RUN_STATUS control utility command. CODE LABEL NOTE INIT Reserved initial value. Decline attempts to initiate DFU. DATA_PARTITION_NOT_FOUND Not used. FACTORY_DATA_SUCCESS Normal operation.
  • Page 76: Appendix C: Example .Spispec File Format

    APPENDIX C: EXAMPLE .SPISPEC FILE FORMAT SPISPEC file for Adesto AT25SF161. /* AT25SF161 - Just specify 0 as flash_id */ 256, /* page size */ 8192, /* num pages */ /* address size */ /* log2 clock divider */ 0x9F, /* QSPI_RDID */ /* id dummy bytes */ /* id size in bytes */...
  • Page 77: Appendix D: Spi Boot Custom Connection

    APPENDIX D: SPI BOOT CUSTOM CONNECTION SPI BOOT UA XVF3510 DEVICE release package contains the send_image_from_rpi.py and the SPI bootable image of the corresponding build in the bin folder. If booting an UA binary via SPI, the ribbon cable between the PiHat and the XVF3510 device must be disconnected and the following pins must be connected: SIGNAL CONNECTION CONNECTOR...
  • Page 78: Appendix E: Usb Enumeration

    0014 usbccgp 2.00 Composite Adaptive Device Device XVF3510 Audio Audio (UAC1.0) Audio 20b1 0014 usbaudio 2.00 Device Device Adaptive XVF3510 XMOS Vendor (UAC1.0) 20b1 0014 2.00 Control Specific Adaptive XVF3510 HID (Human Input Input (UAC1.0) Interface 20b1 0014 HidUsb 2.00...
  • Page 79: Appendix F: Usb Hid - Example Using The Development Kit

    Now toggle INT_N signal on the XK-VF3510 board by connecting it to 3V3 and GND using a jump wire. Example output from evtest is: Input driver version is 1.0.1 Input device ID: bus 0x3 vendor 0x20b1 product 0x14 version 0x110 Input device name: "XMOS XVF3510 (UAC1.0) Adaptive" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY)
  • Page 80: Appendix G: General Purpose Filter Example

    APPENDIX G: GENERAL PURPOSE FILTER EXAMPLE WORKED EXAMPLE Steps in this example: Set the stereo USB output to listen to the stereo USB input (loopback, skipping audio processing pipeline completely) Apply a stereo 500Hz high-pass and 4kHz low-pass cascaded biquad filter The 500Hz high-pass filter coefficients are: a1 = -1.90748889 a2 = 0.91158173...
  • Page 81: Appendix H: Command Transport Protocol

    APPENDIX H: COMMAND TRANSPORT PROTOCOL TRANSPORTING CONTROL PARAMETERS PROTOCOL Control parameters are converted to an array of bytes in network byte order (big endian) before they’re sent over the transport protocol. For example, to set a control parameter to integer value 305419896 which corresponds to hex 0x12345678, the array of bytes sent over the transport protocol would be {0x12, 0x34, 0x56, 0x78}.
  • Page 82 The bytes sequence sent between I2C start and stop for SET_ commands is shown in the figure below. For GET_ commands, the I2C commands sequence consists of a write command followed by a read command with a repeated start between the 2 commands. The write command writes the resource ID, command ID and the expected data length to the device and the read command reads the status byte followed by the rest of the payload that makes up the control parameter value.
  • Page 83 APPENDIX I: FLASH PROGRAMMING AND UPDATE FLOW The figure below shows the workflow and the image files that are used to programme the XVF3510 firmware. XM-014232-PC...
  • Page 84: Appendix J: Capturing Packed Samples

    APPENDIX J: CAPTURING PACKED SAMPLES To assist with system integration, the XVF3510 provides the ability to pack multiple 16kHz channels into a 48kHz output. The following section describes the usage of packed signals. All packed functions provide a snapshot of a 16kHz signals over a 48kHz output . If the output stream is not 48kHz, it will not work because the 3x bandwidth is needed for packing the 16kHz signals.
  • Page 85 Next, add the following sections to a ua_24b_packed.json file item section and save it: "path": "input/set_packed_all_on_usb_out.txt", "comment": "" "path": "input/device_to_usb_bit_res_24.txt", "comment": "" Now we generate the data partition from our updated json file: python3 xvf3510_data_partition_generator.py ua_24b_packed.json This will generate the new data partition file as follows: output/data_partition_factory_ua_24b_packed_v4_0_0.bin.
  • Page 86 Below is a visualisation of a six-channel audio capture. Note the relatively quiet mic signals compared with the reference. This is typical and allows for loud near-end signals without distortion. PACKING SPECIFIC SIGNALS PACKED_PIPELINE_OUTPUT, PACKED_MIC, PACKED_REF all use the same underlying packing function.

This manual is also suitable for:

Vocalfusion xvf3510-intVocalfusion xvf3510-ua

Table of Contents