ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:180.02KB ,
资源ID:6313769      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6313769.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(西工大DSP大作业.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

西工大DSP大作业.docx

1、西工大DSP大作业试验1 基于CCS简单定点DSP程序一、 试验要求1、 自行安装CCS3.3版本, 配置和运行CCS2、 熟悉CCS开发环境, 访问读写DSP寄存器AC0-AC3, ARO-AR7, PC, T0-T3 3、 结合C5510存放器空间分配, 访问DSP内部RAM 4、 编写一个最简单定点DSP程序, 计算下面式子 y=0.1*1.2+35*20+15*1.65、 采取定点DSP进行计算, 确定每个操作数定点表示方法, 最终结果定点表示方法, 并验证结果6、 对编写程序进行编译、 链接、 运行、 断点实施、 单步抽 并给出map映射文件二、 试验原理DSP芯片定点运算-Q格式(

2、转) -09-03 15:47 DSP芯片定点运算 1数据溢出: 1溢出分类: 上溢(overflow): 下溢(underflow) 2溢出结果: Max Min Min Max unsigned char 0 255 signed char -128 127 unsigned int 0 65535 signed int -32768 32767 上溢在圆圈上按数据逆时针移动; 下溢在圆圈上顺时钟移动。 例: signed int : 32767+132768; -32768-132767 unsigned char: 255+10; 0-1255 3为了避免溢出发生, 通常在DSP中能够

3、设置溢出保护功效。当发生溢出时, 自动将结果设置为最大值或最小值。 2定点处理器对浮点数处理: 1 定义变量为浮点型(float, double), 用C语言抹平定点处理器和浮点处理器 区分, 不过程序代码庞大, 运算速度也慢。 2 放大若干倍表示小数。比如要表示精度为0.01变量, 放大100倍去运算, 运算完成后再转化。不过这个做法比较僵硬, 如要将上面变量重新定义成0.001精度, 又需要放大1000倍, 且要重新编写整个程序, 考虑溢出等问题。3定标法: Q格式: 经过假定小数点位于哪一位右侧, 从而确定小数精度。 Q0: 小数点在第0位后面, 即我们通常采取方法 Q15 小数点在第1

4、5位后面, 014位都是小数位。 转化公式: Q(int)(Fpow(2, q) F(float)(Qpow(2, q) 3 Q格式运算 1定点加减法: 须转换成相同Q格式才能加减 2定点乘法: 不一样Q格式数据相乘, 相当于Q值相加 3定点除法: 不一样Q格式数据相除, 相当于Q值相减 4定点左移: 左移相当于Q值增加 5 定点右移: 右移相当于Q降低 4Q格式应用格式 实际应用中, 浮点运算大都时候都是现有整数部分, 也有小数部分。所以要选择一个合适定标格式才能愈加好处理运算。通常见以下两种方法: 1使用时使用适中定标, 既能够表示一定整数复位也能够表示小数复位, 如 对于281232位系

5、统, 使用Q15格式, 可表示65536.065535.区间内数据。三、 试验步骤1.双击, 开启CCS仿真平台配着选项。选择C5410 Device Simulator。2.点击project菜单栏new选项, 新建一个LAB工程注意存放路径。3. 把下图中用到文件拷到工程文件目录文件路径下。4.在ccs平台中将用到程序导入到平台中, 点击projectadd file to project。选择多个文件时, 能够按住ctrl键。5将程序中start改为_main, INT_2改为_int_2。然后点击保留。源程序代码* example.asm y=0.1*x1.2+35*20+15*x1.

6、6 *.title “example.asm” ;为汇编源程序取名.mmregs ;定义存放器映象寄存器STACK .usect “STACK”,10h ;分配10个单元堆栈空间.bss a,4 ;为系数a分配4个单元空间.bss x,4 ;为变量x分配4个单元空间.bss y,1 ;为结果y 分配1个单元空间.def _c_int00 ;定义标号_c_int00 .data ;定义数据代码段table: .word 1,2,3,4 ;在标号table开始8个单元中 .word 8,6,4,2 ;为这8个单元赋初值.text ;定义文本代码段_c_int00 :STM #0,SWWSR ;软件

7、等候状态寄存器置0, 不设等候STM #STACK+10h,SP ;设置堆栈指针初值STM #a,AR1 ;AR1 指向 a地址 RPT #7 ;从程序存放器向数据存放器 MVPD table,*AR1+ ;反复传送 8个数据 CALL SUM ;调用 SUM 实现乘法累加和子程序end: B end ;循环等候SUM:STM #a,AR3 ;将系数a地址赋给AR3STM #x,AR4 ;将变量x地址赋给AR3RPTZ A,#3 ;将A清0, 并反复实施下条指令4次MAC *AR3+,*AR4+,A ;实施乘法并累加, 结果放在A中STL A,y ;将A低字内容送结果单元yRET ;结束子程序

8、 .end ;结束全部程序 Map文件* TMS320C55x COFF Linker PC Version 3.83 * Linked Mon May 31 11:03:33 OUTPUT FILE NAME: ENTRY POINT SYMBOL: _main address: 0000e000MEMORY CONFIGURATION name origin length used attr fill - - - - - -PAGE 0: EPROM 0000e000 00000100 0000001d RWIX vecs 0000ff80 00000004 00000000 RWIXPA

9、GE 1: SPRAM 00000060 00000020 0000000b RWIX DARAM 00000080 00000100 0000001a RWIXSECTION ALLOCATION MAP output attributes/section page origin length input sections- - - - -.text 0 0000e000 0000001d 0000e000 0000001d LAB4A.obj (.text).bss 1 00000060 0000000b UNINITIALIZED四、 心得体会 经过这次试验, 我愈加熟悉CCS开发环境,

10、 访问读写DSP寄存器AC0-AC3, ARO-AR7, PC, T0-T3 。 试验2 CCS下FFT算法程序设计一、试验目CCS下FFT算法程序设计二、试验要求提供一个CCS下C语言例程, 在CCS下, 仿照例程, 任选雨中FIR滤波、 IIR滤波、 FFT算法, 采取C语言完成代码编写、 编译、 链接、 下载和运行, 输入数据, 滤波器系数任选, 并给出运算结果。1)目2)工程文件组成, 并附图3)打印源代码4)打印编译成功信息5)打印map文件6)程序下载截图过程三)运行结果三、试验步骤1、 在ccs平台中将用到程序导入到平台中, 点击projectadd file to projec

