| .. _zdsp_api: |
| |
| Digital Signal Processing (DSP) |
| ############################### |
| |
| .. contents:: |
| :local: |
| :depth: 2 |
| |
| 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: |
| |
| ============ ============= |
| Architecture Status |
| ============ ============= |
| ARC Optimized |
| ARM Optimized |
| ARM64 Optimized |
| MIPS Unoptimized |
| NIOS2 Unoptimized |
| POSIX Unoptimized |
| RISCV Unoptimized |
| RISCV64 Unoptimized |
| SPARC Unoptimized |
| X86 Unoptimized |
| XTENSA Unoptimized |
| ============ ============= |
| |
| Using zDSP |
| ********** |
| |
| 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:: |
| |
| CONFIG_CMSIS_DSP=y |
| |
| If your application requires some additional customization, it's possible to |
| enable :kconfig:option:`CONFIG_DSP_BACKEND_CUSTOM` which means that the |
| application is responsible for providing the implementation of the zDSP |
| library. |
| |
| 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 :file:`subsys/dsp/Kconfig` along with the required dependencies and the |
| ``default`` set for ``DSP_BACKEND`` Kconfig choice. |
| |
| Next, the implementation should be added at ``subsys/dsp/<backend>/`` and |
| linked in at :file:`subsys/dsp/CMakeLists.txt`. To add architecture-specific attributes, |
| its corresponding Kconfig option should be added to :file:`subsys/dsp/Kconfig` and use |
| them to update ``DSP_DATA`` and ``DSP_STATIC_DATA`` in :file:`include/zephyr/dsp/dsp.h`. |
| |
| API Reference |
| ************* |
| |
| .. doxygengroup:: math_dsp |
| |
| .. _subsys/dsp/Kconfig: https://github.com/zephyrproject-rtos/zephyr/blob/main/subsys/dsp/Kconfig |
| .. _subsys/dsp/CMakeLists.txt: https://github.com/zephyrproject-rtos/zephyr/blob/main/subsys/dsp/CMakeLists.txt |
| .. _include/zephyr/dsp/dsp.h: https://github.com/zephyrproject-rtos/zephyr/blob/main/include/zephyr/dsp/dsp.h |