XMOS VocalFusion XVF3510 User manual

VocalFusion®XVF3510 USER GUIDE
V4.0

XM-014232-PC 2
CONTENTS
1. 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
2. XVF3510 Voice Processor Architecture ..............................................................8
2.1. Overview ...................................................................................................................... 8
2.2. Audio Processing Pipeline ........................................................................................... 8
2.3. ASR and Communication Processing .......................................................................... 9
2.4. XVF3510-INT - For integrated voice interface applications ......................................... 9
2.5. XVF3510-UA - For USB accessory voice interface applications ............................... 10
3. Principles of configuration, control and usage .................................................11
3.1. Firmware release package......................................................................................... 11
3.1.1. “bin” Directory............................................................................................. 12
3.1.2. “data-partition” Directory ............................................................................ 12
3.1.3. “host” Directory........................................................................................... 12
3.2. Required Tools ........................................................................................................... 13
3.2.1. xTIMEcomposer.......................................................................................... 13
3.2.2. Python 3 ...................................................................................................... 14
3.2.3. Host build tools ........................................................................................... 14
3.3. Command-line interface (vfctrl).................................................................................. 14
3.4. Configuration via Control interface............................................................................. 15
3.5. Control operation........................................................................................................ 15
3.5.1. Host Application ......................................................................................... 16
3.5.2. Device Application...................................................................................... 16
3.6. Configuration via Data Partition.................................................................................. 16
3.7. XVF3510 Development kits ........................................................................................ 16
3.8. Updating the firmware................................................................................................ 18
3.9. Operation ................................................................................................................... 19
3.9.1. XVF3510-INT Amazon AVS demonstration................................................. 19
3.9.2. XVF3510-UA USB connected demonstration ............................................. 20
3.9.3. Host Utilities ................................................................................................ 22
3.10. Default operation........................................................................................................ 23

XM-014232-PC 3
4. 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. Boot Image and Data Partition Compatibility checks ................................. 27
4.1.6. Custom flash memory devices.................................................................... 28
4.1.7. SPI Slave Boot ............................................................................................ 29
4.2. Configuration and the Data Partition .......................................................................... 30
4.2.1. Data Partition definition............................................................................... 30
4.2.2. Generating a Data Partition for custom applications.................................. 31
4.2.3. Serial Number ............................................................................................. 32
4.3. Device Interfaces, ...................................................................................................... 32
4.3.1. USB Interface.............................................................................................. 33
4.3.2. USB HID...................................................................................................... 34
4.3.3. I2C Slave Control interface (XVF3510-INT only)......................................... 35
4.3.4. General Purpose Input and Output and Peripheral Bridging ..................... 35
4.3.5. General purpose I/O pINS .......................................................................... 36
4.3.6. General purpose inputs .............................................................................. 36
4.3.7. General purpose outputs ............................................................................ 38
4.3.8. I2C Master peripheral interface (XVF3510-UA Only)................................... 40
4.3.9. SPI Master................................................................................................... 42
4.4. Audio Routing and Filtering........................................................................................ 45
4.4.1. Signal Routing and Scaling......................................................................... 46
4.4.2. General Purpose Filter ................................................................................ 49
4.5. Far-Field Voice Processing ........................................................................................ 51
4.5.1. PDM microphone interface ......................................................................... 51
4.5.2. Automatic Echo Cancellation (AEC) ........................................................... 52
4.5.3. Automatic Delay Estimation & Correction (ADEC)...................................... 53
4.5.4. Interference canceller................................................................................. 57
4.5.5. Noise Suppressor (NS) ............................................................................... 58
4.5.6. Automatic Gain Control (AGC) and Loss Control ....................................... 58
4.5.7. Alternative Architecture mode (ALT_ARCH)............................................... 60

