DSP本科实验教材 7.62×1.84的Q26定标值: ( (2)通过预习程序(特别是预习test3.cmd),了解该工程中COFF格式段的划分及存储器 的分配情况。在实验前先填写表3-1。 表31工程test3中的段及其定位 段名 已/未初始化段 所属PAGE 起始地址 存储区长度 2.在CCS下建立工程,进行汇编、连接和调试的步骤与实验一类同,在此不再赘述。 四、实验报告的要求 1.程序分析 分析程序的结构和功能,对每条指令进行注释,写出执行结果。 2.调试说明 总结上机调试步骤和调试情况,说明调试中遇到的问题是如何解决的。 3.总结定点数定标的方法,总结将十进制数转换为Q定标的十六进制数的方法。 4.总结实现定点数乘法运算的方法。 实验四 浮点运算 一、目的 1.了解DSP浮点数的表示方法。 2.掌握定点数规格化为浮点数及浮点数转换为定点数的方法。 3.学习利用定点DSP进行浮点数运算的程序编写方法。 二、内容 编写浮点乘法程序,计算al×a2=0.4×(-0.9)。 三、实验步骤 1.预习实验程序 实验四提供了三个有关程序:汇编主程序test4.asm、中断矢量处理程序vectors.asm及命令 文件test4.cmd(参见第三部分,实验四参考程序)。 读懂主程序test3.asm,程序设计分为下列三步进行: (1)将定点数规格化为浮点数。 1)用EXPA指令提取指数,并将指数保存在暂存器T中。如果累加器(A)=0,则令T=0, 否则,将(A)的冗余符号位减8→T,而累加器A中的内容不变。指数的取值范围是:-8~31。 2)用STT,EXPONENT指令,将保存在T中的指数存放到数据存储器EXPONENT中。 o
DSP 本科实验教材 10 7.62×1.84 的 Q26 定标值: ( ) (2)通过预习程序(特别是预习 test3.cmd),了解该工程中 COFF 格式段的划分及存储器 的分配情况。在实验前先填写表 3-1。 表 3-1 工程 test3 中的段及其定位 段名 已/未初始化段 所属 PAGE 起始地址 存储区长度 2.在 CCS 下建立工程,进行汇编、连接和调试的步骤与实验一类同,在此不再赘述。 四、实验报告的要求 1.程序分析 分析程序的结构和功能,对每条指令进行注释,写出执行结果。 2.调试说明 总结上机调试步骤和调试情况,说明调试中遇到的问题是如何解决的。 3.总结定点数定标的方法,总结将十进制数转换为 Q 定标的十六进制数的方法。 4.总结实现定点数乘法运算的方法。 实验四 浮点运算 一、目的 1.了解 DSP 浮点数的表示方法。 2.掌握定点数规格化为浮点数及浮点数转换为定点数的方法。 3.学习利用定点 DSP 进行浮点数运算的程序编写方法。 二、内容 编写浮点乘法程序,计算 a1×a2=0.4×(-0.9)。 三、实验步骤 1.预习实验程序 实验四提供了三个有关程序:汇编主程序 test4.asm、中断矢量处理程序 vectors.asm 及命令 文件 test4.cmd(参见第三部分,实验四参考程序)。 读懂主程序 test3.asm,程序设计分为下列三步进行: (1)将定点数规格化为浮点数。 1)用 EXP A 指令提取指数,并将指数保存在暂存器 T 中。如果累加器(A)= 0,则令 T=0, 否则,将(A)的冗余符号位减 8→T,而累加器 A 中的内容不变。指数的取值范围是:-8~31。 2)用 ST T,EXPONENT 指令,将保存在 T 中的指数存放到数据存储器 EXPONENT 中
DSP本科实验教材 3)按T中的内容对累加器A进行规格化处理(左移或右移),即(A)<TS→A。 (2)进行浮点乘法运算:两浮点数相乘,尾数相乘,指数相加。 (3)将浮点数转换成定点数。因为浮点数的指数就是在规格化时左移(指数为正时)或右 移(指数为负时)的位数,所以在将浮点数转换成定点数时,只要按指数值将尾数右移(指数 为正时)或将尾数左移(指数为负时)。 (4)在程序中保留10个数据存储单元,其中: al(被乘数) a2(乘数) b1(被乘数的指数) b2(乘数的指数) cl(被乘数的尾数) c2(乘数的尾数) ep(乘积的指数) mp(乘积的尾数) product(乘积) temp(暂存单元) 实验前要作好充分准备,读懂主程序,分析程序中的原始数据定标格式、浮点数的表示形式 和最终的定点数结果(可参考文献[2])。然后通过实验验证自己的计算正确否。 2.在CCS下建立工程,进行汇编、连接和调试的步骤与实验一类同,在此不再赘述。 四、实验报告的要求 1.程序分析 分析程序的结构和功能,对每条指令进行注释,写出执行结果。 2.调试说明 总结上机调试步骤和调试情况,说明调试中遇到的问题是如何解决的。 3.总结定点数定标的方法,总结定点数规格化为浮点数及浮点数转换为定点数的方法。 4.总结实现浮点数乘法运算的方法。 实验五汇编程序的优化 一、目的 1.进一步了解和掌握DSP汇编程序设计的基本结构和设计方法。 2.探讨DSP汇编程序设计的优化方法和编程技巧。 3.学习利用CCS提供的Profile(剖析)工具检测程序执行效率的方法。 二、内容 1.利用指令的超标量操作能力 编写程序,比较两数X1和X2的大小。若两者相等,则将其值存入Y单元。否则将大者存入 Y单元。分别使用CMPR指令、SUB指令和CMPS指令编程,比较代码长度和执行时间。 2.使用延迟功能 使用BAZ(无延迟)BANZD 计算yl= i=l 较代码长度和执行时间。 3.重复机制和重复操作指令的应用 11
DSP 本科实验教材 11 3)按 T 中的内容对累加器 A 进行规格化处理(左移或右移),即(A)<<TS→A。 (2)进行浮点乘法运算:两浮点数相乘,尾数相乘,指数相加。 (3)将浮点数转换成定点数。因为浮点数的指数就是在规格化时左移(指数为正时)或右 移(指数为负时)的位数,所以在将浮点数转换成定点数时,只要按指数值将尾数右移(指数 为正时)或将尾数左移(指数为负时)。 (4)在程序中保留 10 个数据存储单元,其中: a1(被乘数) a2(乘数) b1(被乘数的指数) b2(乘数的指数) c1(被乘数的尾数) c2(乘数的尾数) ep(乘积的指数) mp(乘积的尾数) product(乘积) temp(暂存单元) 实验前要作好充分准备,读懂主程序,分析程序中的原始数据定标格式、浮点数的表示形式 和最终的定点数结果(可参考文献[2])。然后通过实验验证自己的计算正确否。 2.在 CCS 下建立工程,进行汇编、连接和调试的步骤与实验一类同,在此不再赘述。 四、实验报告的要求 1.程序分析 分析程序的结构和功能,对每条指令进行注释,写出执行结果。 2.调试说明 总结上机调试步骤和调试情况,说明调试中遇到的问题是如何解决的。 3.总结定点数定标的方法,总结定点数规格化为浮点数及浮点数转换为定点数的方法。 4.总结实现浮点数乘法运算的方法。 实验五 汇编程序的优化 一、目的 1.进一步了解和掌握 DSP 汇编程序设计的基本结构和设计方法。 2.探讨 DSP 汇编程序设计的优化方法和编程技巧。 3.学习利用 CCS 提供的 Profile(剖析)工具检测程序执行效率的方法。 二、内容 1.利用指令的超标量操作能力 编写程序,比较两数X1和X2的大小。若两者相等,则将其值存入Y单元。否则将大者存入 Y单元。分别使用CMPR指令、SUB指令和CMPS指令编程,比较代码长度和执行时间。 2.使用延迟功能 计算y1= 16 1 ( ) ii i i uvw = ∑ × + ,分别使用BANZ(无延迟)和BANZD(有延迟)指令编程,比 较代码长度和执行时间。 3.重复机制和重复操作指令的应用
DSP本科实验教材 计算S一是40c,分别使用RPT指令和BANZ指令组成循环程序,比较代吗长度和执行时 i=l 间。 4.利用多总线结构和并行操作功能 计算y2[=g[]+h[),=1,2,3…20,分别使用双操作数寻址或并行操作指令编程,比较代码 长度和执行时间。 三、实验步骤 1.预习实验程序 实验五提供了三个有关程序:汇编主程序test5.asm、中断矢量处理程序vectors.asm及命令 文件test5.cmd(参见第三部分,实验五参考程序)。 (1)读懂主程序test5.asm,了解在汇编编程过程中,怎样使用恰当的寻址方式、编程技巧 和程序结构,特别是采用合理妥当的优化手段,去充分发挥DSP的多总线、流水线、循环重复 机制和超标量操作等结构特点,在缩短代码长度,提高执行速度,增大数据吞吐量以及提高CPU 的利用效率等方面优化程序的设计。 (2)在预习中,针对实验中的4个内容,先围绕下列4个表进行分析思考,然后通过实验 获得结果,并在实验报告中填写这4个表格。 针对内容1 表5-1三种方法编程的代码长度和执行时间 使用指令 代码长度(字) 执行时间(CPU时钟周期) CMPR SUB CMPS 针对内容2 表5-2两种方法编程的代码长度和执行时间 使用指令 代码长度(字) 执行时间(CPU时钟周期) BANZ(无延迟) BANZD(有延迟) 针对内容3 表5-3两种方法编程的代码长度和执行时间 使用指令 代码长度(字) 执行时间(CPU时钟周期) RPT BAnz 针对内容4 表5-4两种方法编程的代码长度和执行时间 使用方法 代码长度(字) 执行时间(CPU时钟周期) 双操作数寻址 并行指令 12
DSP 本科实验教材 12 计算 S= 20 1 40 i i c = ∑ ,分别使用 RPT 指令和 BANZ 指令组成循环程序,比较代码长度和执行时 间。 4.利用多总线结构和并行操作功能 计算 y2[i]= g[i]+h[i],i=1,2,3…20,分别使用双操作数寻址或并行操作指令编程,比较代码 长度和执行时间。 三、实验步骤 1.预习实验程序 实验五提供了三个有关程序:汇编主程序 test5.asm、中断矢量处理程序 vectors.asm 及命令 文件 test5.cmd(参见第三部分,实验五参考程序)。 (1)读懂主程序 test5.asm,了解在汇编编程过程中,怎样使用恰当的寻址方式、编程技巧 和程序结构,特别是采用合理妥当的优化手段,去充分发挥 DSP 的多总线、流水线、循环重复 机制和超标量操作等结构特点,在缩短代码长度,提高执行速度,增大数据吞吐量以及提高 CPU 的利用效率等方面优化程序的设计。 (2)在预习中,针对实验中的 4 个内容,先围绕下列 4 个表进行分析思考,然后通过实验 获得结果,并在实验报告中填写这 4 个表格。 针对内容 1 表 5-1 三种方法编程的代码长度和执行时间 使用指令 代码长度(字) 执行时间(CPU时钟周期) CMPR SUB CMPS 针对内容 2 表 5-2 两种方法编程的代码长度和执行时间 使用指令 代码长度(字) 执行时间(CPU时钟周期) BANZ(无延迟) BANZD(有延迟) 针对内容 3 表 5-3 两种方法编程的代码长度和执行时间 使用指令 代码长度(字) 执行时间(CPU时钟周期) RPT BANZ 针对内容 4 表 5-4 两种方法编程的代码长度和执行时间 使用方法 代码长度(字) 执行时间(CPU时钟周期) 双操作数寻址 并行指令
DSP本科实验教材 (3)本实验针对4个内容开辟了不同的未初始化数据存储器空间,通过预习主程序 test5.asm,指出有关的汇编伪指令,对它们进行分析,并在实验报告中写出这4个实验内容所 涉及的未初始化数据存储器空间的分布情况。 2.在CCS下建立工程,进行汇编、连接和调试。 3.使用剖析时钟 要观察某段程序或者某个函数的执行时间是多少,可以在这段程序的开始和结束位置上设 置断点,然后使用CCS主菜单“Profile”下的剖析时钟统计出时钟周期数。操作的方法如下: (1)选择CCS主菜单“Profile'”下的“Enable Clock“命令,打开剖析时钟。 (2)选择主菜单“Profile”下的“Clock Setup”命令,打开时钟设置窗口,如图5-l所示。 在此窗口中设置剖析的相关属性。 在“Count'”下拉列表框中选择需要剖析的事件。一般选择“CPU Cycles'”,以统计代码执 行的时钟周期。另外,还可以选择其它选项,如统计程序运行中的中断、子程序的调用、程序 分支、返回及指令预取等信息。 在“Reset Option”拦中选择“Mamual”(手工复位)或者“Auto”(自动复位)。手工复位 是指在整个剖析过程中,剖析时钟的值不停的累加,除非主动手工复位清0。在自动复位方式 下,每次运行时遇到断点或单步停下,剖析时钟会自动清0。要注意的是:在自动复位方式下 得到的剖析时钟数据并不准确。一般采用手工复位。 在“Pipeline Adjustments”文本框中输入流水线校正值。 设置完成后键入“OK”,关闭时钟设置窗口。 Clock Setup ☒ C№mt:CPU Cyeles -Reset Option Manual Instruction Cycle 10 Pipeline Adjustments 0 CAuto Cancel Help 图5-1时钟设置窗口 (3)选择主菜单“Profile”下的“View Clock”命令,打开剖析时钟窗口,执行该段程序(已 设置了起始和结束的断点)之后,就会在剖析时钟窗口中显示出时钟的计数值,如图5-2所示。 用鼠标双击此计数值,可以将它复位为0。 Clock -711 图5-2剖析时钟窗口 4.观察代码长度 我们可以采用下列两种方法来观察代码长度: (I)选择CCS主菜单“View”下的“Mixed Source/ASM”,可以在CCS的编辑窗口中看 到程序的机器码,通过观察即可计算出一段程序的代码长度。 (2)根据命令文件(.cmd)对段的定位可以确定代码段.text所在的位置,选择CCS主菜 单“View”下的“Memory”命令,或者单击快捷键▣,打开Memory窗口设置,如图5-3所示。 6
DSP 本科实验教材 13 (3)本实验针对 4 个内容开辟了不同的未初始化数据存储器空间,通过预习主程序 test5.asm,指出有关的汇编伪指令,对它们进行分析,并在实验报告中写出这 4 个实验内容所 涉及的未初始化数据存储器空间的分布情况。 2.在 CCS 下建立工程,进行汇编、连接和调试。 3.使用剖析时钟 要观察某段程序或者某个函数的执行时间是多少,可以在这段程序的开始和结束位置上设 置断点,然后使用 CCS 主菜单“Profile”下的剖析时钟统计出时钟周期数。操作的方法如下: (1)选择 CCS 主菜单“Profile”下的“Enable Clock“命令,打开剖析时钟。 (2)选择主菜单“Profile”下的“Clock Setup”命令,打开时钟设置窗口,如图 5-1 所示。 在此窗口中设置剖析的相关属性。 在“Count”下拉列表框中选择需要剖析的事件。一般选择“CPU Cycles”,以统计代码执 行的时钟周期。另外,还可以选择其它选项,如统计程序运行中的中断、子程序的调用、程序 分支、返回及指令预取等信息。 在“Reset Option”拦中选择“Mamual”(手工复位)或者“Auto”(自动复位)。手工复位 是指在整个剖析过程中,剖析时钟的值不停的累加,除非主动手工复位清 0。在自动复位方式 下,每次运行时遇到断点或单步停下,剖析时钟会自动清 0。要注意的是:在自动复位方式下 得到的剖析时钟数据并不准确。一般采用手工复位。 在“Pipeline Adjustments”文本框中输入流水线校正值。 设置完成后键入“OK”,关闭时钟设置窗口。 图 5-1 时钟设置窗口 (3)选择主菜单“Profile”下的“View Clock”命令,打开剖析时钟窗口,执行该段程序(已 设置了起始和结束的断点)之后,就会在剖析时钟窗口中显示出时钟的计数值,如图 5-2 所示。 用鼠标双击此计数值,可以将它复位为 0。 图 5-2 剖析时钟窗口 4.观察代码长度 我们可以采用下列两种方法来观察代码长度: (1)选择 CCS 主菜单“View”下的“Mixed Source/ASM”,可以在 CCS 的编辑窗口中看 到程序的机器码,通过观察即可计算出一段程序的代码长度。 (2)根据命令文件(.cmd)对段的定位可以确定代码段.text 所在的位置,选择 CCS 主菜 单“View”下的“Memory”命令,或者单击快捷键 ,打开 Memory 窗口设置,如图 5-3 所示
DSP本科实验教材 在“Page”拦中选择“Program”,在“Address”拦中输入地址,即可打开存储器显示窗口观察代 码的长度,如图5-4所示。 【enory Vindow0 ptions Titl Memory Address 5x0000E000 9-Value 0 Format Hex -C Style 厂Ise IEEE1oat Page: Progr am Enable Reference Buffe Start Dx000000 End 0x000000 Update Reference Buffer Automat OK Cancel Help 图5-3 Memory窗口设置 emory (Program:Hex -C Style) 日回☒ 0x00E000: c int0o 0x00E000: 0z77180x10100x77280x0000 0x00E004: PI 0x00E004: 0x77100x003A0x77130x015E0xF4AB0xF8200xE00F0xF2730xE0180xF495 0x00E00E: 0xF495 0x00E00F: dl 0x00E00F: 0xF5AB0xF8300xE0180x73130x00600xF2730xE01A0xF4950xF495 0x00E018: d2 0x00E018: 0x73100x0060 0x00E01A: P2 0x00E01A: 0xE83A0xF0100x015E0xF8430xE0250x76600x003A0xF2730xE0270xF495 0x00E024: 0xF495 0x00E025: d3 0x00E025: 0x76600x015E 0x00E027: P3 0x00E027: xF0620x003A0zF0000x015E0x8E60 0x00E02C: P4 0x00E02C: x77130x00610x77140x00710x77150x00810x77110x00910x77120x000F 0x00E036: 0x76810x0000 0x00E038: 1p 0x00E038: 0xA49A0x00950x00810x80810x6C8A0xE038 0x00E03E: P5 图5-4存储器窗口 四、实验报告的要求 1.程序分析 (1)分析主程序中4个汇编程序内容的优化方法,对有关指令进行注释,写出各个程序段 的执行结果。 (2)填写表5-1~表5-4的内容,分析和总结各种优化方法的特点。 (3)写出各个程序段的未初始化数据存储器空间的分布情况。 2.调试说明 总结上机调试步骤和调试情况,分析调试中遇到的问题是如何解决的。 14
DSP 本科实验教材 14 在“Page”拦中选择“Program”,在“Address”拦中输入地址,即可打开存储器显示窗口观察代 码的长度,如图 5-4 所示。 图 5-3 Memory 窗口设置 图 5-4 存储器窗口 四、实验报告的要求 1.程序分析 (1)分析主程序中 4 个汇编程序内容的优化方法,对有关指令进行注释,写出各个程序段 的执行结果。 (2)填写表 5-1~表 5-4 的内容,分析和总结各种优化方法的特点。 (3)写出各个程序段的未初始化数据存储器空间的分布情况。 2.调试说明 总结上机调试步骤和调试情况,分析调试中遇到的问题是如何解决的