DSP技术及应用实验指导书-2015版.doc_第1页
DSP技术及应用实验指导书-2015版.doc_第2页
DSP技术及应用实验指导书-2015版.doc_第3页
DSP技术及应用实验指导书-2015版.doc_第4页
DSP技术及应用实验指导书-2015版.doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DSP 技术及应用实验 1 目录目录 实验系统的组成与使用实验系统的组成与使用.1 实验一实验一CCS 的基本操作使用的基本操作使用.4 实验二实验二 CCS 中程序的基本调试方法中程序的基本调试方法.7 实验三实验三 用用 CCS 读取数据和显示图形读取数据和显示图形.10 实验四实验四 汇编语言程序设计与调试汇编语言程序设计与调试.17 实验五实验五 用用 SIMULATOR 调试调试 FIR 数字滤波器数字滤波器.23 实验六实验六 IIR 数字滤波器程序编写与调试数字滤波器程序编写与调试.29 实验七实验七 中断及分支实验中断及分支实验.33 实验八实验八 数据空间和数据空间和 I/O

2、 空间的扩展与操作实验空间的扩展与操作实验.36 实验九实验九 I/O 口使用及数字温度传感器实验口使用及数字温度传感器实验.40 实验十实验十 电子钟电子钟.42 实验十一实验十一 语音录放实验语音录放实验.44 DSP 技术及应用实验 1 实验系统的组成与使用实验系统的组成与使用 HD8680 型数字信号处理和通信应用实验装置是实验系统的主体,担负着实现数字 信号处理和数字通信的各项任务。其中又分成软件辅助部分和硬件平台部分。 下面简要地介绍实验系统的使用方法,供后续实验中查阅使用。 HD8682 型数字信号处理和通信应用实验装置 一、一、实验装置单片机主机控制菜单使用说明实验装置单片机主

3、机控制菜单使用说明 1实验装置加电后液晶显示器出现主菜单显示 “欢迎使用现代数字信号处理实验平台” 2按“开始开始”键后显示菜单 1:DSP 芯片原理 2:DSP 芯片应用 3:数字信号处理 4:信号与系统 3按“ ”键箭头下移可选择 1、2、3、4 类实验,按“ ”键箭头上移可重新选 择。确定选择某类实验后按“确定确定”键。 4第 1 类实验“1:DSP 芯片原理”的下一级菜单如下 1:DSP 芯片原理 01 中断实验 02 定时器实验 03 串口实验 04I/O 实验 05DSP 初始化 06 数据块传送 第 2 类实验“2:DSP 芯片应用”的下一级菜单如下 1:DSP 芯片应用 01

4、时钟显示 02 数字温度计 03 语音录放实验 04 音频信号处理 05A/D 转换实验 06D/A 转换实验 07 信号产生实验 08AD50 初始化 09 数字电话 第 3 类实验“3:数字信号处理”的下一级菜单如下 内蒙古科技大学通信实验室 2 3:数字信号处理 01 频谱分析 02IIR 滤波器 03FIR 滤波器 第 4 类实验“4:信号与系统”的下一级菜单如下 4:信号与系统 01 频率合成 确定某个实验后按“确定确定”键,有些实验还要进行下一步参数选择,如选择了 “3:数字信号处理”下的“03 FIR 滤波器”后又会显示下一级菜单: 03 FIR 滤波器 1:低通 2:高通 3:

5、带通 4:带阻 在选择了“1:低通”后,再按“确定确定”键,才开始运行程序。 若要重新选择其它实验,需返回上一级菜单。按“返回返回”键可返回上一级菜单。 在单片机主机的扩展存储器 EPRAM62256 中存储了五个实验的执行程序,这四个 实验分别为:时钟显示、数字温度计、信号产生实验、时钟显示、数字温度计、信号产生实验、FIR 低通滤波器和数字电话低通滤波器和数字电话。选 择这几个实验后按“确定确定”键,程序开始运行,可观察到实验结果,该实验方法即为实 验讲义中的实验方法一。其它实验需 PC 主机下载和控制运行,该实验方法即为实验讲 义中的实验方法二。所有实验都可用 PC 主机串口接仿真器串口

6、,仿真器 JTAG 插口接 在实验箱的 J103 插口,该实验方法即为实验讲义中的实验方法三。 5当操作有误或实验系统运行有误,按“复位复位”键,系统复位并返回主菜单: “欢迎使用现代数字信号处理实验平台” 6具体每个实验的操作选择参考相应的实验内容。 二、实验装置连接仿真器使用说明二、实验装置连接仿真器使用说明 实验装置与仿真器的连接头为 J103。用 PC 主机串口接仿真器串口,仿真器 JTAG 插口接在实验箱的 J103 插口,连接后需经教师检查通过后再给实验装置加电。用仿真 器调试 DSP 应用程序的内容,为实验讲义中的实验方法三。 四、硬件使用说明四、硬件使用说明 1c5402 的主

