TI公司为DSP64x+系列的DSP芯片提供了一系列常用的DSP运算库函数,这些库函数由于在硬件上的优化速度往往比直接用C甚至汇编语言编写效率更高。
库函数官方的解释说明:file:///D:/ccs/support_lib/dsp_lib/docs/doxygen/html/dsplib_html/modules.html
库函数使用注意事项:大部分函数对输入数组参数的大小有特殊要求(内部优化的需要),使用时需特别注意,使用不当将可能会引起输出错误。文中在描述数据长度要求时,使用xN表示数据长度应为x的倍数。
一.MATH类
1.对单个向量的操作
(1)short DSP_maxval (short *x, int nx)
函数介绍:返回数组中的最大值
x[nx]:输入的short型数据向量
nx:数据长度,8N,且N≥4
(2)int DSP_maxidx (short *x, int nx)
函数介绍:返回数组中的最大值所对应的序号
x[nx]:输入数据向量1
nx:数据长度,16N,且N≥3
(3)short DSP_minval (short *x, int nx)
函数介绍:返回数组中的最小值
x[nx]:输入数据向量1
nx:数据长度,8N,且N≥4
(4)void DSP_neg32(int *x, int * r, short nx)
函数介绍:对数组做取反操作,即将数组序号倒置过来
注意事项:输入数组和输出数组不能有重叠,除非输入数组与输出数组完全相等
x[nx]:输入数据向量
r[nx]:输出数据向量
nx:数据长度,4N,且N≥1
(5)void DSP_recip16(short *x, short *rfrac, short *rexp, short nx)
函数介绍:将输入的数组的每一个元素分别取倒数,并输出其倒数对应的小数部分和指数部分的数组
x[nx]:输入数据向量
rfrac[nx]:输出小数部分值
rexp[nx]:输出指数部分值
nx:数据长度,4N,且N≥1
(6)int DSP_vecsumsq (short *x, int nx)
函数介绍:返回向量数据的平方和
x[nx]:输入数据向量
nx:数据长度,4N,且N≥1
2.对两个向量的操作
(1)void DSP_add16(short *restrict x,short *restrict y,short *restrict r,int nx)
函数介绍:将输入的两个short类型的数组做数组元素相加的操作,并返回相加后的数组
x[nx]:输入的数组1
y[nx]:输入的数组2
r[nx]:返回的相加后的的数组
nx:数组长度,无要求
(2)void DSP_add32(const int *restrict const int *restrict y,int *restrict r,int nx)
函数介绍:将输入的两个const int类型的数组做数组元素相加的操作,并返回相加后的数组
x[nx]:输入的数组1
y[nx]:输入的数组2
r[nx]:返回的相加后的的数组
nx:数组长度,无要求
(3)void DSP_mul32(const int *restrict const int *restrict y,int *restrict r,int nx)
函数介绍:将输入的两个const int类型的数组做数组元素相乘的操作,并返回数组元素相乘后得到的新数组
x[nx]:输入的数组1
y[nx]:输入的数组2
r[nx]:返回的相乘后的的数组
nx:数组长度,4N,且N≥1
(4)int DSP_dotprod(short *x, short *y, int nx)
函数介绍:返回向量x和向量y的点乘和
x[nx]:输入数据向量1
y[nx]:输入数据向量2
nx:数据长度,4N