XM-014232-PC 4
5. Additional Information .......................................................................................63
5.1. Documentation ........................................................................................................... 63
5.2. Device firmware and drivers ...................................................................................... 63
6. 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 .................................................................. 77
APPENDIX E: USB ENUMERATION .......................................................................................... 78
APPENDIX F: USB HID - EXAMPLE USING THE DEVELOPMENT KIT ..................................... 79
APPENDIX G: GENERAL PURPOSE FILTER EXAMPLE............................................................ 80
APPENDIX H: COMMAND TRANSPORT PROTOCOL .............................................................. 81
APPENDIX J: CAPTURING PACKED SAMPLES ....................................................................... 84

XM-014232-PC 5
1. VOCALFUSION®XVF3510 USER GUIDE
1.1. SCOPE OF DOCUMENT
The VocalFusion® XVF3510 User guide is written for system architects and engineers designing far-
field voice systems using the XVF3510 Voice processor. The document describes typical usage
models, the processor architecture, key feature operation, and interface definitions. In conjunction with
the product datasheet, these two documents provide all the information required for system design,
from concept to production testing and verification.
It is expected that this document is read in conjunction with the relevant datasheet and that the user
is familiar with basic voice processing terminology.
NOTE: This issue of the user guide covers the functionality supported by version 4.0 of the XVF3510
application firmware.
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.
The XVF3510 processor is designed for seamless integration into consumer electronic products
requiring voice interfaces for Automatic Speech Recognition (ASR), communications or conferencing.
In addition to its class-leading voice processing, the XVF3510 Voice processor provides a
comprehensive set of interfaces and configuration options to simplify the integration of a voice
interface into a wide range of system architectures. This includes specific features required in TV and
set-top box applications, including audio switching and digital inputs and outputs that support
switches and LED indicators.
The XVF3510 Voice processor is initially configured with data stored from a flash memory device or
sent from a host processor. The Device Firmware Upgrade function of the processor allows in field
upgrade ensuring all products can benefit from the latest releases. While the Voice processor is
running, this configuration can be modified by the host system over the XVF3510 control interface. The
control interface also allows the host system to control peripheral devices and obtain status information
from the device and its digital inputs.
Two variants of the XVF3510 are available which have been optimised for different application use
cases. These two variants require different firmware to be loaded onto the device.
Table 1-1 XVF3510 variants
PRODUCT
KEY FEATURES
TARGET APPLICATION
XVF3510-INT
Far-field voice interface
Audio interface: I2S (Slave)
Control interface: I2C (Slave)
Device Firmware Upgrade: I2C (Slave)
Voice interface integrated into the product
XVF3510-UA
Far-field voice interface
Audio interfaces: USB UAC1.0 (and optionally
I2S Master)
Control interface: USB2.0 Full Speed
Device Firmware Upgrade: USB
USB plug-in voice accessory, and integrated
products using USB

XM-014232-PC 6
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. The processed voice signal is output over an I2S bus to the host system and the
XVF3510 receives its I2S audio reference signal for the Acoustic Echo Cancellation function.
Figure 1-1 XVF3510-INT Integrated configuration
1.3.2. XVF3510-UA CONFIGURATION
The XVF3510-UA device replaces the I2C interface of the XVF3510-INT with a USB2.0 compliant PHY
which supports a UAC1.0 audio device for both reference signal input and processed audio output.
In addition, the USB device supports a standard USB Endpoint 0 for device control and a standard
USB HID for status events. An optional I2S master interface is also available on the device to output
an audio signal to an external audio device.
The following block diagram illustrates the typical configuration.
Figure 1-2 XVF3510-UA Configuration for USB-only use case

XM-014232-PC 7
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. Two modes of operation are supported:
} The firmware image can either be stored in a QSPI Flash device which is read by the XFV3510
processor automatically, or
} The firmware image is downloaded to the XVF3510 processor over the SPI interface by the host
processor on the system board.
Selection of the boot mode is made via setting the QSPI_D1/BOOTSEL pin on the device as described
in the datasheet.
The firmware image configures the XVF3510 into a standard, default operational mode. This mode can
be modified at startup via a set of configuration parameters that are stored in the flash device along
with the firmware in the XVF3510 Data Partition. These commands can be used to reconfigure the
device during startup, and also initialise other devices attached to it.
If the device firmware is downloaded from the host, then the data partition is not required and the
device is configured directly over the control interface.