7、时钟 CLKOUT 与外部晶体振荡器频率(在本实验系统中外部晶体 振荡器的频率为 16.384MHz)之间的关系由 c5402 的三个引脚 CLKMD1(K103)、 CLKMD2(K102)和 CLKMD3(K101)的电平值决定,具体关系如下表(表0-1): 表 0-1 CLKMD1(K101)CLKMD2(K102 ) CLKMD3(K103 ) CLOCK MODE DSP 技术及应用实验 3 0 00PLL*15 1 00PLL*10 0 10PLL*5 0 01PLL*2 0 11PLL*1 1 111/2 1 011/4 在本实验系统中,使用了二种主时钟频率,在做“数字信号处理

8、”和“信号 与系统”实验时主时钟频率为 81.925MHZ(CLKMD1=0、CLKMD2=1 和 CLKMD3=0),在 做 DSP 原理与应用实验时的主时钟频率为16.384MHZ(CLKMD1=0、CLKMD2=1 和 CLKMD3=1)。本实验系统只用 16.384MHZ 和 81.925MHZ 二种频率,所以注意 K103 跳线器的位置决定了本实验系统的工作频率。 2在本实验系统中,C5402 的串行外设有:语音接口芯片语音接口芯片 AD50、串行串行 A/DA/D 转换芯转换芯 片片 TLV1572、串行串行 D/AD/A 转换芯片转换芯片 TLC5617、高速串行接口的高速串行接

9、口的 8 8 位位 LEDLED 控制驱动器控制驱动器 MAX7219、单线数字温度传感器单线数字温度传感器 DS18B20、PCM 编解码芯片编解码芯片 TP3067。它们分别用缓冲 串口 0(McBSP0)和缓冲串口 1(McBSP1)控制驱动,其中: 1) 、缓冲串口 0 使用在: 语音处理器 AD50,C5402 串口为被动,即帧脉冲和移位时钟由 AD50 产生。 D/A 转换器 TLC5617,C5402 作为主动,且用 SPI 方式。 PCM 数据编译器 TP3067,C5402 串口用时分复用方式 DS18B20 温度数据采集,此时串口被使能为通用 I/O 口,数据收发用时钟线。

10、 2) 、缓冲串口 1 使用在: A/D 转换器 TLV1572,C5402 串口作为主动。 LED 显示驱动器 MAX7129,C5402 串口作为主动,作为 SPI 方式用。 具体内容见实验 21-实验 38。 1 在调试和执行程序过程中,实验装置工作出现错误时,注意按实验装置键盘上 的“复位复位”键,可以使实验系统复位,重新开始工作。 内蒙古科技大学通信实验室 4 图 8-11-1 工程视图 实验一实验一CCS 的基本操作使用的基本操作使用 一、实验目的一、实验目的 了解采用 CCS 创建、生成 DSP 应用程序的几个基本过程。 二、实验内容二、实验内容 创建一个新工程创建一个新工程 (

11、1)在 CCS 的安装目录(假设安装目录为 C:ti)的 myprojects 子目录下创建一个 hello1 目录。 (2)将 c:tic5400tutorialhello1 目录下所有文件复制到新建的 hello1 目录中。 (3)从程序组或桌面上运行 Code Composer Studio。如果在 CCS 设置程序中安装并 设置了多个驱动程序,则运行 CCS 将启动 Parallel Debug Manager 的运行。此时先启 动 Simulator 的运行。如果有硬件仿真器及其驱动程 序,也可直接启动 Emulator 的运行。 (4)在 Project 菜单中选择 New 项,将

12、弹出 Save New Project As 窗口。 (5)选择新建的目录并打开,将 Project 存为 Myhello,CCS 将创建一个名为 myhello.pjt 的工程, 此文件保存了工程的设置信息及工程中文件引用情况。 将文件添加到工程中将文件添加到工程中 (1)从 Project 菜单中选取 Add Files to Project 命令,选择 hello.c 文件,双击打开按钮将 hello.c 添加到工程中。 (2)将 Vector.asm 添加到工程中(方法同上)。 Vector.asm 中包含有将 RESET 中断指向 C 程序入口 c_int00 的汇编指令。 (3)将

13、 hello.cmd 添加入工程文件中,此文件作用是将块(Sections)映射到存储器 中。 (4)将 c:tic5400cgtoolslib 中的 rts.lib 加入到工程文件中,此文件为采用 C 开发 DSP 应用程序的运行支持库文件。 (5)在工程视图中双击所有“+”号,即可看到整个工程的结构,如图 8-11-1 所示。 DSP 技术及应用实验 5 如果没有看到工程视图,则需在 View 菜单下选择 Project,打开工程视图。还应双击工 程视图左下角的 File 图标以确保能观察到图 8-11-1 所示的工程结构。 (6)在以上的操作中,没有将头文件加入到工程中,CCS 将在 B

14、uild 时自动查找所需 的头文件。当 Build 完成时,可在 Project 视图中观察到生成程序所需的头文件。 如果需要从工程中去除一个文件,可将该文件选中,按 Delete 键即可。也可单击 右键,在弹出菜单中选择 Remove 将该文件从工程中移走。 当 Build 一个程序时,CCS 会自动依次从以下路径中查找工程需要的文件。 包括源文件的目录。 Project-Options 下 Complier 和 Assembler 选项的 Include Search Path 域中 定义的路径。 C54x_C_DIR(C 编译器)和 C54x_A_DIR(汇编器)环境变量中声明的路径。

