0% found this document useful (0 votes)
25 views91 pages

Ccrma Colloq Oct22

The document discusses the Emeraude research team's work on high-level programming of FPGAs for real-time audio signal processing applications, highlighting the advantages of FPGAs such as low latency and high parallelization. It introduces Faust, a functional programming language developed for audio processing, and the SyFaLa tool that facilitates programming FPGAs using Faust. The presentation outlines the challenges of FPGA programming and the potential applications in audio DSP.

Uploaded by

vco.osc
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views91 pages

Ccrma Colloq Oct22

The document discusses the Emeraude research team's work on high-level programming of FPGAs for real-time audio signal processing applications, highlighting the advantages of FPGAs such as low latency and high parallelization. It introduces Faust, a functional programming language developed for audio processing, and the SyFaLa tool that facilitates programming FPGAs using Faust. The presentation outlines the challenges of FPGA programming and the potential applications in audio DSP.

Uploaded by

vco.osc
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 91

High-Level Programming of FPGAs for

Audio Real-Time Signal Processing


Applications
Faust -> FPGA -> Sound

Romain Michon, Tanguy Risset, and Maxime Popoff


Emeraude Project-Team @ INRIA Lyon (France)
CCRMA Colloquium
October 26th , 2022
https://ccrma.stanford.edu/~rmichon/talks/ccrma-colloq-oct22.pdf
Presentation Outline

1 The Emeraude Team

2 What’s an FPGA?

3 FPGAs and Real-Time Audio DSP

4 SyFaLa: Faust and FPGAs

5 Performances, Applications, and Research Avenues

1 29
Emeraude: Who Are We?

INRIA (French National Institute for Research in Digital Science and Technology)
research team based in Lyon (France)

2 29
Emeraude: Who Are We?

INRIA (French National Institute for Research in Digital Science and Technology)
research team based in Lyon (France)
Main Research Interest: Embedded Audio Systems and Their Programming

2 29
Emeraude: Who Are We?

INRIA (French National Institute for Research in Digital Science and Technology)
research team based in Lyon (France)
Main Research Interest: Embedded Audio Systems and Their Programming
Gathers the strengths of INRIA, INSA Lyon (Engineering School), and GRAME-CNCM
(birthplace of the Faust programming language)

2 29
Emeraude: Who Are We?

INRIA (French National Institute for Research in Digital Science and Technology)
research team based in Lyon (France)
Main Research Interest: Embedded Audio Systems and Their Programming
Gathers the strengths of INRIA, INSA Lyon (Engineering School), and GRAME-CNCM
(birthplace of the Faust programming language)
5 faculty, 4 PhD Candidates, 1 postdoc, 1 engineer, bunch of interns

2 29
What’s an FPGA?

Field-Programmable Gate Array.

3 29
What’s an FPGA?

Field-Programmable Gate Array.


Integrated circuit designed to be configured “on the field” using a Hardware Description
Language (HDL).

3 29
What’s an FPGA?

Field-Programmable Gate Array.


Integrated circuit designed to be configured “on the field” using a Hardware Description
Language (HDL).
FPGAs contain an array of programmable logic blocks, and a hierarchy of reconfigurable
interconnects allowing blocks to be wired together.

3 29
What’s an FPGA?

Field-Programmable Gate Array.


Integrated circuit designed to be configured “on the field” using a Hardware Description
Language (HDL).
FPGAs contain an array of programmable logic blocks, and a hierarchy of reconfigurable
interconnects allowing blocks to be wired together.
FPGA performances are limited by: (i) the amount of resources available on the chip, (ii)
the maximum clock at which it can be ran.

3 29
What’s an FPGA?

Field-Programmable Gate Array.


Integrated circuit designed to be configured “on the field” using a Hardware Description
Language (HDL).
FPGAs contain an array of programmable logic blocks, and a hierarchy of reconfigurable
interconnects allowing blocks to be wired together.
FPGA performances are limited by: (i) the amount of resources available on the chip, (ii)
the maximum clock at which it can be ran.
FPGAs provide a high level of parallelization.

3 29
What’s an FPGA?

Field-Programmable Gate Array.


