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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

dsp实验1.docx

1、dsp实验1DSP程序的调试和分析方法1、实验目的1了解TMS320C5400系列汇编语言程序的基本格式,以及编译、连接的基本过程;2熟悉Code Composer Studio的使用;3了解C5400中标志位对计算的影响,以及计算对标志位的影响;4. 熟悉CCS 集成开发环境,掌握工程的建立、编译、链接等方法;5. 掌握DSP 程序调试的基本方法;6. 利用DSP 实现DFT 算法对离散信号进行频谱分析。二、实验设备1集成开发环境CCS;2实验代码;3.PC一台;4.实验开发板以及所需电源线和导线。三、实验原理1、DSP CPU基础实验与运算相关的标志位:SXM :当SXM置1时,数据读写按

2、照符号扩展的方式,因此A0xff ffff ff80 ;当SXM置0时,数据读写为无符号扩展的方式,因此A0x00 0000 ff80。OVM:当OVM置1时,数据运算的结果将按照32位饱和,因此A0xff 8000 0000 ;当OVM置0时,数据运算不饱和,因此B0x00 fffe 0000;C16:双16位计算比较;FRCT:乘法移位比较;TC:比特测试比较;C:进位、借位和大小比较;OVA, OVB:溢出标志比较;SMUL:(软件仿真器无法模拟该标志位,需用DSK开发板观察该位的影响) 乘法饱和。2、DSP程序的调试和分析方法输入信号的构造方法:离散时间信号可以用若干个幅值不同的正弦信

3、号叠加而成,单个正弦信号的离散时间表示方式为:,其中f 表示信号频率, s f 表示采样频率。离散傅里叶变换公式:离散傅里叶变换的目的是把信号由时域变换到频域,在频域分析信号信号特征,是数字信号处理领域常用的方法。4、实验内容1、DSP CPU基础(1)基本操作运行CCS,选择C54xx Simulator建立一个新的项目,并加入文件cpu_basic.s54和cpu_basic.cmd载入cpu_basic.gel在ProjectOption中加入适当的编译和连接的选项Build整个项目,产生可执行代码(.out)FileLoad Program,装载可执行代码,并运行。(2) 基本调试设置

4、断点单步执行(3) 练习观察并理解程序和数据空间安排测试SXM、OVM、C16、FRCT对计算结果的影响测试计算和逻辑运算对TC、C、OVA、OVB的影响(4) DSK仿真练习a) 测试SMUL标志对计算的影响b) 测试MP/MC、OVLY、DROM对计算结果的影响MP/MC=0,切换DROM的数值,观测0xfc00地址存放的A、U律数据是否存在MP/MC=0,OVLY=1, 观测0x1000地址存放程序是否存在(改变该处为只读)2、DSP程序的调试和分析方法(1)、输入信号的模拟;(2)、输出信号的图形显示和分析;(3)、对DSP 程序进行剖析。五、实验步骤1、DSP CPU基础实验将实验开

5、发板接到PC上,运行CCS,新建项目,并在保存目录下编写ccs_basic.s54和ccs_basic.cmd,并将其加入到当前工程中进行操作。根据要求,在ProjectOption中加入适当的编译和连接的选项,点击Bulid图标,编译整个项目,产生可执行代码(.out),编译无误后,FileLoad Program,装载可执行代码,并运行。View下拉菜单中,Graph-Time/Frequency,打开图形分析窗口在时域或频域显示信号,首先弹出的是”Graph Property”对话框,将其中Start Address 改为0xfe00。正弦表的长度为0x0100即256。Acquisit

6、ion Buffer Size和Display Data size设为256,点击确定后生成图形。改变MP/MC、OVLY、DROM等的值观察图形的变化并分析结果。2、DSP程序的调试和分析方法(1). 选择ProjectNew 命令,设置保存路径、工程名(如DFT),建立一个工程。(2). 选择FileNewSource File 命令,建立源代码文件,编写DFT 函数源代码。(3). 保存源文件到当前工程所在的文件夹,然后在工程窗口选择当前工程,调用右键菜单,选择Add Files to Project 命令,打开一个文件选择对话框,选择刚保存的源文件加入工程中。(4). 把CCS 安装目

7、录下的C5400cgtoolslibrts_ext.lib 文件加入工程,选择ProjectBuild Options 命令,打开Build Options 对话框,在Compiler 选项卡的Advanced 页选择使用远调用,即设置编译选项使用远调用(-mf)。(5). 编写链接配置文件,可参照课本3.4.4 节所示CMD 文件,保存到当前工程所在的文件夹,并加入工程中。(6). 根据需要调用Build Options 对话框,对工程的编译、链接选项进行相应的设置,特别注意在Compiler 选项卡的Advanced 中选择远调用(-mf)。(7). 对当前工程进行编译、链接,生成可执行程