15、C54x_C_DIR 指向的路径中包括含有 rts.lib 文件的目录。 查看代码查看代码 双击 Project 视图中的 hello.c,将在右边的代码窗口中看到文件源代码。可以在 Option 菜单中选择字体大小。 从 C 代码可以看出,如果 FILEIO 未定义,此程序将只能在屏幕上显示“hello world!”信息。如果 FILEIO 已定义,程序还将提示输入一个字符串并将其存入文件, 然后从文件中读出该字符串并显示在屏幕上。 生成和运行程序生成和运行程序 (1)执行菜单命令 Project-Rebuild All 或在 Project 工具栏上双击 Rebuild All 图标,对

16、工程重新编译、汇编和链接,Output 窗口将显示进行汇编、编译和链接的相关 信息。 监视窗口 工程观察窗口 反汇编窗口 图 8-11-2 在监视窗口显示程序运行结果 (2)执行菜单命令 File-Load Program,选择 myhello.out 并打开,将 Build 生成 内蒙古科技大学通信实验室 6 的程序加载到 DSP 中。CCS 将自动打开一个反汇编窗口,显示加载程序的反汇编指令, 同时主窗口下方的 Ouput 窗口将显示 stdout 输出,如图 8-11-2 所示。 (3)在反汇编窗口中单击汇编指令,按 F1 键将切换至在线帮助窗口,显示光标所在 行的关键词的帮助信息。例如

17、,将光标放在 c_int00 行下的 STM 处,按 F1 键将显示汇 编指令的帮助信息。 (4)执行菜单命令 Option-Dis-Assembly Style Options,在弹出窗口中选择不同 的 STM 选项,查看反汇编窗口的变化。例如在 Dis-Assembly Style 下选择 Algebraic 并确 认,则反汇编窗口将以代数指令形式显示反汇编代码。 (5)执行菜单命令 Debug-Run 或在 Debug 工具栏上单击 Run 按钮。由于运行支持库 (ras.lib)中包括有 C 的输出 puts()函数,因此可在监视窗口看到“hello world!”信 息, 如图 8-

18、11-2 所示。 三、实验设备三、实验设备 微机主机一台 (已安装 CCS C5000 软件包) 四、思考题四、思考题 如何创建一个 CCS 工程,有哪些文件是创建新工程时必须加入的? CCS 将完成哪些基本任务? DSP 技术及应用实验 7 实验二实验二 CCS 中程序的基本调试方法中程序的基本调试方法 一、实验目的一、实验目的 建立 Build 参数的设置、Watch 窗口、断点(Breakpoint)的基本概念,了解 CCS 中程 序的基本调试方法。 二、实验内容二、实验内容 打开一个已经存在的工程打开一个已经存在的工程 对于一个已经存在的工程,在 Project 菜单中选择 Open

19、项,根据提示输入文件名。 例如:选定 C:timyprojectshello1 目录下的 myhello.pjt 工程,并点击“打开” ,一 个已经存在的工程将被加入到当前 CCS 窗口。 执行菜单命令 File-Load Program,选择 myhello.out 并打开,将 Build 生成的程 序加载到 DSP 中。 更改更改 BuildBuild 选项并更正语法错误选项并更正语法错误 由于在 C:timyprojectshello1 目录下的 myhello.pjt 工程中,程序中 FILEIO 没 有定义,因此在编译时将忽略程序中的部分代码,这样链接生成的 DSP 程序中也不包括

20、这部分代码。下面通过更改程序选项来定义 FILEIO,从而将这部分代码生成到执行程序 中,并更正源代码中存在的语法错误。 (1)执行菜单命令 Project-Options,弹出 Build Options 窗口。 图 8-12-1 在 Build Options 下定义 FILEIO (2)单击 Compiler 栏,在 Category 域选择 Symbols,然后在右侧的 Define Symbols 域中键入 FILEIO。此时将在编译参数栏中看到-dFILEIO,如图 8-12-1 所示。在定义 FILEIO 之后,C 编译器将对所有的源代码进行编译。 图 8-12-2 编译错误提示

21、 内蒙古科技大学通信实验室 8 (3)单击 OK 按钮保存选项设置结果。 (4)单击 Project 工具栏的 Rebuild All 按钮重新汇编、编译和链接。 (5)此时 output 窗口提示源代码中存在语法错误,错误出现在第 53 行(如图 8-12-2 所示)。在该行后加上分号后存盘,再单击 Project 工具栏的 Build 图标将修改后的文 件重新编译并链接生成 DSP 程序。 使用断点和使用断点和 WatchWatch 窗口窗口 (1)执行菜单命令 File-Reload Program,重新加载程序。 (2)在工程视图中双击 hello.c,打开源文件编辑窗口,将光标放在行

