张永祥TMS320C54系列DSP原理与应用第六章.ppt
《张永祥TMS320C54系列DSP原理与应用第六章.ppt》由会员分享,可在线阅读,更多相关《张永祥TMS320C54系列DSP原理与应用第六章.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章 TMS320C54x DSP的C/C+程序设计第6章 TMS320C54x DSP的C/C+程序设计6.1 C/C+6.1 C/C+程序设计基础程序设计基础6.2 6.2 程序设计示例程序设计示例6.3 C6.3 C语言和汇编语言混合编程语言和汇编语言混合编程2首都师范大学信息工程学院6.1 C/C+程序设计基础DSP生产厂商及第三方为DSP软件开发提供了C编译器,使得利用高级语言实现DSP程序的开发成为可能。在TI公司的DSP软件开发平台CCS中,又提供了优化的C编译器,可以对C语言程序进行优化编译,提高程序效率,目前在某些应用中C语言优化编译的结果可以达到手工编写的汇编语言效率的9
2、0%以上。3首都师范大学信息工程学院一、一、面向面向DSPDSP的程序设计原则的程序设计原则面向DSP的C/C+程序设计和通用计算机上的C/C+程序设计从本质上和工作原理上来说都是一致的,都是采用C/C+编程语言来对处理器进行编程,但受硬件资源和处理对象的不同,也有一些区别。在面向DSP的C/C+程序设计中,要注意以下几个原则:1、灵活使用嵌入式C语言中的位操作指令;2、编译系统不允许有太多的程序嵌套;3、对DSP硬件的时序要求需要考虑;4、不同库函数的区别使用;5、变量不同存储类型的使用;6、尽可能模块化设计;4首都师范大学信息工程学院6.1 C/C+程序设计基础二、二、C/C+C/C+语言
3、数据类型语言数据类型TMS320C54x DSP支持的基本数据类型5首都师范大学信息工程学院6.1 C/C+程序设计基础类型长度最小值最大值charsigned char16位-3276832767unsigned char16位065535short16位-3276832767unsigned short16位065535int signed int16位-3276832767unsigned int16位065535long signed long32位-21474836482147483647unsigned long32位04294967295enum16位-3276832767flo
4、at32位1.19209290e-383.4028235e+38double32位1.19209290e-383.4028235e+38long double32位1.19209290e-383.4028235e+38pointers16位00 xFFFF要注意的是由于TMS320C54x DSP是16位的处理器,字节长度为16位,sizeof操作符返回的对象长度是以16位为字节长度的字节数。例如sizeof(int)=1。同时可以发现短整型和整型数据类型是一致的,浮点型、双精度浮点型和长双精度浮点型是一致的,所以实际使用中可以将常用的数据类型进行适当简化,即将短整型、整型统一为整型(int)
5、,将各种浮点类型统一为浮点型(float)。三、三、C/C+C/C+语言程序结构语言程序结构从执行方式上来划分,基本的程序结构可以划分为顺序结构、分支结构、循环结构三种。四、四、C/C+C/C+语言函数语言函数从函数定义的角度看,函数可分为用户定义函数和库函数两种。1.1.用户定义函数用户定义函数由用户按需要写的函数。用户自定义函数,不仅要在程序中定义函数本身,而且在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用。6首都师范大学信息工程学院6.1 C/C+程序设计基础函数定义的一般形式:类型说明符 函数名(形式参数表)类型说明 语句 类型说明符和函数名称为函数头。类型说明符说明本函
6、数返回值的类型。函数名是由用户定义的标识符,函数名后有一个空括号,其中可以有参数,也可以无参数,但括号不可少。中的内容称为函数体。在函数体中也有类型说明,这是对函数体内部所用到的变量的类型说明。在很多情况下都不要求无参函数有返回值,此时函数类型符可以写为void。7首都师范大学信息工程学院6.1 C/C+程序设计基础有参函数比无参函数多了形式参数表,包括形式参数及其类型,在形参表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号间隔。示例如下:void Convolveok(double*Input,/原始输入数据 double*Impulse,/冲击响应 double*Ou
7、tput,/卷积输出结果 Word16 length/卷积序列长度)8首都师范大学信息工程学院6.1 C/C+程序设计基础int i,k,p;double r;p=0;for(k=0;k=length-1;k+)Outputk=0;r=0;for(i=0;ilength-1)p=length-1;else p=p;p=length-2;for(k=length;k=length+length-1;k+)首都师范大学信息工程学院106.1 C/C+程序设计基础 Outputk=0;r=0;for(i=0;i=p;i+)r=Inputlength-1-i*Impulselength-1-p+i;O
8、utputk=Outputk+r;p=p-1;return;首都师范大学信息工程学院116.1 C/C+程序设计基础需要注意的是,如果函数和主程序在同一个文件中,则只需要在主程序前部加入该函数的声明即可;如果函数和主程序不在同一个文件中,则需要在主程序文件的头部用“#include 头文件名”将函数头文件名包括在内。2.2.库函数库函数CCS提供的库函数包括两类。一类安装在c:tic5400cgtoolsinclude目录中,共有文件38个,其中具有.h的文件19个,具有.hpp的文件19个(注意将没有扩展名的文件加上.hpp扩展名)。首都师范大学信息工程学院126.1 C/C+程序设计基础示
9、例如下:#include ;注意此处和#include“math.h”;的区别 void mail()float x,y;x=3.0;y=log10(x);首都师范大学信息工程学院136.1 C/C+程序设计基础一类是安装在c:tic5400dsplib目录中,也称作DSPLIB通用库。是专门为TMS320C54x DSP芯片使用的C语言优化程序函数库。它包含了50多种函数数字信号处理程序,全部由汇编语言编写,并可由C语言调用,方便C语言与汇编语言混合编程。DSPLIB可进行的运算有:FFT运算、滤波与卷积运算、自适应滤波运算、相关运算、数学函数运算、三角函数运算、矩阵运算等。首都师范大学信息
10、工程学院146.1 C/C+程序设计基础首都师范大学信息工程学院156.1 C/C+程序设计基础示例如下:/*/Filename:sine_t.c/Version:0.01/Description:test for dlms routine/*#include#include#include/在dsplib.h、tms320.h头文件中定义了许多运算中要用到的变量、函数,应用程序主函数必须用#include语句包含此头文件。#include test.hshort i;short eflag=PASS;void main(void)首都师范大学信息工程学院166.1 C/C+程序设计基础 /*
11、clear*/for(i=0;iNX;i+)ri=0;/clear output buffer(optional)/*compute*/sine(x,r,NX);/*test*/eflag=test(r,rtest,NX,MAXERROR);/for r if(eflag!=PASS)exit(-1);return;rts.lib是TI提供的运行时支持库,如果是C代码写的源程序,必须在工程中添加该库文件。要想使程序正常运行,一些配置工作需要完成:打开工程的Bulid Options选项中两个地方进行设置。当编译时打不开或找不到dsplib.h、tms320.h文件,此时可以在compiler标
12、签下选中preprocessor选项,在Include Search Path栏中填入dsplib.h、tms320.h所在子目录(本例为:c:tic5400dsplibinclude);当连接时找不到库函数相应的汇编程序,编译错误提示有些函数为未定义变量,此时可在linker标签下选中basic选项,在Library Search Path栏中填入54xdsp.lib、rts.lib库文件所在路径(本例为:c:tic5400dsplib;c:tic5400cgtoolslib,注意用英文分号隔开);在Include Library栏填入两库文件(本例为:54xdsp.lib;rts.lib)
13、,至此程序可以正常编译。首都师范大学信息工程学院176.1 C/C+程序设计基础五、五、C/C+C/C+的的DSPDSP访问规则访问规则1.DSP1.DSP片内寄存器的访问规则片内寄存器的访问规则在C语言中对DSP片内寄存器一般采用指针方式来访问,常常采用的方法是将DSP寄存器地址的列表定义在头文件中(如reg.h)。举例,通过指针操作对ST0和AR1进行初始化。#define ST0 (volatile unsigned int*)0 x0006#define AR1 (volatile unsigned int*)0 x0011Int userfunc().*ST0=0 x1278h;*A
14、R1=0 x6013h;.首都师范大学信息工程学院186.1 C/C+程序设计基础2.DSP2.DSP内部和外部存储器的访问规则内部和外部存储器的访问规则举例,通过指针操作对内部存储器单元0 x4000和外部存储器单元0 x80FF进行操作。int *data1=0 x4000;/*内部存储器单元*/int *data2=0 x80FF;/*外部存储器单元*/int userfunc().*data1=7000;*data2=0;.首都师范大学信息工程学院196.1 C/C+程序设计基础3.DSP I/O3.DSP I/O端口的访问规则端口的访问规则在C语言中访问DSP的I/O空间借助于关键字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 张永祥 TMS320C54 系列 DSP 原理 应用 第六
限制150内