Integrated circuit designed to be configured “on the field” using a Hardware Description
Language (HDL).
FPGAs contain an array of programmable logic blocks, and a hierarchy of reconfigurable
interconnects allowing blocks to be wired together.
FPGA performances are limited by: (i) the amount of resources available on the chip, (ii)
the maximum clock at which it can be ran.
FPGAs provide a high level of parallelization.
The two main manufacturers of FPGAs are Xilinx/AMD and Altera/Intel.
3 29
FPGAs and Real-Time Audio Processing

FPGAs offer unique features in the context of audio real-time DSP:

4 29
FPGAs and Real-Time Audio Processing

FPGAs offer unique features in the context of audio real-time DSP:


▶ Sample-per-sample computation (no buffering)

4 29
FPGAs and Real-Time Audio Processing

FPGAs offer unique features in the context of audio real-time DSP:


▶ Sample-per-sample computation (no buffering)
▶ High sampling rate (>20MHz)

4 29
FPGAs and Real-Time Audio Processing

FPGAs offer unique features in the context of audio real-time DSP:


▶ Sample-per-sample computation (no buffering)
▶ High sampling rate (>20MHz)
▶ Extremely low latency

4 29
FPGAs and Real-Time Audio Processing

FPGAs offer unique features in the context of audio real-time DSP:


▶ Sample-per-sample computation (no buffering)
▶ High sampling rate (>20MHz)
▶ Extremely low latency
▶ Large number of GPIOs allowing for direct interfacing with audio codec chips, etc.

4 29
FPGAs and Real-Time Audio Processing

FPGAs offer unique features in the context of audio real-time DSP:


▶ Sample-per-sample computation (no buffering)
▶ High sampling rate (>20MHz)
▶ Extremely low latency
▶ Large number of GPIOs allowing for direct interfacing with audio codec chips, etc.
Highly adapted to audio DSP algorithms with a high potential for parallelization (e.g.,
spatial audio, modal synthesis, etc.)

4 29
FPGAs and Real-Time Audio Processing

FPGAs offer unique features in the context of audio real-time DSP:


▶ Sample-per-sample computation (no buffering)
▶ High sampling rate (>20MHz)
▶ Extremely low latency
▶ Large number of GPIOs allowing for direct interfacing with audio codec chips, etc.
Highly adapted to audio DSP algorithms with a high potential for parallelization (e.g.,
spatial audio, modal synthesis, etc.)
FPGAs are already used at the heart of some high-end professional audio products.

4 29
Dante Audio Interface Based on a Xilinx Spartan 6
(this one was found in a CCRMA trashcan ;) ). In this specific case, the power of the FPGA is
exploited to interface with multiple audio codec chips in parallel and to compute a large
number of audio channels.

5 29
Novation Summit Keyboard
(this one was not found in a CCRMA trashcan ;) ). In this specific case, the power of the
FPGA is exploited to implement digital oscillators running at a very high audio sampling rate
(about 24MHz), approximating analog...

6 29
Antelope Audio Synergy Core Series
High-end audio interfaces and processors based on FPGAs. In this specific case, FPGAs are
used for their computational power.

7 29
Now if FPGAs are so great for audio,
why don’t we see more of them (both in
the industry and in academia)?

8 29
Because they’re extremely hard to program and their
architecture is intrinsically low-level...

9 29
Basic Audio-FPGA System Architecture

Sensors (e.g., Pots, etc.)

Sensors ADC

CPU
DDR
FPGA

Audio Inputs Audio Codec Audio Outputs

10 29
Programming an FPGA-Based Board for Audio Applications:
a Challenging Task

11 29
Programming an FPGA-Based Board for Audio Applications:
a Challenging Task

Interfacing the CPU and the FPGA

11 29
Programming an FPGA-Based Board for Audio Applications:
a Challenging Task

Interfacing the CPU and the FPGA


Interfacing DDR (RAM) with the CPU and the FPGA

11 29
Programming an FPGA-Based Board for Audio Applications:
a Challenging Task

Interfacing the CPU and the FPGA


Interfacing DDR (RAM) with the CPU and the FPGA
Balancing computation between the CPU and the FPGA

11 29
Programming an FPGA-Based Board for Audio Applications:
a Challenging Task

Interfacing the CPU and the FPGA


Interfacing DDR (RAM) with the CPU and the FPGA
Balancing computation between the CPU and the FPGA
All of the above imply important design choices (e.g., what goes in the RAM, on the
FPGA, on the CPU, etc.?)

