Introduction
Microchip's PolarFire® SoC FPGAs include the industry's RISC-V based Microprocessor Subsystem (MSS) and FPGA fabric that inherits all the features of the PolarFire family. The PolarFire SoC MSS includes 5x 64-bit RISC-V processor cores, AXI Switch, DDR Controller, Fabric Interface Controllers (FIC), and a rich set of peripherals. It also offers an unparalleled combination of low power consumption, thermal efficiency, and defense-grade security for smart, connected systems. It is the first SoC FPGA with a deterministic L2 memory subsystem enabling real-time applications. Built on the award-winning, mid-range, and low-power PolarFire FPGA architecture, PolarFire SoC devices deliver up to 50% lower power than alternative FPGAs, span from 25k to 460k logic elements, and feature 12.7G transceivers.
Microchip's PolarFire SoC Icicle kit features an MPFS250T PolarFire SoC device and on-board memories, such as LPDDR4, SPI, and eMMC flash for running Linux. For more information, see UG0882: PolarFire SoC FPGA ICICLE Kit User Guide.
Opus codec is an open-source interactive speech and audio codec that scales from low bitrate for narrowband speech to very high-quality stereo music. It targets a wide range of real-time Internet applications. Opus codec uses both Linear Prediction (LP) (based on the SILK codec) and the Modified Discrete Cosine Transform (MDCT) (based on the CELT codec) to achieve excellent compression for both speech and music. Opus codec is critical for interactive speech and music transmission over the Internet, and is used for streaming and storage applications.
Opus codec is also suitable for non-real-time stored-file applications, such as music distribution, game soundtracks, portable music players, jukeboxes, and other applications, such as MP3, AAC, or Vorbis. For more information, see Opus codec web page.
Opus codec supports the following features:
- Sampling rates from 8 kHz (narrowband) to 48 kHz (full band).
- Variable bitrates from 6 Kbytes/s to 510 Kbytes/s.
- Variable frame sizes from 2.5 ms to 60 ms.
- Support for both Constant Bitrate (CBR) and Variable Bitrate (VBR).
- Audio bandwidth from narrowband to full band.
- Support for speech and music.
- Support for mono and stereo.
- Support for up to 255 channels (multistream frames).
- Dynamically adjustable bitrate, audio bandwidth, and frame size.
- Good loss robustness and Packet Loss Concealment (PLC).
- Floating point and fixed-point implementation.
This white paper describes CPU performance results in terms of throughput. These results are based on the industry-standard mode of operations, such as Skype's SILK and Xiph.Org's CELT. The throughput is calculated by executing the standard audio test vectors with Opus audio codec on the PolarFire SoC Icicle kit. This benchmark runs on Linux (DDR) and requires only one application processor core from MSS. For more information about PolarFire SoC Icicle Kit, see UG0882: PolarFire SoC FPGA ICICLE Kit User Guide.
Opus operates in SILK only (Speech to Wideband), CELT only (Music), and Hybrid (Both SILK and CELT) modes. The standard audio test vector is executed in Hybrid mode to get the performance outcome in terms of throughput.
Figure shows the top-level block diagram of Opus codec. The source image is captured from arxiv.org/pdf/1602.04845.pdf.
CELT operates at a sampling rate of 48 kHz, while SILK operates at 8 kHz, 12 kHz, or 16 kHz. In the Hybrid mode of operation, the crossover frequency is 8 kHz, with SILK operating at 16 kHz and CELT discarding all frequencies below the 8 kHz Nyquist rate.
Opus codec utilizes lossy compression, which is designed to efficiently code audio with a low latency, making it suitable for real time communication. Opus codec replaces both the Vorbis and Speex codecs. Opus codec's low complexity allows it to run efficiently on the PolarFire SoC Icicle kit with high throughput in the Hybrid mode. The following table lists the system configuration used to measure benchmark values for Opus codecs.
System Configuration | Description |
---|---|
Product and Architecture | PolarFire SoC FPGA, RISC-V 64-bit |
Platform | Linux |
CPU Core Frequency | 600 MHz |
External Memory Access | eMMC/SD, LPDDR4 |
LPDDR4 Frequency | 800 MHz |
Compiler | GCC |
Toolchain | riscv64-oe-linux-gcc (v9.3.0) |