文档介绍:该【DSP实验手册实验一CCS使用及DSP的运算(精) 】是由【秋江孤影】上传分享,文档一共【33】页,该文档可以免费在线阅读,需要了解更多关于【DSP实验手册实验一CCS使用及DSP的运算(精) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
实验一CCS使用及DSP基本数学运算
一、实验目的:
1、熟悉CCS集成开发环境,掌握工程的生成方法;
2、熟悉SEED-DTK5416实验环境;
3、掌握CCS集成开发环境的调试方法;
4、了解数在计算过程中的定标,掌握数的定点、浮点表示方法,定点、浮点
基本运算以及定点、浮点间的相互转换。
二、实验内容:
1、DSP源文件的建立;
2、DSP程序工程文件的建立;
3、编译与链接的设置,生成可执行的DSP文件;
4、进行DSP程序的调试与改错;
5、学****使用CCS集成开发工具的调试工具;
6、观察实验结果;
三、实验知识背景:
在DSP编程过程中,数以二进制、十进制、与十六制表示均可。在定点DSP
的运算过程中,数一般采用二进制与二进制补码的形式进行运算的。其中二进制数
只能代表正数不能代表负的数,而二进制补码记数系统弥补了这一缺点。它的构成
如下;
在二进制的基础上,加一符号位。符号位位于二进制数的最高位
:.
当为正数时,符号位为0,为负数时,符号位为1
当采用二进制补码进行数的运算时,具有如下的两个优点:
可以将加法与减法统一成加法运算
符号位可以进行扩展,而其数值不变,这可以使一个比较小的数存放到比较大
的寄存器当中
例:
1×2+0×1=-2(11110)2=1×(-16)+1×8+……+
当将其符号位扩展三位,放入一8位的寄存器中
1×2+0×1=-2(11111110)2=1×(-128)+1×64+……+
这将为运算提供极大的方便,因而在定点的DSP中,大多数情况采用二进制
补码形式。C5000系列的DSP硬件只支持定点运算,浮点运算要通过软件来实
现。其运算字长为16位,也就是说,DSP所能表示的整数的范围也就决定了,其
范围为-32768到32767。而在很多情况下,数学运算过程中不一定是整数,而且
动态范围也不是固定不变的。如何解决这个问题?对于只支持定点运算的CPU来
说,在硬件上并没有提供小数点定位的机制。只有靠软件中人为地假设将小数点放
在16位数据中的不同位置,就可以表示不同大小与不同精度的数据了,这就是数
的定标。
数的定标有Q与S两种表示方法。在Q表示法中,Q代表(Quantityof
FractionalBits)数中尾数部分的位数,即小数点右边的位数。而S表示法中,S代
表数中整数部分的位数,即小数点左边的位数。实用中一般用Q表示法,例:Q0
表示小数点在第0位的右边,即为整数。Q15表数小数点在第15位的右边,即为
小于1的小数(以二进制补码表示,第15位为符号位)。下表给出了16位数的
16种不同的Q表示法。并列出了它们所能表示的十进
:.
=
制数的范围。Q表示法S表示法十进制数表示的范围
-1≤x≤
-2≤x≤
-4≤x≤
-8≤x≤
-16≤x≤
-32≤x≤
-64≤x≤
-128≤x≤
-256≤x≤
-512≤x≤
-1024≤x≤
-2048≤x≤
-4096≤x≤
-8192≤x≤
-16384≤x≤
-32768≤x≤32767
:.
对于加法和减法运算来说,其运算结果并不会改变小数点的位置,也就是说,
2个Q15的数相加或相减,其结果还是1个Q15的数。而对于乘法运算则不然,2
个Q15的数相乘,其结果将是1个Q30的数,符号位由1位扩展为2位。如果保
留高16位,舍弃低16位,
此时,要想将乘法结果与另1个Q15的数相加或则将得到1个带有2个符号
位的Q14的数。
相减,则需要对由乘法运算得到的带有2个符号位的Q14的数去掉一个符号
位,规一化为Q15的数,即要左移1位。
对于C5000系列,在数值运算中一般采用Q15数制。这是由于C5000在进行
乘法运算时,其乘法运算单元具有自动左移一位的功能。这样可以将两个Q15相
乘后得到一Q30的数据中的两个符号位去除一个,保证其结果的正确性。下面举
例进行说明:
×=
;Q15
×;Q15
=;Q30
↑符号位
在结果保存时一般只保存两个Q15的定点数相乘后得到一个带2个符号位的
Q30的数,
与输入数据相同的精度的结果即可,也就是只保存高16位即可,但DSP乘法
运算结果的高16位中包含了2个符号位,也即高16位是1个带有2个符号位的Q
14的数,从而其精
:.
由于小数点没有对齐,度将损失1位。另外,若想用乘法结果与另1个Q15
的数相加或相减,
将导致运算错误。因此在保存乘法运算结果的高16位时,应将乘积左移一
位,从而得到正
而这一过程在C5000的DSP中可以自动来处理。只需要设置ST1的FRCT确
的Q15结果。
位就可以了。在C5000系列中,若采用其它的Q数制时,就需要在软件中人
为地对乘法运算的结果进行相应的左移操作,才能确保数值运算的正确。
浮点数与定点数的转换关系可表示为:
浮点数A转换成定点数B:B(int)A×2Q;
定点数A转换成浮点数B:B(int)A×2-Q。
举例说明浮点数x=,定标在Q15,则定点数为
Xq=×32768=16384
将定点数转换成浮点数也是一样。
由于定点数的表示范围是一定的,因此在进行运算时,其结果就有可能超出数
的表示范围的情况,这就是溢出。溢出有大于最大表示值,叫上溢出,小于最小值
叫下溢出。在定点运算时一定要考虑溢出的处理方法。在DSP中可以设置溢出保
护功能,当发生时,DSP自动将结果设置为最大值或是最小值。
四、实验程序结构说明:
在CCS使用及DSP的基本数学运算的实验中主要包括以下文件:
1、。主要包含有:
:.
fixed_add(intx,inty:定点加法运算;
fixed_sub(intx,inty:定点减法运算;
fixed_mul(intx,inty:定点乘法运算;
fixed_div(intx,inty:定点除法运算;
float_add(doublex,doubley:浮点加法运算;
float_sub(doublex,doubley:浮点减法运算;
float_mul(doublex,doubley:浮点乘法运算;
float_div(doublex,doubley:浮点除法运算;
float_fixed(doublex:浮点转定点运算;
fixed_float(intx:定点转浮点运算;
2、。它的主要功能是将DSP的每段的程序链
接到相
应的DSP的存贮区中。
3、,主要包含了有关C的运行环境与相应的函数的代
码。
五、实验步骤:
1、将DSP仿真器与计算机连接好;
2、将DSP仿真器的JTAG插头与SEED-DEC54xx单元的J8相连接;启动计
算机,=当计算机启动后,打开SEED-DTK5416的电源。观察SEED-DTK_IO单元
的+5V、
:.
+、+15V、-15V的电源指示灯是否均亮;若有不亮的,请断开电源,检
查电源。
3、打开CCS集成开发环境,进入CCS的操作环境。
4、新建源文件
创建一个未知名的源文件
编写源代码并保存
:.
保存源程序名为
:.
:.
创建其他源程序()可重复上述步骤
5、建立新工程,打开CCS,点击Project-->New,创建一个新工程
:.
工程名及路径可任意指定
:.
点击完成,已新建一个名为DTK-,路径为
:.
D:\ti\projects\DTK-MATH
点击Project选择addfilestoproject,、、
程中
:.
,即可添加源程序到工程中;同样的方法可
、;、
、
:.
以下操作可使您对工程中的文件进行打开、删除、查看属性等操作
:.
6、设置编译与连接选项
设置相应的编译参数,一般情况下,按默认值就可以;
:.
进行连接的参数设置,设置输出文件名,堆栈的大小以及初如化的方式。
:.
设置连接顺序,注:。
点击Project-->Buildall,对工程进行编译,如正确则生成DTK-;若是
修改程序,可以使用Project->Build命令,进行编译连接,它只对修改部分做编译
连接工作。可节省编译与连接的时间。编译通过,生成
:.
DTK-
7、点击File-->loadprogram,载入debug文件夹下的可执行文件
:.
DTK-
:.
装载完毕
:.
点击窗口左侧的GoMain回到C程序的入口
:.
进入C程序的入口
:.
设置断点、打开CPU与外设寄存器的观察窗;
File->Workspace->SaveWorkspace…保存调试环境,以便下次调试时,不再需
要重新进行设置。只要File->Workspace->LoadWorkspace…即可恢复当前的观察窗
与断点的设置
:.
运行程序到第一个断点在STDout观察窗内看定点运算是否正确。然后再运行
程序到第二个断点,观察浮点运算是否正确;再运行程序,观察浮点与定点之间的
转换是否正确。
:.
8、观察CPU寄存器、Memory、
:.
Graph
关于Graph的设置在以后的实验中有详细的说明,这里就不再说明了。
在图示窗口中可观察到CPU各寄存器的值和外围寄存器的值
:.
9、调试工具(debug)
在下拉菜单中可选择复位CPU、进入C主程序、重新开始等操作。
:.
以下操作将会在调试过程中经常用到:
F5运行
F8单步运行且进入子程序中
F9设置断点
F10单步运行。
:.
ProbePoints是一个对调试有相当帮助的工具,它允许CCS更新观窗口并可以
完成在
程序的指定处(设置ProbePoint处)将PC文件数据读到存贮器或将存贮器数
据写入到PC文件中,应用此功能时,设置FILEI/O的属性。其操作如下:
将光标放置在设置ProbePoint的程序行上,然后选择Debug\ProbePoint…选
项
:.
这时CCS弹出有关ProbePoints的设置表,进行如下设置:
:.
当程序运行到你设置的ProbePoint程序行时,CCS自动的刷新Memory窗
口。然后程序自动接着运行。更多的操作内容详见帮助文件(help选项)
六、实验说明:
在这个实验中,为了加深对CCS的了解,分别在编译与链接过程中设置了的
错误行。这些错误行都是在程序调试中经常遇到的。
1、源程序错误:
在函数fixed_add()中的z的定义未加“;”号;
函数float_add()的{}号缺右边而未完整
2、链接错误;
DSP的空间分配重叠;
:.
。
在进行此实验时,只有将上述的程序错误改正后才能正确的编译与链接。产生
DTK-。