11 29
Programming an FPGA-Based Board for Audio Applications:
a Challenging Task

Interfacing the CPU and the FPGA


Interfacing DDR (RAM) with the CPU and the FPGA
Balancing computation between the CPU and the FPGA
All of the above imply important design choices (e.g., what goes in the RAM, on the
FPGA, on the CPU, etc.?)
Interfacing the FPGA with audio codec chips

11 29
Programming an FPGA-Based Board for Audio Applications:
a Challenging Task

Interfacing the CPU and the FPGA


Interfacing DDR (RAM) with the CPU and the FPGA
Balancing computation between the CPU and the FPGA
All of the above imply important design choices (e.g., what goes in the RAM, on the
FPGA, on the CPU, etc.?)
Interfacing the FPGA with audio codec chips
Dealing with clocking issues

11 29
Programming an FPGA-Based Board for Audio Applications:
a Challenging Task

Interfacing the CPU and the FPGA


Interfacing DDR (RAM) with the CPU and the FPGA
Balancing computation between the CPU and the FPGA
All of the above imply important design choices (e.g., what goes in the RAM, on the
FPGA, on the CPU, etc.?)
Interfacing the FPGA with audio codec chips
Dealing with clocking issues
Dealing with hardware description languages (i.e., Verilog or VHDL) implying the use of
fixed-point arithmetic

11 29
Programming an FPGA-Based Board for Audio Applications:
a Challenging Task

Interfacing the CPU and the FPGA


Interfacing DDR (RAM) with the CPU and the FPGA
Balancing computation between the CPU and the FPGA
All of the above imply important design choices (e.g., what goes in the RAM, on the
FPGA, on the CPU, etc.?)
Interfacing the FPGA with audio codec chips
Dealing with clocking issues
Dealing with hardware description languages (i.e., Verilog or VHDL) implying the use of
fixed-point arithmetic
Etc.

11 29
Dev Board Based on an FPGA: the Digilent Zybo Z7

12 29
Faust comes to the rescue!

13 29
What is Faust?

14 29
What is Faust?

Faust is a functional programming language for real-time audio signal processing.

14 29
What is Faust?

Faust is a functional programming language for real-time audio signal processing.


It has been developed for the past 20 years by members of the Emeraude team and a
worldwide community.

14 29
What is Faust?

Faust is a functional programming language for real-time audio signal processing.


It has been developed for the past 20 years by members of the Emeraude team and a
worldwide community.
The Faust compiler can target a wide range of languages such as C, C++, Java, LLVM,
Web Assembly, Rust, and many more.

14 29
What is Faust?

Faust is a functional programming language for real-time audio signal processing.


It has been developed for the past 20 years by members of the Emeraude team and a
worldwide community.
The Faust compiler can target a wide range of languages such as C, C++, Java, LLVM,
Web Assembly, Rust, and many more.
The Faust compiler provides a high level of control on the generated code.

14 29
What is Faust?

Faust is a functional programming language for real-time audio signal processing.


It has been developed for the past 20 years by members of the Emeraude team and a
worldwide community.
The Faust compiler can target a wide range of languages such as C, C++, Java, LLVM,
Web Assembly, Rust, and many more.
The Faust compiler provides a high level of control on the generated code.
One of Faust’s strength lies in its DSP libraries implementing hundreds of algorithms:
filters, generators, audio effects, etc.

14 29
What is Faust?

Faust is a functional programming language for real-time audio signal processing.


It has been developed for the past 20 years by members of the Emeraude team and a
worldwide community.
The Faust compiler can target a wide range of languages such as C, C++, Java, LLVM,
Web Assembly, Rust, and many more.
The Faust compiler provides a high level of control on the generated code.
One of Faust’s strength lies in its DSP libraries implementing hundreds of algorithms:
filters, generators, audio effects, etc.
Faust is open source: https://faust.grame.fr

14 29
SyFaLa: Faust -> FPGA

15 29
SyFaLa: Faust -> FPGA

SyFaLa is an open-source tool developed by the Emeraude team allowing for the
programming of Zybo Z7 and Ultracale Genesys FPGA-based boards with Faust:
https://github.com/inria-emeraude/syfala