22、 fprintf (fptr,%s,scanStr)上,并按 F9 键设置断点。 (3)执行菜单命令 View-Watch Window,将出现 Watch 窗口。程序运行时 Watch 窗 口将显示要查看的变量值。在 Watch 窗口单击右键,弹出内容相关菜单(Context Sensitive Menu),在菜单中选择 Insert New Expression。 (4)在弹出窗口中写入*scanStr,Watch 窗口中将出现*scanStr 的值(如图 8-12-3 所示)。由于此时程序不处于运行状态,因此显示结果为“未知标志符”(如图 8-12-4 所示)。 图 8-12-3 在 W

23、atch 窗口添加需观察的变量 图 8-12-4 Watch 窗口的变量显示 (5)按 F5 键运行程序,并在提示输入时写入 goodbye,将在 Watch 窗口中看到 *scanStr 的值为 goodbye。 (6)可按 F1O(Step Over),F8(Step Into),Shift+F7(Step Out),Ctrl+F10(Run to Cursor)等键进行其他方式的调试。 图 8-12-5 Watch 窗口的结构体显示 DSP 技术及应用实验 9 使用使用 WatchWatch 窗口观察结构体窗口观察结构体 仿照上一节的方法,在 Watch 窗口中加入 str 结构体变量。

24、可以看到在 str 的左边 有一个“+”标志,表明 str 是一个结构体。双击“+”后将看到 str 结构体中包含的元 素,如图 8-12-5 所示,双击每个元素可以更改其值大小。str 声明为 PARMS 结构体,在 hello.h 中定义。其中 Link 为一个指向结构体的指针,其地址值每次显示可能不同。双 击 Link 左边的“+”号可以发现其无穷嵌套的特点。 在 Watch 窗口中单击右键,在弹出菜单中还可选择:移去一个表达式、隐藏 Watch 窗口等。在进行以后的步骤之前,执行菜单命令 Debug-Breakpoints,在 Breakpoints 栏单击 Delete All 按钮

25、将所有断点去掉。 三、实验设备三、实验设备 微机主机一台 (已安装 CCS C5000 软件包) 四、思考题四、思考题 如何使用 CCS 在程序中设立断点,进行调试? 实验三实验三 用用 CCS 读取数据和显示图形读取数据和显示图形 一、实验目的一、实验目的 了解创建和测试一个简单信号处理算法的过程。 内蒙古科技大学通信实验室 10 学习使用 CCS 的探测点(Probe Point)、图表(Graph)、动画(Animate)和通用扩 展语言(GEL)文件。 二、实验内容二、实验内容 打开并检查一个工程打开并检查一个工程 (1)在 c:timyprojects 目录下创建一个名为 volum

26、e1 的目录。 (2)将所有 c:tic5400tutorialvolume1 目录下的文件复制到新建目录中。 图 8-13-1 定位运行支持库 rts.lib (3)运行 Code Composer Studio。 (4)执行 Project-open,打开 Volume.pjt 文件。 (5)如图 8-13-1 所示,CCS 将出现一个对话框, 提示运行支持库文件 rts.lib 没有找到。 这是因为工程目录已移动。按 Browse 按钮, 在 c:tic5400cgtoolslib 目录中选取 rts.lib 并确认,即可定位此文件。 (6)在工程视图中将所有的“+”项展开(如图 8-1

27、3-2 所示),可以看到此工程包括以下文件。 VOLUME.C:C 主程序。 volume.h:头文件。 LOAD.ASM:一个简单的汇编循环程序,被 C 程序调用。调用时带有一个参数(argument),执 行此程序共需约 1000argument 个指令周期。 VECTORS.ASM:在 DSP 中断向量表中定义了 一个复位入口点。 VOLUME.CMD:命令文件,将段映射到存储器 中。 rts.1ib:运行支持库,提供目标板上 DSP 的运行支持。 查看代码查看代码 在工程视图中双击 VOLUME.C 以观察源代码。 从程序可以看出: (1)主函数显示一条提示消息后,进入一个无限循环,不

28、断调用 dataIO 和 图 8-13-2 volume 工程视图 DSP 技术及应用实验 11 processing 两个函数。 (2)processing 函数将输入 buffer 中的数与增益相乘,并将结果送给输出 buffer,它还调用汇编 load 例程,根据传给例程的参数 processingLoad 的值计算指令 周期的时间。 (3)datalO 函数不执行任何实质性操作。它没有使用 C 代码执行 I/O 操作,而是通 过 CCS 中的 Probe Point 工具,从 PC 机文件中读取数据到 inp_buffer 中,作为 processing 函数的输入参数。 添加添加 P

29、robeProbe PointPoint 从从 PCPC 文件中读取数据文件中读取数据 Probe Point 是开发算法的一个有用工具,以下介绍如何使用 Probe Point 从 PC 机 文件中存取数据。使用方法如下: (1)将 PC 机文件中数据传送到目标板上的 buffer,供算法使用; (2)将目标板上 buffer 中的输出数据传送到 PC 机文件中以供分析; (3)更新一个窗口,如数据绘出的 Graph 窗口。 Probe Point 与 Breakpoints 都会中断程序的运行,但 Probe Point 与 Breakpoints 在以下几方面不同。 (1)Probe P

