(苏大电子信息学院)DSP 程序的调试和分析方法

更新时间:2023-06-07 15:04:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

苏大电子信息学院DXP实验报告

实验一 DSP 程序的调试和分析方法

第一部分:DSP CPU 基础

一、实验目的

1.了解TMS320C5400系列汇编语言程序的基本格式,以及编译、连接的基本过程

2.熟悉Code Composer Studio的使用

3.了解C5400中标志位对计算的影响,以及计算对标志位的影响

二、实验设备

1.集成开发环境CCS 2.实验代码cpu_basic.s54、cpu_basic.cmd和cpu_basic.gel

三、实验内容

1.基本操作 运行CCS,选择C54xx Simulator 建立一个新的项目,并加入文件cpu_basic.s54和cpu_basic.cmd 载入cpu_basic.gel 在Project→Option中加入适当的编译和连接的选项 Build整个项目,产生可执行代码(.out) File→Load Program,装载可执行代码,并运行。

2. 基本调试 设置断点 单步执行。

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地址存放程序是否存在(改变该处为只读)。

四、实验结果和提示

1. 与运算相关的标志位 SXM 当SXM置1时,数据读写按照符号扩展的方式,因此A=0xff ffff ff80 当SXM 置0时,数据读写为无符号扩展的方式,因此A=0x00 0000 ff80 OVM 当OVM置1时,数据运算的结果将按照32位饱和,因此A=0xff 8000 0000 当OVM 置0时,数据运算不饱和,因此B=0x00 fffe 0000

C16 双16位计算比较 FRCT 乘法移位比较

TC 比特测试比较 C 进位、借位和大小比较 OVA, OVB 溢出标志比较 SMUL(软件仿真器无法模拟该标志位,需用DSK开发板观察该位的影响) 乘法饱和

2. 与存储器配置相关的标志位 DROM ROM映射到数据空间 从View菜单的Graph中选择Time/Frequency即可生成一个时/频显示窗口,首先弹出 的是”Graph Property”对话框,将其中Start Address 改为0xfe00。正弦表的长度为0x0100 即256,Acquisition Buffer Size和Display Data size设为256,

(1) 若MC为0,DROM为1,page 设为data 或program,如图:

苏大电子信息学院DXP实验报告

图1-1 ROM中正弦表 说明片内ROM可访问,片内ROM映射到数据空间

(2) 若MC为0,DROM为0,page设为data,则无数据显示。说明片内ROM不映射到数 据空间

(3) 若MC为1,page设为program,无数据显示,说明片内ROM无法访问 OVLY 存储空间重叠 OVLY为1,片内RAM同时映射到程序和数据空间

第二部分 DSP 程序的调试和分析方法

一 实验目的

1. 熟悉 CCS 集成开发环境,掌握工程的建立、编译、链接等方法; 2. 掌握 DSP 程序

调试的基本方法; 3. 利用 DSP 实现 DFT 算法对离散信号进行频谱分析。

二 实验内容

1. 输入信号的模拟; 2. 输出信号的图形显示和分析;

3. 对 DSP 程序进行剖析。

三 实验原理

1. 输入信号的构造方法。 离散时间信号可以用若干个幅值不同的正弦信号叠加而成,单个正弦信号的离散时间表示方式为

其中 f 表示信号频率, fs表示采样频率。

2. 离散傅里叶变换公式。

离散傅里叶变换的目的是把信号由时域变换到频域,在频域分析信号信号特征,是数字信号处理领域常用的方法。

四 实验设备

1. PC 一台;

2. 2. TMS320VC5416 DSK 一套。

五 实验步骤

1. 选择 Project→New 命令,设置保存路径、工程名(如 DFT),建立一个工程。

苏大电子信息学院DXP实验报告

2. 选择 File→New→Source File 命令,建立源代码文件,编写 DFT 函数源代码。

3. 保存源文件到当前工程所在的文件夹,然后在工程窗口选择当前工程,调用右键菜单, 选择 Add Files to Project 命令,打开一个文件选择对话框,选择刚保存的源文件加入工 程中。

4. 选择 Project→Build Options 命令,打开 Build Options 对话框,在 Linker 选项卡的 Include Libraries (-l)项输入 rts.lib 选用运行时支持库,rts.lib 在编译时使用近调用(默认选项) 。 如果输入的是 rts_ext.lib,在编译时需要使用远调用,方法是打开 Build Options 对话框, 在 Compiler 选项卡的 Advanced 页选择使用远调用,即设置编译选项使用远调用(-mf), 如图所示。

5. 编写链接配置文件,可参照课本 3.4.4 节所示 CMD 文件,保存到当前工程所在的文件 夹,并加入工程中。

图 3.1 设置编译选项使用远调用(-mf) 6. 对当前工程进行编译、链接,生成可执行程序。

7. 选择 File→Load Program 命令,选择生成的.out 文件下载到开发平台中并运行。 8. 定义探测点,利用 File I/O 工具将准备好的数据文件输入到输入信号存储数组

(a) File Input 对话框 (b) Add Probe 对话框

9. 在 CCS 中利用图形分析工具显示输入信号、输出信号,并分析输出信号是否符合 DFT 算法输出。可以修改输入信号的图形分析类别为“FFT Magnitude” ,根据输入信号的频 谱图与输出信号比较,可以判断 DFT 算法编写是否正确。

苏大电子信息学院DXP实验报告

图 3.3 图像显示及其设置对话框

10. 选择 File→Data→Load/Save 命令,对输入信号数据输入模拟信号,并将输出信号写入 主机上的一个数据文件,然后刷新 CCS 中的图形显示窗口。注意,可以在第 3 章的实 验中对输入信号数组使用 File→Data→Save 命令,存储的数据文件作为本实验的输入数 据。

图 3.4 Data Load 对话框

11. 编写 GEL 文件(例如 dft.gel) ,使用 FILE 菜单的 Load GEL 命令,可以装载并启用选 择的 GEL 文件(例如 dft.gel),可以在 GEL 菜单中添加菜单项,如图 3.5 所示。利用 GEL 文件修改 DSP 程序中的全局变量以及模拟输入信号,然后刷新 CCS 中图形分析窗 口。

苏大电子信息学院DXP实验报告

图 3.5 加入 GEL 菜单的菜单项

12. 对 DFT 函数进行剖析,分析剖析结果。 需要从 Profile 菜单中选择 Start New Session,会出现测试窗口。该窗口有 4 个表单: Files 表单说明项目中每个文件的测试范围信息;Functions 表单一般用于统计 C 函数的 测试信息;Ranges 用于统计“测试区域”信息;Setup 表单用于建立“测试段”。设置测试 区域最方便的方法时在源文件中选中感兴趣的代码段,然后将其拖入 Ranges 表单即可。 运行程序,程序运行时间的数据在窗口中显现。Count 表示该段程序在运行停止之前所 运行过的次数,其他的各项均表示运行时间信息,以指令周期为单位。 注意:单句无法作Profile统计,只能用Clock来看执行所耗费的时钟周期。

13. 保存工作区。

第三部分:实际上机操作

图一 是我们进行DFT实验中载入sin函数之后的数据窗口从右上至下分别为:函数的输入窗口,函数的采样之后的窗口,函数进行DFT之后的结果。

实验部分 图一

如图二所示是MP/MC=0时的数据和程序映射关系,可以看到,在该情况下程序页的数据可以进入数据页。

反观图三所示,此时我们把状态MP/MC=1,当进行该设置之后便不能使程序页的数据进入数据页。

苏大电子信息学院DXP实验报告

实验部分 图二

实验部分 图三

本文来源:https://www.bwwdw.com/article/ech1.html

Top