Digital Signal Processing (DSP)
The DSP API provides an architecture agnostic way for signal processing. Currently, the API will work on any architecture but will likely not be optimized. The status of the various architectures can be found below:
ARC ARM ARM64 MIPS NIOS2 POSIX RISCV RISCV64 SPARC X86 XTENSA
Unoptimized Optimized Optimized Unoptimized Unoptimized Unoptimized Unoptimized Unoptimized Unoptimized Unoptimized Unoptimized
zDSP provides various backend options which are selected automatically for the application. By default, including the CMSIS module will enable all architectures to use the zDSP APIs. This can be done by setting:
If your application requires some additional customization, it’s possible to
CONFIG_DSP_BACKEND_CUSTOM which means that the
application is responsible for providing the implementation of the zDSP
Optimizing for your architecture
If your architecture is showing as
Unoptimized, it’s possible to add a new
zDSP backend to better support it. To do that, a new Kconfig option should be
added to subsys/dsp/Kconfig along with the required dependencies and the
default set for
DSP_BACKEND Kconfig choice.
Next, the implementation should be added at
linked in at subsys/dsp/CMakeLists.txt.
- group math_dsp
typedef int8_t q7_t
8-bit fractional data type in 1.7 format.
typedef int16_t q15_t
16-bit fractional data type in 1.15 format.
typedef int32_t q31_t
32-bit fractional data type in 1.31 format.
typedef int64_t q63_t
64-bit fractional data type in 1.63 format.
typedef __fp16 float16_t
16-bit floating point type definition.
typedef float float32_t
32-bit floating-point type definition.
typedef double float64_t
64-bit floating-point type definition.
- typedef int8_t q7_t