15 29
SyFaLa: Faust -> FPGA

SyFaLa is an open-source tool developed by the Emeraude team allowing for the
programming of Zybo Z7 and Ultracale Genesys FPGA-based boards with Faust:
https://github.com/inria-emeraude/syfala
SyFaLa heavily relies on High Level Synthesis (HLS) tools provided by Xilinx.

15 29
SyFaLa: Faust -> FPGA

SyFaLa is an open-source tool developed by the Emeraude team allowing for the
programming of Zybo Z7 and Ultracale Genesys FPGA-based boards with Faust:
https://github.com/inria-emeraude/syfala
SyFaLa heavily relies on High Level Synthesis (HLS) tools provided by Xilinx.
The Faust FPGA IP (Intellectual Property) is produced using HLS
(Faust -> C++ -> HLS -> IP).

15 29
SyFaLa: Faust -> FPGA

SyFaLa is an open-source tool developed by the Emeraude team allowing for the
programming of Zybo Z7 and Ultracale Genesys FPGA-based boards with Faust:
https://github.com/inria-emeraude/syfala
SyFaLa heavily relies on High Level Synthesis (HLS) tools provided by Xilinx.
The Faust FPGA IP (Intellectual Property) is produced using HLS
(Faust -> C++ -> HLS -> IP).
A specific Faust backend was created in the context of SyFaLa to target HLS and
architectures based on a CPU and an FPGA with potential external memory (i.e., DDR).

15 29
SyFaLa: Faust -> FPGA

SyFaLa is an open-source tool developed by the Emeraude team allowing for the
programming of Zybo Z7 and Ultracale Genesys FPGA-based boards with Faust:
https://github.com/inria-emeraude/syfala
SyFaLa heavily relies on High Level Synthesis (HLS) tools provided by Xilinx.
The Faust FPGA IP (Intellectual Property) is produced using HLS
(Faust -> C++ -> HLS -> IP).
A specific Faust backend was created in the context of SyFaLa to target HLS and
architectures based on a CPU and an FPGA with potential external memory (i.e., DDR).
SyFaLa supports various external audio codecs (e.g., Analog Devices ADAU 1777, ADAU
1787, etc.) with various configurations (e.g., Time Division Multiplexing/TDM, different
codecs used in parallel).

15 29
SyFaLa: Faust -> FPGA

SyFaLa is an open-source tool developed by the Emeraude team allowing for the
programming of Zybo Z7 and Ultracale Genesys FPGA-based boards with Faust:
https://github.com/inria-emeraude/syfala
SyFaLa heavily relies on High Level Synthesis (HLS) tools provided by Xilinx.
The Faust FPGA IP (Intellectual Property) is produced using HLS
(Faust -> C++ -> HLS -> IP).
A specific Faust backend was created in the context of SyFaLa to target HLS and
architectures based on a CPU and an FPGA with potential external memory (i.e., DDR).
SyFaLa supports various external audio codecs (e.g., Analog Devices ADAU 1777, ADAU
1787, etc.) with various configurations (e.g., Time Division Multiplexing/TDM, different
codecs used in parallel).
A series of open-source modular sister boards for the Zybo Z7 that can be used to
control the parameters of audio DSP have been implemented.

15 29
SyFaLa: Faust -> FPGA

SyFaLa is an open-source tool developed by the Emeraude team allowing for the
programming of Zybo Z7 and Ultracale Genesys FPGA-based boards with Faust:
https://github.com/inria-emeraude/syfala
SyFaLa heavily relies on High Level Synthesis (HLS) tools provided by Xilinx.
The Faust FPGA IP (Intellectual Property) is produced using HLS
(Faust -> C++ -> HLS -> IP).
A specific Faust backend was created in the context of SyFaLa to target HLS and
architectures based on a CPU and an FPGA with potential external memory (i.e., DDR).
SyFaLa supports various external audio codecs (e.g., Analog Devices ADAU 1777, ADAU
1787, etc.) with various configurations (e.g., Time Division Multiplexing/TDM, different
codecs used in parallel).
A series of open-source modular sister boards for the Zybo Z7 that can be used to
control the parameters of audio DSP have been implemented.
Much more...

15 29
SyFaLa Toolchain Overview

Faust

sine.dsp
Faust compiler

fpga.cpp IP App arm.cpp