30、oint 只是暂时中断程序运行,当程序执行到 Probe Point 时会更新与之 相连接的窗口,然后自动继续执行程序。 (2)Breakpoints 中断程序之后,将更新所有打开的窗口,且只能用人工干预的方法 恢复程序运行。 (3)Probe Point 可与 FILEIO 配合,在目标板与 PC 文件之间传送数据, Breakpoints 则无此功能。 下面使用 Probe Point 将 PC 机上的文件送往目标板作为测试数据,同时使用断点 以便在到达 Probe Point 时自动更新所有打开的窗口,这些窗口包括输入输出数据的图 表。 (1)双击 Project 工具栏上的 Rebui

31、ld All 图标,重新生成程序。 (2)执行菜单命令 File-Load Program,选择 Volume.out 并打开。 (3)在工程视图中双击 Volume.c 以在右边的编辑窗口显示源代码。 (4)将光标放在主函数中的 dataIO( )那一行上。 (5)单击图标,添加 Probe Point。 (6)执行菜单命令 File-File I/O,出现 File I/0 对话框,在对话框中选择输入/ 输出文件。 图 8-13-3 FILE I/O 控制窗口 (7)单击 File Input 栏,再单击 Add File 按钮。 (8)选择 sine.dat 文件,此文件与 VOLUME

32、.C 文件在同一目录中。 内蒙古科技大学通信实验室 12 (9)单击 Open 按钮,将文件添加到 File I/0 列表中。此时将出现一个控制窗口, 如图 8-13-3 所示。可以在运行程序时使用这个窗口来控制数据文件的开始、停止、前 进、后退等操作。 (10)在 File I/O 对话框中,在 Address 域填入 inp_buffer,在 Length 域填入 100,同时 Wrap Around 框选中(如图 8-13-4 所示)。这几部分值的含义如下。 图 8-13-4 File I/O 属性 Address 域指示的是从文件中读取的数据将要存放的地址。inp_buffer 是在

33、VOLUME.C 中定义的整型数组,其长度为 BUFFSIZE。 图 8-13-5 输入数据文件与 PC 文件相关联 Length 域指示的是每次到达 Probe Point 时从数据文件中读取多少个样点。这里 取值为 100 是因为 BUFFSIZE=100,即每次取 100 个样值存放在输入缓冲中。如果 Length 超过 100 则可能导致数据丢失。 选中 Wrap Around 表明读取数据的循环特性,每次读至文件结尾处将自动从文件 头开始重新读取数据。这样将从数据文件中读取一个连续(周期性)的数据流。 (11)单击 File I/O 对话框中的 Add Probepoint 按钮,将

34、出现 Break/Probe/Profile Points 对话框,选中 Probe Points 栏。 (12)在 Probe Point 列表中,高亮显示写有“VOLUME.C line 53-No Connection”行。表明第 53 行已设置 Probe Point,但还没有与 PC 文件相关联。 DSP 技术及应用实验 13 (13)在 Connect 域,单击向下箭头并从列表中选 sine.dat。 (14)单击 Replace 按钮,Probe Point 列表指示 Probe Point 已与 sine.dat 文件相 关联。 (15)单击 OK 按钮,File I/O 对话

35、框指 示文件连至一个 Probe Point。 (16)单击 OK 按钮,关闭 File I/O 对话 框。 显示图形显示图形 如果此时运行程序,将观察不到任何程 序运行结果。当然也可以设置 Watch 窗口显 示 inp_buffer 和 out_buffer 的值,但所要 观察的变量实在太多,而且显示的只是枯燥 的数字信息,因此与图形显示相比,界面很 不友好,也不直观。 CCS 提供很多方法将程序产生的数据画 图显示,包括时域/频域波形显示,星座图、 眼图及图像显示。下面使用频域/时域波形显示功能观察一个时域波形。 (1)执行菜单命令 View-Graph-Time/Frequency,弹

36、出 Graph Property 对话框。 (2)如图 8-13-6 所示,在 Graph Property 对话框中,更改图形的标题、起始地址、 采集缓冲区的大小、显示数据大小、DSP 数据类型、自动伸缩属性及最大 Y 值。 (3)单击 OK 按钮,将出现一个显示 inp_buffr 波形的图形窗口。 (4)在图形窗口中单击右键,从弹出菜单中选 Clear Display,清除已有显示波形。 (5)再次执行菜单命令 View-Graph-Time /Frequency。 (6)这次将 Graph Title 改为 output buffer,开始地址栏改为 out_buffer。其他 设置不

37、变。 (7)单击 OK 按钮,出现一个显示 out_buffer 波形的图形窗口,同样单击右键从弹 出菜单中选 Clear Display,清除已有显示波形。 程序和图形的动画显示程序和图形的动画显示 至此,我们已设置一个 Probe Point。它将临时中断程序运行,将 PC 机上数据传给 目标板,然后继续执行程序。然而 Probe Point 将不会更新图形显示。在这一小节里, 我们将创建一个断点,使图形窗口自动更新。使用 Animate 命令,使程序到达断点并更 新窗口后能自动继续执行。 (1)在 Volume.c 窗口,将光标放在调用 dataIO 行上。 (2)在 Project 工