XM-014232-PC 8
2. 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. The audio pipeline provides two different output channels - one that is optimized for
Automatic Speech Recognition systems and the other for voice communications.
Flexible audio signal routing infrastructure and a range of digital inputs and outputs enable the
XVF3510 to be integrated into a wide range of system configurations, that can be configured at start
up and during operation through a set of control registers.
In addition, the XVF3510-UA variant supports a standard USB PHY interface which supports a UAC
audio device and device control over USB. The following sections describe the voice pipeline and the
surrounding infrastructure in more detail.
2.2. AUDIO PROCESSING PIPELINE
The audio processing pipeline is common to both the XVF3510-UA and XVF3510-INT firmware
variants. The signal processing chain is described below, with individual blocks and usage described
in more detail in subsequent sections.
The XVF3510 audio processing pipeline takes inputs from a pair of MEMS Pulse Density Modulation
(PDM) microphones and uses advanced signal processing to create audio streams suitable for use in
Automatic Speech Recognition (ASR) and voice communication applications. The pipeline enhances
the captured audio stream using a set of complementary signal enhancement and noise reduction
processes.
Figure 2-1 The XVF3510 audio pipeline
The pipeline takes its input from a pair of low-cost PDM microphones and converts this signal to PCM
for further processing:
}
Acoustic Echo Cancellation (AEC):
Continuously modelling the room acoustics allows the AEC
to remove audio being played into the room by the product which the XVF3510 is a component

XM-014232-PC 9
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.
Following echo cancellation, the ASR and communications paths diverge to permit parameter tuning
appropriate for the individual audio output use cases.
}
Interference Cancellation (IC):
Suppresses static noise from point sources such as cooker
hoods, washing machines, or radios for which there is no reference audio signal available.
}
Voice Activity Detection (VAD):
Controls adaption the IC and AGC to optimise output for near-
end speech.
}
Noise Suppression (NS):
Suppresses diffuse noise from sources whose frequency
characteristics do not change rapidly over time (i.e., diffuse stationary noise).
}
Automatic Gain Control (AGC):
Controls the audio output level via separate AGC channels for
Automatic Speech Recognition (ASR) and communications output. The VAD is used to prevent
gain changes during speech to improve speech recognition performance.
The pipeline has been designed to minimise the need to tune and modify these functions. However, if
required for specific use cases, these later sections of this document provide details of the relevant
parameters and processes.
2.3. ASR AND COMMUNICATION PROCESSING
The audio pipeline discussed above produces two separate audio streams, one specifically tuned for
integration with keyword and ASR services and the other designed for conferencing and
communication applications. Both processed audio streams are available to be output at the same
using the left and right channels of USB and I2S. The default configuration is as follows:
Table 2-1 Default channel mapping (both USB and I2S)
CHANNEL
DEFAULT
[0] - Left
Automatic Speech Recognition (ASR) optimised
[1] - Right
Communications
In situations where an ASR is used to invoke a call it may be necessary to continually monitor the ASR
channel for a ‘end call’ intent. The parallel output of both ASR and Communications processed streams
allow the combination of high-quality calling audio with the tuned ASR capability.
The IO_MAP configuration parameter (see
Signal flow and processing
section) allows users to also
configure both channels to be ASR or Communications if required.
2.4. XVF3510-INT - FOR INTEGRATED VOICE INTERFACE APPLICATIONS
The XVF3510-INT product embeds the core audio processing pipeline in an audio infrastructure that
supports rate conversion, filtering and signal routing. This infrastructure is controllable by the host
system via a set of control registers. In addition, the XVF3510-INT provides a set of peripheral
interfaces to the host system to other devices, eg digital inputs, LEDs, SPI peripherals etc.
The peripheral interfaces supported include an interface to an optional QSPI Flash device containing
the XVF3510 firmware and configuration information that is loaded by the processor on start-up.

