学生实验报告
院别 | 电子工程学院 | 课程名称 | 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 =(int)A×2Q; 定点数 A 转换成浮点数 B: B =(int)A×2-Q; 举例说明浮点数 x = 0.5,定标在 Q15,则定点数为 Xq= 0.5 × 32768 = 16384 将定点数转换成浮点数也是一样。 由于定点数的表示范围是一定的,因此在进行运算时,其结果就有可能超出数的表示范围的情况,这就是溢出。溢出有大于最大表示值,叫上溢出,小于最小值叫下溢出。在定点运算时一定要考虑溢出的处理方法。在 DSP 中可以设置溢出保护功能,当发生时,DSP 自动将结果设置为最大值或是最小值。 三、实验设备介绍 实验设备主要有:SEED-DTKDAD实验箱,PC机,CCS软件。具体使用请参考相关文献。 在 CCS 使用及 DSP 的基本数学运算的实验中主要包括以下文件: 1、math.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): 定点转浮点运算; 2、d 这是 DSP 的链接文件。它的主要功能是将 DSP 的每段的程序链接到相应的 DSP 的存贮区中。 3、rts.lib 这是一个库文件,主要包含了有关 C 的运行环境与相应的函数的代码。 四、实验内容和步骤 1、 将 DSP 仿真器与计算机连接好; 2、 将 DSP 仿真器的 JTAG 插头与 SEED-DEC54xx 单元的 J8 相连接;启动计算机, 当计算机启动后,打开 SEED-DTK5416 的电源。观察 SEED-DTK_IO 单元的+5V、+3.3V、+15V、-15V 的电源指示灯是否均亮;若有不亮的,请断开电源,检查电源。 3、 打开 CCS 集成开发环境,进入 CCS 的操作环境。 4、 新建源文件并调试运行 五、实验数据记录 定点加法 设x=0.5,y=3.1,则浮点运算结果为z=x+y=0.5+3.1=3.6; 程序: Qx=15,Qy=13,Qz=13,则定点加法为: int x=0.5,y=3.1,z; x=16384;y=25395; z=fixed_add(int x,int y): temp=25395<<2=101580; 输出z=3.6 temp=x+temp=16384+101580=117964; z=(int)(117964L>>2)=29491; 因为z的Q值为13,所以定点值z=29491即为浮点值z=29491/8192=3.6。 定点减法 设x=3.0,y=3.1,则浮点运算结果为z=x-y=3.0-3.1=-0.1; 程序 Qx=13,Qy=13,Qz=15,则定点减法为: int x=3.0,y=3.1,z; x=24576;y=25295;temp=25395; z= fixed_sub(int x,int y) temp=x-temp=24576-25395=-819; 输出z=-0.1 因为Qx<Qz,故 z=(int)(-819<<2)=-3276。由于z的Q值为15,所以定点值支持小数点的进制转换器z=-3276即为浮点值z=-3276/32768-0.1。 六、实验结论与心得 在这个实验中, 加深了对dsp芯片编程环境的认识及运用。 | |||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论