38、具栏上单击 Toggle Breakpoint 图标,此时该行有两种颜色显 示,表明该行上同时设有一个断点和一个 Probe Point。将断点和 Probe Point 设在同 一行上可以使程在只中断一次的情况下执行两个操作:传输数据和更新图形显示。 图 8-13-6 更改箭头指示的图形属性 内蒙古科技大学通信实验室 14 (3)重新组织窗口以便能同时看到两个图形窗口。 (4)在 Debug 工具栏单击 Animate 按钮或按 F12 键。此命令将运行程序,碰到断点 后临时中断程序运行,更新窗口显示,然后继续执行程序。与 Run 不同的是,Animate 会继续执行程序直到碰到下一个断点。

39、只有人为干预时,程序才会真正停止运行。可将 Animate 命令理解为一个“运行一中断一继续”的操作。 (5)每次碰到 Probe Point 时,CCS 将从 sine.dat 文件中读取 100 个样值,并将它 写至输入缓冲 inp_buffr。由于 sine.dat 文件保存的是 40 个采样值的正弦波形数据, 因此每个图包括 2.5 个 sine 周期波形,如图 8-13-7 所示。 图 8-13-7 gain=l 时的输入输出图形显示 从图 8-13-7 可以看出,input buffer 与 output buffer 的波形都是反相的。这是 因为 input buffer 中包含

40、的数据是从 sine.dat 读来的,而 output buffer 的数据则是 处理函数处理的最后一组值。使用图 8-13-3 所示的 FileI/O 控制窗口可以控制数据文 件的开始、停止、前进、后退等操作。在停止状态下,input buffer 与 output buffer 的波形应完全一致。 当使用 Probe Point 时,将不能满足程序实时调试的要求。如需要实时分析,则要 使用 RTDX 和 DSPBIOS 工具。 *调节增益调节增益 本程序将输入缓冲的数据与增益相乘后送至输出缓冲中: output+=input+*gain; 增益被初始化为 MINGAIN,在 volume.

41、h 中定义为 1。为改变输出值,需改变增益, 方法之一是使用观察(Watch)功能。 图 8-13-8 变量设置 (1)执行菜单命令 View-Watch。 (2)在 Watch 窗口单击右键,选择 Insert New Expression。 (3)键入 gain 作为要观察的表达式,单击 OK 按钮。 (4)如程序已中止运行,单击 Animate 按钮重新运行程序。 DSP 技术及应用实验 15 图8-13-10 增益调 节 (5)在 Watch 窗口双击 gain。 (6)在编辑变量窗口(如图 8-13-8)将 gain 值改为 5,单击 OK 按钮。 (7)注意到输出缓冲图中的幅度值已

42、增大为原来的 5 倍,如图 8-13-9 所示。 图 8-13-9 gain=5 时的输入/输出图形显示 *使用使用 GELGEL 文件文件 CCS 提供另外一种改变变量值的方法,就是使用 GEL(通用扩展语言),创建一个小 窗口以改变变量值。 (1)执行菜单命令 File-Load GEL,选 Volume.gel 并单击 Open 视图打开。 (2)执行菜单命令 GEL-Application Control-Gain,此 菜单只有在第一步进行后才会出现。此时将出现一个增益调节 窗口,如图 8-13-10 所示。 (3)如已中断程序运行,单击 Animate 按钮。注意 Gain 滑 动条

43、的初值并不代表 Gain 的值,只有在调节滑动条后 Gain 的 值才会真正有效。 (4)在 Gain 窗口中,用滑动条改变 Gain 的值。output buffer 窗口的幅度值会随其变化而变化,同时 Watch 窗口中的 相应值也会跟着变化。 (5)单击 Halt 按钮,中止程序运行。 (6)在工程视图中双击 Volume.gel,可看到其文件内容如下。 menuitem Application Control 内蒙古科技大学通信实验室 16 dialog Load(loadParm Load) processingLoad = loadParm; slider Gain(0, 10 ,

44、1, 1, gainParm) gain = gainParm; Gain 函数定义了一个最小值为 0,最大值为 10,步长为 1 的滑动条,当移动滑动条 时,Gain 变量的值随滑动条(gainParm)的值改变。 释放占用的资源释放占用的资源 执行以下操作以释放被上述任务占用的资源。 关闭 Load 和 Gain Controls,sine.dat 控制窗口和时间/频率图。 File-File I/O,将 sine.dat 去除掉。 关闭 Profile Statistics 窗口。 Debug-Break points,选 Delete All,去除所有断点。 Debug-Probe p