XM-014232-PC 10
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.
The system architecture of the XVF3510-UA is shown below.
Figure 2-3 XVF3510-UA System architecture
NOTE: The XVF3510-UA product also supports a hybrid mode of operation where the reference signal
is delivered via I2S rather than USB. This mode is selected via modification of the configuration data
stored in the flash device.

XM-014232-PC 11
3. PRINCIPLES OF CONFIGURATION, CONTROL AND USAGE
The XVF3510 is intended to be used to provide Far-Field voice to a host system or processor in speech
recognition and communication applications, either closely integrated to the main processor or as a
USB accessory. As such the XVF3510 provides boot mechanisms from either an external QSPI flash
or by the host processor over SPI interface.
To facilitate control in both boot configurations and to allow the specification of the default behaviour,
the XVF3510 implements two mechanisms for control and parameterisation. The first is the Control
Interface which is a direct connection between the host and the XVF3510 and is operational at runtime.
The second is the Data Partition which is held in flash and contains configuration data to parameterise
the XVF3510 on boot up. Both mechanisms have access to the full set of parameters and can both be
used in the application to control and specify the behaviour of the device.
A host tool (vfctrl) is also provided provides command-line access to the control interface, allowing
user access to all the configuration parameters of the XVF3510.
The following sections describe the following aspects of usage, configuration and control:
} Firmware release package;
} xTIMEComposer Tools;
} vfctrl host command line tool;
} Configuration via Control Interface;
} Configuration via Data Partition;
} XVF3510 Development kits usage.
3.1. FIRMWARE RELEASE PACKAGE
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. The version number format is X.Y.Z, eg 4.0.0, and these numbers have
the following meaning.
Table 3-1 Firmware version number structure
DIGIT
NAME
MEANING
X
Major version number
Significant release of the firmware. The control interface may not be backwards
compatible with earlier versions
Y
Minor version number
New features added, but the control interface is backwards compatible with earlier
host applications
Z
Patch version number
Bug fixes for incorrect functionality only. No change to host interface
The release version is contained in the file name of firmware file distribution and can also be read via
the control interface using the GET_VERSION command.

XM-014232-PC 12
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
├── Linux
│└── bin
├── MAC
│└── bin
├── Pi
│├── bin
│└── scripts
├── Win32
│└── bin
└── src
├── dfu
├── dpgen
└── vfctrl
Further information about each component of the release is as follows:
3.1.1. “BIN” DIRECTORY
This directory contains the released firmware for the XVF3510. There are two copies of the firmware;
one intended for loading from an external flash device and one for loading from an external host over
SPI (XVF3510 is the slave). Please refer to the SPI Slave boot section of the datasheet for connections
to the external boot source.
3.1.2. “DATA-PARTITION” DIRECTORY
The data partition contains configuration data for the XVF3510 firmware, implemented as a set of
commands that are run at boot time. The data partition is created using input command source files
and a set of tools which are described in the Data Partition section of this document. The contents of
the data-partition directory are as follows:
The root directory contains default data partition image source files (int.json or ua.json) as well
as the generic flash device specification 16mbit_12.5mhz_sector_4kb.spispec, data partition
generation scripts and short instructions about how to generate data partition binary files.
} The images subdirectory contains pre-generated data partition binary files generated from the
default data partition image source file. These files are suitable for direct programming into the
external flash along with the firmware, should the default settings be suitable.
} The input subdirectory contains short command sequences which are referenced by the data
partition image source file when the data partition binary file is generated.
In addition, an output directory is created during the running of the data partition generation script
which contains the newly generated data partition binary file.
3.1.3. “HOST” DIRECTORY
This directory contains files and utilities relating to the host. The various host utilities that perform
parameter control, DFU and data partition generation are provided pre-compiled for Linux (ARM and
x86), Windows and MacOS platforms. These binaries can be found in the Linux, Pi, Mac and Win32
directories along with an additional script in for the Pi release called send_image_from_rpi.py
which provides an example of sending an SPI boot image from the host.

