德州仪器(TI)的TMS320C55x DSP库(DSPLIB)是一个优化的
DSP函数库的C程序员TMS320C55X的设备。它包括
50 C调用汇编优化通用信号处理
例程。这些例程通常用于计算密集型实时
时间应用,最佳执行速度是至关重要的。通过使用这些例行程序
齿可以实现的执行速度比同等相当快
用标准ANSI C语言代码。此外,通过提供即用于─
利用DSP功能,TI DSPLIB可以显著缩短DSP应用程序
开发时间
1.1 DSP例程
TI的DSPLIB包括常用的DSP程序。源代码
提供允许你修改,以满足您的特定需求的功能。
包括库中的程序被组织成八个不同功能类别:
?快速傅立叶变换(FFT)的
?过滤和卷积
?自适应滤波
?关联
?数学
?三角函数
?杂项
?矩阵
1.2 特点和优点
?手工编码的汇编优化程序
? C-调用的程序与TI C55x编译器可以完全兼容
?分数Q15格式支持的操作
?一套完整的使用情况提供范例
?提供基准(时间和代码)
?测试对Matlab的™脚本
1.3
DSPLIB:质量免费软件,你可以建立在并有助于
DSPLIB是后的充电游离的产物。您可以使用,修改和分发TI
C55x的DSPLIB的使用率在TI C55x DSP的无专利使用费。见
3.7节,在哪里DSPLIB从这里去,了解详细信息
2.1 DSPLIB内容
TI的DSPLIB软件由4部分组成:
1)对于C程序员“,在“include”子目录下的头文件:dsplib.h
2)在“LIB”子目录下一个对象库:55xdsp.lib
3)在“55x_src”子目录下的一个源库,允许自定义功能通过在最终用户
55xdsp.src
4)在“55x_test”子目录下的示例程序和命令连接文件
2.2 How to Install DSPLIB
您是不是要找: 2.2.1 De-Archive DSPLIB DSPLIB is distributed in the form of an executable self-extracting ZIP file (c55 dsplib.exe). The zip file automatically restores the DSPLIB individual components in the same directory you execute the self extracting file. Following is an example on how to install DSPLIB, just type: c55 dsplib.exe −d The DSPLIB directory structure and content you will find is:
c55_dsplib(dir) 55xdsp.lib : use for standards short-call mode blt55x.bat : re-generate 55xdsp.lib based on 55xdsp.src examples(dir) : contains one
subdirectory for each routine included in the library where you can find complete test cases include(dir) dsplib.h : include file with data types and function
prototypes tms320.h : include file with type definitions to increase TMS320 porta- bility misc.h : include file with useful miscellaneous definitions doc(dir) 55x_src (dir) : contains assembly source files for functions
2.2.1
德 - 归档DSPLIB
DSPLIB分布在一个可执行的自解压ZIP文件的形式
(c55_dsplib.exe)。 zip文件自动恢复DSPLIB个体
在同一目录下的组件执行自解压文件。以下
是关于如何安装DSPLIB为例,只需键入:
c55_dsplib.exe-d
在DSPLIB目录结构和内容,你会发现是:
c55_dsplib(DIR)
55xdsp.lib:使用标准的短呼叫模式
blt55x.bat:基于55xdsp.src重新生成55xdsp.lib
examples(DIR):包含一个子目录中包含的各程序库,在那里你可以找到完整的测试用例
include(DIR)
dsplib.h:包括文件,数据类型和函数原型
tms320.h:包括文件类型定义,以增加TMS320 porta-相容性
misc.h:包含文件与有用的定义杂
DOC(DIR)
55x_src(DIR):包含的功能组件的源文件
2.2.2重新定位库文件
拷贝的C55x DSPLIB对象库文件,55xdsp.lib,你的C5500运行
支持库文件夹。
例如,如果你TI C5500工具位于C:\\ TI\\ C5500\\ cgtools\\ bin和
C运行时支持库(rts55.lib等)在C:\\ TI\\ C5500\\ cgtools\\ lib中,副本
55xdsplib.lib到这个文件夹。这使得C55x的编译器/连接器找到
55xdsp.lib
2.3
如何重建DSPLIB
2.3.1
对于完全重建55xdsp.lib的
要重建55xdsp.lib,执行blt55x.bat。这将覆盖任何现有的
55xdsp.lib。
2.3.2
对于部分重建55xdsp.lib的
(变形例的具体DSPLIB函数,例如fir.asm)
1)
提取源从源存档所选择的功能:
ar55 X55xdsp.src fir.asm
2)
重新组装新fir.asm汇编源文件:
asm55-g fir.asm
3)
与新更换的对象,fir.obj,在dsplib.lib对象库
形成对象:
ar55ř55xdsp.lib fir.obj
3.1DSPLIB参数和数据类型
3.1.1DSPLIB参数
DSPLIB功能一般通过矢量运算操作,以提高效率。
尽管这些函数可以被用于处理短数组或标量(除非
的最小尺寸要求说明),执行时间将是较长
这些情况。
?矢量步幅总是等于1:矢量操作数组成的向量
在连续的存储单元(矢量步幅等于1)中保持的元素。
?复杂的元素被假定为被存储在重新林格式。
?就地计算是允许的(除非特别注明):来源
操作数可以等于目的操作数以节约内存。
3.1.2
DSPLIB数据类型
DSPLIB处理以下小数数据类型:
? Q.15(DATA):一个Q.15操作数是由短数据类型来表示(16位)
被预定义为数据,则dsplib.h头文件中。
? Q.31(LDATA):一个Q.31操作数是由一个长数据类型表示(32位)
被预定义为LDATA,对dsplib.h头文件中。
? Q.3.12:包含3个整数位和12位小数。
除非特别注明,DSPLIB运行在Q15-小数数据类型
元素。附录A给出的分数Q格式的概述
3.2
在C中调用一个函数DSPLIB
除了安装DSPLIB软件,以包括在一个DSPLIB功能
你的代码,你必须:
?包括dsplib.h包含文件
?将您的代码与DSPLIB目标代码库,55xdsp.lib或
55xdspx.lib。
?使用说明内存配置正确的链接器命令文件
可在您的C55x板。
项目文件已被列入中的示例文件夹中的每个函数。你
可以参考function_t.c文件调用来自C的DSPLIB功能
本文档中提供的示例采用了德州仪器已经过测试
仪器的C55x模拟器。定制,可能需要使用它与一个
不同的模拟器或开发板。
请参阅TMS320C55X的优化C编译器用户指南(SPRU281)
3.3
调用从汇编语言源代码一个DSPLIB功能
在DSPLIB TMS320C55X的功能被写入到从C.呼叫使用
从汇编语言的源代码的功能是可能的,只要
调用功能符合德州仪器C55x的C编译器调用
约定。请参阅TMS320C55X的优化C编译器用户指南,
如果需要更深入的解释。
意识到TI DSPLIB不是汇编只有一个最佳的解决方案
程序员。即使DSPLIB函数可以从一个被调用
汇编程序,其结果可能不是最佳的,由于不必要的C-呼叫
高架
3.4
在哪里能找到示例代码
你可以找到如何使用DSPLIB中每一个功能,在实例
实例子目录中。该子目录包含一个子目录每个
功能。例如,该实施例/ araw子目录包含以下
文件:
? araw_t.c:用于测试DSPLIB acorr(原材料)功能主要驱动力。
? test.h:包含输入数据(a)和期望的输出数据(yraw)为acorr
(原始)功能。这test.h文件是通过使用MATLAB脚本生成的。
? test.c中:包含用于araw函数的输出与比较功能
预期的输出数据。
? ftest.c:包含用于比较浮点数据类型的两个阵列功能。
? ltest.c:包含用于比较长的数据类型的两个阵列功能。
? ld3.cmd:链接命令的例子,你可以使用此功能
3.5如何DSPLIB测试 - 允许误差
DSPLIB的1.0版本是针对Matlab的脚本进行测试。预计数据输出
从Matlab的已生成,使用双精度(64位)浮点
浮点运算(在Matlab默认精度)。测试实用程序已添加
我们的测试主要驱动力来自动完成这个检查过程。需要注意的是一个最强
妈妈绝对误差值(最大误差)被传递到测试功能,以设置
触发点来标记的功能错误。
我们认为这种测试方法的好第一关逼近。进一步
量化误差的特性的范围内的每个功能(下随机
DOM输入)以及测试根据一组固定点C型号的计划
对于未来的版本。我们欢迎任何建议,你可能会在这
尊重
3.6如何DSPLIB处理溢出和缩放问题
一个编程为定点处理器的固有困难是
确定如何处理溢出的问题。溢出时,作为结果
加法和减法运算,对所得的动态范围
数据是比所述的中间和最终数据类型可以包含大。
用来处理溢出的方法应取决于具体
你的信号,在功能的操作的类型,以及DSP架构的
使用。在一般情况下,溢出的处理方法可以分为五个
类:饱和度,输入缩放,缩放固定,动态扩展和
系统设计考虑。
需要注意的是一个架构TMS320C55X的特性,使得它很重要
溢出更容易处理的保护位,在所有四个累加器的存在
。 40位累加器提供8的保护位,允许多达256个连续
乘与累加(MAC)运算的累加器之前
超限 - 实施时,例如,FIR滤波器一个非常有用的功能。
有4个具体的方法DSPLIB处理溢出,这反映在各
功能描述:
缩放实施溢出预防:在这种类型的功能,
DSPLIB扩展中间结果,以防止溢出。溢出
不应发生作为结果。精度会受到影响,但没有显著。此
是在FFT函数的情况下,其中每个FFT之后缩放用于
阶段。
?不进行缩放实施了防溢:在这种类型的功能
化,DSPLIB不缩放,防止溢出,由于潜在的
在数据输出精度或在所需的周期数很强的影响。
是这种情况下,例如,像滤波基于MAC的操作,
相关或卷积。在这些情况下,最好的解决办法是设计
你的系统,例如小于1的增益的滤波器系数
防止溢出。在这种情况下,溢出可能发生,除非输入
缩放或您设计没有溢出
饱和实现对于溢出处理:在这种类型的功能,
DSPLIB已启用的TMS320C55x32位饱和模式(SATD
位= 1)。这是需要一些基本的数学函数的情况下,
饱和模式被激活。
?不适用:在这种类型的功能,由于该函数的性质
操作,没有溢出。
?由于:溢出条件(溢出标志)DSPLIB报告
有时unpredictible溢出的风险,最DSPLIB功能已经
写入返回溢出标志(oflag中)作为一个潜在的指示
危险的32位溢出。因为保护位然而,C55x的
能够处理中间体32位溢出,仍然产生
正确的最终结果。因此,该参数oflag中应采取的
警告的情况下,但不是决定性的错误。
最后一点,DSPLIB还提供了源格式,允许DSPLIB功能定制您的特定需求的系统
3.7
在那里DSPLIB从这里去
我们预计DSPLIB提高在将来的版本在以下几个方面:
?功能的数量增加:我们预期的函数的数量
在DSPLIB将增加。我们欢迎用户贡献的代码。如果在
开发应用程序的过程中,你开发一个DSP例程
似乎是一个不错的选择,以DSPLIB,让我们知道。我们将审查和测试
常规和可能包括在未来DSPLIB软件版本。您的
捐款将承认并在应答响应认可TI
edgments部分。利用这个机会,让你的名字被称为您
DSP业界同行。只需发送电子邮件您的贡献敬启者CON-
欧洲核子研究中心:dsph@ti.com,我们将与您联系。
增加代码的可移植性:DSPLIB看起来增强代码的可移植性
在不同的TMS320的平台。我们的目标是提供类似
DSP库其它TMS320™设备,结合工作与
C55x的编译器内在函数,使C-开发更容易为定点
设备。然而,它的预期跨越100%便携式库
TMS320设备可能不能由于正常设备架构
差异。 TI将继续监控DSP行业标准化爱科特
vities在DSP功能库的条款。
因篇幅问题不能全部显示,请点此查看更多更全内容