DSP指令_精品文档.ppt
《DSP指令_精品文档.ppt》由会员分享,可在线阅读,更多相关《DSP指令_精品文档.ppt(56页珍藏版)》请在冰豆网上搜索。
TMS320C54x的指令系统oTMS320C54x的指令系统分为算术运算指令、逻辑运算指令、程序控制指令及装载和存储指令四种基本类型。
1TMS320C54x指令系统概述算术运算指令;逻辑运算指令;装载和存储指令;程序控制指令;211加法指令加法指令2减法指令减法指令3乘法指令乘法指令4乘加和乘减指令乘加和乘减指令5双操作数指令双操作数指令6特殊运算指令特殊运算指令算术运算指令算术运算指令311加法指令加法指令操作数左移时低位加操作数左移时低位加0,右移时若,右移时若SXM1,则高位进行符号扩展;若则高位进行符号扩展;若SXM0,则高位加,则高位加0。
特特点点将一个将一个1616位的操作数加到指令指位的操作数加到指令指定的累加器中定的累加器中注注意意LDTEMP1,AADDTEMP2,ASTLA,TEMP3举例举例42减法指令减法指令特特点点将从指定的累减器中减去一个将从指定的累减器中减去一个16位的位的减数减数LDTEMP1,BRPT#15SUBCTEMP2,BSTLB,TEMP3STHB,TEMP4举例举例5RSBXFRCTLDTEMP1,TMPYTEMP2,A3.3.乘法指令乘法指令乘法指令的功能是将乘法指令的功能是将T寄存器或一个数据寄存器或一个数据存储器的值与另一个数据存储器的值或一存储器的值与另一个数据存储器的值或一个立即数相乘,并将乘积存放于目的累加个立即数相乘,并将乘积存放于目的累加器器A或或B中。
中。
举例举例64乘加和乘减指令乘加和乘减指令乘加指令先完成一个乘法操作,然后再将乘加指令先完成一个乘法操作,然后再将乘积与源累加器的内容相加。
而乘减指令乘积与源累加器的内容相加。
而乘减指令完成从累加器完成从累加器B(或源累加器(或源累加器src或目的累或目的累加器加器dst)减去)减去T寄存器(或一个操作数与寄存器(或一个操作数与另外一个操作数的乘积)的操作,并将其另外一个操作数的乘积)的操作,并将其运算结果存入累加器运算结果存入累加器B(或源累加器(或源累加器src或或目的累加器目的累加器dst)中去。
)中去。
方法方法7DADD*AR3,A,B该指令在该指令在ST1中的双中的双16位位/双双精度算术运算精度算术运算方式位方式位C16的的控制下完成一控制下完成一个个32位的加法位的加法运算或两个运算或两个16位的加法运算。
位的加法运算。
5双操作数指令双操作数指令方法方法举例举例86.特殊运算指令特殊运算指令TMS320C54x指令系统还提供了15条特殊的运算指令。
在需要的场合灵活应用这些指令,可以大大提高程序的编写速度和执行速度,缩短程序的长度,减少指令执行的周期。
9逻辑与(逻辑与(AND)运算指令)运算指令逻辑或(逻辑或(OR)运算指令)运算指令逻辑异或(逻辑异或(XOR)运算指令)运算指令移位(移位(SHIFT)指令)指令测试(测试(TEST)指令)指令逻辑运算指令逻辑运算指令101.逻辑与(逻辑与(AND)运算指令)运算指令举例举例AND*AR3,A112.逻辑或(逻辑或(OR)运算指令)运算指令OR*AR3,A123.逻辑异或(逻辑异或(XOR)运算指令)运算指令XOR*AR3,A134.移位指令移位指令SFTLA,8,B145.测试指令测试指令BIT*AR2,1215分支转移指令分支转移指令调用子程序指令调用子程序指令中断指令中断指令返回指令返回指令堆栈操作指令堆栈操作指令重复指令重复指令其它控制指令其它控制指令程序控制指令程序控制指令161.分支转移指令分支转移指令举例举例BACCA172.调用子程序指令调用子程序指令举例举例CALAD1000H183.中断指令中断指令特点特点发生中断时INTM被置1,屏蔽所有可屏蔽中断,并设置IFR中相应的中断标志位。
194.返回指令返回指令特点特点返回指令用于执行完子程序调用或中断服务程序执行完后,使程序返回到子程序调用指令或中断发生的地方以继续往下执行。
如果是延迟返回,则先取出并执行紧跟在该指令后面的两条单字指令或一条双字指令。
205.重复指令重复指令举例举例RPT#99;循环执行NOP指令100;次,RC63H,单字指令NOPRPT#0FFFFH;将紧跟在RPT后面的下一条指令循环执行FFFFH次216.堆栈操作指令堆栈操作指令FRAMEKPOPDSmemPOPMMMRPSHDSmemPSHMMMR22o其它程序控制指令包括:
修改辅助寄存器内容的MAR、保持空闲状态直到产生非屏蔽中断或复位操作的INLE、不引起任何操作只完成PCPC1的NOP指令等。
7.其他程序控制指令其他程序控制指令23加载和存储指令加载和存储指令条件存储指令条件存储指令并行的加载和存储指令并行的加载和存储指令并行的加载和乘法指令并行的加载和乘法指令并行的加载和加减指令并行的加载和加减指令加载和存储指令加载和存储指令241.加载指令加载指令举例举例ST#0100H,AR2DLD*AR2,A252.存储指令存储指令举例举例STT*AR7263.条件存储指令条件存储指令举例举例SRCCD*AR6,AGT274.并行执行指令并行执行指令举例举例STB,*AR6|LDAR7,A285.其他加载和存储指令其他加载和存储指令举例举例MVDD*AR4,*AR229汇编语言源程序中,以.asm为程序的扩展名,用“段”伪指令来组织程序的结构。
程序一般由数据段、堆栈段和代码段组成。
.data用于存放有初值的数据段;.usect用于为堆栈保留一块存储空间;.text用于设置代码段。
汇编语言伪指令汇编语言伪指令30汇编指令汇编指令常用的汇编命令常用的汇编命令.usect为未初始化变量保留存储空间的自为未初始化变量保留存储空间的自定义段定义段(长度)(长度).bss通常为未初始化的变量留出的空间通常为未初始化的变量留出的空间.data已初始化数据段已初始化数据段.sect建立包含代码和数据的自定义段建立包含代码和数据的自定义段,常用于,常用于定义中断向量表定义中断向量表.text紧随其后的是汇编程序正文紧随其后的是汇编程序正文.word初始化一个或多个初始化一个或多个16位整数(有符号)位整数(有符号).int初始化一个或多个初始化一个或多个16位整数位整数(无(无符号)符号).title在列表页头显示一个标题在列表页头显示一个标题.end结束程序结束程序31对一个数组进行初始化对一个数组进行初始化X5=0,0,0,0,0.bssx,5STM#x,AR1RPTZA,#4STLA,*AR1+举例举例32;该程序在0x1000开始的8个地址填写0xaaaa,然后读出,并存储到0x1008开始的8个地址。
.textmain:
stm#1000h,ar1rpt#07hst#0aaaah,*ar1+stm#7h,ar3stm#1000h,ar1stm#1008h,ar2loop:
ld*ar1+,tstt,*ar2+banzloop,*ar3-.end;MVDD*ar1+,*ar2+33;将数据存储器中的数组x20复制到数组y20.bssx,20.bssy,20STM#x,AR2STM#y,AR3RPT#19MVDD*AR2+,*AR3+34;指示灯闪烁指示灯闪烁.textdm1:
ssbxxfcalldelayrsbxxfcalldelaybdm1delay:
stm#270fh,ar6;9999loop1:
stm#0f9h,ar7;249loop2:
banzloop2,*ar7-;2周期周期banzloop1,*ar6-ret.end35DSP应用程序设计o应用程序设计包含两个方面的内容:
一是选择合适的编程语言编写程序;二是选择适当的开发环境和开发工具。
36oDSP的软件开发大体有三种方式:
一种是直接编写汇编语言程序进行编译连接;一种是编写C语言程序,用C语言优化软件进行编译连接;还有一种是混合编程,对于速度要求比较高的代码部分如滤波、FTT等算法,应用汇编语言来编写;对于一些控制代码,可用C语言来写,这样可加快开发速度。
3738顺序结构程序o顺序结构是最基本的程序结构形式,程序的语句或者结构被连续执行39分支结构程序o程序分支主要是靠条件转移指令来实现的,利用这些指令可以执行分支操作,循环控制等。
40循环程序结构o循环程序设计主要用于某些需要重复进行的操作,简化程序,节约内存。
41子程序结构o子程序是一个独立的程序段,具有确定的功能,可以被其他程序调用,调用它的程序一般是主程序。
42DSP集成开发环境43介绍TI公司的集成开发环境CCS(CodeComposerStudio).CCS提供了环境配置、源文件编辑、程序调试、跟踪和分析等工具,可以帮助用户在一个软件环境下完成编辑、编译链接、调试和数据分析等工作.44oCCS一般工作在两种模式下:
软件仿真器和与硬件开发板相结合的在线编程.前者可以脱离DSP芯片,在PC机上模拟DSP的指令集与工作机制,主要用于前期算法实现和调试.后者实时运行在DSP芯片上,可以在线编制和调试应用程序.45CCS集成开发环境应用o概述o利用CCS集成开发环境,用户可以在一个开发环境下完成工程定义、程序编辑、编译链接、调试和数据分析等工作环节.使用CCS开发应用程序的一般步骤为:
o打开或创建一个工程文件.工程文件中包括源程序(C或汇编)、目标文件、库文件、连接命令文件和包含文件.46o编辑各类文件.如头文件(.h文件),命令文件(.cmd文件)和源程序(.c,.asm文件)等.可以使用一般的编辑软件或CCS集成编辑环境进行各类文件编辑.o对工程进行编译.如果有语法错误,将在构建(Build)窗口中显示出来.用户可以根据显示的信息定位错误位置,更改错误.o排除程序的语法错误后,用户可以对计算结果/输出数据进行分析,评估算法性能.CCS提供了探针、图形显示、性能测试等工具来分析数据、评估性能.47o一个典型的CCS集成环境窗口示例.整个窗口由主菜单、工具条、工程窗口、编辑窗口、图形显示窗口、内存单元显示窗口和寄存器显示窗口等构成.o工程窗口用来组织用户的若干程序构成一个项目,用户可以从工程列表中选中需要编辑和调试的特定程序.o在源程序编辑/调试窗口中用户既可以编辑程序,又可以设置断点和针(对于C程序),调试程序4849o反汇编窗口可以帮助用户查看机器指令,查找错误(汇编程序探针、断点的设置应在反汇编窗口中进行).o内存和寄存器显示窗口可以查看、编辑内存单元和寄存器.o图形显示窗口可以根据用户需要直接或经过处理后显示数据.o用户可以通过主莱单Windows条目来管理各窗口.在CCS窗口中单击鼠标右键都可以弹出与此窗口内容相关联的菜单.50编辑源程序oCCS集成编辑环境可以编辑任何文本文件(对C程序和汇编程序),可以打开多个窗口或对同一文件打开多个窗口,进行多窗口显示.点击主莱单命令FileNewSourceFile弹出编辑窗口进行编辑.51oCCS提供的单步执行操作有4种类型,它们在调试工具条上分别有对应的快捷按钮.o
(1)单步进入(快捷键F8).此操作将进入语句内部(如子程序或软件中断)调试.o
(2)单步执行(快捷键F10).此命令将函数或子程序当作一条语句执行,不进其内部调试.o(3)单步跳出(快捷键Shift+F7).此命令将从子程序中跳出.o(4)执行到当前光标处(快捷键Ctrl+F10).此命令使程序运行到光标所在的语句处.52查看、编辑内存oCCS允许显示特定区域的内存单元数据.可显示指定地址的内存单元.改变内存窗口显示属性(如数椐显示格式,是否对照显示等)5354o显示寄存器oCCS将在CCS窗口下方弹出一寄存器查看窗口o编辑变量o命令Edit可以直接编辑用户定义的数据变量,在对话框中填入变量名(Variable)和新的数值(Value)即可.55通过观察窗口查看变量o在程序运行中,用户可能需要不间断地观察某个变量的变化情况.CCS提