54DSP十天速成.doc

上传人:m**** 文档编号:544560479 上传时间:2023-01-16 格式:DOC 页数:22 大小:80.51KB
返回 下载 相关 举报
54DSP十天速成.doc_第1页
第1页 / 共22页
54DSP十天速成.doc_第2页
第2页 / 共22页
54DSP十天速成.doc_第3页
第3页 / 共22页
54DSP十天速成.doc_第4页
第4页 / 共22页
54DSP十天速成.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《54DSP十天速成.doc》由会员分享,可在线阅读,更多相关《54DSP十天速成.doc(22页珍藏版)》请在金锄头文库上搜索。

1、实验一新手上路初学者编写的第一个程序通常是控制XF引脚的变化,然后用示波器测量XF脚波形或观察与相接的LED。这个程序也常常用来测度一下DSP能否正常工作。实验1.1最简单的程序:控制XF引脚周期性变化实验目的:通过简单的程序了解DSP程序的结构,熟悉CCS开发环境。*最简单的程序:TestXF1.asm*循环对XF位置1和清0,用示波器可以在XF脚检测到电平高低周期性变化*常用于检测DSP是否工作。*.mmregs;预定义的寄存器.defCodeStart;定义程序入口标记.text;程序区CodeStart:;程序入口SSBXXF;XF置1RPT#999;重复执行1000次空指令产生延时N

2、OPRSBXXF;XF清0RPT#999;重复执行1000次空指令产生延时NOPBCodeStart;跳转到程序开头循环执行.endNOP指令执行时间为一个时钟周期,设DSP工作频率是50MHz,可以估算出XF引脚电平的变化频率约为:50M/2000=25kHz在没有示波器的情况下,就要将程序1.1稍作改进,增加延时,用一个延时子程序将XF脚电平变化频率降到肉眼可分辨的程度,就可以用LED来显示电平的变化,程序如下:实验1.2子程序调用实验目的:学习子程序的调用*TestXF2.asm*对TestXF1.asm稍作改进,用延时子程序设置较长的延时,*可以用试验板上的LED看到XF引脚电平的变化

3、*.mmregs;预定义的寄存器.defCodeStart;定义程序入口标记.text;程序区CodeStart:;程序入口SSBXXF;XF置1CALLDelay;调用延时程序RSBXXF;XF清0CALLDelay;调用延时程序BCodeStart;跳转到程序开头循环执行*延时子程序:Delay*用两级减一计数器来延时。调整AR1和AR2的大小LED闪烁的频率不同*Delay:STM#999,AR1;循环次数1000LOOP1:STM#4999,AR2;循环次数5000LOOP2:BANZLOOP2,*AR2-;如果AR2不等于0,AR2减1,再判断BANZLOOP1,*AR1-;如果AR

4、1不等于0,AR1减1,跳转到LOOP1RET.end*注意这种延时方法并不精确,需要精确定时必须用定时器。*按此法延时的近似公式为:4*(AR2+1)*(AR1+1)*时钟周期*当DSP工作在50MHz(时钟周期20ns),AR1=999,AR2=4999时*延时约为400ms,则LED闪烁的周期为800ms,频率1.25Hz*设计指导:1源代码书写格式源代码的书写有一定的格式,初学者往往容易忽视。简单归纳如下:1每一行代码分为三个区:标号区、指令区和注释区。标号区必须顶格写,主要是定义变量、常量、程序标签时的名称。指令区位于标号区之后,以空格或TAB格开。如果没有标号,也必须在指令前面加上

5、空格或TAB,不能顶格。注释区在标号区、程序区之后,以分号开始。注释区前面可以没有标号区或程序区。另外还有专门的注释行,以*打头,必须顶格开始。2一般区分大小写,除非加编译参数忽略大小写。3标点符号有时不注意会打成中文全角字符导致错误。书写格式的要求在很多DSP书里都没有提,初学者往往只把书上的代码输入进去,编译时得到错误的提示,而不知所措。其中最容易犯的错误指令顶格写,不过一般经提示后不会犯第二次。有些格式CCS并没有做要求,但注意养成良好的代码书写风格,增加代码的可读性。以上两个例子的书写风格可作参考,但不是硬性规定:1标号区占3个TAB的间隔,即12个字符2指令中的指令码占两个TAB间隔

6、,然后是操作数。3每一行的尾注能对齐的尽量对齐4标明一段程序功能的注释以*号打头顶格写,如果功能说明的注释较多,用分格线框起来。此外其它编程语言的编程风格也可以借用过来,比如标示符命名规则、程序说明的要求等。如果项目组有规定,则按规定执行。本书的代码尽量保持一定的风格,不过读者可以发现前面的代码注释较多,后面随着学习的深入,一般不会对每一条指令加注释,只注明程序段的功能。另外代码贴到word里后,格式有些错位,无法一一纠正。2链接配置文件一个完整的DSP程序至少包含三个部分:程序代码、中断向量表、链接配置文件(*.cmd)。这里介绍一下链接配置文件文件,对本次试验影响不大的中断向量表将在后文介

