dsplib中文版TMS3X 函数库中文用户指南.docx
《dsplib中文版TMS3X 函数库中文用户指南.docx》由会员分享,可在线阅读,更多相关《dsplib中文版TMS3X 函数库中文用户指南.docx(97页珍藏版)》请在冰豆网上搜索。
dsplib中文版TMS3X函数库中文用户指南
TMS320C54xDSP函数库
用户指南
TMS32C54X优化C函数库
北京金信诺科技
June,1999
第一章概述..................................................................................................................................3
一、DSP函数数据类型.............................................................................................................3
二、从C程序中调用DSP函数...............................................................................................3
三、从汇编程序中调用DSP函数............................................................................................5
四、其他说明.............................................................................................................................6
第二章DSP数学函数库.............................................................................................................7
add向量相加...............................................................................................................7
sub向量相减...............................................................................................................8
mul3232位向量相乘......................................................................................................9
neg向量求反.............................................................................................................10
neg32双精度向量求反.................................................................................................11
mmul矩阵相乘.............................................................................................................12
mtrans矩阵转置.............................................................................................................13
maxidx向量最大元素的序号........................................................................................14
maxval向量元素的最大值.............................................................................................15
minidx向量最小元素的序号.........................................................................................16
minval向量的最小元素.................................................................................................17
atan16反正切.................................................................................................................18
atan2_16反正切2...........................................................................................................19
sine三角正弦...........................................................................................................20
sqrt_1616位数的平方根.............................................................................................21
log_2以2为底的对数...............................................................................................22
log_10以10为底的对数...........................................................................................23
logn以e为底的对数..............................................................................................24
recip1616位数的倒数...............................................................................................25
expn指数.................................................................................................................26
power向量的功率.....................................................................................................27
bexp块的幂.............................................................................................................28
rand16init初始化随机数生成器....................................................................................29
rand16随机向量生成器.............................................................................................30
fltoq15浮点数到Q15数据转换................................................................................31
q15toflQ15到浮点数转换.........................................................................................32
第三章FFT函数库...................................................................................................................33
cbrev复数逆序.........................................................................................................33
cfft复数FFT..........................................................................................................34
cifft复数逆FFT......................................................................................................36
rfft实数FFT(替换)...............................................................................................38
rifft逆实数FFT(替换)...........................................................................................40
第四章卷积与FIR滤波器.......................................................................................................42
convol卷积.....................................................................................................................42
cfir复数FIR滤波器.................................................................................................43
firFIR滤波器..........................................................................................................44
firs对称FIR滤波器.................................................................................................45
firs2对称FIR滤波器(常用).......................................................................................47
firdec抽样FIR滤波器................................................................................................48
firinterp插值FIR滤波器..............................................................................................50
firlatFIRLattice滤波..............................................................................................51
1
hilb16Hilbert变换器.................................................................................................52
第五章IIR滤波器.....................................................................................................................54
iircas4使用4个参数的IIR滤波(直接实现形式II).................................................54
iircas5使用5个参数的IIR滤波(直接实现形式II).................................................56
iircas51使用5个参数的IIR滤波(直接实现形式I)..................................................58
iirlatIIRlattice滤波.................................................................................................59
iir32双精度IIR滤波...............................................................................................60
第六章自适应滤波器................................................................................................................62
dlms自适应延迟LMS滤波...................................................................................62
nblms标准化的LMS块滤波...................................................................................64
ndlms标准化的延迟LMS滤波...............................................................................66
第七章相关函数库....................................................................................................................68
acorr自相关.............................................................................................................68
corr互相关.............................................................................................................70
2
第一章概述
一、DSP函数数据类型
DSP函数库处理以下的小数数据类型:
Q3.12:
包含3个整数位和12个小数位,其各位的定义如下:
位1514131211109…0
值符号I3I2I1Q11Q10Q9…Q0
它表示的数据范围是(-8,8),最小的小数分辨率为2−12=2.441×10−4。
Q.15(DATA):
一个Q.15表示的是16位的short类型的数据,定义为
DATA,各位的定义如下:
位1514131211109…0
值符号Q14Q13Q12Q11Q10Q9…Q0
它表示的数据范围是(-1,1),最小的小数分辨率为2−15=3.05×10−5。
Q.31(LDATA):
一个Q.31用long类型的数据来表示(32位),定义为
LDATA,各位的定义如下:
低位:
位15141312…3210
值Q15Q14Q13Q12…Q3Q2Q1Q0
高位:
位15141312…3210
值符号Q30Q29Q28…Q19Q18Q17Q16
除非特别说明,DSP函数库中使用的都是Q.15类型的数据
二、从C程序中调用DSP函数
为了正确使用DSP函数库中的函数,必须执行以下步骤:
将需要调用的库函数的头文件“.h”包含在“.c”文件中。
使用正确的,反映C54x板上内存结构的连接命令文件。
3
将需要调用的库文件“.lib”包含在连接命令文件“.cmd”中。
下面的示例说明了DSP函数的调用方法:
/*example.c*/
#includec54math.h/*包含库函数的文件头*/
/*必要时需指明文件所在目录*/
floatxf[3]={0.1,0.2,0.3};
floatyf[3]={0.2,0.3,0.4};
shortx[3];
shorty[3];
shorti;
main(){
for(i=0;i<3;i++)y[i]=x[i]=0;
fltoq15(xf,x,3);
fltoq15(yf,y,3);
add(x,y,x,3,1);
q15tofl(x,xf,3);
}
//examples.cmd
-c
-lrts.lib
-lc54math.lib/*连接时必须包含库函数*/
/*必要时需指明文件所在目录*/
-stack0x200
-heap0x200
-otest.out/*输出文件*/
-mtest.map/*存储器映像文件*/
MEMORY
{
PAGE0:
INT_PM_DRAM:
origin=0080h,length=1380h
EXT_PM_RAM:
origin=1400h,length=0ec00h
PAGE1:
INT_DM_SCRATCH_PAD_DRAM:
origin=0060h,length=20h
INT_DM_1:
origin=0080h,length=01380h
4
EXT_DM_RAM:
origin=1400h,length=0ec00h
}
SECTIONS
{
.text:
{}>INT_PM_DRAMPAGE0
.cinit:
{}>INT_PM_DRAMPAGE0
.switch:
{}>INT_PM_DRAMPAGE0
.data:
{}>INT_DM_1PAGE1
.stack:
{}>INT_DM_1PAGE1
.bss:
{}>INT_DM_1PAGE1
.sysmem:
{}>INT_DM_1PAGE1
.const:
{}>INT_DM_1PAGE1
.dout:
{}>INT_DM_1PAGE1
}
程序中将xf,yf都转化成Q15格式后相加,并将结果除以2,存入向量x中。
然后将x转换成小数形式,存入xf中。
三、从汇编程序中调用DSP函数
对DSP函数库中函数的调用与一般的汇编函数调用类似,但是调用要符合标
准C的调用规则,执行的结果与标准C计算所得到的结果相同。
例如,C语言
中对加法的调用:
add(x,y,r,32,0);可以使用汇编调用为:
stm#0,ar0
pshmar0
stm#32,ar0pshmar0
pshmarg_r;arg_r为指向向量r的指针
pshmarg_y;arg_y为指向向量y的指针
ldmarg_x,A;arg_x为指向向量x的指针
call_add
popmarg_y
popmarg_r
popmar0
popmar0
5
四、其他说明
一、环形缓冲区
许多算法,例如卷积,相关和FIR滤波等,需要在内存中实现环形缓冲。
在
这些算法中,环形缓冲区中包含着最近的数据。
当新的数据进来时,最旧的数据
被改写。
实现环形缓冲区的关键在于环形寻址。
环形缓冲寄存器BK指明环形缓冲区的大小。
一个大小为R的环形缓冲区,必
须起始于N位的边界,也就是环形缓冲区基址的最小N位必须为0。
其中N是满足
2N>R的最小整数。
R必须放置于BK中。
例如,一个31字的环形缓冲区必须起始
于最小五位为0的地址(即XXXXXXXXXXX000002),并且必须将数值31放置
于BK中。
第二个示例,若一个缓冲区为32字,则起始地址的最小六位必须为0(即
XXXXXXXXXX0000002),并且将值32存于BK中。
在本文中,参考“TMS320C54XDSPReferenceSet第5-15页5.5.3.4小节”
处,均指“TMS320C54XDSPReferenceSet(Volume1:
CPUandPeriphera