XM-014232-PC 13
The root of the host directory also contains scripts for unpacking packed signals which can be
captured using the controls described in the signal routing section of this document.
Instructions for building the host utilities from the source are also provided in the same directory. The
source files for the host utilities are contained in the src sub-directory allowing building, modification
or integration into other projects. Within this directory there are three further sub-directories dfu,
dpgen and vfctrl which contain the source files (and dependent libraries) for the DFU, data partition
generator and parameter control utilities.
3.2. REQUIRED TOOLS
In order to update the firmware, modify and regenerate Data Partitions and rebuild the host utilities the
following tools are required.
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.
More recent versions may be available, but unless specified on the website will not have been tested
and verified for operation with XVF3510.
Further information about the full tool suite, including installation instructions for different platforms is
available here in the xTIMEcomposer User Guide - http://www.xmos.com/file/tools-user-guide/
The XVF3510 Voice Processor is provided in two pre-compiled builds (-UA and -INT) and as such only
requires the usage of the xTIMEcomposer programming tools, specifically xFLASH. This operates as
a command-line application, to create the boot image, and if using flash, program the boot image to
the attached device.
An XTAG debugger must be connected to the XVF3510 for flash programming operations. Refer to the
Development Kit User Guide for information on using XTAG connections to XVF3510 development kits.
The basic form of the xFLASH command for flash image creation and programming with a data
partition is as follows (note multiple lines have been used for clarity, but command should be executed
on single line).
xflash --no-compression --boot-partition-size 1048576
--factory [Application executable (.xe)]
--data [Data partition description (.bin)]
For boot image generation over SPI from a host processor the following command is used:
Oculus Reparo (or the xFLASH equivalent)
}
Application executable (.xe):
The .xe file is a boot image provided with a VocalFusion release
package in one of the supported configurations (-UA or -INT product variants).
}
Data partition description (.bin):
The .bin file is a data partition description either supplied in the
release package (-UA or -INT) or customised as described later in this guide.
NOTE: Running xTIMEcomposer on macOS Catalina triggers a security issue. The resolution is
detailed on the website here : https://www.xmos.com/file/running-xtimecomposer-on-macos-catalina/