sine.cpp sineApp.cpp

vitis_hls / vivado vitis / gcc


ZYBO
ARM SPI/UART
Audio
IP Faust
app.elf 3
4 5 6
7
2 8
1 9
Codec I2S 0 10
SoC Controls

DDR

16 29
Typical Example of a Faust Program Running On
an FPGA Through SyFaLa

import (" stdfaust . lib ");


f = hslider (" freq [ knob :1]" ,400 ,50 ,2000 ,0.01);
sineOsc = os . oscrs ( f );
echo = +~ @ ( ma . SR *0.5)*0.5;
process = sineOsc : echo : *(0.5);

17 29
Typical Example of a Faust Program Running On
an FPGA Through SyFaLa

import (" stdfaust . lib ");


f = hslider (" freq [ knob :1]" ,400 ,50 ,2000 ,0.01);
sineOsc = os . oscrs ( f );
echo = +~ @ ( ma . SR *0.5)*0.5;
process = sineOsc : echo : *(0.5);

os.oscrs is a sinusoidal oscillator based on 2D vector rotation, undamped


“coupled-form” resonator (lossless 2nd-order normalized ladder filter).

17 29
Typical Example of a Faust Program Running On
an FPGA Through SyFaLa

import (" stdfaust . lib ");


f = hslider (" freq [ knob :1]" ,400 ,50 ,2000 ,0.01);
sineOsc = os . oscrs ( f );
echo = +~ @ ( ma . SR *0.5)*0.5;
process = sineOsc : echo : *(0.5);

os.oscrs is a sinusoidal oscillator based on 2D vector rotation, undamped


“coupled-form” resonator (lossless 2nd-order normalized ladder filter).
To compute the coefficients of the ladder filter from the frequency parameter, the sin
and cos functions are needed: these operations should be carried out on the CPU to
save FPGA space.

17 29
Typical Example of a Faust Program Running On
an FPGA Through SyFaLa

import (" stdfaust . lib ");


f = hslider (" freq [ knob :1]" ,400 ,50 ,2000 ,0.01);
sineOsc = os . oscrs ( f );
echo = +~ @ ( ma . SR *0.5)*0.5;
process = sineOsc : echo : *(0.5);

os.oscrs is a sinusoidal oscillator based on 2D vector rotation, undamped


“coupled-form” resonator (lossless 2nd-order normalized ladder filter).
To compute the coefficients of the ladder filter from the frequency parameter, the sin
and cos functions are needed: these operations should be carried out on the CPU to
save FPGA space.
The long delay in the echo implies the use of a lot of memory: DDR should be used.

17 29
Typical Example of a Faust Program Running On
an FPGA Through SyFaLa

import (" stdfaust . lib ");


f = hslider (" freq [ knob :1]" ,400 ,50 ,2000 ,0.01);
sineOsc = os . oscrs ( f );
echo = +~ @ ( ma . SR *0.5)*0.5;
process = sineOsc : echo : *(0.5);

os.oscrs is a sinusoidal oscillator based on 2D vector rotation, undamped


“coupled-form” resonator (lossless 2nd-order normalized ladder filter).
To compute the coefficients of the ladder filter from the frequency parameter, the sin
and cos functions are needed: these operations should be carried out on the CPU to
save FPGA space.
The long delay in the echo implies the use of a lot of memory: DDR should be used.
The freq parameter here is controlled by a hardware potentiometer connected to the
the sensor ADC.

17 29
Corresponding FPGA Implementation

Potentiometer

Sensors ADC

CPU
- Filter coefs computation

DDR
- Echo Delay
FPGA
- Filter-Based Sine Osc
- Echo

Audio Inputs Audio Codec Audio Outputs

18 29
Modular Control Interface: the “Popophone”

Sister board provided as part of SyFaLa. It is based on a TI sensor ADC and it can host
various controllers: push buttons, rotary and linear potentiometers, etc.

19 29
Performances, Applications,
and Research Avenues

20 29
Ultra-Low Latency: Towards More Efficient Active Control

21 29
Ultra-Low Latency: Towards More Efficient Active Control

When used with audio codec chips optimized for latency such as the ADAU 1787,
ultra-low latency performances can be obtained with our system.

21 29
Ultra-Low Latency: Towards More Efficient Active Control