45、oints,选 Delete All,去除所有探测点。 关闭所有窗口,Proiect-Close,关闭本工程。 在工程视图中 volume.gel 上单击右键并选择 Remove 移去此 GEL 文件。 去除 Watch 窗口中所有表达式并隐藏 Watch 窗口。 三、实验设备三、实验设备 微机主机一台 (已安装 CCS C5000 软件包) 内蒙古科技大学通信实验室 17 实验四实验四 汇编语言程序设计与调试汇编语言程序设计与调试 1定点小数乘法运算 一、实验目的一、实验目的 了解 DSP 定点运算中小数乘法的处理方法。 掌握汇编源程序的建立、汇编、链接过程,练习使用 CCS 进行程序调试的

46、方法。 二、实验原理二、实验原理 小数运算小数运算 两个 16 位整数相乘,乘积总是“向左增长” 。这就意味着多次相乘后乘积将会很快 超出定点器件的数据范围。而且要将 32 位乘积保存到数据存储器,就要开销 2 个机器 周期以及 2 个字的程序和 RAM 单元。更坏的是,由于乘法器都是 16 位相乘,因此很难 在后续的递推运算中,将 32 位乘积作为乘法器的输人。 然而,小数相乘,乘积总是“向右增长” 。这就意味着超出定点器件数据范围的将 是不太感兴趣的部分。在小数乘法情况下,既可以存储 32 位乘积,也可以存储高 16 位 乘积,这就允许用较少的资源保存结果,也可以用于递推运算。这就是为什么

47、定点 DSP 芯片都采用小数乘法的原因。 小数的表示方法: C54x 采用 2 的补码小数,其最高位为符号位,数值范围从-1+1。一个 16 位 2 的 补 码小数(Q15 格式)的每一位的权值为: MSB LSB -1 1/2 1/4 1/8 2-16 一个十进制小数乘以 32768 之后,再将其十进制整数部分转换成十六进制数,就能 得到这个十进制小数的 2 的补码表示了,如图 2-1 所示: 1 0.5 0 -0.5 -1 正数:乘以32768 负数:其绝对值部分 乘以32768,再取反加1 7FFFh 4000h 0000h C000h 8000h 图 2-1 DSP 定点运算中小数的表

48、示 DSP 技术及应用实验 18 在汇编语言程序中,是不能直接写入十进制小数的。如果要定义一个系数 0.707, 可以写成: .word 32768*707/1000 而不能写成 32768*0.707。 小数乘法小数乘法 先看一个小数乘法的例子(假设字长 4 位,累加器 8 位): 0 1 0 0 (0.5) 1 1 0 1 (-0.375) 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 1 0 1 0 0 (-0.1875) (-0100) 上述乘积是 7 位,当将其送到累加器时,为保持乘积的符号,必须进行符号位扩展, 这样,累加器中的值为 11110100(-0

49、.09375),出现了冗余符号位。原因是: S x x x (Q3 格式) S y y y (Q3 格式) S S z z z z z z (Q6 格式) 即两个带符号数相乘,得到的乘积带有 2 个符号位,造成错误的结果。 解决冗余符号位的办法是:在程序中设定状态寄存器 ST1 中的 FRCT(小数方式)位为 1,在乘法器将结果传送至累加器时就能自动地左移 1 位,累加器中的结果为: Szzzzzz0(Q7 格式),即 11101000(-0.1875),自动地消去了两个带符号数相乘时产生的 冗余符号位。 所以,在小数乘法编程时,应当事先设置 FRCT 位: SSBX FRCT MPY *AR

50、2,*AR3,A STH A,Z 这样,C54x 就完成了 Q15*Q15=Q15 的小数乘法。 三、实验任务三、实验任务 编制并调试一个计算小数乘法的程序段。 编制程序编制程序 题 B3-1:编制一个计算的 4 1i iix ay 程序段,已知其中 内蒙古科技大学通信实验室 19 a1=0.1 a2=0.2 a3=-0.3 a4=0.4 x1=0.8 x2=0.6 x3=-0.4 x4=-0.2 汇编程序如下: ;* 编制计算小数乘法运算的程序段。其中数据均为小数* ;* a1=0.1 a2=0.2 a3=-0.3 a4=0.4 * ;* x1=0.8 x2=0.6 x3=-0.4 x4=-

51、0.2 * .titlechef.asm .mmregs .def start,_c_int00 .bss x,4 .bss a,4 .bss y,1 .data table: .word 1*32768/10 .word 2*32768/10 .word -3*32768/10 .word 4*32768/10 .word 8*32768/10 .word 6*32768/10 .word -4*32768/10 .word -2*32768/10 .text _c_int00 b start nop nop start: SSBX FRCT STM#0,SWWSR STM #x,AR1 R

52、PT#7 MVPD table,*AR1+ STM #x,AR2 STM #a,AR3 STM#y,AR4 RPTZ A,#3 MAC *AR2+,*AR3+,A STH A,*AR4 done: B done 该程序运行的结果 y=0 x1EB7=0.24。 DSP 技术及应用实验 20 建立汇编源程序建立汇编源程序 点击 CCS C5000 图标,进入 CCS 环境。再点击 FileNewSource File,打开一 个空白文档。将 chef.asm 程序逐条输入。 点击 FileSave,将出现如图 2-2 的窗口,选择 C:timyprojcetschenfa 子目录,在 文件名一栏