7、绍。连接配置文件的确定了程序链接成最终可执行代码时的选项,其中有很多条目,实现不同方面的选项,其中最常用的也是必须的有两条:1.存贮器的分配2.标明程序入口。以本次实验为例,下面的简单的链接配置文件就够用了:/*TestXF.cmd*/-eCodeStart/*程序入口,必须在程序中定义相应的标号*/MEMORYpage0:PRAM:org=0100hlen=0F00h/*定义程序存贮区,起始0100H,长度0F00H*/SECTIONS.text:PRAMpage0/*将.text段映射到page0的param区*/由于每个程序都需要一个链接配置文件,可以编写一个满足通常需要的链接配置文件。

8、作为本手册通用的链接配置文件如下,可以满足本书大部分程序的需要。在未特别指明的情况下使用这个通用的链接配置文件:/*5402.cmd*/-eCodeStart/*程序入口,必须在程序中定义相应的标号*/-mmap.map/*生成存储器映射报告文件*/MEMORYPAGE0:VECT:org=0080hlen=0080h/*中断向量表*/PARAM:org=100hlen=0F00h/*代码区*/PAGE1:DARAM:org=1000hlen=1000h/*数据区*/SECTIONS.text:PARAMPAGE0/*代码段*/.vectors:VECTPAGE0/*中断向量表*/STACK:

9、DARAMPAGE1/*堆栈*/.bss:DARAMPAGE1/*未命名段*/.data:DARAMPAGE1/*数据段*/更多参考:1关于代码书写格式:SPRU102:TMS320C54xAssemblyLanguageToolsUsersGuide,3.5SourceStatementFormat2关于链接配置文件:SPRU102:TMS320C54xAssemblyLanguageToolsUsersGuide,7.5LinkerCommandFiles,7.7TheMEMORYDirective,7.8TheSECTIONSDirective练习:1、试一下不按规定格式书写代码会产生什

10、么样的编译错误。2、试一下将链接配置文件中的MEMORY,SECTIONS改成小写会出现什么样的编译错误。3修改程序1.2中AR1,AR2的值,观察LED闪烁频率实验二基本运算本节选自为HK-DSP实验箱写的实验指导书,有待整理DSP指令数量最多的是:算术指令、逻辑指令和数据加载与传送指令。数据加载与传送指令由于处处要用,所以不单独列为实验。算术与逻辑指令也是数量繁多,无法一一举例,这里简单举一个加法和除法的例子,乘法和乘加指令在FIR用得比较多,稍后一并介绍。其它指令有兴趣可以对照指令表的说明,试验一下各指令运行的结果。实验2.1加减法计算*计算z=x+y-w。*.mmregs.defCod

11、eStartData_DP:;数据段指针x:.word10;初始化变量y:.word26w:.word23z:.word0 .textCodeStart:LD#Data_DP,DP;装载数据指针DPSTM#STACK+10H,SPSUMB:LDx,A;A=xADDy,A;A=A+ySUBw,A;A=A-wSTLA,z;z=AEND:BEND计算结果数据存储器地址存储内容十进制x1010H000aH10y1011H001aH26w1012H0017H23z1013H000dH13技巧提示:试验算术指令由于不需要外部资源,可以不需要仿真器和实验箱。同学们可以平时自己用软件仿真,多多实验。但是复杂的

12、算法最好还是在线仿真,因为程序是流水线执行,软件仿真有时与实际硬件执行结果有所不同。实验2.2除法计算DSP并没有除法指令,回想一下我们用在稿纸上演算除法列的竖式,实际是一种移位减法,DSP中也是通过做多次减法的办法来做除法。下面例子是把用除以10的办法二进制数转成BCD码例子:*16进制转BCD码*.mmregs.globalCodeStart.datax:.word1234;待转换的数字y:.word10;除数z:.word0Fh,0Fh,0Fh,0Fh,0Fh;结果区,每位BCD存一个字,;初始化为F因为实验板的数码管不显示F.textCodeStart:LD#x,DP;设置DPLDx,A;被除数STM#z,AR1;结果区指针loop:RPT#15;执行完16次减法后,A的高16位是余数SUBCy,A;低16位是商STHA,*AR1+;余数保存到ZAND#0FFFFH,A;掩盖掉高16位,保留商值BCloop,ANEQ;继续做除法直到商为0end:Bend练习:练习其他算术指令其它参考:spru172c:TMS320C54xDSPReferenceSetV

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号