When used with audio codec chips optimized for latency such as the ADAU 1787,
ultra-low latency performances can be obtained with our system.
The lowest “round-trip” latency that we managed to achieve so far is 11µs (at a
sampling rate of 768kHz).

21 29
Ultra-Low Latency: Towards More Efficient Active Control

When used with audio codec chips optimized for latency such as the ADAU 1787,
ultra-low latency performances can be obtained with our system.
The lowest “round-trip” latency that we managed to achieve so far is 11µs (at a
sampling rate of 768kHz).
Multiple ADAU 1787 codecs can be used on one FPGA. Hence, implementing a system
with 32 audio inputs and 32 audio outputs whith such performances can be easily done
on a basic Zybo Z7 board.

21 29
Ultra-Low Latency: Towards More Efficient Active Control

When used with audio codec chips optimized for latency such as the ADAU 1787,
ultra-low latency performances can be obtained with our system.
The lowest “round-trip” latency that we managed to achieve so far is 11µs (at a
sampling rate of 768kHz).
Multiple ADAU 1787 codecs can be used on one FPGA. Hence, implementing a system
with 32 audio inputs and 32 audio outputs whith such performances can be easily done
on a basic Zybo Z7 board.
Most applications enabled by such performances are related to active acoustic control
(e.g., augmented instruments, noise cancellation, room acoustics, etc.).

21 29
The FAST Project: Faust -> FPGA -> Active Control of Acoustics

FAST gathers the strength


of GRAME-CNCM, INSA
Lyon, INRIA, and LMFA.
FAST is funded by the
French National Agency
for Research (ANR).
2 PhDs, 1 PostDoc, many
interns

https://fast.grame.fr/

22 29
Ultra-High Audio Sampling Rate: When Discrete Becomes
Continuous

23 29
Ultra-High Audio Sampling Rate: When Discrete Becomes
Continuous

Collaboration with Victor Lazzarini and Joe Timoney at Maynooth University (Ireland).

23 29
Ultra-High Audio Sampling Rate: When Discrete Becomes
Continuous

Collaboration with Victor Lazzarini and Joe Timoney at Maynooth University (Ireland).
Sigma-Delta ADCs and DACs are directly implemented/coded on the FPGA allowing
regular digital GPIOs to be used as analog inputs and outputs.

23 29
Ultra-High Audio Sampling Rate: When Discrete Becomes
Continuous

Collaboration with Victor Lazzarini and Joe Timoney at Maynooth University (Ireland).
Sigma-Delta ADCs and DACs are directly implemented/coded on the FPGA allowing
regular digital GPIOs to be used as analog inputs and outputs.
Few electronic components (one resistor and two capacitors for each input/output) are
needed as long as a very high sampling rate is used.

23 29
Ultra-High Audio Sampling Rate: When Discrete Becomes
Continuous

Collaboration with Victor Lazzarini and Joe Timoney at Maynooth University (Ireland).
Sigma-Delta ADCs and DACs are directly implemented/coded on the FPGA allowing
regular digital GPIOs to be used as analog inputs and outputs.
Few electronic components (one resistor and two capacitors for each input/output) are
needed as long as a very high sampling rate is used.
Audio sampling rate up to 25MHz. High sampling rate has a limited impact on the FPGA
performances.

23 29
Ultra-High Audio Sampling Rate: When Discrete Becomes
Continuous

Collaboration with Victor Lazzarini and Joe Timoney at Maynooth University (Ireland).
Sigma-Delta ADCs and DACs are directly implemented/coded on the FPGA allowing
regular digital GPIOs to be used as analog inputs and outputs.
Few electronic components (one resistor and two capacitors for each input/output) are
needed as long as a very high sampling rate is used.
Audio sampling rate up to 25MHz. High sampling rate has a limited impact on the FPGA
performances.
Measured SNR below -96dB with a Σ∆ or order 5.

23 29
Ultra-High Audio Sampling Rate: When Discrete Becomes
Continuous