XM-014232-PC 14
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
The host utilities are built with the
x86 Native Tools Command Prompt for VS
which is installed as part
of the
Build Tools for Visual Studio.
This can be downloaded from Microsoft website (at the time of
writing latest versions available here: https://visualstudio.microsoft.com/downloads/#build-tools-for-
visual-studio-2019). It is important to ensure that the optional
C++ CMake tools for Windows
are
included when setting up the installation.
LINUX
Depending on the distribution and version of Linux used, the following packages may need to be
installed:
sudo apt-get install -y build-essential
sudo apt-get install -y pkg-config
sudo apt-get install -y libusb-1.0-0-dev
MAC OS
The XCode Command Line tools are required to build in on macOS. The following command can be
used to install the tools.
xcode-select --install
3.3. COMMAND-LINE INTERFACE (VFCTRL)
To allow command-line access to the control interface on the XVF3510 processor, the
vfctrl
(
V
ocal
F
usion
c
on
tr
o
l
) utility is provided as part of the release package. This utility
Two versions of this utility are provided for control of the device (a third is used internally by the Data
Partition generation process):
Table 3-2 vfctrl versions and platforms
VERSION
FUNCTION
HOST PLATFORMS SUPPORTED
vfctrl_usb
Control of XVF3510-UA over a USB interface
Windows, MacOS, Linux, Raspbian
vfctrl_i2c
Control of XVF3510-INT over i2c interface
Raspberry Pi (Raspbian) only
Source code for the utility is also provided for compilation for other host devices if required.
The general syntax of the command line tool, when used for device control, is as follows:
vfctrl_usb <COMMAND_VERB> [ arg 1] [arg 2]....[arg N] [# Comment]
The <COMMAND_VERB> is required and is used to control the parameters of the device. Commands
can be read and write commands and are distinguished by the prefix ‘GET_’ and ‘SET_’ for parameter
read and write respectively.

XM-014232-PC 15
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. These are detailed in the command tables later in the document.
If the <COMMAND_VERB> is are GET_ command, the output of the operation is printed to the terminal
as in the example below:
vfctrl_usb GET_GPI
GET_GPI: 13
The number and type of arguments depend on the command and these are detailed in the command
tables. Arguments are integer numbers separated by a space. For setting some parameters that
require floating-point data, the numbers have to be first converted to a Q format and then transferred
as integers.
The specification of the Q format for representing floating-point numbers is given in Appendix H.
A secondary form of vfctrl is also available which provides information for developers
vfctrl [options]
Where [options] can be:
-h, --help : List all command options
-d, --dump-params : Print list of parameter values
-n, --no-check-version : Do not check version of firmware image
3.4. CONFIGURATION VIA CONTROL INTERFACE
The XVF3510 Voice Processor contains parameters which can be read and written by the host
processor at run time. For information writing parameters at boot time for initial configuration, please
see the section on the Data Partition later in this document.
The XVF3510 firmware is provided as two pre-compiled builds, -UA and -INT, which provide a
parameter control mechanism over USB endpoint 0 and I2C respectively.
Device functions have controllable parameters for the audio pipeline, GPIO, sample rate settings,
audio muxing, timing and general device setup and adjustment. Commands support either read using
the GET_ prefix or write using the SET_ prefix. Controllable parameters may either be readable and
writeable, read-only or write-only. Various data types are supported including signed/unsigned integer
of either 8b or 32b, fixed point signed/unsigned and floating-point.
For a comprehensive list of parameters, their data types and an understanding of their function within
the device please consult the User Guide section relevant to the function of interest, or Appendix A
which summarises all the commands. The control utility can also be used by supplying the -h
argument to the command line. This dumps a list of commands to the console along with a brief
description of the function of each command. The remainder of this section will cover the generic
operation of the control interface.
3.5. CONTROL OPERATION
The control interface works by sending a message from the host to the control process within the
XVF3510 device. The time required to execute commands can vary, but most will respond within 30ms.
Since the commands are fully acknowledged, by design, the control utility blocks until completion.
This interface is designed to allow real-time tuning and adjustment but may stall due to bus access or
data retrieval.
The control interface consists of two parts a host side application and the device application. These
are briefly summarised in the following sections.

XM-014232-PC 16
3.5.1. HOST APPLICATION
The example host applications, found in the /host directory in the Release Package, are command-
line utilities that accept text commands and, in the case of a read, provides a text response containing
the read parameter(s). Full acknowledgement is included in the protocol and an error is returned in
the case of the command not being executed properly or handled correctly by the device.
Example host source code and makefiles for are provided in the release package for x86 Linux, ARM
Linux (Raspberry Pi), Windows and Mac platforms along with pre-compiled executables to allow fast
evaluation and integration. For more information refer to the
Building the host utilities from source code
section.
3.5.2. DEVICE APPLICATION
The device is always ready to receive commands. The device includes command buffering and an
asynchronous mechanism which means that Endpoint 0, NACKing for USB or clock stretching for I2C
is not required. This simplifies the host requirements particularly in the cases where clock stretching
is not supported by the host I2C peripheral.
3.6. CONFIGURATION VIA DATA PARTITION
VocalFusion device flash firmware configuration is comprised of a Boot image and a Data Partition.
} The
Boot image
in the form of an .xe archive is the executable code. It is provided as part of the
XVF3510-UA or XVF3510-INT Release Package. This configures the underlying operation of the
device.
} The
Data Partition
configures a running Boot image instance at startup with a set of commands
which are customisable for the specific application. This contains any command that can be
issued at run-time via USB or I2C, plus some more that are boot-time only. Pre-configured Data
Partitions are supplied in the release packages for default operation.
This combination of Boot image and Data Partition allow the functionality of the processor to be
configured and defined without requiring any modification or recompilation of base firmware. The
commands discussed in subsequent sections can be stored in the Data Partition, for execution at
startup redefining the default operation of the device.
3.7. XVF3510 DEVELOPMENT KITS
There are two variants of development kit available: VocalFusion development kit and VocalFusion
development kit for Amazon AVS. These two kits share the same hardware, but differ in the firmware
which is pre-loaded into the flash memory of each kit. This is shown below:
Table 3-3 Development kit variants and firmware pre-loaded
DEVELOPMENT KIT
FIRMWARE
LOADED
NOTES
VocalFusion development kit for
Amazon AVS
XVF3510-INT
(v0.12.0)
https://www.xmos.com/products/voice/amazon
Firmware named “XVF3510 I2S Firmware binary.xe” in v0.12.0
release
VocalFusion development kit
XVF3510-UA
(v0.12.0)
https://www.xmos.com/products/voice/kits
Firmware named “XVF3510 Adaptive USB Firmware binary.xe” in
v0.12.0 release

