学生实验报告
院别
电子工程学院
课程名称
Dsp芯片原理与应用
班级
08电信B
实验名称
实验 二、DSP基本数值计算
姓名
占琴堂
实验时间
年  月 
学号
28010301035
指导教师
李亚
成绩
一、实验目的和任务
1  熟悉 CCS 集成开发环境,掌握工程的生成方法;
2  掌握 CCS 集成开发环境的调试方法;
3  了解数在计算过程中的定标,掌握数的定点、浮点表示方法,定点、浮点基本运算以及定点、浮点间的相互转换。
二、实验原理介绍
DSP 编程过程中,数以二进制、十进制、与十六制表示均可。在定点 DSP 的运算过程中,数一般采用二进制与二进制补码的形式进行运算的。其中二进制数只能代表正数不能代表负的数,而二进制补码记数系统弥补了这一缺点。它的构成如下:
在二进制的基础上,加一符号位,符号位位于二进制数的最高位
当为正数时,符号位为 0,为负数时,符号位为 1
C5000 系列的 DSP 硬件只支持定点运算,浮点运算要通过软件来实现。其运算字长为16 位,也就是说,DSP 所能表示的整数的范围也就决定了,其范围为-32768 32767。而在很多情况下,数学运算过程中不一定是整数,而且动态范围也不是固定不变的。如何解决这个问题?对于只支持定点运算的 CPU 来说,在硬件上并没有提供小数点定位的机制。只有靠软件中人为地假设将小数点放在 16 位数据中的不同位置,就可以表示不同大小与不同精度的数据了,这就是数的定标。
数的定标有 Q S 两种表示方法。在 Q 表示法中,Q 代表(Quantity of Fractional Bits)数中尾数部分的位数,即小数点右边的位数。而 S 表示法中,S 代表数中整数部分的位数,即小数点左边的位数。实用中一般用 Q 表示法,例:Q0表示小数点在第 0 位的右边,即为整数。Q15 表示小数点在第 15 位的右边,即为小于 1 的小数(以二进制补码表示,第 15位为符号位)。
浮点数与定点数的转换关系可表示为:
浮点数 A 转换成定点数 B B =intA×2Q 
定点数 A 转换成浮点数 B B =intA×2Q
举例说明浮点数 x 0.5,定标在 Q15,则定点数为
Xq 0.5 × 32768 16384
将定点数转换成浮点数也是一样。
由于定点数的表示范围是一定的,因此在进行运算时,其结果就有可能超出数的表示范围的情况,这就是溢出。溢出有大于最大表示值,叫上溢出,小于最小值叫下溢出。在定点运算时一定要考虑溢出的处理方法。在 DSP 中可以设置溢出保护功能,当发生时,DSP 自动将结果设置为最大值或是最小值。
三、实验设备介绍
实验设备主要有:SEED-DTKDAD实验箱,PC机,CCS软件。具体使用请参考相关文献。
CCS 使用及 DSP 的基本数学运算的实验中主要包括以下文件:
1math.c 这个文件中包含了实验中关于 DSP 运算的主要函数。主要包含有:
fixed_add(int x,int y)              定点加法运算;
fixed_sub(int x,int y)            定点减法运算;
fixed_mul(int x,int y)            定点乘法运算;
fixed_div(int x,int y)            定点除法运算;
float_add(double x,double y)        浮点加法运算;
float_sub(double x,double y)        浮点减法运算;
float_mul(double x,double y)        浮点乘法运算;
float_div(double x,double y)        浮点除法运算;
float_fixed(double x)            浮点转定点运算;
fixed_float(int x)                  定点转浮点运算;
2d 这是 DSP 的链接文件。它的主要功能是将 DSP 的每段的程序链接到相应的 DSP 的存贮区中。
3rts.lib 这是一个库文件,主要包含了有关 C 的运行环境与相应的函数的代码。
四、实验内容和步骤
1  DSP 仿真器与计算机连接好;
2  DSP 仿真器的 JTAG 插头与 SEED-DEC54xx 单元的 J8 相连接;启动计算机, 当计算机启动后,打开 SEED-DTK5416 的电源。观察 SEED-DTK_IO 单元的+5V+3.3V+15V-15V  的电源指示灯是否均亮;若有不亮的,请断开电源,检查电源。
3  打开 CCS 集成开发环境,进入 CCS 的操作环境。
4  新建源文件并调试运行
五、实验数据记录
定点加法
x0.5y3.1,则浮点运算结果为zx+y0.5+3.13.6;    程序:
Qx15Qy13Qz13,则定点加法为:                      int x=0.5,y=3.1,z;
x16384y25395;                                        z=fixed_add(int x,int y)
temp25395<<2101580;                                    输出z=3.6
tempx+temp16384+101580117964;
z(int)(117964L>>2)29491;
因为zQ值为13,所以定点值z29491即为浮点值z29491/81923.6
定点减法
x3.0y3.1,则浮点运算结果为zx-y3.0-3.1-0.1;      程序
Qx13Qy13Qz15,则定点减法为:                    int x=3.0,y=3.1,z;
x24576y25295temp25395;                            z= fixed_sub(int x,int y)
tempx-temp24576-25395-819;                          输出z=-0.1
因为Qx<Qz,故 z(int)(-819<<2)-3276。由于zQ值为15,所以定点值支持小数点的进制转换器z-3276即为浮点值z-3276/32768-0.1
六、实验结论与心得
在这个实验中, 加深了对dsp芯片编程环境的认识及运用。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。