西工大DSP大作业.pdf

上传人:修**** 文档编号:75976599 上传时间:2023-03-06 格式:PDF 页数:19 大小:520.55KB
返回 下载 相关 举报
西工大DSP大作业.pdf_第1页
第1页 / 共19页
西工大DSP大作业.pdf_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《西工大DSP大作业.pdf》由会员分享,可在线阅读,更多相关《西工大DSP大作业.pdf(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、实验实验 1 1基于基于 CCSCCS 的简单的定点的简单的定点 DSPDSP 程序程序一、实验要求一、实验要求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、对编写的程序进行编译、链接、运行、断点执行、单

2、步抽并给出map 映射文件二、实验原理二、实验原理DSP 芯片的定点运算-Q 格式(转)2008-09-03 15:47DSP 芯片的定点运算1数据的溢出:1溢出分类:上溢(overflow):下溢(underflow)2溢出的结果:MaxMinMin Max unsigned char 0 255 signed char-128 127 unsigned int 065535 signed int-3276832767上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。例:signedint:32767+1 32768;-32768-1 32767unsigned char:255+10;

3、0-12553为了避免溢出的发生,一般在 DSP 中可以设置溢出保护功能。当发生溢出时,自动将结果设置为最大值或最小值。2定点处理器对浮点数的处理:1定义变量为浮点型(float,double),用 C 语言抹平定点处理器和浮点处理器 的区2放大若干倍表示小数。比如要表示精度为 0.01 的变量,放大 100 倍去运算,运算3定标法:Q 格式:通过假定小数点位于哪一位的右侧,从而确定小数的精度。Q0:小数点在第0位的后面,即我们一般采用的方法 Q15小数点在第 15 位的后面,014 位都是小数位。转化公式:Q(int)(Fpow(2,q)F(float)(Qpow(2,q)3 Q 格式的运算

4、1定点加减法:须转换成相同的 Q 格式才能加减2定点乘法:不同 Q 格式的数据相乘,相当于 Q 值相加3定点除法:不同 Q 格式的数据相除,相当于 Q 值相减4定点左移:左移相当于 Q 值增加5 定点右移:右移相当于 Q 减少4Q 格式的应用格式实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选择一个适当的定标格式才能更好的处理运算。一般用如下两种方法:1 使用时使用适中的定标,既可以表示一定的整数复位也可以表示小数复位,如 对于 2812 的 32 位系统,使用 Q15 格式,可表示65536.065535.999969482 区间内的数据。三、实验步骤三、实验步骤1.双

5、击Simulator。,启动 CCS 的仿真平台的配着选项。选择C5410 Device2.点击 project 菜单栏的 new 选项,新建一个 LAB 的工程注意存储的路径。3.把下图中用到的文件拷到工程文件目录的文件路径下。4.在 ccs 平台中将用到的程序导入到平台中,点击projectadd project。选择多个文件时,可以按住 ctrl 键。5将程序中的 start 改为_main,INT_2 改为_int_2。然后点击保存。源程序代码源程序代码*.title“example.asm”;为汇编源程序取名.mmregs;定义存储器映象寄存器STACK.usect“STACK”,1

6、0h;分配 10 个单元的堆栈空间.bssa,4;为系数 a 分配 4 个单元的空间.bssx,4;为变量 x 分配 4 个单元的空间.bssy,1;为结果 y 分配 1 个单元的空间.def_c_int00;定义标号_c_int00example.asmy=0.1*x1.2+35*20+15*x1.6.data;定义数据代码段table:.word1,2,3,4;在标号 table 开始的 8 个单元中.word8,6,4,2;为这 8 个单元赋初值.text;定义文本代码段_c_int00:STM#0,SWWSRSTM#STACK+10h,SPSTM#a,AR1RPT#7MVPDtable

7、,*AR1+CALLSUMend:BendSUM:STM#a,AR3STM#x,AR4RPTZA,#3MAC*AR3+,*AR4+,ASTLA,yRET.end;软件等待状态寄存器置 0,不设等待;设置堆栈指针初值;AR1 指向 a 的地址;从程序存储器向数据存储器;重复传送 8 个数据;调用 SUM 实现乘法累加和的子程序;循环等待;将系数 a 的地址赋给 AR3;将变量 x 的地址赋给 AR3;将 A 清 0,并重复执行下条指令 4 次;执行乘法并累加,结果放在 A 中;将 A 的低字内容送结果单元 y;结束子程序;结束全部程序MapMap 文件文件*TMS320C55x COFF Lin

8、ker PC Version 3.83*Linked Mon May 31 11:03:33 2010OUTPUT:ENTRY POINT SYMBOL:_mainaddress:0000e000MEMORY CONFIGURATIONnameoriginlengthusedattrfill-PAGE0:EPROM0000e000000001000000001dRWIXvecs0000ff800000000400000000RWIXPAGE1:SPRAM00000060000000200000000bRWIXDARAM00000080000001000000001aRWIXSECTION AL

9、LOCATION MAPoutputattributes/sectionpageoriginlengthinput sections-.text00000e0000000001d0000e0000000001dLAB4A.obj(.text).bss1000000600000000bUNINITIALIZED四、心得体会四、心得体会经过这次实验,我更加熟悉 CCS 开发环境,访问读写 DSP 的寄存器AC0-AC3,ARO-AR7,PC,T0-T3。实验实验 2 CCS2 CCS 下的下的 FFTFFT 算法程序设计算法程序设计一、一、实验目的实验目的CCS 下的 FFT 算法程序设计二、二、

10、实验要求实验要求提供一个 CCS 下的 C 语言例程,在CCS 下,仿照例程,任选雨中FIR 滤波、IIR 滤波、FFT 算法,采用 C 语言完成代码的编写、编译、链接、下载和运行,输入数据,滤波器系数任选,并给出运算结果。1)目的2)工程文件的构成,并附图3)打印源代码4)打印编译成功的信息5)打印 map 文件6)程序下载的截图过程三)三)运行结果三、三、实验步骤实验步骤1、在 ccs 平台中将用到的程序导入到平台中,点击 projectaddproject。选择多个文件时,可以按住 ctrl 键。2将所有的程序段中的 start 改为_main,将 fft.Asm 中的K_FFT_SIZ

