资源描述:
《西工大DSP大作业.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验1基于CCS的简单的定点DSP程序一、实验要求1、自行安装CCS3.3版本,配置和运行CCS2、熟悉CCS开发环境,访问读写DSP的寄存器AC0-AC3,ARO-AR7,PC,T0-T33、结合C5510的存储器空间分配,访问DSP的内部RAM4、编写一个最简单的定点DSP程序,计算下面式子y=0.1*1.2+35*20+15*1.65、采用定点DSP进行计算,确定每个操作数的定点表示方法,最后结果的定点表示方法,并验证结果6、对编写的程序进行编译、链接、运行、断点执行、单步抽并给出map映射文件二、实验原理DSP芯片的定点运算-
2、--Q格式(转)2008-09-0315:47DSP芯片的定点运算1.数据的溢出:1>溢出分类:上溢(overflow):下溢(underflow)2>溢出的结果:MaxMinMinMaxunsignedchar0255signedchar-128127unsignedint065535signedint-3276832767上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。例:signedint:32767+1=-32768;-32768-1=32767unsignedchar:255+1=0;0-1=2553>为了避免溢出的发
3、生,一般在DSP中可以设置溢出保护功能。当发生溢出时,自动将结果设置为最大值或最小值。2.定点处理器对浮点数的处理:1>定义变量为浮点型(float,double),用C语言抹平定点处理器和浮点处理器的区别,但是程序的代码庞大,运算速度也慢。2>放大若干倍表示小数。比如要表示精度为0.01的变量,放大100倍去运算,运算完成后再转化。但是这个做法比较僵硬,如要将上面的变量重新定义成0.001精度,又需要放大1000倍,且要重新编写整个程序,考虑溢出等问题。3>定标法:Q格式:通过假定小数点位于哪一位的右侧,从而确定小数的精度。Q0:小
4、数点在第0位的后面,即我们一般采用的方法Q15小数点在第15位的后面,0~14位都是小数位。转化公式:Q=(int)(F×pow(2,q))F=(float)(Q×pow(2,-q))3.Q格式的运算1>定点加减法:须转换成相同的Q格式才能加减2>定点乘法:不同Q格式的数据相乘,相当于Q值相加3>定点除法:不同Q格式的数据相除,相当于Q值相减4>定点左移:左移相当于Q值增加5>定点右移:右移相当于Q减少4.Q格式的应用格式实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选择一个适当的定标格式才能更好的处理运算。一般
5、用如下两种方法:1>使用时使用适中的定标,既可以表示一定的整数复位也可以表示小数复位,如对于2812的32位系统,使用Q15格式,可表示-65536.0~65535.区间内的数据。三、实验步骤1.双击,启动CCS的仿真平台的配着选项。选择C5410DeviceSimulator。2.点击project菜单栏的new选项,新建一个LAB的工程注意存储的路径。3.把下图中用到的文件拷到工程文件目录的文件路径下。4.在ccs平台中将用到的程序导入到平台中,点击project—>addfiletoproject。选择多个文件时,可以按住ctr
6、l键。5.将程序中的start改为_main,INT_2改为_int_2。然后点击保存。源程序代码******************************************************example.asmy=0.1*x1.2+35*20+15*x1.6******************************************************.title“example.asm”;为汇编源程序取名.mmregs;定义存储器映象寄存器STACK.usect“STACK”,10h;分配10个单元的堆
7、栈空间.bssa,4;为系数a分配4个单元的空间.bssx,4;为变量x分配4个单元的空间.bssy,1;为结果y分配1个单元的空间.def_c_int00;定义标号_c_int00 .data;定义数据代码段table:.word1,2,3,4;在标号table开始的8个单元中.word8,6,4,2;为这8个单元赋初值.text;定义文本代码段_c_int00:STM#0,SWWSR;软件等待状态寄存器置0,不设等待STM#STACK+10h,SP;设置堆栈指针初值STM#a,AR1;AR1指向a的地址RPT#7;从程序存储器向数
8、据存储器MVPDtable,*AR1+;重复传送8个数据CALLSUM;调用SUM实现乘法累加和的子程序end:Bend;循环等待SUM:STM#a,AR3;将系数a的地址赋给AR3STM#x,AR4;将变量x的地址赋给