XM-014232-PC 17
NOTE: Users are recommended to check the website for the latest firmware update, and to follow the
instructions below to update the stored firmware before operation.
The VocalFusion development kit for Amazon AVS, associated setup documents and host code enable
users to build a complete Amazon Alexa endpoint with the addition of a Raspberry PI (not supplied).
The XVF3510-INT connects to the Raspberry PI using I2S for audio, and I2C for control. The signal
flow through the development kit is shown below.
Figure 3-1 Signal flow of the VocalFusion development kit for Amazon AVS (XVF33510-INT)
The VocalFusion development kit provides a USB connection for audio and control. This can be used
for evaluation of other ASRs or simply connected to a laptop or computer for audio analysis. In this
configuration only the XVF3510 processor board and Microphone Array board are required. The signal
flow is shown below:
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 18
3.8. UPDATING THE FIRMWARE
As described above the hardware used on both development kits are identical allowing both firmware
variants, -UA and -INT to operate correctly on either kit. The following steps should be used to update
the firmware on the device.
1. Download the xTIMEcomposer tools from http://www.xmos.com/tools and install onto the
system that will be connected to the board to perform the update.
2. Download the latest version of the required XVF3510 Release Package from
https://www.xmos.com/software/vocalfusion. At the time of writing v4.0 is the latest released
version.
3. Connect the XTAG Debugger to the system using the micro USB connection, plug the
debugger into the 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).
The positions of these connectors are shown in the figure below:
Figure 3-3 Location of Debug and power connectors on XVF3510 Development Kit Processor Board.
4. Open up an ‘xTIMEComposer Command Prompt’, or configure a terminal window using the
appropriate setEnv script defined for the platform. For further information please consult the

XM-014232-PC 19
xTIMEcomposer User Guide (https://www.xmos.com/download/xTIMEcomposer-User-
Guide-14(14.x).pdf).
5. From the ‘xTIME Composer Command Prompt’ or configured terminal window, navigate to
the location of the Release Pack root directory. If installing the XVF3510-INT use the following
command to re-flash the board with the updated XVF3510-INT firmware (note multiple lines
have been used for clarity in command examples, but should be executed on single line):
xflash --no-compression --boot-partition-size 1048576
--factory bin\app_xvf3510_int_vX_X_X.xe
--data data-partition\images\data_partition_factory_int_vX_X_X.bin
If installing the XVF3510-UA use the following command to re-flash the board with the latest XVF3510-
UA firmware:
xflash --no-compression --boot-partition-size 1048576
--factory bin\app_xvf3510_ua_vX_X_X.xe
--data data-partition\images\data_partition_factory_ua_vX_X_X.bin
Once the process has completed the following message indicates successful completion:
Site 0 has finished successfully.
The board is now configured with the latest version of XVF3510-INT or XVF3510-UA firmware.
3.9. OPERATION
The basic operation of both development kit options is described in the sections below.
3.9.1. XVF3510-INT AMAZON AVS DEMONSTRATION
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-
dev-kit-for-amazon-avs-user-guide) detail the setup and usage instructions. For completeness, the
setup and operation are summarised below.
1. Follow the assembly instructions to mount and connect the Raspberry Pi to the development
kit.
2. Insert SD card containing the latest NOOBS installation, connect keyboard, mouse, speakers,
Ethernet (or WIFI), Raspberry Pi to the XVF3510 Processor board USB and apply power to
the Raspberry Pi.
3. Clone the XVF3510 AVS Setup repository onto the Raspberry Pi using the following
command:
git clone https://github.com/xmos/vocalfusion_3510_avs_setup
4. Setup the Amazon Product and Security Profiles by following the instructions at
https://developer.amazon.com/en-GB/docs/alexa/alexa-voice-service/register-a-
product.html
5. Execute the ./auto_install.sh script to setup the Raspberry Pi and build the AVS client.
6. Reboot the Raspberry Pi.
Now the system will operate as an AVS endpoint using the XVF3510-INT as a Far-Field microphone,
and Raspberry Pi to perform keyword detection and run the client.