8、序。(8). 选择FileLoad Program 命令,选择生成的.out 文件下载到开发平台中并运行。(9). 定义探测点,利用File I/O 工具将准备好的数据文件输入到输入信号存储数组。(10).在CCS 中利用图形分析工具显示输入信号、输出信号,并分析输出信号是否符合DFT算法输出。可以修改输入信号的图形分析类别为“FFT Magnitude”,根据输入信号的频谱图与输出信号比较,可以判断DFT 算法编写是否正确。(11). 选择FileDataLoad/Save 命令,对输入信号数据输入模拟信号,并将输出信号写入主机上的一个数据文件,然后刷新CCS 中的图形显示窗口。注意,可以在

9、第3 章的实验中对输入信号数组使用FileDataSave 命令,存储的数据文件作为本实验的输入数据。(12). 编写GEL 文件,利用GEL 文件修改DSP 程序中的全局变量以及模拟输入信号,然后刷新CCS 中图形分析窗口。(13). 对DFT 函数进行剖析,分析剖析结果。需要从Profile 菜单中选择Start New Session,会出现测试窗口。该窗口有4 个表单:Files 表单说明项目中每个文件的测试范围信息;Functions 表单一般用于统计C 函数的测试信息;Ranges 用于统计“测试区域”信息;Setup 表单用于建立“测试段”。设置测试区域最方便的方法时在源文件中选

10、中感兴趣的代码段,然后将其拖入Ranges 表单即可。运行程序,程序运行时间的数据在窗口中显现。Count 表示该段程序在运行停止之前所运行过的次数,其他的各项均表示运行时间信息,以指令周期为单位。注意:单句无法作Profile统计,只能用Clock来看执行所耗费的时钟周期。.保存工作区。6、实验结果及分析1、DSP CPU基础实验MP/MC=0时,实验图像为:说明片内ROM可访问,片内ROM映射到数据空间。若MC为0,DROM为0,page设为data,则无数据显示。说明片内ROM不映射到数据空间。MP/MC=1时,实验图形为:2、DSP程序的调试和分析方法输入信号:输出信号:输入信号频域分

11、析:附录(主要程序代码):1、DSP CPU基础实验源文件代码:;Target:; Be familar with the use of CCS (Code Composer Studio);*;An example to show how to write an assembly language source file; y=a1*x1+a2*x2 ;* ;- Const definitionSTACK_ADDR .set 0x0500 ;bottom of stack ;allocate data in .bss section .bss a,2 ;allocate 5 word for

12、 variates .bss x,2 .bss y,1 ;allocate data in .data section .datatable: ;data follows . .word 10,3 .word 8,6 .mmregs ;enable memory mapped registers .global main ;define global symbols;- .textmain: stm #STACK_ADDR, SP ;set stack stm #0x00a8, PMST ;relocate Interrupt Vector Table stm #0x0000, SWWSR ;

13、no software wait for all memory ;= stm #a, AR2 ;AR1 point to a stm #table, AR3 rpt #1 ;move 2 ai values mvdd *AR3+, *AR2+ ;from data memory into data memory stm #x, AR2 ;AR1 point to a rpt #1 ;move 2 xi values mvdd *AR3+, *AR2+ ;from data memory into data memory call SUM ;call function to do sum ;de

14、ad loop part to lock PC in a know area when program endsdead_loop: nop nop nop b dead_loop;=; y=a1*x1+a2*x2 SUM: stm #a, AR3 stm #x, AR4 rptz A, #1 mac *AR3+, *AR4+, A stl A, *(y) ret ;-;Interrupt Vector Table, for simplicity Only RESET interrupt is defined .sect vectorsint_RESET: b main ;when reset

15、, jump to main nop nop .space 124*16 ;no other interrupt used, keep them space;end of lab1.s54 2、DSP程序的调试和分析方法源文件代码:#include #include #include dft.h#define FILEIO /可以屏蔽dataIn函数中的赋值main() while(1) dataIn() ; /此处缺分号 processing(in); void dataIn()#ifndef FILEIO int i;for (i=0;iN;i+) /此处n没有定义,内容,应该是头文件宏定

16、义的Nini=(3.0*sin(2.0*pi*i*F1/FS)+sin(2.0*pi*i*F2/FS)*1024;#endifvoid DFT(int *p_in,int *p_out,int n) COMPLEX dft1; int i,j; float arg; for (i=0;in;i+) dft1.re=0; dft1.imag=0; for(j=0;jn;j+) arg=-2*pi*i*j/n; dft1.re += p_inj*cos(arg); dft1.imag += p_inj*sin(arg); p_outi=sqrt(dft1.re*dft1.re+dft1.imag*dft1.imag)/512; /此处缺掉一个,使括号不对应 void processing(int *input) int n=N, x; while(n-) x=*input*gain; *input+=x; DFT(in,out,N);

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

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