DSP 第4章编程.pdf
《DSP 第4章编程.pdf》由会员分享,可在线阅读,更多相关《DSP 第4章编程.pdf(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1西安电子科技大学电子工程学院西安电子科技大学电子工程学院1ADSP技术与应用技术与应用浮点浮点SHARC系列系列主讲:冯小平 教授罗勇江主讲:冯小平 教授罗勇江西安电子科技大学电子工程学院西安电子科技大学电子工程学院2第4章SHARC 系列DSP程序设计第4章SHARC 系列DSP程序设计4.1 概述4.2 汇编语言程序设计4.3 DSP的C程序设计4.4 链接器和链接描述文件4.1 概述4.2 汇编语言程序设计4.3 DSP的C程序设计4.4 链接器和链接描述文件2西安电子科技大学电子工程学院西安电子科技大学电子工程学院34.1 4.1 程序开发概述程序开发概述西安电子科技大学电子工程学院
2、西安电子科技大学电子工程学院4Visual DSP+IDDE的用户界面3西安电子科技大学电子工程学院西安电子科技大学电子工程学院5SHARC DSP开发工具和流程西安电子科技大学电子工程学院西安电子科技大学电子工程学院6IDDE:输出文件4西安电子科技大学电子工程学院西安电子科技大学电子工程学院7IDDE:编辑器西安电子科技大学电子工程学院西安电子科技大学电子工程学院8IDDE:编辑器的特点?编辑器能够完成 自动识别关键字 自动识别注释等 支持标准的编辑操作?查找和替换?剪切和复制?选择等 可以设置不同的颜色区分关键字等 支持OLE拖拉 支持书签5西安电子科技大学电子工程学院西安电子科技大学电
3、子工程学院94.2 4.2 4.2 4.2 汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计西安电子科技大学电子工程学院西安电子科技大学电子工程学院10汇编语言程序特点?代数化语言 容易理解和学习 可读性好?编译器支持伪指令 传统的结构 数据定义具有高级语言特点?预处理器处理宏 C的预处理器类似的工具6西安电子科技大学电子工程学院西安电子科技大学电子工程学院11汇编语言程序结构各 种 伪 指 令(directive)#include const.h#define PI 3.14259DM区 数 据 段.SECTION/DM data1;.VAR xd10=1,2,3,4,5,6
4、,7,8,9,0XA;.ENDSEG;port段,映 射 到 PM区.SECTION/PM portseg;.PORT clk_in;.ENDSEG;代 码 段.SECTION/PM codeseg;指 令 指 令.ENDSEG;西安电子科技大学电子工程学院西安电子科技大学电子工程学院12通过SECTION组织程序.section/dm data1;.var a1;.var b=10;var c15;.var d=1,2,3,4,5;.section/dm program;addtwo:ar=dm(a);.ax1=ar;rts;SECTION 伪指令数据程序代码?SECTION 伪指令定义程序
5、的段?至少需要代码和数据两个段7西安电子科技大学电子工程学院西安电子科技大学电子工程学院134.1.1 标识符和运算符标识符和运算符?标识符(名称)必须以 26个大小写英文字母和下划线_开始;?可以包括09的数字符号;?大小写字母代表不同含义;?编译器使用的保留字是不能用于命名西安电子科技大学电子工程学院西安电子科技大学电子工程学院14编译器的保留关键字FLAG0_INFLAG1_INFLAG2_IN FLAG3_1NFLOATFMERGFOREVERFRFTAFIBFICGEL10L11lL12DMA2SDMADRDMAPARITYCKDMBANK1DMBANK2F4F5F6F7F8F9FA
6、DDRFDEPFEXT FIXDADDRDA11lDA12DBDECDMDM0DM1DM2DM3DMA1EDMA1SDMA2EAVB0B1B10B11B12B13B14B15COSCURLCNTRDAB1DAB2.BNK.ENDSYS.PROCESSOR.SEGMENT.SYSTEMABSACACTADS21020ADSP_21020ANDASHIFTASTAT关键字关键字关键字关键字关键字8西安电子科技大学电子工程学院西安电子科技大学电子工程学院15编译器的保留关键字(续)STEPSTKYSTSSUFSUFRSUISUIRSVSZTCOUNTTFTGLTPERIODTRUETSTUFUIR1
7、lR12R13R14R15R2R3R4R5R6R7R8 SSFRSSI SSIRSTSTACKNOTNUORP20P24P32P40PSA3SPSA4EPSA4SPUSH PXPX1PX2 R0R1R10LEFTZLOAD MR0FMR1BMR1FMR2BMR2FMRBMRFMSMVNE NEWPAGE NOFONOFZ NOPNORMAL113L14L15L2L3L4L5L6L7L8L9LALADDRLCELCNTR LELEFTO关键字关键字关键字关键字关键字西安电子科技大学电子工程学院西安电子科技大学电子工程学院16表达式?汇编表达式与 C类似,如:2.8e-3,l.67,(120-32
8、)3,0 x470 x7F9西安电子科技大学电子工程学院西安电子科技大学电子工程学院17运算符及其含义运算符及其含义运算符运算符含义含义()()*十 一|datbuff*十 一|datbuff括号求补、负号乘、除、求余、加、减按位左移右移按位与按位或按位异或表示求datbuff这个数据缓冲的长度(按字计)括号求补、负号乘、除、求余、加、减按位左移右移按位与按位或按位异或表示求datbuff这个数据缓冲的长度(按字计)西安电子科技大学电子工程学院西安电子科技大学电子工程学院184.1.2 预处理伪指令预处理伪指令SHARC系列的汇编器包括一个能处理某些C语言形式的伪指令和宏的预处理器,这些伪指令
9、包括(必须小写):define undefif endifelse elififdefif definedifndefinclude10西安电子科技大学电子工程学院西安电子科技大学电子工程学院19预处理伪指令例子预处理伪指令例子?文件包含命令#include private_header_file#include?宏用于条件汇编控制#define DEBUG#ifdefDEBUG/如果DEBUG已定义,编译此段#endif?宏替换 符号常数#define N 10.var aN;#define arg(j)dm(i5+j)ar=arg(4);ar=dm(i5+4);也可以在IDDE的defin
10、es对话框中设置西安电子科技大学电子工程学院西安电子科技大学电子工程学院20定义和使用宏(定义和使用宏(Macro)?例1 定义:define mac=mrfmrfR2*R5使用:R2=Rl-R3;R5DM(I0,M0);mac;?宏定义必须在一行内写完,超过一行时,在行末加续行标志“”,例2define copy(src,dest)R0=DM(src);PM(dest)=R0语句copy(0X3f,0XC0),将3f地址的值拷贝到C0地址11西安电子科技大学电子工程学院西安电子科技大学电子工程学院21Include伪指令伪指令?include有两种形式:?include“文件名”在当前和指定
11、途径中搜索指定文件?include 仅在指定途径中搜索指定文件?def21060.h 是很重要的头文件,它包含了对ADSP2106X中大量寄存器、位段、初始化值、I/O地址等惯用名称的定义西安电子科技大学电子工程学院西安电子科技大学电子工程学院224.1.3 汇编伪指令汇编伪指令?汇编伪指令经汇编器处理后不产生代码,它们都以“”打头:SECTION 标记段的起始ENDSEG 标记段的结束VAR 定义变量或缓冲PRECISION=3240 定义浮点精度,32 bit为默认ROUND=ZERO 浮点常数取整方法:向零取近似ROUND_MINUS 浮点常数取整方法:负向取近似ROUND_PLUS 浮
12、点常数取整方法:正向取近似12西安电子科技大学电子工程学院西安电子科技大学电子工程学院23汇编伪指令(续)汇编伪指令(续)ROUND_NEAREST 浮点常数取整方法:取最接近值(默认)PORT 定义存储器映射的I/O口GLOBAL 使一个符号全局化(其它文件可用)EXTERN 使一个符号外部化(由其它文件定义)NEWPAGE 在列表文件中(lst)开启新页西安电子科技大学电子工程学院西安电子科技大学电子工程学院24SECTION伪指令?程序的每一部分都应该有一个有名段(named section)在汇编语言中指明编译器有默认的段名称?汇编程序中必须指明段名.section name 有效范围
13、到下一个段指定?如果需要,编译器会利用“section”命令产生非默认的段?LDF中指定每个段如何放置到存储区中?许多源文件中都可以命名段13西安电子科技大学电子工程学院西安电子科技大学电子工程学院25默认段名?默认段名由默认的LDF支持,编译器使用?默认段名如下:code:programdm data:data1pm data:data2system use:stack,heap,ctor?用户可以定义自己的段名,然后修改LDF文件,使得LDF文件里的段名与用户定义的段名一致西安电子科技大学电子工程学院西安电子科技大学电子工程学院26数据定义?定义数据的伪指令是:.var格式:.var 符号
14、名定义符号保留空间:1 各或者多个字可选:初值表?举例:.var a;.var b=10;.var c37;.var d6=1,-1,5,-5,0 xA,-10;length(d)/expression returning /declared size (6)?可以指定符号的作用域.global 符号名/全局,在本模块定义,外部也可以使用.extern 符号名/外部,在其它模块定义14西安电子科技大学电子工程学院西安电子科技大学电子工程学院27汇编程序举例(汇编程序举例(DMDM数据传输)数据传输)/*_Dtran.ASMADSP-2106x Data transfer_*/#include
15、def21060.h /*IOP register definitions*/#define N 64 .SECTION/DM dm_data;/*Declare variables in DM*/.VAR inputN=sin64.dat;.ENDSEG;.SECTION/PM pm_data;/*Declare variables in PM*/.VAR outputN;.ENDSEG;西安电子科技大学电子工程学院西安电子科技大学电子工程学院28汇编程序举例汇编程序举例(DMDM数据传输)数据传输)-续续.SECTION/PM pm_rsti;/*The interruput vector
16、s*/NOP;JUMP start;/*rest vector*/NOP;NOP;RTI;RTI;RTI;RTI;/*other vector*/.ENDSEG;SECTION/PM pm_code;/*Example program for data transfer*/start:I0=input;M0=1;I8=output;M8=1;LCNTR=N,DO LOOP1 UNTIL LCE;F0=DM(I0,M0);LOOP1:PM(I8,M8)=F0;NOP;IDLE;.ENDSEG;15西安电子科技大学电子工程学院西安电子科技大学电子工程学院294.2 SHARC4.2 SHARC4.
17、2 SHARC4.2 SHARC系列系列系列系列 DSP DSP DSP DSP 的的的的C C C C程序设计程序设计程序设计程序设计西安电子科技大学电子工程学院西安电子科技大学电子工程学院30C和C编程的基本特点?优势:可移植性好,维护方便,缩短开发周期优势:可移植性好,维护方便,缩短开发周期?完全的ANSI 标准 加上 C+特点的注释可扩展性好?完整的特征库完整的特征库完整的标准数学函数支持附加的 DSP函数基本I/O:printf,简化的文件 I/O?DSP扩展功能扩展功能?高效优化器高效优化器?完全集成的开发环境完全集成的开发环境编辑、编译支持实时系统支持源代码级调试16西安电子科技
18、大学电子工程学院西安电子科技大学电子工程学院314.2.1 cc21k编译器的有关概念编译器的有关概念1 编译器的输入输出文件SHARC系列提供了完善的C/C+编译器cc21k,可以对C/C+语言源程序进行预处理、编译、汇编、链接等一系列处理,编译过程中的输入输出文件如表4-3所示。西安电子科技大学电子工程学院西安电子科技大学电子工程学院32表4-3 编译过程中的输入输出文件DSP系统符号映射输出文件.symDSP系统存储器映射输出文件.map目标库文件.dlb目标文件.doj链接描述文件.ldf汇编源文件.s,.asm预处理后的C源文件,由C预处理建立.i交叉处理文件ipa,.opa模板安装
19、文件.ii,.ti编译预处理头文件.pch头文件(由include 伪指令说明).hC+源文件.cpp,.cxxC/C+源文件.c描述文件扩展名17西安电子科技大学电子工程学院西安电子科技大学电子工程学院332编译器支持的数据类型2编译器支持的数据类型数据类型存储长度及意义数据类型存储长度及意义int32位有符号整数unsigned short32位无符号整数unsigned int32位无符号整数poonter32位long32位有符号整数float32位浮点数unsigned long32位无符号整数double32位浮点数char32位有符号整数long double64位浮点数shor
20、t32位有符号整数fract32位定点数西安电子科技大学电子工程学院西安电子科技大学电子工程学院343编译器的C/C+扩展特征3编译器的C/C+扩展特征?编译器支持ANSI标准的C/C+扩展集,这些扩展集提供了对DSP硬件的支持。?扩展的关键字可以使用双下划线_开始,以避免与ANSI C/C+关键字的冲突。?扩展的关键字如表4-5所示。18西安电子科技大学电子工程学院西安电子科技大学电子工程学院35表4-5 扩展的关键字表4-5 扩展的关键字关键字简要说明Inline 函数名使编译器将函数代码集成到程序代码中asm(“汇编指令”)直接将汇编指令嵌入到C/C+程序中dm指定静态或者全局变量、受限
21、指针到数据存储区DMpm指定静态或者全局变量、受限指针到程序存储区PMsection(“字符串”)指定对象或者函数所放置的段(section),代替老版本中的segmentboot,true,false逻辑量restric指定受限的指针特征西安电子科技大学电子工程学院西安电子科技大学电子工程学院36InlineInline 关键字引导cc21k编译器将指定的函数代码集成到程序代码中该命令的应用举例如下:inline int add_one(int*a)(*a)+;一般情况下将上述的inline 定义放置到某个头文件中。19西安电子科技大学电子工程学院西安电子科技大学电子工程学院37行嵌入式汇编
22、语句行嵌入式汇编语句?行嵌入汇编asm()在 C程序中直接写出汇编语句,直接形式为:asm(“汇编指令”);如:asm(“bit set mode2 0 x40”)模板形式为:asm(模板:输出操作数,:输入操作数,:选中寄存器);模板形式给出了调用汇编指令的形式,其操作数分别用0,1,2等表示,依次用后续输出输入操作数取代。如:asm volatile(“%0=dm(SRCTL0);”:“d”(temp);等价于汇编指令:temp=dm(SRCTL0);西安电子科技大学电子工程学院西安电子科技大学电子工程学院38行嵌入式汇编语句说明行嵌入式汇编语句说明?ASM包含几个用冒号隔开的部分?这个例
23、子中有三部分:模板、输入和输出asm(“模板”:“c”(res):”e”(x),”e”(5);输入输出部分按照模板中的顺序,替换n第3部分:表示输入0第1部分:模板是汇编指令字符串如:01*2第二部分:表示输出12字母表示某个寄存器20西安电子科技大学电子工程学院西安电子科技大学电子工程学院39利用利用dm和和pm指定存储位置指定存储位置?dm和和pm命令指定静态或全局变量、指针的存储器的位置,如:命令指定静态或全局变量、指针的存储器的位置,如:int pm abc100;将数组将数组abc定位到程序存储区定位到程序存储区 int dm def100;将数组将数组def定位到数据存储区定位到数
24、据存储区 int ghi100;将数组将数组ghi定位到数据存储区定位到数据存储区 int*dd;使指针使指针dd指向指向DM区的一个整数区的一个整数 int*y();函数函数y 返回一个指向返回一个指向DM区的整数的指针区的整数的指针 extern int foo(int pm*);函数函数foo()的形参是指向的形参是指向PM整数的指针整数的指针西安电子科技大学电子工程学院西安电子科技大学电子工程学院40SECTION 命令?对象或者函数在汇编中间文件中如何放置到指定的段,格式为:Section(“name”)对象;可以用于程序(函数)可以用于静态数据?在LDF中控制段放置的位置 放置到指
25、定的 绝对 地址放置到指定类型的存储器组合相同名称的段注:对早期版本使用的“segment”也支持21西安电子科技大学电子工程学院西安电子科技大学电子工程学院41SECTION 命令举例放置全局数据放置局部和静态数据放置程序代码西安电子科技大学电子工程学院西安电子科技大学电子工程学院424.程序的预处理4.程序的预处理表46 常用的预处理命令命令描述define定义宏或者常数#elifif#endif 对的子分支命令#else在if#endif 对内部的二选一命令#endifif#endif 对的结束命令#ereor报告一个错误信息ifif#endif 对的开始命令22西安电子科技大学电子工程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 第4章编程 编程
限制150内