Collaboration with Victor Lazzarini and Joe Timoney at Maynooth University (Ireland).
Sigma-Delta ADCs and DACs are directly implemented/coded on the FPGA allowing
regular digital GPIOs to be used as analog inputs and outputs.
Few electronic components (one resistor and two capacitors for each input/output) are
needed as long as a very high sampling rate is used.
Audio sampling rate up to 25MHz. High sampling rate has a limited impact on the FPGA
performances.
Measured SNR below -96dB with a Σ∆ or order 5.
Opens the door to audio latency way below 1µs and to potentially some new ways to
approach audio DSP.

23 29
Ultra-High Audio Sampling Rate: When Discrete Becomes
Continuous

Collaboration with Victor Lazzarini and Joe Timoney at Maynooth University (Ireland).
Sigma-Delta ADCs and DACs are directly implemented/coded on the FPGA allowing
regular digital GPIOs to be used as analog inputs and outputs.
Few electronic components (one resistor and two capacitors for each input/output) are
needed as long as a very high sampling rate is used.
Audio sampling rate up to 25MHz. High sampling rate has a limited impact on the FPGA
performances.
Measured SNR below -96dB with a Σ∆ or order 5.
Opens the door to audio latency way below 1µs and to potentially some new ways to
approach audio DSP.
This is an ongoing project: we have a working DAC, we’re now working on the ADC.

23 29
PLASMA: Multichannel Audio on FPGA

PLASMA is an associate research project between CCRMA and Emeraude co-funded by Stanford
and INRIA/INSA aiming at exploring the potential of FPGAs in the context of spatial audio.

24 29
PLASMA: Multichannel Audio on FPGA

PLASMA is an associate research project between CCRMA and Emeraude co-funded by Stanford
and INRIA/INSA aiming at exploring the potential of FPGAs in the context of spatial audio.

Some audio codec chips can be multiplexed using TDM (Time Division Multiplexing)
through a very low number of GPIOs, i.e., 2 + 1 GPIOs for 16 audio channels on the most
powerful codecs such as the ADAU 1787 as long as very fast clocks can be produced.

24 29
PLASMA: Multichannel Audio on FPGA

PLASMA is an associate research project between CCRMA and Emeraude co-funded by Stanford
and INRIA/INSA aiming at exploring the potential of FPGAs in the context of spatial audio.

Some audio codec chips can be multiplexed using TDM (Time Division Multiplexing)
through a very low number of GPIOs, i.e., 2 + 1 GPIOs for 16 audio channels on the most
powerful codecs such as the ADAU 1787 as long as very fast clocks can be produced.
FPGAs have lots of GPIOs (32 of the Zybo Z7, way more on the Genesys), can produce
very fast clocks, and can compute large numbers of digital audio streams in parallel.

24 29
PLASMA: Multichannel Audio on FPGA

PLASMA is an associate research project between CCRMA and Emeraude co-funded by Stanford
and INRIA/INSA aiming at exploring the potential of FPGAs in the context of spatial audio.

Some audio codec chips can be multiplexed using TDM (Time Division Multiplexing)
through a very low number of GPIOs, i.e., 2 + 1 GPIOs for 16 audio channels on the most
powerful codecs such as the ADAU 1787 as long as very fast clocks can be produced.
FPGAs have lots of GPIOs (32 of the Zybo Z7, way more on the Genesys), can produce
very fast clocks, and can compute large numbers of digital audio streams in parallel.
Hence, in theory, hundreds of audio channels can be processed in parallel.

24 29
PLASMA: Multichannel Audio on FPGA

PLASMA is an associate research project between CCRMA and Emeraude co-funded by Stanford
and INRIA/INSA aiming at exploring the potential of FPGAs in the context of spatial audio.

Some audio codec chips can be multiplexed using TDM (Time Division Multiplexing)
through a very low number of GPIOs, i.e., 2 + 1 GPIOs for 16 audio channels on the most
powerful codecs such as the ADAU 1787 as long as very fast clocks can be produced.
FPGAs have lots of GPIOs (32 of the Zybo Z7, way more on the Genesys), can produce
very fast clocks, and can compute large numbers of digital audio streams in parallel.
Hence, in theory, hundreds of audio channels can be processed in parallel.
Initial experiments show that the main bottleneck is the potential number of memory
accesses done by the system in DDR rather than actual computational power. Hence,
algorithm with small memory footprints can run without a problem.

24 29
Centralized FPGA-Based Approach for Spatial Audio
Sound Sources

A large number of audio codec chips are


