DSP本科实验教材 择文件testl.out,单击“Open”打开。这样,CCS就将可执行代码载入到目标DSP中。 选择主菜单“View”下的“Mixed Source/ASM”,将同时看到汇编源代码和相应的机器代 码,如图1-5所示。如果要查找某条汇编指令的功能,只需将光标放在该汇编指令的前面,并 按F1键,CCS就会搜索并显示该条指令的帮助信息,这在调试中是很有用的。 test1.pjt Dabuc 习$谥曲孟西g% 网如6面盟围四回正 )i14m 白GLfi1es .text eint00: Preisets 合testl.pjt0eba6) 5七曲 stack+10h,SP :设置堆梭指针 0000:E0007718 g门 90h,18h dent Project 三七留 #0x0000,SWWSR :所有存储器未加软件延迟 0000:E0027728 STM 0h,28h Libraries #0x70,AR2 D000:E004 STM 70h,12h #Oxff80,*AR2 扫431.a3 ST 由vectors. #ff80h,“AR 图testl.cmd :观察控制位的作用 :当S1=0时,进行无符号数的加载 rsbx SXM 0000:E008F6B8 RSBX SXM nop 0000:E009F495 NOP ld *AR2.A :(a)-( 0000:E00A1082 ID WAR2,A 4= :当S0-1时,进行有符号数的如载 ssbx 0000:E00BF7B8 SSBX SXM a0B0:E00c595 NOP :(A)=( LD *AR2.A 巡察粹的对出不进行处理 rsbx 图15观察指令代码 7.运行和调试 选择主菜单“Debug”下的“Run”或单击工具按钮公 可使程序全速运行。通过“Debug” 下的“Ha”或单击工具按钮公可停止程序的运行.。 设置断点的方法是:把光标移到某一行,按F9键或单击工具按钮心, 在这一行前面会出 现一个红点,表示在该行加了一个断点。 8.寄存器的察看和修改 选择主菜单“View”下的“Registers一一>CPU Registers”或点击CCS操作界面左侧的调 试工具栏國图标,就会在CCS工作区底部打开一个CPU寄存器窗口,其中列出了所有CPU 寄存器的值,并列出了ST0、ST1和PMST中有特殊意义的位和位域,如图1-6所示。要修改 某个寄存器值,只要双击该寄存器名称,既可出现“Edit Register'”对话框,只要在“Value”文 本框中输入新的值,单击“Done”按纽,即修改成功。 PC=0000E050 TRN 0000 BRAF0 INIM-1 SP=0090 XPC 0 ST0=1600BRC=0000 IMR=0000 AR0=0000 007FFFFFFF ST1 2BC0 RSA=0000AR1=0000 IFR=0088 0VA=1 B-FFFFFF8000 PMST FFEO REA 0000 AR2 0070 IPTR FF80 0VB■1 T=0001 DP=0000TC=1 AR3=0000 0WM=1 图1-6CPU寄存器窗口 选择主菜单“View”下的“Memory”或点击CCS操作界面左侧的调试工具栏匡图标, 5
DSP 本科实验教材 5 择文件 test1.out,单击“Open”打开。这样,CCS 就将可执行代码载入到目标 DSP 中。 选择主菜单“View”下的“Mixed Source/ASM”,将同时看到汇编源代码和相应的机器代 码,如图 1-5 所示。如果要查找某条汇编指令的功能,只需将光标放在该汇编指令的前面,并 按 F1 键,CCS 就会搜索并显示该条指令的帮助信息,这在调试中是很有用的。 图 1-5 观察指令代码 7.运行和调试 选择主菜单“Debug”下的“Run”或单击工具按钮 ,可使程序全速运行。通过“Debug” 下的“Halt”或单击工具按钮 可停止程序的运行。 设置断点的方法是:把光标移到某一行,按 F9 键或单击工具按钮 ,在这一行前面会出 现一个红点,表示在该行加了一个断点。 8.寄存器的察看和修改 选择主菜单“View”下的“Registers ——> CPU Registers”或点击 CCS 操作界面左侧的调 试工具栏 图标,就会在 CCS 工作区底部打开一个 CPU 寄存器窗口,其中列出了所有 CPU 寄存器的值,并列出了 ST0、ST1 和 PMST 中有特殊意义的位和位域,如图 1-6 所示。要修改 某个寄存器值,只要双击该寄存器名称,既可出现“Edit Register”对话框,只要在“Value”文 本框中输入新的值,单击“Done”按纽,即修改成功。 图 1-6 CPU 寄存器窗口 选择主菜单“View”下的“Memory”或点击 CCS 操作界面左侧的调试工具栏 图标
DSP本科实验教材 就会弹出一个“Memory Window Options”对话框,如图l-7所示。选择Data或Program,输入 存储器的地址,即可观察以该存储器地址开始的内容,如图1-8所示。要修改某个存储器地址 中的内容,可以双击该地址,在出现的对话框中修改即可。 enory Vindov Options Titl Memory Address 0x0000 9-Value 0 Format Hex -C Style 厂■Vse IEEE F1oat Page: Data Enable Reference Buffe Start 0x0000 End 0x0000 Update Reference Buffer Automat K Cancel Help 图1-7存储器窗口 0x0060: end 0g0060: 0x0000 0x00000x0000 0g00000g00000x0000 0x00000x0000 0x0000 0z0000 0x006A: 0x00000x00000x00000g00000g00000x00000x00010x7FFF0x00000x0000 0x0074: 0x00000x00000x00000x00000x00000x00000x00000x0000 0x00000x0000 0x007E: 0x00000x0000 0x0080: stack 0x0080: 0x00000x00000x00000g00000g00000x0000 0x00000x0000 0x0000 0z0000 0x008A: 0x00000x00000x0000 0x00000x00000x0000 0x00000x00000x00000x0000 0z0094: 0x00000x00000x00000g00000x00000x0000 0x00000x0000 0x0000 0z0000 0x009E: 0x0000 0x0000 0x00000x0000 0x0000 0x0000 0x0000 0x00000x0000 0x0000 0x00A8: 0z0000 0x00 9000x0000 0x0000 0x00000x0000 0x0000 0x00B2: 0x00000x00 Edit重eory 100x00000x00000x0000 0x00000x0000 0x00BC 0x00000x00 100x0000 0x00000x00000x00000x0000 0x00C6: 0x0000 0x00 Address 0x0060 00 0x0000 080000 0x00000x0000 0z0000 0x00D0: 0x0000 0x01 Data: 5x0000 0 0x0000 0x0000 0x0000 0x0000 0x0000 0x00DA: 0x0000 0x00 Fage Data 00x0000 0x00000x0000 0x00000x0000 0g00E4: 0x0000 0艾0I 00x0000 0x00000x0000 0x0000 0x0000 0x00EE: 0x00000x0d Done Help 00x0000 0x00000x00000x0000 0x0000 0x00F8: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0102: 0x00000x00000x00000g0000 0x000000000 0x0000 0x00000x0000 0x0000 0x010C: 0x00000x00000x00000x00000g00000x0000 0艾0000 0x0000 0x0000 0x0000 0x0116: 0x00000x00000x00000x00000g00000x00000x00000x0000 0x00000x0000 图1-8存储器显示及修改对话框 关于CCS使用的详细说明,请查看有关说明书(见参考文献15]、[16]),或参考CCS主 菜单的“Help”。 9.观察存储器映象Map文件 选择主菜单“File”下的“Open”,打开testl.Map文件,观察存储器的配置、段的定位及全 局符号等各项内容,将它们与testl.cmd文件中的设置进行比较,进一步理解cmd文件的作用。 四、实验报告的要求 1.程序分析 (1)说明3个文件的作用及接口情况,说明各个文件中伪指令的作用。 6
DSP 本科实验教材 6 就会弹出一个“Memory Window Options”对话框,如图 1-7 所示。选择 Data 或 Program,输入 存储器的地址,即可观察以该存储器地址开始的内容,如图 1-8 所示。要修改某个存储器地址 中的内容,可以双击该地址,在出现的对话框中修改即可。 图 1-7 存储器窗口 图 1-8 存储器显示及修改对话框 关于 CCS 使用的详细说明,请查看有关说明书(见参考文献[15]、[16]),或参考 CCS 主 菜单的“Help”。 9.观察存储器映象 Map 文件 选择主菜单“File”下的“Open”,打开 test1.Map 文件,观察存储器的配置、段的定位及全 局符号等各项内容,将它们与 test1.cmd 文件中的设置进行比较,进一步理解 cmd 文件的作用。 四、实验报告的要求 1.程序分析 (1)说明 3 个文件的作用及接口情况,说明各个文件中伪指令的作用
DSP本科实验教材 (2)分析主程序的结构和功能,对每条指令进行注释,写出执行结果。 (3)写出本工程的分段和存储器的定位情况。 2.调试说明 总结上机调试步骤和调试情况,分析调试中遇到的问题是如何解决的。 3.回答下列问题: (1)如果没有在工程中添加testl.cmd文件,试问汇编连接后能否产生testl.out文件?能 否获得正确的执行结果? (2)在主程序中存在着许多NOP指令,它们的作用是什么?如果将它们去掉,程序能否 正常运行? (3)伪指令.def和.rf的在本工程中的作用是什么?如果将它们去掉将会产生什么后果? 实验二寻址方式 一、目的 1.了解C54x的各种数据寻址方式,包括立即寻址、绝对寻址、累加器寻址、直接寻址、 间接寻址、存储器映象寄存器寻址及堆栈寻址等。 2.掌握各种寻址方法以及指令的执行过程,比较利用不同寻址方式的指令执行时间。 3.进一步掌握在CCS软件仿真环境下工程的建立、汇编、连接、运行和调试的基本过程。 二、内容 1.单步或断点执行程序,观察在各种寻址方式下地址的修改和空间的变化。 2.利用CCS的“Viw”功能,观察不同寻址方式下指令执行的结果(即目标数据的变化)。 三、实验步骤 1.预习实验程序 实验二提供了三个有关程序:汇编主程序test2.asm、中断矢量处理程序vectors.asm及命令 文件test2.cmd(参见第三部分,实验二参考程序)。 (1)读懂主程序test2.asm,了解程序中各种寻址方式的寻址空间情况,分析指令中源操作 数和目标操作数的寻址方式、执行过程和最终结果。在实验前先填写主程序中注释的括号部分, 然后通过实验验证自己的分析正确否。 (2)通过预习程序(特别是预习test2.cmd),了解该工程中COF格式段的划分及存储器 的分配情况。在实验前先填写表2-1。 表2-1工程test2中的段及其定位 段名 己/未初始化段 所属PAGE 起始地址 存储区长度 2.在CC$下建立工程,进行汇编、连接和调试的步骤与实验一类同,在此不再赘述
DSP 本科实验教材 7 (2)分析主程序的结构和功能,对每条指令进行注释,写出执行结果。 (3)写出本工程的分段和存储器的定位情况。 2.调试说明 总结上机调试步骤和调试情况,分析调试中遇到的问题是如何解决的。 3.回答下列问题: (1)如果没有在工程中添加 test1.cmd 文件,试问汇编连接后能否产生 test1.out 文件?能 否获得正确的执行结果? (2)在主程序中存在着许多 NOP 指令,它们的作用是什么?如果将它们去掉,程序能否 正常运行? (3)伪指令.def 和.ref 的在本工程中的作用是什么?如果将它们去掉将会产生什么后果? 实验二 寻址方式 一、目的 1.了解 C54x 的各种数据寻址方式,包括立即寻址、绝对寻址、累加器寻址、直接寻址、 间接寻址、存储器映象寄存器寻址及堆栈寻址等。 2.掌握各种寻址方法以及指令的执行过程,比较利用不同寻址方式的指令执行时间。 3.进一步掌握在 CCS 软件仿真环境下工程的建立、汇编、连接、运行和调试的基本过程。 二、内容 1.单步或断点执行程序,观察在各种寻址方式下地址的修改和空间的变化。 2.利用 CCS 的“View”功能,观察不同寻址方式下指令执行的结果(即目标数据的变化)。 三、实验步骤 1.预习实验程序 实验二提供了三个有关程序:汇编主程序 test2.asm、中断矢量处理程序 vectors.asm 及命令 文件 test2.cmd(参见第三部分,实验二参考程序)。 (1)读懂主程序 test2.asm,了解程序中各种寻址方式的寻址空间情况,分析指令中源操作 数和目标操作数的寻址方式、执行过程和最终结果。在实验前先填写主程序中注释的括号部分, 然后通过实验验证自己的分析正确否。 (2)通过预习程序(特别是预习 test2.cmd),了解该工程中 COFF 格式段的划分及存储器 的分配情况。在实验前先填写表 2-1。 表 2-1 工程 test2 中的段及其定位 段名 已/未初始化段 所属 PAGE 起始地址 存储区长度 2.在 CCS 下建立工程,进行汇编、连接和调试的步骤与实验一类同,在此不再赘述
DSP本科实验教材 3.为了更方便的观察在各种寻址方式下地址和目标数据的变化情况,建议在CCS环境下, 打开“CPU Registers”及“Memory”窗口,使用主菜单“Windows”下的“Tile Vertically”,平 铺各个观察窗口,如图2-1所示, 即可快捷的观察到程序执行过程中地址和数据的变化情况。 Debur 川2四世98八 于国昭目园回过 回☒et2 口石☒ GEL files 0x0060: Projects 0z0060: 0z00000g00000x0000 test2.pjt Oebn #4,DP □Dapondant Proj 0x0064: 0x00000¥00000*000B0x0000 00x7850,A #4 I DSP/ETOS Confi 0x0068: Dato_1 rpt 0x0068: 0x00660x000C0x000D0x000E add 00g100,4,A Generated File 0z006C: 0z00080x00060x00040x0002 Inelede 0x0070: 绝对寻址 Libraries 0x0070: 0x00020x00040x00060x0006 1.dmad:2 pmed:3.PA(PORT Addressing): 0x0074: 0x000E0x000D0x000C0x000B :部鞋图华器里器耀■部制器器装器格超阳将器■深据器相梨器装器器择解游路国 0x0078: stI A(Data 0l 0g00020x00040x00060x0008 0g0065,R2 0%007c: 0x000E0000D0x0000x000E 0x0080: mvkd 0x0080: 0x00010x00020x00000x0000 0000 0x000 0x000 0x0000 mvpd tabiee-AR 000000z0000 0x0000 0x008C: 0x00000g0000 0%0000 器寻址** 0x0090: 0x00000x00000x00000x0000 0x0094: 0x00000x00000x00000x0000 rsbx 8若印 0x0098: 0x00000x00000x00000x0000 nop 0z009C: 0z00000z00000z00000x0000 nop 0g00A0: 0x00000x00000x00000x0000 ld #table.A 0x00A4: 0x00000x00000x00000x0000 stm #Data 1,AR2 0x00A8: 0x00000x00000x00000x0000 rpt 08-1 0x00000x00000x00000x0000 00\c5400\cgtools\bin cl P.0 ST01004 14R.0000 AR0=000: 0070 1FR-0008 OVA REA EOSA IPTR 0080 re.0 Warnings.0 Rema :88go0o068 0000 AR4=000 =0 AR5■0000 图2-1在CCS中平铺各个窗口进行调试 四、实验报告的要求 1.程序分析 (1)分析主程序的结构和功能,对每条指令进行注释,写出该条指令的寻址方式和执行结 果。 (2)写出本工程的分段和存储器的定位情况,填写表2-1。 (3)分析和总结各种寻址方式的特点。 2.调试说明 总结上机调试步骤和调试情况,分析调试中遇到的问题是如何解决的。 3.回答下列问题: (1)总结TMS320C54x的7种寻址方式的寻址空间情况,它们分别应用在什么场合? (2)直接寻址有两种方式,它们是如何控制的? (3)写出符号“#”、“@”、“*”在指令(寻址方式)中所表示的含义。 (4)堆栈寻址的作用是什么?压栈和弹出操作是如何实现的? (5)绝对地址寻址有哪几种?它们可以访问哪些地址空间?各有什么特点?
DSP 本科实验教材 8 3.为了更方便的观察在各种寻址方式下地址和目标数据的变化情况,建议在 CCS 环境下, 打开“CPU Registers”及“Memory”窗口,使用主菜单“Windows”下的“Tile Vertically”,平 铺各个观察窗口,如图 2-1 所示,即可快捷的观察到程序执行过程中地址和数据的变化情况。 图 2-1 在 CCS 中平铺各个窗口进行调试 四、实验报告的要求 1.程序分析 (1)分析主程序的结构和功能,对每条指令进行注释,写出该条指令的寻址方式和执行结 果。 (2)写出本工程的分段和存储器的定位情况,填写表 2-1。 (3)分析和总结各种寻址方式的特点。 2.调试说明 总结上机调试步骤和调试情况,分析调试中遇到的问题是如何解决的。 3.回答下列问题: (1)总结 TMS320C54x 的 7 种寻址方式的寻址空间情况,它们分别应用在什么场合? (2)直接寻址有两种方式,它们是如何控制的? (3)写出符号“#”、“@”、“*”在指令(寻址方式)中所表示的含义。 (4)堆栈寻址的作用是什么?压栈和弹出操作是如何实现的? (5)绝对地址寻址有哪几种?它们可以访问哪些地址空间?各有什么特点?
DSP本科实验教材 实验三定点定标运算 一、目的 1.了解DSP定点数的定标方法。 2.掌握将十进制数转换为Q定标的十六进制数的方法。 3.学习利用定点定标完成纯小数运算和混合小数运算的程序编写方法。 二、内容 1.编写定点定标乘法程序,完成纯小数y=x1×x2=0.35×0.9=0.315的运算和混合小数 2=s1×s2=7.62×1.84=14.0208的运算。 2.在程序中保留8个数据存储单元,分别存放被乘数和乘数x1、x2、s1、s2及乘积y、Z 的值。其配置情况如图3-1所示。 3.完成纯小数乘法运算y=x1×x2=0.35×0.9=0.315,用Q15定标。完成混合小数乘法运算 z=s1×s2=7.62×1.84=14.0208,其中s1用Q12定标,s2用Q14定标。 x1 2 0x0000 s1 s2 z高16位 z低16位 图3-1数据存储单元的配置 (注:实际上,y只需要一个字存储单元,后面的存储单元存放了0x0000,是为了保证s1 指针是偶地址存放格式)。 三、实验步骤 1.预习实验程序 实验三提供了三个有关程序:汇编主程序test3.asm、中断矢量处理程序vectors.asm及命令 文件test3.cmd(参见第三部分,实验三参考程序)。 (1)读懂主程序test3.asm,了解在汇编程序中进行纯小数运算或混合小数运算的方法。掌 握Q法定点定标的编程方法(可参考文献[1])。在实验前先计算出源操作数及结果的定标值, 填写下列各括号,然后通过实验验证自己的计算正确否。 0.35的Q15定标值: ( 0.9的Q15定标值: 0.35×0.9的Q15定标值: ( 7.62的Q12定标值: ( ) 1.84的Q14定标值: ( 9
DSP 本科实验教材 9 实验三 定点定标运算 一、目的 1.了解 DSP 定点数的定标方法。 2.掌握将十进制数转换为 Q 定标的十六进制数的方法。 3.学习利用定点定标完成纯小数运算和混合小数运算的程序编写方法。 二、内容 1.编写定点定标乘法程序,完成纯小数 y=x1×x2=0.35×0.9=0.315 的运算和混合小数 z=s1×s2=7.62×1.84=14.0208 的运算。 2.在程序中保留 8 个数据存储单元,分别存放被乘数和乘数 x1、x2、s1、s2 及乘积 y、z 的值。其配置情况如图 3-1 所示。 3.完成纯小数乘法运算 y=x1×x2=0.35×0.9=0.315,用 Q15 定标。完成混合小数乘法运算 z=s1×s2=7.62×1.84=14.0208,其中 s1 用 Q12 定标,s2 用 Q14 定标。 图 3-1 数据存储单元的配置 (注:实际上,y 只需要一个字存储单元,后面的存储单元存放了 0x0000,是为了保证 s1 指针是偶地址存放格式)。 三、实验步骤 1.预习实验程序 实验三提供了三个有关程序:汇编主程序 test3.asm、中断矢量处理程序 vectors.asm 及命令 文件 test3.cmd(参见第三部分,实验三参考程序)。 (1)读懂主程序 test3.asm,了解在汇编程序中进行纯小数运算或混合小数运算的方法。掌 握 Q 法定点定标的编程方法(可参考文献[1])。在实验前先计算出源操作数及结果的定标值, 填写下列各括号,然后通过实验验证自己的计算正确否。 0.35 的 Q15 定标值: ( ) 0.9 的 Q15 定标值: ( ) 0.35×0.9 的 Q15 定标值: ( ) 7.62 的 Q12 定标值: ( ) 1.84 的 Q14 定标值: ( )