53、中输入 chef,并选择保存类型为 Assembly Source Files(*.asm),按下保存, 以上汇编程序被存盘。 图 2-2 保存汇编源程序 建立链接命令文件建立链接命令文件 点击 FileNewSource File,打开一个空白文档。逐条输入链接命令文件: /*chef.cmd*/ chef.obj -m chef.map -o chef.out MEMORY PAGE 0:ROM :origin=0080h,length=1000h ROM1 :origin=0060h,length=10h PAGE 1:OTHER:origin=0400h,length=40h SECT

54、IONS .text: ROM PAGE 0 .data: ROM1 PAGE 0 .bss : OTHER PAGE 1 .stack : OTHER PAGE 1 点击 FileSave,将出现如图 2-2 的窗口,选择 C:timyprojcetschenfa 子目录,在文件名一栏中输 图 2-3 内蒙古科技大学通信实验室 21 图 2-4 Memory 选项窗口 入 chef,并选择保存类型为 TI Command Language File(*.cmd),按下保存,以上链接命 令程序 chef.cmd 被存盘。 创建一个新工程创建一个新工程 在 Project 菜单中选择 New 项

55、,将弹出 Save New Project As 窗口。 选择 C:timyprojcetschenfa 目录并打开,在文件名一栏键入 chef,此时默认的 文件保存类型为.pjt。CCS 将创建一个名为 chef.pjt 的工程,此文件保存了工程的设置 信息及工程中的文件引用情况。 将有关文件添加到工程中将有关文件添加到工程中 从 Project 菜单中选取 Add Files to Project 命令,选择文件 chef.asm。双击 打开按钮将 chef.asm 添加到工程中。 点击 ProjectAdd Files to Project,将 chef.cmd 添加入工程文件中,此文件

56、 的作用是将块(Sections)映射到存储器中。 逐层打开 Project 各级目录前面的+号,可以看到工程结构如图 8-4-3 所示。双击 chef.asm 打开文件,可以观察和修改 chef.asm 文件内容。 汇编、编译和连接产生汇编、编译和连接产生.out.out 文件文件 点击 Project 菜单中 Rebuild All,将在监视窗口显示汇编、编译和链接的相关信 息: asm500 chef.asm chef.obj -s TMS320C54x COFF Assembler Version 3.50 Copyright (c) 1996-1999 Texas Instrumen

57、ts Incorporated PASS 1 PASS 2 No Errors, No Warnings lnk500 chefa.pjt TMS320C54x COFF Linker Version 3.50 Copyright (c) 1996-1999 Texas Instruments Incorporated Build Complete, 0 Errors, 0 Warnings. 如果没有错误,则将产生 chef.out 文件。 加载并运行加载并运行.out.out 文件文件 执行菜单命令 FileLoad Program,选择 chef.out 并打开,将 Rebuild Al

58、l 生成的程序加载到 DSP 中。CCS 将自动打开一个反汇编窗口,显示加载程 序的反汇编指令。 运行程序点击 DebugRun。 DSP 技术及应用实验 22 单步执行程序则点击 DebugStepInto,或单击 F8 键。 若需要设置断点进行调试,则将光标移至准备设置断点的一行,按下图标;再 点击 DebugRun。 观察运行结果观察运行结果 程序调试到断点处或结束处,我们常常需要观察运行的结果。CCS 提供了观察 DSP 内 存数据空间和程序空间的服务。 由本实验任务.asm 源程序和.cmd 链接程序,我们可以看出本程序的结果 y 放置在 MEMORY 内存 data 空间 0408

59、H 单元中。 点击 ViewMemory,将出现如图 2-4 所示的选项窗口,将 Address 选择改为 0 x0400,按 下 OK,将在汇编窗口显示选定的 data 空间的内容(y=0 x1EB7=0.24) 。 当结果数据错误时, 可检查源程序进行修改。修改完毕,可重新汇编、链接,再加载 运行.out 文件,直到结果正确。 四、实验设备四、实验设备 微机主机一台 (已安装 CCS C5000 软件包) ;否则(src)1src 内蒙古科技大学通信实验室 23 实验五实验五 用用 Simulator 调试调试 FIR 数字滤波数字滤波 器器 一、实验目的一、实验目的 了解一个 FIR 数

60、字滤波器 DSP 程序的设计、编写和建立的过程。 学习使用 simulator 调试滤波器程序的方法。了解使用 simulator 进行程序调试, 如何输入测试信号,观察输出结果。 二、实验原理二、实验原理 FIRFIR 滤波器的结构和数据存储方式滤波器的结构和数据存储方式 对于一个 FIR 滤波器,假定其冲激响应为,输入信号为x(n),) 12 , 1 , 0(Nibi 则有以下差分方程: 1 0 )()( N i i inxbny 其对应的滤波器传递函数为: i N i iz bzH 1 0 )( 可以用横截型(又称直接型或卷积型)FIR 数字滤波器的结构图表示(图 3-1) 。 + )(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论