11、E .set 32 ;NK_LOGN .set 5 ;LOG(N)改为K_FFT_SIZE .set 64 ;NK_LOGN .set 6 ;LOG(N)3、对源文件进行编译(注意先对每个.asm 文件先进行编译,以防止程序有错误),没有错误时进行链接。4点击菜单 program。装载.out 文件四、四、实验结果实验结果五、五、源程序代码源程序代码*函数原型:void FFT(struct compx*xin,int N)函数功能:对输入的复数组进行快速傅里叶变换(FFT)输入参数:*xin 复数结构体组的首地址指针,struct 型*/void FFT(struct compx*xin)i

12、ntf,m,nv2,nm1,i,k,l,j=0;struct compx u,w,t;nv2=FFT_N/2;/变址运算,即把自然顺序变成倒位序,采用雷德算法nm1=FFT_N-1;for(i=0;inm1;i+)if(ij)/如果 ij,即进行变址 t=xinj;xinj=xini;xini=t;k=nv2;/求 j 的下一个倒位序while(k=j)/如果 k=j,表示 j 的最高位为 1 j=j-k;/把最高位变成 0 k=k/2;/k/2,比较次高位,依次类推,逐个比较,直到某个位为 0 j=j+k;/把 0 改为 1 int le,lei,ip;/FFT运算核,使用蝶形运算完成 FF

13、T 运算 f=FFT_N;for(l=1;(f=f/2)!=1;l+)/计算 l 的值,即计算蝶形级数 ;for(m=1;m=l;m+)/控制蝶形结级数 /m表示第 m 级蝶形,l 为蝶形级总数l=log(2)N le=2(m-1);/le蝶形结距离,即第 m 级蝶形的蝶形结相距 le 点 lei=le/2;/同一蝶形结中参加运算的两点的距离 u.real=1.0;/u为蝶形结运算系数,初始值为 1 u.imag=0.0;w.real=cos(PI/lei);/w为系数商,即当前系数与前一个系数的商w.imag=-sin(PI/lei);for(j=0;j=lei-1;j+)/控制计算不同种蝶

14、形结,即计算系数不同的蝶形结 for(i=j;i Linked Sat May 30 23:48:27 2015OUTPUT:ENTRY POINT SYMBOL:_main address:0000e000MEMORY CONFIGURATION name origin lengthused attr fill -PAGE 0:EPROM 0000e000 0000010000000019 RWIXPAGE 1:SPRAM 00000060 000000200000000a RWIX DARAM 00000080 0000010000000000 RWIXSECTION ALLOCATION

15、 MAP output attributes/section page origin length input sections-.text 0 0000e000 00000012 0000e000 00000012 LAB2B.obj(.text).data 0 0000e012 00000005 0000e012 00000005 LAB2B.obj(.data).vectors 0 0000e017 00000002 0000e017 00000002 VECTORS.obj(.vectors).bss 1 00000060 0000000a UNINITIALIZED 00000060

16、 0000000a LAB2B.obj(.bss)GLOBAL SYMBOLS:SORTED ALPHABETICALLY BY Nameaddress name-00000060 .bss0000e012 .data0000e000 .text00000060 _bss_ffffffff _cinit_0000e012 _data_0000e017 _edata_0000006a _end_0000e012 _etext_ffffffff _pinit_0000e000 _text_00000000 _lflagsUNDEFED _c_int000000e000 _mainffffffff

17、cinit0000e017 edata0000006a end0000e012 etextffffffff pinitGLOBAL SYMBOLS:SORTED BY Symbol Addressaddress name-00000000 _lflags00000060 _bss_00000060 .bss0000006a _end_0000006a end0000e000 .text0000e000 _text_0000e000 _main0000e012 .data0000e012 etext0000e012 _data_0000e012 _etext_0000e017 edata0000e017 _edata_ffffffff pinitffffffff _pinit_ffffffff _cinit_ffffffff cinitUNDEFED _c_int0019 symbols六、六、心得体会心得体会经过这次实验,我更加熟悉CCS 开发环境,CCS 下的 C 语言例程下的 FFT 算法,采用 C 语言完成代码的编写、编译、链接、下载和运行的方法。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com