connected to the FPGA using i2s TDM.
The FPGA is fully programmable in
Faust (i.e., Wave Field Synthesis, Audio Codec Chips (Inputs)

Ambisonics, etc.). Faust Program FPGA Board Control Interface


Sound sources are provided to the
I2s TDM
system as analog audio inputs.
The system is controlled using a laptop Audio Codec Chip Audio Codec Chip Audio Codec Chip
connected to the FPGA, OSC, etc. (Outputs) (Outputs) (Outputs)

[...]

25 29
Towards Affordable WFS/Spatial Audio?

Prototype of a SyFaLa-based WFS system (programmed in Faust) using cheap ($6, well $3 a
year ago lol) Adafruit i2s amplifiers (MAX98357A):

26 29
Performances Overview

Best measured round-trip latency using an audio codec: 11µs


Best theoretical round-trip latency using built-in Σ∆ ADC and DAC: 100ns
Theoretical maxim number of audio inputs and outputs on a Zybo Z7-20 using
audio codecs: 480x480 (more than 1000x1000 on a Genesys board)
Maximum number of biquads running on a Zybo Z7-20 (intermediate range
FPGA): 150

27 29
Improving SyFaLa: Where to Go From Now?

28 29
Improving SyFaLa: Where to Go From Now?

Allowing Faust to generate fixed-point C++ code (we currently have a postdoc working
on this topic).

28 29
Improving SyFaLa: Where to Go From Now?

Allowing Faust to generate fixed-point C++ code (we currently have a postdoc working
on this topic).
Having a fully operational VHDL Faust backend (we have a working prototype, but it
has some limitations).

28 29
Improving SyFaLa: Where to Go From Now?

Allowing Faust to generate fixed-point C++ code (we currently have a postdoc working
on this topic).
Having a fully operational VHDL Faust backend (we have a working prototype, but it
has some limitations).
Parallelizing the code generated by Faust.

28 29
Improving SyFaLa: Where to Go From Now?

Allowing Faust to generate fixed-point C++ code (we currently have a postdoc working
on this topic).
Having a fully operational VHDL Faust backend (we have a working prototype, but it
has some limitations).
Parallelizing the code generated by Faust.
Continuing to improve Faust to make it an industry-grade tool (e.g., finally
enabling multi-rate, facilitating linear algebra, etc.).

28 29
Improving SyFaLa: Where to Go From Now?

Allowing Faust to generate fixed-point C++ code (we currently have a postdoc working
on this topic).
Having a fully operational VHDL Faust backend (we have a working prototype, but it
has some limitations).
Parallelizing the code generated by Faust.
Continuing to improve Faust to make it an industry-grade tool (e.g., finally
enabling multi-rate, facilitating linear algebra, etc.).
Improving Linux integration.

28 29
Improving SyFaLa: Where to Go From Now?

Allowing Faust to generate fixed-point C++ code (we currently have a postdoc working
on this topic).
Having a fully operational VHDL Faust backend (we have a working prototype, but it
has some limitations).
Parallelizing the code generated by Faust.
Continuing to improve Faust to make it an industry-grade tool (e.g., finally
enabling multi-rate, facilitating linear algebra, etc.).
Improving Linux integration.
Using our system in the context active control of room acoustics (i.e., FAST project).

28 29
Improving SyFaLa: Where to Go From Now?

Allowing Faust to generate fixed-point C++ code (we currently have a postdoc working
on this topic).
Having a fully operational VHDL Faust backend (we have a working prototype, but it
has some limitations).
Parallelizing the code generated by Faust.
Continuing to improve Faust to make it an industry-grade tool (e.g., finally
enabling multi-rate, facilitating linear algebra, etc.).
Improving Linux integration.
Using our system in the context active control of room acoustics (i.e., FAST project).
Working more on spatial audio (i.e., PLASMA project, WFS, ambisonics, FPGA-based
ambisonic microphone, etc.).

28 29
Thanks! :)
DSP seminar on Friday (Oct. 28th) on “Compiling Audio DSP for FPGAs Using the Faust
Programming Language and High Level Synthesis”

Send your questions to: romain.michon@inria.fr

More @: https://team.inria.fr/emeraude

Slides @: https://ccrma.stanford.edu/~rmichon/talks/ccrma-colloq-oct22.pdf

29 / 29

You might also like