XM-014232-PC 20
If the option to start the client automatically has been selected it will start on boot, otherwise, the
following command should be from a Raspberry Pi terminal.
avsrun
Control and configuration of the XVF3510-INT is achieved using the I2C control interface. A
VocalFusion Host Control application, (vfctrl_i2c), is provided pre-compiled and as source code for
this purpose. The following steps explain how to use the host control application.
1. Copy the host directory of the Firmware Release Pack to the Raspberry Pi.
2. Navigate from a terminal window to the copied host directory and execute the following
command to list the supported commands and the general form of the utility usage.
.\Pi\bin\vfctrl_i2c --help
To verify that the system is setup correctly use the following command to list the I2C devices detected
on the bus. The XVF3510-INT should appear at bus address 0x2C.
i2cdetect -y 1
If the XVF3510-INT is detected on the bus, but vfctrl_i2c returns the error:
rdwr ioctl error -1: No such device or address
check that the I2S clocks (MCLK, BCLK and LRCLK) are present and operational. Control requests
can only be serviced when the I2S clocks are active.
3.9.2. XVF3510-UA USB CONNECTED DEMONSTRATION
The VocalFusion dev kit uses the XVF3510-UA to implement a USB Audio Class 1.0 (UAC 1.0) Far-
field microphone, which can be connected to any USB host which can support UAC 1.0, such as
laptop computers running Windows, Linux or macOS or Single Board Computer (SBC) systems
running Linux or Android. The VocalFusion dev kit user guide (https://www.xmos.com/file/vocalfusion-
dev-kit-user-guide) and the VocalFusion development kit quick start guide
(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”.
} Next configure the output audio paths in the system such that both the speaker output and AEC
reference paths (USB) are active. Details on how to enable this in Windows, MAC OS and Linux
are provided in the User guide and quick start guides referenced above. Once configured,
audio that is played out of the speakers will simultaneously be sent to the XVF3510 over USB
providing a reference channel for the AEC.
} Now the audio capabilities of the system can be explored using an audio analysis package
such as Audacity to record and playback audio to evaluate the far-field performance, noise
suppression, and echo cancellation.
Control and configuration of the XVF3510-UA are achieved using via the control interface implemented
over USB. A VocalFusion Host Control application, vfctrl_usb, is provided pre-compiled and as source
code for this purpose.
For cross-platform support vfctrl_usb uses libusb. While this is natively supported in macOS and most
Linux distributions, it requires the installation of a driver for use on a Windows host. Driver installation
should be done using a third-party installation tool like Zadig (https://zadig.akeo.ie/).
This manual suits for next models
2
Table of contents
Other XMOS Computer Hardware manuals
Popular Computer Hardware manuals by other brands

Linear
Linear Analog Devices LTM4673 user manual

Alphacool
Alphacool EISBLOCK XPX PRO IU manual

SeaLevel
SeaLevel Ultra-SIO 3089 user manual

Mountain Computer
Mountain Computer Expansion Chassis operating manual

SMART
SMART MOD IIB Installation and service manual

SIIG
SIIG UltraATA 133 PCI Quick installation guide