2023-04-16 08:26:09 +08:00
|
|
|
# Copyright (c) 2023 Meta Platforms
|
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
config ZEPHYR_CMSIS_DSP_MODULE
|
|
|
|
bool
|
|
|
|
|
|
|
|
menuconfig CMSIS_DSP
|
|
|
|
bool "CMSIS-DSP Library Support"
|
|
|
|
help
|
|
|
|
This option enables the CMSIS-DSP library.
|
|
|
|
|
|
|
|
if CMSIS_DSP
|
|
|
|
|
2023-11-24 14:01:53 +08:00
|
|
|
comment "Components"
|
|
|
|
config CMSIS_DSP_BASICMATH
|
|
|
|
bool "Basic Math Functions"
|
|
|
|
help
|
|
|
|
This option enables the Basic Math Functions, which support the
|
|
|
|
following operations:
|
|
|
|
|
|
|
|
* Elementwise Clipping
|
|
|
|
* Vector Absolute Value
|
|
|
|
* Vector Addition
|
|
|
|
* Vector Subtraction
|
|
|
|
* Vector Multiplication
|
|
|
|
* Vector Dot Product
|
|
|
|
* Vector Absolute Value
|
|
|
|
* Vector Negate
|
|
|
|
* Vector Offset
|
|
|
|
* Vector Scale
|
|
|
|
* Vector Shift
|
|
|
|
* Vector Bitwise AND
|
|
|
|
* Vector Bitwise OR
|
|
|
|
* Vector Bitwise Exclusive OR
|
|
|
|
* Vector Bitwise NOT
|
|
|
|
|
|
|
|
config CMSIS_DSP_COMPLEXMATH
|
|
|
|
bool "Complex Math Functions"
|
|
|
|
imply CMSIS_DSP_FASTMATH
|
|
|
|
help
|
|
|
|
This option enables the Complex Math Functions, which support the
|
|
|
|
following operations:
|
|
|
|
|
|
|
|
* Complex-by-Complex Multiplication
|
|
|
|
* Complex-by-Real Multiplication
|
|
|
|
* Complex Dot Product
|
|
|
|
* Complex Magnitude
|
|
|
|
* Complex Magnitude Squared
|
|
|
|
* Complex Conjugate
|
|
|
|
|
|
|
|
config CMSIS_DSP_CONTROLLER
|
|
|
|
bool "Controller Functions"
|
|
|
|
help
|
|
|
|
This option enables the Controller Functions, which support the
|
|
|
|
following operations:
|
|
|
|
|
|
|
|
* PID Control
|
|
|
|
* Vector Clarke Transform
|
|
|
|
* Vector Inverse Clarke Transform
|
|
|
|
* Vector Park Transform
|
|
|
|
* Vector Inverse Park Transform
|
|
|
|
* Sine-Cosine
|
|
|
|
|
|
|
|
These functions can be used to implement a generic PID controller, as
|
|
|
|
well as field oriented motor control using Space Vector Modulation
|
|
|
|
algorithm.
|
|
|
|
|
|
|
|
config CMSIS_DSP_FASTMATH
|
|
|
|
bool "Fast Math Functions"
|
|
|
|
imply CMSIS_DSP_BASICMATH
|
|
|
|
help
|
|
|
|
This option enables the Fast Math Functions, which support the
|
|
|
|
following operations:
|
|
|
|
|
|
|
|
* Fixed-Point Division
|
|
|
|
* Sine
|
|
|
|
* Cosine
|
|
|
|
* Square Root
|
|
|
|
|
|
|
|
config CMSIS_DSP_FILTERING
|
|
|
|
bool "Filtering Functions"
|
|
|
|
imply CMSIS_DSP_BASICMATH
|
|
|
|
imply CMSIS_DSP_FASTMATH
|
|
|
|
imply CMSIS_DSP_SUPPORT
|
|
|
|
help
|
|
|
|
This option enables the Filtering Functions, which support the
|
|
|
|
following operations:
|
|
|
|
|
|
|
|
* Convolution
|
|
|
|
* Partial Convolution
|
|
|
|
* Correlation
|
|
|
|
* Levinson-Durbin Algorithm
|
|
|
|
|
|
|
|
The following filter types are supported:
|
|
|
|
|
|
|
|
* FIR (finite impulse response) Filter
|
|
|
|
* FIR Lattice Filter
|
|
|
|
* FIR Sparse Filter
|
|
|
|
* FIR Filter with Decimator
|
|
|
|
* FIR Filter with Interpolator
|
|
|
|
* IIR (infinite impulse response) Lattice Filter
|
|
|
|
* Biquad Cascade IIR Filter, Direct Form I Structure
|
|
|
|
* Biquad Cascade IIR Filter, Direct Form II Transposed Structure
|
|
|
|
* High Precision Q31 Biquad Cascade Filter
|
|
|
|
* LMS (least mean square) Filter
|
|
|
|
* Normalized LMS Filter
|
|
|
|
|
|
|
|
config CMSIS_DSP_INTERPOLATION
|
|
|
|
bool "Interpolation Functions"
|
|
|
|
help
|
|
|
|
This option enables the Interpolation Functions, which support the
|
|
|
|
following operations:
|
|
|
|
|
|
|
|
* Bilinear Interpolation
|
|
|
|
* Linear Interpolation
|
|
|
|
* Cubic Spline Interpolation
|
|
|
|
|
|
|
|
config CMSIS_DSP_MATRIX
|
|
|
|
bool "Matrix Functions"
|
|
|
|
help
|
|
|
|
This option enables the Matrix Functions, which support the following
|
|
|
|
operations:
|
|
|
|
|
|
|
|
* Matrix Initialization
|
|
|
|
* Matrix Addition
|
|
|
|
* Matrix Subtraction
|
|
|
|
* Matrix Multiplication
|
|
|
|
* Complex Matrix Multiplication
|
|
|
|
* Matrix Vector Multiplication
|
|
|
|
* Matrix Inverse
|
|
|
|
* Matrix Scale
|
|
|
|
* Matrix Transpose
|
|
|
|
* Complex Matrix Transpose
|
|
|
|
* Cholesky and LDLT Decompositions
|
|
|
|
|
|
|
|
config CMSIS_DSP_QUATERNIONMATH
|
|
|
|
bool "Quaternion Math Functions"
|
|
|
|
help
|
|
|
|
This option enables the Quaternion Math Functions, which support the
|
|
|
|
following operations:
|
|
|
|
|
|
|
|
* Quaternion Conversions
|
|
|
|
* Quaternion Conjugate
|
|
|
|
* Quaternion Inverse
|
|
|
|
* Quaternion Norm
|
|
|
|
* Quaternion Normalization
|
|
|
|
* Quaternion Product
|
|
|
|
|
|
|
|
config CMSIS_DSP_STATISTICS
|
|
|
|
bool "Statistics Functions"
|
|
|
|
imply CMSIS_DSP_BASICMATH
|
|
|
|
imply CMSIS_DSP_FASTMATH
|
|
|
|
help
|
|
|
|
This option enables the Statistics Functions, which support the
|
|
|
|
following operations:
|
|
|
|
|
|
|
|
* Minimum
|
|
|
|
* Absolute Minimum
|
|
|
|
* Maximum
|
|
|
|
* Absolute Maximum
|
|
|
|
* Mean
|
|
|
|
* Root Mean Square (RMS)
|
|
|
|
* Variance
|
|
|
|
* Standard Deviation
|
|
|
|
* Power
|
|
|
|
* Entropy
|
|
|
|
* Kullback-Leibler Divergence
|
|
|
|
* LogSumExp (LSE)
|
|
|
|
|
|
|
|
config CMSIS_DSP_SUPPORT
|
|
|
|
bool "Support Functions"
|
|
|
|
help
|
|
|
|
This option enables the Support Functions, which support the
|
|
|
|
following operations:
|
|
|
|
|
|
|
|
* Vector 8-bit Integer Value Conversion
|
|
|
|
* Vector 16-bit Integer Value Conversion
|
|
|
|
* Vector 32-bit Integer Value Conversion
|
|
|
|
* Vector 16-bit Floating-Point Value Conversion
|
|
|
|
* Vector 32-bit Floating-Point Value Conversion
|
|
|
|
* Vector Copy
|
|
|
|
* Vector Fill
|
|
|
|
* Vector Sorting
|
|
|
|
* Weighted Sum
|
|
|
|
* Barycenter
|
|
|
|
|
|
|
|
config CMSIS_DSP_TRANSFORM
|
|
|
|
bool "Transform Functions"
|
|
|
|
imply CMSIS_DSP_BASICMATH
|
|
|
|
help
|
|
|
|
This option enables the Transform Functions, which support the
|
|
|
|
following transformations:
|
|
|
|
|
|
|
|
* Real Fast Fourier Transform (RFFT)
|
|
|
|
* Complex Fast Fourier Transform (CFFT)
|
|
|
|
* Type IV Discrete Cosine Transform (DCT4)
|
|
|
|
|
|
|
|
config CMSIS_DSP_SVM
|
|
|
|
bool "Support Vector Machine Functions"
|
|
|
|
help
|
|
|
|
This option enables the Support Vector Machine Functions, which
|
|
|
|
support the following algorithms:
|
|
|
|
|
|
|
|
* Linear
|
|
|
|
* Polynomial
|
|
|
|
* Sigmoid
|
|
|
|
* Radial Basis Function (RBF)
|
|
|
|
|
|
|
|
config CMSIS_DSP_BAYES
|
|
|
|
bool "Bayesian Estimators"
|
|
|
|
imply CMSIS_DSP_STATISTICS
|
|
|
|
help
|
|
|
|
This option enables the Bayesian Estimator Functions, which
|
|
|
|
implements the naive gaussian Bayes estimator.
|
|
|
|
|
|
|
|
config CMSIS_DSP_DISTANCE
|
|
|
|
bool "Distance Functions"
|
|
|
|
imply CMSIS_DSP_STATISTICS
|
|
|
|
help
|
|
|
|
This option enables the Distance Functions, which support the
|
|
|
|
following distance computation algorithms:
|
|
|
|
|
|
|
|
* Boolean Vectors
|
|
|
|
* Hamming
|
|
|
|
* Jaccard
|
|
|
|
* Kulsinski
|
|
|
|
* Rogers-Tanimoto
|
|
|
|
* Russell-Rao
|
|
|
|
* Sokal-Michener
|
|
|
|
* Sokal-Sneath
|
|
|
|
* Yule
|
|
|
|
* Dice
|
|
|
|
|
|
|
|
* Floating-Point Vectors
|
|
|
|
* Canberra
|
|
|
|
* Chebyshev
|
|
|
|
* Cityblock
|
|
|
|
* Correlation
|
|
|
|
* Cosine
|
|
|
|
* Euclidean
|
|
|
|
* Jensen-Shannon
|
|
|
|
* Minkowski
|
|
|
|
* Bray-Curtis
|
|
|
|
|
|
|
|
config CMSIS_DSP_WINDOW
|
|
|
|
bool "Windowing Functions"
|
|
|
|
help
|
|
|
|
This option enabled the Window Functions, which support the
|
|
|
|
following windowing functions:
|
|
|
|
|
|
|
|
* Bartlett
|
|
|
|
* Hamming
|
|
|
|
* Hanning
|
|
|
|
* Nuttall
|
|
|
|
* Blackman Harris
|
|
|
|
* HFT
|
|
|
|
|
2023-04-16 08:26:09 +08:00
|
|
|
comment "Instruction Set"
|
|
|
|
# NOTE: These configurations should eventually be derived from the arch ISA and
|
|
|
|
# FP support configurations.
|
|
|
|
|
|
|
|
config CMSIS_DSP_NEON
|
|
|
|
bool "Neon Instruction Set"
|
|
|
|
default y
|
|
|
|
depends on CPU_CORTEX_A
|
|
|
|
help
|
|
|
|
This option enables the NEON Advanced SIMD instruction set, which is
|
|
|
|
available on most Cortex-A and some Cortex-R processors.
|
|
|
|
|
|
|
|
config CMSIS_DSP_NEON_EXPERIMENTAL
|
|
|
|
bool "Neon Instruction Set"
|
|
|
|
depends on CPU_CORTEX_A
|
|
|
|
help
|
|
|
|
This option enables the NEON Advanced SIMD instruction set, which is
|
|
|
|
available on most Cortex-A and some Cortex-R processors.
|
|
|
|
|
|
|
|
config CMSIS_DSP_HELIUM_EXPERIMENTAL
|
|
|
|
bool "Helium Instruction Set"
|
|
|
|
depends on FP_HARDABI && (ARMV8_1_M_MVEI || ARMV8_1_M_MVEF)
|
|
|
|
help
|
|
|
|
This option enables the Helium Advanced SIMD instruction set, which is
|
|
|
|
available on some Cortex-M processors.
|
|
|
|
|
|
|
|
comment "Features"
|
|
|
|
|
|
|
|
config CMSIS_DSP_LOOPUNROLL
|
|
|
|
bool "Loop Unrolling"
|
|
|
|
help
|
|
|
|
This option enables manual loop unrolling in the DSP functions.
|
|
|
|
|
|
|
|
config CMSIS_DSP_ROUNDING
|
|
|
|
bool "Rounding"
|
|
|
|
help
|
|
|
|
This option enables rounding on the support functions.
|
|
|
|
|
|
|
|
config CMSIS_DSP_MATRIXCHECK
|
|
|
|
bool "Matrix Check"
|
|
|
|
help
|
|
|
|
This option enables validation of the input and output sizes of
|
|
|
|
matrices.
|
|
|
|
|
|
|
|
config CMSIS_DSP_AUTOVECTORIZE
|
|
|
|
bool "Auto Vectorize"
|
|
|
|
help
|
|
|
|
This option prefers autovectorizable code to one using C intrinsics
|
|
|
|
in the DSP functions.
|
|
|
|
|
|
|
|
config CMSIS_DSP_FLOAT16
|
|
|
|
bool "Half-Precision (16-bit Float) Support"
|
|
|
|
default y
|
|
|
|
depends on FP16
|
|
|
|
help
|
|
|
|
This option enables the half-precision (16-bit) floating-point
|
|
|
|
operations support.
|
|
|
|
|
|
|
|
config CMSIS_DSP_LAX_VECTOR_CONVERSIONS
|
|
|
|
bool "Lax Vector Conversions"
|
|
|
|
default y
|
|
|
|
depends on FP_HARDABI && (ARMV8_1_M_MVEI || ARMV8_1_M_MVEF)
|
|
|
|
help
|
|
|
|
This option enables lax vector conversions
|
|
|
|
|
|
|
|
endif #CMSIS_DSP
|