11、t。选择多个文件时, 能够按住ctrl键。2将全部程序段中start改为_main,将fft.Asm中K_FFT_SIZE .set 32 ;NK_LOGN .set 5 ;LOG(N)改为K_FFT_SIZE .set 64 ;NK_LOGN .set 6 ;LOG(N)3、 对源文件进行编译(注意先对每个.asm文件优异行编译, 以预防程序有错误), 没有错误时进行链接。4点击菜单fileload program。装载.out文件四、试验结果五、源程序代码* 函数原型: void FFT(struct compx *xin,int N) 函数功效: 对输入复数组进行快速傅里叶变换(FFT)

12、 输入参数: *xin复数结构体组首地址指针, struct型 */ void FFT(struct compx *xin) int f,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, 比

13、较次高位, 依次类推, 逐一比较, 直到某个位为0 j=j+k; /把0改为1 int le,lei,ip; /FFT运算核, 使用蝶形运算完成FFT运算 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/l

14、ei); /w为系数商, 即目前系数与前一个系数商w.imag=-sin(PI/lei); for(j=0;j=lei-1;j+) /控制计算不一样种蝶形结, 即计算系数不一样蝶形结 for(i=j;i Linked Sat May 30 23:48:27 OUTPUT FILE NAME: ENTRY POINT SYMBOL: _main address: 0000e000MEMORY CONFIGURATION name origin length used attr fill - - - - - -PAGE 0: EPROM 0000e000 00000100 00000019 RWI

15、XPAGE 1: SPRAM 00000060 00000020 0000000a RWIX DARAM 00000080 00000100 00000000 RWIXSECTION ALLOCATION 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).ve

16、ctors 0 0000e017 00000002 0000e017 00000002 VECTORS.obj (.vectors).bss 1 00000060 0000000a UNINITIALIZED 00000060 0000000a LAB2B.obj (.bss)GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name address name- -00000060 .bss0000e012 .data0000e000 .text00000060 _bss_ffffffff _cinit_0000e012 _data_0000e017 _edat

17、a_0000006a _end_0000e012 _etext_ffffffff _pinit_0000e000 _text_00000000 _lflagsUNDEFED _c_int000000e000 _mainffffffff cinit0000e017 edata0000006a end0000e012 etextffffffff pinitGLOBAL SYMBOLS: SORTED BY Symbol Address address 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语言完成代码编写、 编译、 链接、 下载和运行方法。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1