DSP课程设计_13
- 格式:doc
- 大小:504.00 KB
- 文档页数:7
基于汇编语言的基本算术运算的DSP实现
1.设计内容和目的
利用汇编语言进行编程:完成实现加法、减法、乘法、除法运算的DSP程序,并用CCS进行程序编译调试。熟悉CCS进行程序编译调试的步骤掌握进行算术运算的常用指令以及伪指令的作用掌握汇编语言进行整数运算。
S开发环境及其常用指令的介绍
2.1 CCS开发环境
Code Composer Studio(简称CCS)是TI公司推出的用于 开发DSP的集成开发环境,它采用Windows风格界面,集编 辑、编译、链接、软件模拟、硬件仿真调试以及实时跟踪等 功能于一体,支持汇编语言与C语言及二者的混合编程,极大 地方便了DSP的开发与设计。CCS集成开发环境是目前使用 最为广泛的DSP开发软件之一,所有TI公司的DSP都可以在 该环境里进行开发。 CCS自推出以来发展出了多个版本,本章以C54x为例介绍CCS的安装和设计、CCS的应用界面并以CCS工程开发实例来详细介绍CCS集成开发环境的使用。CCS有两种工作模式,即软件仿真器模式:可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。硬件在线编程模式:可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。
CCS的开发系统主要由以下组件构成:
① TMS320C54x集成代码产生工具;
② CCS集成开发环境;
③ DSP/BIOS实时内核插件及其应用程序接口API;
④ 实时数据交换的RTDX插件以及相应的程序接口API;
⑤ 由TI公司以外的第三方提供的各种应用模块插件。
CCS的功能十分强大,它集成了代码的编辑、编译、链接和调试等诸多功能,而且支持C/C++和汇编的混合编程,其主要功能如下:
① 具有集成可视化代码编辑界面,用户可通过其界面直接编写C、汇编、.cmd文件等;
② 含有集成代码生成工具,包括汇编器、优化C编译器、链接器等,将代码的编辑、编译、链接和调试等诸多功能集成到一个软件环境中;
③ 高性能编辑器支持汇编文件的动态语法加亮显示,使用户很容易阅读代码,发现语法错误; ④ 工程项目管理工具可对用户程序实行项目管理。在生成目标程序和程序库的过程中,建立不同程序的跟踪信息,通过跟踪信息对不同的程序进行分类管理;
⑤ 基本调试工具具有装入执行代码、查看寄存器、存储器、反汇编、变量窗口等功能,并支持C源代码级调试;
⑥ 断点工具,能在调试程序的过程中,完成硬件断点、软件断点和条件断点的设置;
⑦ 探测点工具,可用于算法的仿真,数据的实时监视等;
⑧ 分析工具,包括模拟器和仿真器分析,可用于模拟和监视硬件的功能、评价代码执行的时钟;
⑨ 数据的图形显示工具,可以将运算结果用图形显示,包括显示时域/频域波形、眼图、星座图、图像等,并能进行自动刷新;
⑩ 提供GEL工具。利用GEL扩展语言,用户可以编写自己的控制面板/菜单,设置GEL菜单选项,方便直观地修改变量,配置参数等;
(1)菜单栏:CCS的主菜单共有12项,CCS所有操作都可以在这些 菜单中找到对应项。此外,CCS的所有窗口都含有一个关联菜 单,或称快捷菜单,只要在各窗口中单击鼠标右键就可以打开 关联菜单。 (2)工具栏:CCS的常用工具栏由一些常用命令组成,用户可以直 接单击工具栏上的图标按钮调用相应的CCS命令。 (3)工程视图窗口:CCS的工程视图窗口用来组织用户的若干程序 并由此构成一个项目,用户可以从工程列表中选择需要编辑和 调试的程序,可以在工程中添加文件。 (4)源程序编辑窗口:在该窗口中,用户既可以编辑源程序,又可 以设断点和探针调试程序。 (5)反汇编窗口:用来帮助用户查看机器指令,查找错误。 (6)图形显示窗口:可以根据用户需要,以图形的方式显示数据。 (7)存储器窗口:用来查看、编辑内存单元。 (8)CPU寄存器窗口:用来查看、编辑CPU寄存器。 (9)输出窗口:CCS信息输出窗口,该窗口采用分窗口显示方式,
在窗口下边包括窗口切换按钮,用于显示编译、链接、DSP程 序输出等信息。 (10)状态栏:显示CCS当前工作状态信息,可以通过View菜单的 Status Bar命令开关。
2.2 CCS常用指令的介绍
汇编伪指令 作用 举例
.title 紧跟其后的是用双引号括起的源程序名 .title“example.asm”
.mmregs 将存储器映射寄存器存入符号表
.end 结束汇编程序,放在程序的最后
.text 紧跟其后的是汇编程序的正文
.data 紧跟其后的是已初始化数据有两种 .int、.word
.int 设置一个或多个16位无符号整型量常数 table:.word1,2,3,4 .word 设置一个或多个16位有符号整型量常数
.bss 为未初始化变量保留空间 .bss x,4
.sect 建立包含代码和数据的自定义段 .sect “vectors”
.usect 为未初始化变量保留空间的自定义段 ect“STACK”,10h
.def 定义本程序所要用的符号 .def start
.ref 引用其它程序中被定义了的符号 .ref start
.global 定义全局符号 .global start
.align 定义中断向量必须对齐页边界 .align 0x80
.set 给变量赋值 N .set 50
表1
3.汇编语言的基本算术运算程序的设计
3.1加减程序设计
计算z=x+w-y;其中x=12,y=10,w=1;
3.1.1程序设计
图1
3.1.2程序运行结果
图2
3.2乘法运算
计算y=a1×x1+a2×x2+a3×x3+a4×x4;其中a1,a2,a3,a4的值分别为1,2,3,4;x1,x2,x3,x4的值分别为8,6,4,2。
3.2.1程序设计
图3
3.2.2程序运行结果
图4
3.2除法运算
编写0.4÷(-0.8)的程序,其中分子用num表示,分母用den表示,结果用quot表示。
3.2.1除法运算程序设计
图5
3.2.1除法运算程序运行结果
图6 4.总结
通过这次课程设计实现了用汇编指令设计加减乘除等基本算术运算的程序,并学会了CCS软件的应用,使我对DSP芯片有了更深一步的了解,巩固了以前在DSP技术及应用中程序设计及指令应用的理论知识,使我们建立了简单程序设计的基本思路,通过仿真使得学的一些抽象的理论形象化,强化了自己的基础知识。
在设计的过程中,由于程序文件在书写过程中出现格的错误,导致在仿真中出现错误,影响程序运行结果的效率,在同学和老师的帮助下我更正了错误问题,最终得到正确的,这使我意识到在进行程序设计的过程中哪怕一个细节的错误也会导致程序设计的失败,也警示我在以后的学习生活中要养成细心的习惯。
通过这次课程设计使我对工程的建立,文件的加载,整个过程在摸索中逐渐熟悉。对已有程序进行修改,重复相应的过程也能实现预定的功能,在短短的时间里能掌握这些基本就差不多了,由于有的需要配置的文件的缺失,无法完成对相应工程的配置设置,所以采用的参考例程里的程序,完成整个过程,这也是一个学习的过程。做项目不是一个人的事,每个成员都应积极的参与,为整个项目的完成提供保障,团队的协作,尽可能的去发挥每个成员的专长,在整个项目的完成都能有所收获,这才应该是做项目的真正目的,加强同学之间的交流,用心付出,共同享受带给大家的成功的喜悦。
这次设计让我明白相关课程的学习只是个基础,在此基础之上对相应的硬件与软件结合,切实去体验一个芯片所能实现的各种功能,去发现所学的知识会在哪些方面用到,是如何应用,有怎样可以改进的方法,更深层次去掌握跟其他相关课程的交叉点,提升学习能力,从近期来看,可以为我们将要开始的毕业设计做准备,当做是一次练手,争取出色完成毕业设计,为四年的大学交出一份完美的答卷。从长远看,为自己以后的工作也在一定程度的奠定基础,学习能力强了,自己就能比较快的接受新知识,更能适应社会对人的要求。相信团队的力量,同时也要提高个人解决问题的能力,让自己在团队中发挥的作用,将个人融入团队中,才能让自己有更大的收获。好好珍惜每次锻炼学习的机会,不断提升自己,不断超越自己,成就人生美好的梦想!
参考文献:
[1]赵红怡.DSP技术与应用实例.北京:电子工业出版社.2010.1
[2]陈金鹰.DSP技术及应用.北京:机械工业出版社.2004.6