DSP必备试题

更新时间:2024-01-24 23:30:01 阅读量: 教育文库 文档下载

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

首先介绍关于实验的知识,这个考不考看你们学校了,然后是大量习题解答,如果你能自己先不看答案做出来,恭喜你,你已经非常出色了!

实验步骤

1、开机:进入Win 系统,双击桌面上CCS3.3图标,选择open——DM6437 Little Endian Simulator ,进入DSP软件集成开发环境,或者选择open——c6437 510 plus进入DSP硬件集成开发环境(使用实验箱做实验,先连接好实验箱及仿真器等方可开机)。

2、编辑文件:选择File-New—Source File菜单,编辑好C程序文件(*.c)、汇编程序文件(*.asm)、头文件(*.asm)及链接命令文件(*.cmd),并保存在D盘DSPLAB\\LAB1文件夹中。3、创建工程项目:选择Project-New,出现—对话框,在project栏(第一行)填写项目名称,并选定项目的位置(D:\\DSPLAB\\LAB1),然后单击“完成”按钮,这样就新建了一个工程项目,该项目用来管理各种文件,便于编译、调试。

注意:路径、文件夹、文件名中不能含有汉字,且第一个字母不能是数字。 4、添加文件:将编辑好的三个文件添加到刚建好的工程项目中,选择Project-Add Files to Project,出现一个对话框,选择文件夹(D:\\DSPLAB\\LAB1)并选中C文件、汇编程序文件、头文件、cmd文件,单击“打开”按钮就将这四个文件添加到该工程中了。

5、编译汇编程序:选择Project—Compile File,分别编译主程序及头文件,修改程序中的错误,再编译,直到无错误出现。编译后的文件为OBJ文件。 6、链接:选择Project—Build或Rebuild All,链接各OBJ文件,若有错误出现应修改错误(错误应在cmd文件中),再链接,直到无错误出现。链接生成可执行的out文件。

7、下载out文件:选择File—Load Program,在debuge文件夹中选中out文件(文件名与工程项目同名),单击“打开”按钮,这样out文件就下载到DSP中了。

调试:选择debuge—Step Into 单步执行代码或者选择debuge—Run连续运行代码(debuge—Halt停止运行)。单步运行或运行结束后选择View-Memory和View-Registers-CPU Registers/Peripheral Regs查看存储器和寄存器中的数据。如果最后的结果有错误,则应查找原因修改程序并重复步骤5 ~ 步骤8,直到结果正确为止 习题

填空(每空1分,共30分)

1. TI公司的定点DSP产品主要有TMS320C2000系列、TMS320C5000系列和TMS320C6000 系列。

2. C54x DSP中传送执行指令所需的地址需要用到PAB、CAB、DAB和EAB4条地址总线。

3. DSP的内部存储器类型可分为随机存取存储器(RAM)和只读存储器

第页(共 2 页) 1

(ROM)。其中RAM又可以分为两种类型:单寻址RAM(SARAM)和双寻址RAM(DARAM)。

4. C54x DSP的内部总存储空间为192K字,分成3个可选择的存储空间:64K字的程序存储空间、64K字的数据存储空间和64K字的I/O空间。

5. 从功能结构上,C54X DSP的CPU可以划分成运算部件和控制部件两大部分。 6. C54x DSP的寻址方式有七种,分别为立即寻址、绝对寻址、累加器寻址、直接寻址、间接寻址、存储器映象寄存器寻址、堆栈寻址。

7. 在C54x DSP寻址和指令系统中,Xmem和Ymem表示16位双寻址操作数,Dmad为16位立即数,表示数据存储器位双寻址操作数, Pmad为16位立即数,表示程序存储器地址。

8. 程序计数器的值可以通过复位操作、顺序执行指令、分支转移,累加器转移,块重复,子程序调用,从累加器调用子程序,中断等操作改变。

9. C54x DSP芯片采用了6级流水线的工作方式,即一条指令分为预取指、取指、译码、寻址、读数和执行6个阶段。

10. 解决MMR写操作的流水线冲突时,一般可用采用推荐指令和插入空操作指令的方法。

11. C54x DSP定时器由3个16位存储器映射寄存器组成:定时器寄存器(TIM)、定时器周期寄存器(PRD)和定时器控制寄存器(TCR)。 12. 主机接口(HPI,Host Port Interface)是TMS320C54x 系列定点芯片内部具有的一种接口部件,主要用于DSP与其他总线或CPU进行通信。 13. C54x DSP的指令系统有助记符指令和代数指令两种形式。

14. COFF目标文件中.text段通常包含可执行代码,.data段通常包含己初始化的数据,.bss段中通常为未初始化的数据保留空间。

15. DSP芯片的开发工具可以分为代码生成工具和代码调试工具两类。 16. DSP芯片按照其用途分类,可以分为通用型和专用型两种。

17. 在堆栈操作中,PC当前地址为4020h,SP当前地址为0033h,运行PSHM AR2后,PC=4021h , SP=0032h。(PSHM AR2为单字指令)

18. TMS320C54xDSP芯片四种串行口类型是指SP、BSP、McBSP和TDMcBSP。 19. 请简要说明TMS320C5402VCDSP以下引脚的功能:RS:复位引用脚,

第页(共 2 页) 2

IOSTRB:I//O选通信号引脚。

20. TMS320C54xDSP的内部总线主要包括程序总线、数据总线和地址总线。 21. DSP的狭义理解为数字信号处理器,广义理解为数字信号处理方法。 22. 在直接寻址中,指令代码包含了数据存储器地址的低 7 位。当ST1中直接寻址编辑方式位CPL=0 时,与DP相结合形成16位数据存储器地址;当CPL =1 时, ST1中直接寻址编辑方式位加上SP基地址形成数据存储器地址。

23. TMS320C54有两个通用引脚,BIO和XF, BIO 输入引脚可用于监视外部接口器件的状态; XF 输出引脚可以用于与外部接口器件的握手信号。 24. 累加器又叫做目的寄存器,它的作用是存放从ALU或乘法器/加法器单元输出的数据。它的存放格式为

39~32 保护位 31~16 高阶位 15~0 低阶位 25. 桶形移位器的移位数有三中表达方式:立即数; ASM ; T低6位 26. DSP可以处理双16位或双精度算术运算,当 C16=0 为双精度运算方式,当 C16=1 为双16位运算方式。

27. 复位电路有三种方式,分别是上电复位;手动复位;软件复位。

28. 立即数寻址指令中在数字或符号常数前面加一个 # 号,来表示立即数。 29. 位倒序寻址方式中,AR0中存放的是 FFT点数的一半。

30. 一般,COFF目标文件中包含三个缺省的段:.text 段;.data 段和.bss 段。 31. 汇编源程序中标号可选,若使用标号,则标号必须从第一列开始;程序中可以有注释,注释在第一列开始时前面需标上星号或分号,但在其它列开始的注释前面只能标分号。

32. C5402有23条外部程序地址线,其程序空间可扩展到1M,内程序区在第0页。

33. 累加器A分为三个部分,分别为 AG ; AH ; AL 。

34. TMS320VC5402型DSP的内部采用 8 条 16 位的多总线结构。 35. TMS320VC5402型DSP采用哈佛总线结构对程序存储器和数据存储器进行控制。

第页(共 2 页) 3

36. TMS329VC5402型DSP有 8 个辅助工作寄存器。

37. DSP处理器TMS320VC5402中DARAM的容量是 16K 字。 38. TI公司的DSP处理器TMS320VC5402PGE100有____2_______个定时器。 39. 在链接器命令文件中,PAGE 0通常指__程序______存储空间,PAGE 1通常指___数据_____存储空间。

40. C54x的中断系统的中断源分为___硬件____中断和____软件____中断。 41. TI公司DSP处理器的软件开发环境是CCS(Code Composer Studio)。 42. DSP处理器TMS320VC5402外部有____20_______根地址线。 43. 直接寻址中从页指针的位置可以偏移寻址 128 个单元。

44. C54x系列DSP处理器中,实现时钟频率倍频或分频的部件是_锁相环PLL ____________。

45. TMS320C54x系列DSP处理器上电复位后,程序从指定存储地址__ FF80h ______单元开始工作。

46. TMS320C54x系列DSP处理器有__2___个通用I/O引脚,分别是___ BIO和XF ______。

47. DSP处理器按数据格式分为两类,分别是__定点DSP和浮点DSP。 48. TMS329VC5402型DSP的ST1寄存器中,INTM位的功能是开放/关闭所有可屏蔽中断。

49. MS320C54X DSP主机接口HPI是_____8___位并行口。

50. 在C54X系列中,按流水线工作方式,分支转移指令的分为哪两种类型:_无延迟分支转移______;__延迟分支转移_____。

51. C54x的程序中,“.bss”段主要用于_____为变量保留存储空间___。 52. 从数据总线的宽度来说,TMS320VC5402PGE100是____16___位的DSP处理器。

53. TMS320VC5402型DSP处理器的内核供电电压_1.8v _______伏。 54. TMS320C5402系列DSP处理器最大的数据存储空间为_64K ____字。 55. DSP技术是利用专用或通用数字信号处理芯片,通过_数值运算_运算的方法对信号进行处理。

56. C54x的程序中,“.text”段是__文本段_______段,主要包含_____可执行文

第页(共 2 页) 4

本__________。

57. C54x系列DSP上电复位后的工作频率是由片外3个管脚CLKMD1;CLKMD2;CLKMD3来决定的。

58. DSP处理器TMS320C5402最大的程序存储空间为_1M____字。

59. 从应用领域来说,MCU(单片机)主要用于_控制领域______________;DSP处理器主要应用于____信号处理_______________。

60. TMS320C54X DSP提供一个用16位堆栈指针(SP)寻址的软件堆栈。当向堆栈中压入数据时,堆栈是从高地址向低地址方向填入。

61. TMS320C54X DSP软硬件复位时,复位中断向量的地址为程序空间的____ FF80H____。

62. TMS320C54X可编程定时器的定时周期 =(时钟周期)*(分频系数TDDR+1)*(_ PRD ___ +1)。

63. DSP处理器的英文全称Digital Signal Processor。

64. DSP处理器TMS320VC5402的IO管脚供电电压___3.3v _____伏。 65. C54x的程序中,“.data”段是_数据段________段,主要用于_______通常包含初始化数据________。

66. DSP处理器TMS320C5402的I/O空间为_64K _ __字。 67. TMS320VC5402型DSP的累加器是40位。

68. TMS329VC5402型DSP的MP/MC管脚的功能是微计算机或是微处理器工作模式。

69. TMS320VC5402型DSP的CPU采用桶形移位寄存器寄存器作为专用硬件实现移位功能。

70. 汇编语句“STL A,@y”中“@y”表示直接寻址寻址方式。

71. TMS320VC5402型DSP的ST1寄存器中,CPL位的功能是指示直接寻址采用何种指针。

72. 解释汇编语句“READA *AR1”的功能:以累加器A的内容作为地址读取程序存储单元,将读取的数据存入以AR1的内容作为地址的数据存储单元中。

73. TMS320C54X具有两个通用I/O口,_ BIO _______用于输入外设的状态;

第页(共 2 页) 5

__ XF ______用于输出外设的控制信号。

74. 在C语言和C55x汇编语言的混合程序设计中,C函数的参数和返回值传递到C55x的寄存器中。在函数“long func(int *p1, int i2, int i3, int i4)”中,*p1传递到AR0寄存器,i2传递到T0寄存器,i4传递到AR1寄存器,返回值由AC0寄存器传递。

75. 汇编语言“mov *AR0,AC0”使用的寻址方式是间接寻址模式 ,“mov #0x3,DPH”使用的寻址方式是直接寻址模式,“mov *(#0x011234),T2”使用的寻址方式是绝对寻址模式 。

76. 指令执行前AC0的值是0012345678,那么汇编语句“AND #0x7f, AC0”,执行之后,AC0的值是0000000078。

77. C55x 的链接器命令文件中,SECTIONS命令的主要作用是告诉链接器如何将输入段组合成输出段,以及在存储器何处存放输出。MEMORY命令的主要作用是定义目标系统的存储器配置图,包括对存储器各部分的命名,以及规定它们的起始地址和长度。 78. 指令ADD *AR3+, T0, T1 ;

79. 设执行前 (AR3)=0302H (T0)=3300H (T1)=0 CARRY=0 数据存储器(0302H)=EF00H,求该指令执行后

(AR3)=_________ (T0)= _________ (T1)= _________ CARRY=_________ (0302H)=_______ 80. 已知AC1=0200FC00H,AR3=0200H,(200H)=3400H.

MOV *AR3+<<#16,AC1

执行上面指令后,(AC1)=_________ (AR3)=_________ 81. 根据任务调度的方式不同,C55X处理器程序可以分为两大类: 一类是______________________________________________________ 另一类是______________________________________________________ 82. Texas instrument 公司的DSP集成开发环境_________是一个在Windows操作系统下,为开发TMS320系列DSP而设计的集成开发环境。 83. TMS320C54X DSP共有种基本数。

84. DSP实现FIR滤波器延时一个采样周期的方法有两种,一是采用缓冲区法,二是采用缓冲器法。

85. DSP技术是利用专用或通用数字信号处理器芯片,通过的方法对信号进行处理。

第页(共 2 页) 6

86. TMS320C54X DSP可编程定时器的定时周期=(时钟周期)×(定标器+1)×(+1)。

87. TMS320C54X DSP具有两个通用I/O口,用于输入外设的状态;用于输出外设的控制信号。

88. DSP的基本结构是采用____________结构,即程序和数据是分开的。

89. LF2407 DSP器件有两个复位源一个是外部复位引脚的电平变化引起的复位,另一个是____________________溢出引起的复位。

90. DSP芯片的前缀“LF”说明片内有___________存储器;而以“LC”为前缀的芯片,片内有____________工艺的程序存储器。

91. 寄存器ST1的CNF位决定B0的作用,当CNF=________时,映射到程序存储空间,CNF=__________时映射到数据存储空间。

92. 当工作于______________计数模式时,通用定时器会产生一个非对称波形。 93. 若系统时钟频率为40MHz,SCI的BRR值设置为4,则SCI的异步波特率为_________。

94. WD复位关键字寄存器(WDKEY),向WDKEY写入55h后紧接着写入_________则清楚WDCNTR寄存器。

95. 未初始化段为没有初始化的数据存储空间,包括__________段以及由汇编器伪指令.sect产生的命名段。

96. 同传统的单片机中断处理方式类似,DSP中断的处理也有两种方法,分别是__________和____________。

97. DSP对外部存储器和外部功能器件的片选方法有两种:___________和____________。

一、选择题

1、对于TMS320C54x系列DSP芯片,下列说法正确的是 ( C )

(A) 专用型DSP (B)32位DSP (C) 定点型DSP (D) 浮点型DSP 2、要使DSP能够响应某个可屏蔽中断,下面的说法正确的是 (B )

A. 需要把状态寄存器ST1的INTM位置1,且中断屏蔽寄存器IMR相应位置0

B. 需要把状态寄存器ST1的INTM位置1,且中断屏蔽寄存器IMR相应位置1

C. 需要把状态寄存器ST1的INTM位置0,且中断屏蔽寄存器IMR相应位置0

第页(共 2 页) 7

D. 需要把状态寄存器ST1的INTM位置0,且中断屏蔽寄存器IMR相应位置1

3、若链接器命令文件的MEMORY部分如下所示: MEMORY {

PAGE 0: PROG: origin=C00h, length=1000h PAGE 1: DATA: origin=80h, length=200h }

则下面说法不正确的是(A)

A、 程序存储器配置为4K字大小 B、程序存储器配置为8K字大小 C、数据存储器配置为512字大小 D、数据存储器取名为DATA

4、C54X DSP的流水线是由(B)级(也即是由多少个操作阶段)组成。 (A) 4 (B) 6 (C) 8 (D) 10

5、假定AR3中当前值为200h,AR0中的值为20h,下面说法正确的是() A、在执行指令*AR3+0B后,AR3的值是200h; B、在执行指令*AR3-0B后,AR3的值为23Fh; C、在执行指令*AR3-0B后,AR3的值是180h; 6、下面对一些常用的伪指令说法正确的是:(D)

A、.def所定义的符号,是在当前模块中使用,而在别的模块中定义的符号; B、.ref 所定义的符号,是当前模块中定义,并可在别的模块中使用的符号; C、.sect命令定义的段是未初始化的段; D、.usect命令定义的段是未初始化的段。

7、在采用双操作数的间接寻址方式时,要使用到一些辅助寄存器,在此种寻址方式下,下面的那些辅助寄存器如果使用到了是非法的(D) A、AR2 B、AR4 C、AR5 D、AR6

8、目前市场上最大的DSP生产厂商是 ( ) A、Motorola B、TI C、Zilog D、ADI

9、TMS320C6000系列的主要应用领域为 ( ) A、测控领域 B、无线通信设备 C、有线通信设备 D、无线基站

10、溢出方式标志位OVM=0且运算溢出,若为正溢出,则ACC中的值为( ) A、7FFF FFFFh B、8000 0000h C、FFFF FFFFh D、正常溢出

11、看门狗定时器时钟频率是CPU时钟频率的 ( ) A、1/128倍 B、1/256倍 C、1/512倍 D、1/1024倍 12、事件管理器中通用定时器的输入外部时钟TCLKINA/B,最高频率是CPU时钟频率的 ( ) A、1/4 B、1/8 C、1/16 D、1/24 13、DSP系统开发的硬件实现中,元件选择属于 ( ) A、系统分析 B、系统综合 C、技术指标 D、确定方案

第页(共 2 页) 8

14、仿真系统中,主机通过仿真器与目标系统的( )接口相连。 A、JTAG B、PCI C、并口 D、USB接口 15、下列段不属于COFF目标文件的是 ( ) A、.text B、.data C、.bss D、.prj

16、目标文件的.bss段对应的虚拟的目标存储器是 ( ) A、RAM B、EEPROM C、ROM D、FLASH

17、下列表达式中不正确的是 ( ) A、10/-3=-3 B、-10/3=-3 C、10%-3=-1 D、-10%3=-1 18、TMS320C54X DSP软硬件复位时,中断向量为。 A. FF00H B. FF80H C. 0080H D. 0000H

19、TMS320C54X DSP主机接口HPI是位并行口。 A. 32 B.16 C. 8 D. 2

20、TMS320C54X DSP采用改进的哈弗结构,围绕条位总线建立。 A. 8、16 B. 16、8 C. 8、8 D. 16、16

21、TMS320C54X DSP多通道缓冲串口(MCBSY)发送和接收通道数最多可达路。

A. 128 B. 64 C. 32 D. 16

22、TMS320C54X DSP的32个中断源分为14级,其中级别最高。 A. INTR B. NMI C. RS D. INTO

23、TMS320C54X DSP共有129条指令,分为大类。 A. 6 B. 5 C. 4 D. 3

24、TMS320C54X DSP最多可与个器件进行时分串行通信。 A. 16 B. 8 C. 4 D. 2

25、可编程数字信号处理器简称。 A. CPU B. DSP C. MCS D. MCU 二、判断题

1、TMS320C54X DSP缓冲串行接口是在同步串口基础上,增加了一个自动缓冲单元,主要提供灵活的数据串长度,并降低服务中断的开销。()

2、循环缓冲区是一个滑动窗,包含最近的数据,若有新的数据到来,它将覆盖旧的数据。()

3、浮点DSP与定点DSP相比,价格便宜,功耗较小,运算精度稍低。() 4、TMS320C54X DSP的40位ALU和累加器仅支持16位算数运算。()

5、TMS320C54X DSP功耗低,大运算量,主要用于便携式信息处理终端产品。()

6、根据芯片工作的数据格式,按其精度或动态范围,可将通用DSP划分为定点DSP和浮点DSP两类()

7、数值范围与精度是一对矛盾,一个变量要想能够表示比较小的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范围就相应地增大() 8、C55xDSP的存储空间包括:统一的数据、程序和I/O空间()

9、当CPU从程序空间读取程序代码时,使用23位地址,当访问数据空间时,使用24位的地址()

10、C55x DSP采用字寻址来读/写数据空间的8位、16位或32位数据()

第页(共 2 页) 9

11、当CPU存取长字时,存取地址是指32位数据的低16位(LSW)的地址,而高16位(MSW)的地址取决于LSW的地址()

12、TMS320C55x 的寻址空间为16MB,在访问程序空间时,将23位地址左移一位,并将地址总线上的最低有效位(LSB)置0,使得在对数据空间或程序空间寻址时,地址总线都传送24位地址()

13、C55X DSP支持的间接寻址模式只有AR间接寻址和双AR间接寻址() 14、C55x DSP的C语言开发支持的数据类型包括:char,signed char,int,unsigned int,float等,其中 char类型的长度是8位()

15、用C语言进行C55x DSP开发时,指针分为程序指针和数据指针两种,其区别在于程序指针寻址是按字寻址,而数据指针以字节为单位进行寻址() 16、C55x DSP的C编译器把C/C++代码转换成汇编源代码,如果用户只用汇编语言编写程序,则将跳过C编译器而直接通过汇编器生成目标文件()

17、ioport类型只能用来声明全局或静态变量,如果在本地变量中使用ioport类型,则变量必须用指针声明()

18、ioport int * ptr_to_ioport;这里定义了一个指向IO空间的数据空间指针,即该指针在数据空间定义,但指向IO空间()

19、int * ioport ioport_pointer;这里定义了一个指向数据空间的IOPORT类型的指针,即该指针在数据空间定义,但指向IO空间()

20、通用目标文件格式中的段可以分成两大类——初始化段和未初始化段,其中.bss段属于初始化段()

21、DSP 处理器TMS320VC5402的供电电压为5V。() 22、DSP的工作频率只能是外部晶体振荡器的频率。() 23、TMS320C54X DSP是浮点型处理器。() 24、TMS320C54X DSP的汇编语言中有除法指令。() 25、TMS320VC5402型DSP内部有8K字的ROM,用于存放自举引导程序、u律和A律扩展表、sin函数表以及中断向量表。

26、DSP的流水线冲突产生的原因是由于DSP运行速度还不够快。() 27、TMS320C54X系列DSP外部程序存储器的分页扩展受DROM位控制。() 28、TMS320C54X DSP是浮点型处理器。() 29、 DSP的工作频率只能是外部晶体振荡器的频率。() 30、TMS320C54X DSP的汇编语言中有除法指令。() 31、汇编伪指令可以用大写表示。() 32、DSP的流水线冲突产生的原因是由于DSP运行速度还不够快。() 33、 TMS320VC5402型DSP汇编指令READA的寻址范围为64K字。() 34、TMS320VC5402型DSP可以通过设置DROM位实现数据存储空间和程序存储空间共享片内DARAM。

35、TMS320VC5402型DSP汇编指令READA的寻址范围为64K字。() 36、TMS320C54X系列DSP可以通过设置OVLY位实现数据存储空间和程序存储空间共享片内ROM。() 37、TMS320VC5402型DSP汇编语言的伪指令也是一种指令,同样占用存储空间。() 38、TMS320VC5402型DSP的工作频率是由外部晶振唯一确定的。() 39、DSP 处理器TMS320VC5402的中断向量表位置是固定的。() 40、 TMS320VC5402型DSP可以通过设置DROM位实现数据存储空间和程序

第页(共 2 页) 10

器映像寄存器MMR 21、在C54x的汇编语言中,使用“#”、 “*”、 “@”符号作为操作数的前缀各表示什么意思?

答:使用“#”号作为前缀,汇编器将操作数作为立即数处理。即使操作数是寄存器或地址,也将作为立即数。

使用“*”符号作为前缀,汇编器将操作数作为间接地址,即把操作数的内容作为地址。

使用“@”符号作为前缀,汇编器将操作数作为直接地址,即操作数由直接地址码赋值。

22、简述COFF文件中“ 段”的概念,有哪些常用的段?

答:段是COFF文件中最重要的概念。每个目标文件都分成若干段。段——是存储器中占据相邻空间的代码或数据块。一个目标文件中的每个段都是分开的和各不相同的。

.text 段(文本段),通常包含可执行代码; .data 段(数据段),通常包含初始化数据;

.sect段——已初始化段,由汇编器伪指令建立的自定义段。 .bss段——未初始化段;

.usect段——未初始化段,由汇编命令建立的命名段(自定义段)。 23、简述链接器命令文件中MEMORY和SECTIONS两条指令的作用。

答:MEMORY伪指令——用来定义目标系统的存储器配置空间,包括对存储器各部分命名,以及规定它们的起始地址和长度。

SECTIONS伪指令——用来指定链接器将输入段组合成输出段方式,以及输出段在存储器中的位置,也可用于指定子段。

24、已知DSP的工作时钟为20MHZ,现需要用定时器定时10ms,请问PRD和TDDR寄存器的初始值如何确定?

答:(PRD)=19999,(TDDR)=9;或(PRD)=49999,(TDDR)=4 25、一个典型的DSP系统通常由哪些部分组成?画出框图.

DSP芯片及DSP基本系统、程序和数据存储器、数/模和模/数转换器、模拟控制与处理电路、各种控制口和通信口、电源处理电路和同步电路等。 防混叠 信 ADC 控制口 滤波器 号 ? ? 预 ? ? 处 ? ? 防混叠 理 EPROADC 滤波器 、 M TMS320C MUX 54x 、 平滑 RAM DAC 程 滤波 ? ? 控 ? ? 放

第页(共 2 页) 16

大 等 ? 平滑滤波器 DAC ? 通信口 26、数字信号处理技术及算法在工程实践中常见的实现方法有哪些? 答:数字信号处理技术及算法在工程实践中常见的实现方法有: ①在通用计算机(PC机)上用软件(如Fortran、C语言)实现 ②在通用计算机系统中加入专用的加速处理机实现 ③用单片机实现

④用通用的可编程DSP芯片实现

⑤用专用的DSP芯片实现,可用在要求信号处理速度极快的特殊场合,如专用于FFT、数字滤波、卷积、相关算法的DSP芯片 ⑥用基于通用DSP核的ASIC芯片实现。

27、简述冯·诺依曼结构、哈佛结构和改进的哈佛结构之间的区别。 答:冯·诺伊曼(Von Neuman)结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。

哈佛(Harvard)结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。

改进型的哈佛结构是采用双存储空间和数条总线,即一条程序总线和多条数据总线。允许在程序空间和数据空间之间相互传送数据,使这些数据可以由算术运算指令直接调用,增强芯片的灵活性;提供了存储指令的高速缓冲器(cache)和相应的指令,当重复执行这些指令时,只需读入一次就可连续使用,不需要再次从程序存储器中读出,从而减少了指令执行作需要的时间。 28、简述链接命令文件(·cmd文件)的功能。 答:链接命令文件(·cmd文件)指定存储器的结构和段的定位,有MEMORY和SECTIONS两条指令。

MEMORY伪指令——用来定义目标系统的存储器配置空间,包括对存储器各部分命名,以及规定它们的起始地址和长度。

SECTIONS伪指令——用来指定链接器将输入段组合成输出段方式,以及输出段在存储器中的位置,也可用于指定子段。

29、简述DSP处理器中断系统分为几种中断,如何清除中断标志?

答:硬件中断:由片外管脚和片内外设引起的中断,又分为可屏蔽中断和非屏蔽中断。

软件中断:软件中断是由程序指令产生的中断请求, 有三种情况将清除中断标志:

(1)软件和硬件复位,即’C54x的复位引脚RS=0; (2)相应的IFR标志位置1;

(3)使用相应的中断号响应该中断,即使用INTR #K指令。

30、简述C54x系列DSP定时器的组成部分、各部分分别起什么作用?

答:定时器主要由定时寄存器TIM、定时周期寄存器PRD、定时控制寄存器TCR及相应的逻辑控制电路组成。定时周期寄存器PRD用来存放定时时间,定时寄存器TIM为16位减1计数器,定时控制寄存器TCR存放定时器的控制位和状态位,逻辑控制电路用来控制定时器协调工作。

第页(共 2 页) 17

31、简述DSP处理器TMS320VC5402在微计算机工作模式中上电启动的过程。 答:DSP上电复位后,程序PC指针跳转到0xff80位置,在芯片的0xff80这个单元中存储着跳转指令、程序自动跳转到0xF800,开始执行自举装载程序,自举装载程序将片外存储器的程序搬运到DSP程序存储空间的某个地方,自举装载程序的最后一条指令是跳转指令,程序接着跳转到刚才搬运在程序存储空间的某个地址,从而开始程序的自动运行。

32、简述TI公司C2000, C5000, C6000系列处理器的应用范围。 答:C2x、C24x称为C2000系列,主要用于数字控制系统;

C54x、C55x称为C5000系列,主要用于功耗低、便于携带的通信终端;

C62x、C64x和C67x称为C6000系列,主要用于高性能复杂的通信系统, 如移动通信基站。 33、在C54x的程序中,“.text”和“.sect”段有什么区别?

答:在程序中,所有的“.text”段在编译时合并为一个“.text”段,并将其定位在一个连续的存储空间中。 在“.sect”定义的段中,由于不同的段均有不同的段名,因此不同段名的“.sect”段不会合并为一个段,而且可以分别定位在程序存储空间的不同位置。

34、简述C54x系列DSP的定时器工作过程。

答:① 定时分频系数和周期数分别装入TCD和PRC寄存器中; ② 每来一个定时脉冲CLKOUT,计数器PSC减1; ③ 当PSC减至0时,PSC产生借位信号;

④在PSC的借位信号作用下,TIM减1计数,同时将分频系数装入PSC,重新计数;

⑤ 当TIM减到0时,定时时间到,由借位产生定时中断TINT和定时输出TOUT,并将PRD中的时间常数重新装入TIM。 35、简述PMST寄存器中IPTR的作用。

答:C54x的中断向量地址是由PMST寄存器中的IPTR(9位中断向量指针)和左移2位后的中断向量序号所组成。

中断向量地址=IPTR+(左移2位的中断向量序号) 36、简述PMST寄存器中IPTR的作用。

答:C54x的中断向量地址是由PMST寄存器中的IPTR(9位中断向量指针)和左移2位后的中断向量序号所组成。

中断向量地址=IPTR+(左移2位的中断向量序号) 37、宏指令与子程序有哪些区别?

答:⑴宏指令和子程序都可以被多次调用,但是把子程序汇编成目标代码的过程只进行一次,而在用到宏指令的每个地方都要对宏指令中的语句逐条地进行汇编。

⑵在调用前,由于子程序不使用参数,故子程序所需要的寄存器等都必须事先设置好;而对于宏指令来说,由于可以使用参数,调用时只要直接代入参数就行了。 38、.TMS320C54X DSP的程序代码或数据以段的形式装载于存储器中,段可分为哪两种基本类型?有哪5条伪指令来建立和管理各种各样的段?并指明各伪指令的功能。

答:段分为初始化段和未初始化段。

.text 段(文本段),通常包含可执行代码;

第页(共 2 页) 18

.data 段(数据段),通常包含初始化数据;

.sect段——已初始化段,由汇编器伪指令建立的自定义段。 .bss段——未初始化段;

.usect段——未初始化段,由汇编命令建立的命名段(自定义段)。 39、如何实现DSP由一种工作频率切换到另外一种工作频率? 答:步骤1:复位PLLNDIV,选择DIV方式; 步骤2:检测PLL的状态,读PLLSTATUS位; 步骤3:根据所要切换的倍频,确定乘系数;

步骤4:由所需要的牵引时间,设置PLLCOUNT的当前值; 步骤5:设定CLKMD寄存器。

40、简述DSP处理器中断系统分为几种中断,如何清除中断标志?

答:硬件中断:由片外管脚和片内外设引起的中断,又分为可屏蔽中断和非屏蔽中断。

软件中断:软件中断是由程序指令产生的中断请求,(5) 有三种情况将清除中断标志:

(1)软件和硬件复位,即’C54x的复位引脚RS=0; (2)相应的IFR标志位置1;

(3)使用相应的中断号响应该中断,即使用INTR #K指令。(5) 41、根据你的理解,试列举 DSP 芯片的特点?(5分)

答:哈佛结构;多总线结构;指令系统的流水线操作;专用的硬件乘法器;特殊的DSP指令;快速的指令周期;丰富的外设

42、TMS320C55x 芯片的总线结构有何特点,主要包括哪些总线?它们的功能是什么?(6分)

答:TMS320C55x DSP采用先进的哈佛结构并具有十二组总线,其独立的程序总线和数据总线允许同时读取指令和操作数,实现高度的并行操作。

采用各自分开的数据总线分别用于读数据和写数据,允许CPU在同一个机器周期内进行两次读操作数和一次写操作数。独立的程序总线和数据总线允许CPU同时访问程序指令和数据。

包括12条总线,分别是:PAB和PB、BAB和BB、CAB和CB、DAB和DB、EAB和EB、FAB和FB。 功能:

43、DSP 为了降低功耗采取了哪些措施?(6分) 答:双电压供电;多种工作模式

44、TMS320C55x 的总存储空间为多少?可分为哪 3 类,它们的大小是多少?存储器空间的各自作用是什么?(6分)

答:程序空间16M Byte;I/O空间64K Words;数据空间8M Words

45、TMS320C55x有哪些寻址方式,它们是如何寻址的?试为每种寻址方式列举一条指令(6分)

答:直接寻址模式,mov #K16,DP;

间接寻址模式,mov *AR0,AC0;

绝对寻址模式,mov *(#0x011234),T2; MMR寻址模式,mov *abs16(#AR2), T2; 寄存器位寻址模式,btstp @30, AC1; 圆形寻址模式。

第页(共 2 页) 19

46、将C源程序转换成可执行文件需要经过哪些步骤?(6分)

答:创建C源文件;创建工程文件;创建连接器命令文件;编译整个工程文件;链接;生成可执行文件

47、常用的TMS320C55x汇编命令有哪些,它们的作用是什么?(5分)

48、常见DSP的运算速度指标有如下几种,请给出其具体含义。(7分) (1)指令周期 (2) MIPS (3) MOPS (4) MFLOPS (5) BOPS (6)MAC时间 (7)FFT执行时间

49、TMS320C55x DSP内部促CPU包含哪几个单元(4分),各有什么功能 50、简述数字信号处理器的主要特点。21、TMS320C55x DSP的内部体系结构包含哪几条总线,分别是多少位?

51、循环寻址中,如何确定循环缓冲的起始地址?如果循环缓冲大小为17,其起始地址必须从什么地址开始?BK初始化为多少? 52、DSP实现FIR滤波器的基本运算有哪些?

第页(共 2 页) 20

53、TMS320C54X DSP片内可编程定时器有哪些主要特征?

54、请简述一下TMS320C54X DSP如何将三个独立的可寻址存储空间分开,又是通过哪些信号完成对外部程序或数据存储器的访问、I/O设备的访问和控制数据传送方向?

55、链接命令文件CMD的作用是什么?该文件由哪些部分组成?

56、TMS320C54X DSP的串行接口有哪几种类型?它们之间有什么区别?

57、请用方框图描述一个你熟悉的实用数字信号处理器系统,并做简要的分析;如果没有,也可以自己设计一个简单的数字信号处理器系统,并描述其功能及用途。

58、数字滤波器的分类和结构特点。 59、IIR、FIR滤波器的异同。

60、DSP和通用处理器在结构上有什么不同?请简要画出你熟悉的一种DSP结构图。说说定点DSP和浮点DSP的定义 四、阅读程序填空 1.BANZ 2000h, *AR3-

指令执行前指令执行后PCAR31000005PCAR32000004 2.CMPR GT, AR3

指令执行前指令执行后TCAR0AR31FFFF7FFFTCAR0AR30FFFF7FFF 3.ADD *AR3+, 14, A

指令执行前指令执行后ACAR3SXM00 0000 1200101001ACAR3SXM00 0540 1200001011Data Memory0100h15000100h1500 4.SUB A, -8, B

第页(共 2 页) 21

指令执行前指令执行后ABCSXM00 0000 120000 0000 1800x1ABCSXM00 0000 120000 0000 17EE11 5.MPY *AR3+, A

指令执行前指令执行后ATAR300 0000 120000040100ATAR300 0000 004000040101Data Memory0100h00100100h0010 6.

.def _c_int00

.mmregs

stack: .usect \ .bss a,4 .bss x,4 .bss y,1 .data

table: .word 1,2,4,3 .word 8,6,4,2 .text

_c_int00:STM#stack+10h,sp STM #a,AR1 RPT #7

MVPD table,*AR1+ CALL sum end: B end

sum: STM #a,AR3 STM #x,AR4 RPTZ A,#3

MAC *AR3+,*AR4+,A STL A,@y ret .end

(1) 说明该程序的功能:(4分)

第页(共 2 页) 22

答:a1*x1=a2*x2+a3*x3+a4*x4 (2) 说明以下各量的理论值(4分)

A: 2A a1的地址:81H 内容:1 AR1: 88H AR3: 84H 7. 阅读下面的程序,回答问题。 .bss x, 8

LD #0001H,16,B STM #7,BRC STM #x,AR4 RPTB next-1

ADD *AR4,16,B,A STH A,*AR4+ next: LD #0,B 问题:

(1)寄存器“BRC”的功能是什么?

寄存器“BRC”的功能是暂存块循环的次数

(2)汇编语句“ADD *AR4,16,B,A”执行了多少次? 8次

(3)执行语句“LD #0001H,16,B”后,累加器B的内容是多少? B=0x0100H;

8.阅读下面的程序:

.mmregs DAT0 .SET 60H DAT1 .SET 61H DAT2 .SET 62H DAT3 .SET 63H

add3 .macro P1,P2,P3,ADDRP LD P1,A ADD P2,A ADD P3,A STL A,ADDRP .endm

ST #0034h,DAT0

ST #0243h,DAT1 ST #1230h,DAT2 ADD3 DAT0,DAT1,DAT2,DAT3 问题:

(1) 语句“.mmregs”的含义。

定义存储器映像寄存器的符号名称。

(2) 语句“ADD3 DAT0,DAT1,DAT2,DAT3”是一条什么类型的语句?作用是什么?

宏调用。执行三个数相加。

(3)执行此段程序后,存储单元(DAT3)的运行结果多少? 14a7H

第页(共 2 页) 23

9.阅读下面的程序片段,写出运行结果 .mmregs DAT0 .SET 60H LD #004h,DP

ST #0345h,DAT0

STM #0002h,T MPY DAT0,A NOP NOP

问题:(1)寄存器T的作用是什么? 寄存器T的作用是暂存被乘数,

(2)执行“MPY DAT0,A”后,累加器A的内容是什么?: 累加器A的内容为0x68A或68Ah 10.阅读程序,回答后面的问题 STM #6,AR4

begin: STM #9,BRC RPTB next-1 nop

next: LD #0,B

banz begin,*AR4-

问题:(1) BRC寄存器是做什么用途? BRC保存着RPTB指令的循环次数

(2)语句“banz begin,*AR4-”的作用是什么?

判断AR4的内容是否为零,若不为零,跳转到标号begin。 (3) 其中的“nop”语句被执行了多少次? 70次

11.已知DSP的三个时钟引脚状态CLKMD1-CLKMD3=111,外部晶振=10MHz,参数设置表: CLKMD1 CLKMD2 CLKMD3 CLKMD复位时钟方式 值 0 0 0 E007H PLL×15 0 0 1 9007H PLL×10 0 1 0 4007H PLL×5 1 0 0 1007H PLL×2 1 1 0 F007H PLL×1 1 1 1 0000H 2分频 1 0 1 F000H 4分频 STM #00H,CLKMD Status:LDM CLKMD,A AND #01H,A BC Status,ANEQ

STM #9007H,CLKMD

问题(1)DSP复位后,DSP的工作时钟是多少? 5MHz

第页(共 2 页) 24

(2)执行上面的程序片段后,DSP的工作时钟是多少?

100MHz

12.阅读下面的程序片断,写出运行结果 .mmregs bei_hua .set 18

LD # bei_hua,A

问题:(1)“.mmregs”的作用是什么? 定义存储器映像寄存器的符号名称

(2) 运行此段程序后,累加器A的结果是多少? A的结果是18

13.阅读下面的程序,回答问题。

.sect \

rst: B _c_int00 ;复位中断向量的入口 NOP NOP .space 18*4*16

tint: B timeout ;定时器0的中断向量的入口 NOP NOP

问: (1) “.sect”伪指令的作用是什么? 定义一个自定义段名的程序段

(2) 标号“rst”的地址为6000H,请问标号“tint”的地址是多少? 604Ch

14. 阅读下面的命令连接文件(简称CMD文件)和程序文件: CMD文件: MEMORY {PAGE 0: PROG: origin = 0x1000, length = 0x1000 PAGE 1: DATA: origin = 0x2000, length = 0x1000 }

SECTIONS { .text: {} > PROG PAGE 0 .data: {} > DATA PAGE 1 }

.data

table: .word 1,2,3,4 ; 变量初始化

.text

start:STM # 0,SWWSR ; 插入0个等待状态 问:(1)MEMORY和SECTIONS的作用各是什么?

MEMORY和SECTIONS链接伪指令,用来指定目标存储器结构和地址分配。

(2)标号“table”和“start”的地址分别是什么,分别位于程序空间还是数据空间?

标号table:1000h(程序空间) 标号start:2000h(数据空间)

第页(共 2 页) 25

15.阅读下面的程序片断,回答下面的问题

DAT0 .SET 60H DAT1 .SET 61H DAT2 .SET 62H DAT3 .SET 63H LD #004h,DP ST #83h,DAT0

ST #0041h,DAT1 RSBX SXM LD DAT0,A RPT #15 SUBC DAT1,A STL A,DAT2 STH A,DAT3 问:在CPL=0的情况下, (1) 语句“STL A,DAT2”,其中DAT2所指的地址是多少?

0262h

(2) 存储单元(DAT2)和(DAT3)的内容是多少? (DAT2)=02H (DAT3)=01H

16.阅读下面的程序,回答问题。 MEMORY {PAGE 0: PROG: origin = 0x2000, length = 0x1000 PAGE 1: DATA: origin = 0x3000, length = 0x1000 }

SECTIONS { .text: {} > PROG PAGE 0 .bss: {} > DATA PAGE 1 }

汇编程序: .bss a,4

.bss x,4 .bss y,1

STM #a, AR3

STM #x, AR4 RPTZ A, #3

MAC *AR3+,*AR4+,A STL A,*(y) 问题:(1)指令“STM #a, AR3”的作用是什么?执行此句指令后,寄存器AR3的内容是多少?

将标号a的地址赋给辅助工作寄存器AR3,AR3=3000h。

(2)指令“MAC *AR3+,*AR4+,A”执行了几次?每执行一次寄存器AR3和AR4的内容如何变化?

执行了4次,每执行一次辅助工作寄存器AR3和AR4的内容增一。 (3)这段代码的功能是什么?

第页(共 2 页) 26

y??aixi

i?1417. 阅读下面的程序,回答问题。 MEMORY {PAGE0: PROG: origin = 0x2000, length = 0x1000

PAGE 1: DATA: origin = 0x4000, length = 0x1000 }

SECTIONS { .text: {} > PROG PAGE 0 STACK: {} > DATA PAGE 1 }

汇编程序

size .set 0x0120

stack .usect “STACK”,size .text

STM #stack+size,SP 问题:(1)指令“stack .usect “STACK”,size”的作用是什么?

定义一个未初始化段,段名为”STACK”,目的是为变量stack保留size个单元的存储空间。

(3) 标号“stack”的存储器地址是多少?

stack的存储空间为0x4000;

(3)执行这段代码之后,SP寄存器的内容是多少?

SP=0x4120;

18. MEMORY {PAGE 0:PROM:org=0E000h,len=100h VECS:org=0FF80h,len=04h PAGE 1:SPRAM: org=0060h,len=20h DARAM:org=0080h,len=100h }

SECTIONS

{.text :>EPROM PAGE 0 .data :>EPROM PAGE 0 .bss :>SPRAM PAGE 1 STACK :>DARAM PAGE 1 vectors :>VECS PAGE 0 } 问题:(1)该文件是如何配置程序空间和数据空间的?

答:该文件使用MEMORY伪指令将程序空间划分为两个小区间:名为PROM的区间其起始地址为0E000h,长度为100h字;名为VECS的区间其起始地址为0FF80h,长度为4字。将数据空间也分为了两个小区间: 名为SPRAM的区间其起始地址为0060h,长度为20h字;名为DARAM的区间其起始地址为0080h,长度为100h字。

(2)该文件中出现了几个段?哪些是初始化段?哪些是未初始化段?各

第页(共 2 页) 27

出现了5个段,.text,.data和vectors是初始化段,.bss和STACK段是未初始化段。

.text和.data分配到程序空间的EPROM区间;.bss分配到数据空间SPRAM区间;STACK段分配到数据空间的DARAM区间; vectors段分配到程序空间的VECS区间。

19.已知DSP的三个时钟引脚状态CLKMD1-CLKMD3=101,外部晶振=10MHz,参数设置表: CLKMD1 CLKMD2 CLKMD3 CLKMD复位时钟方式 值 0 0 0 E007H PLL×15 0 0 1 9007H PLL×10 0 1 0 4007H PLL×5 1 0 0 1007H PLL×2 1 1 0 F007H PLL×1 1 1 1 0000H 2分频 1 0 1 F000H 4分频 STM #00H,CLKMD Status:LDM CLKMD,A AND #01H,A BC Status,ANEQ

STM #9087H,CLKMD

问题:(1)DSP复位后,DSP的工作时钟是多少?

2.5MHz

(2)执行上面的程序片段后,DSP的工作时钟是多少?

100MHz

20. 阅读程序,回答后面的问题

STM #9,AR4

begin: STM #7,BRC RPTB next-1 nop

next: LD #0,B

banz begin,*AR4-

问(1)BRC寄存器是做什么用途? BRC保存着RPTB指令的循环次数

(2)其中的“nop”语句被执行了多少次? 80次

21. 阅读下面的程序,回答问题。 MEMORY {PAGE 0: PROG: origin = 0x2000, length = 0x1000 PAGE 1:DATA: origin = 0x3100, length = 0x1000 }

SECTIONS { .text: {} > PROG PAGE 0 .bss: {} > DATA PAGE 1

第页(共 2 页) 28

}

汇编程序:

.bss x,16

.bss y,16 .text

STM #x,AR2 STM #y,AR3 RPT #15

MVDD AR2+,*AR3+ 问题:(1)变量“x”的存储器地址是多少?位于哪个存储空间(程序还是数据存储空间)。

变量“x”的存储器地址是0x3100;位于数据存储空间

(2) 语句“STM #x,AR2”的作用是什么?执行此句指令后,寄存器AR2

的内容是多少?

将变量“x”的地址赋给辅助工作寄存器AR2,AR2=3100h。

(3)语句“MVDD AR2+,*AR3+”的执行了多少次?每执行一次寄存器AR2和AR3的内容如何变化?

执行了16次,每执行一次辅助工作寄存器AR2和AR3的内容增一。 (4)此段代码的功能是多少?

将数组变量“x”的数据传送到数组变量“y”中。

22.阅读下面的程序,回答后面的问题

.bss x,10 .bss y,1 STM #x,AR1 STM #9,AR2 LD #0,A

loop: ADD *AR1+,A BANZ loop,*AR2- STL A, * (y)

问:(1)解释语句“.bss x,10”的含义。 给x保留10个空间

(2) 解释语句“STL A, * (y)”的含义。

将累加器A的低16位数据存储到变量y中。 (3)这一段程序实现什么功能?

y??xi

i?11023.阅读下面的程序,回答问题。 MEMORY {PAGE 0: PROG: origin = 0x2000, PAGE 1:DATA: origin = 0x3100, }

SECTIONS

length = 0x1000 length = 0x1000

第页(共 2 页) 29

{ .text: {} > PROG PAGE 0 .bss: {} > DATA PAGE 1 }

汇编程序:

.bss x,16

.bss y,16 .text

STM #x,AR2 STM #y,AR3 RPT #15

MVDD AR2+,*AR3+ 问题:(1)变量“x”的存储器地址是多少?位于哪个存储空间(程序还是数据存储空间)。

(2)语句“STM #x,AR2”的作用是什么?执行此句指令后,寄存器AR2的内容是多少?

(3)语句“MVDD AR2+,*AR3+”的执行了多少次?每执行一次寄存器AR2和AR3的内容如何变化? (4)此段代码的功能是多少? 答:(1)变量“x”的存储器地址是0x3100;位于数据存储空间

(2)将变量“x”的地址赋给辅助工作寄存器AR2,AR2=3100h。

(3)执行了16次,每执行一次辅助工作寄存器AR2和AR3的内容增一。 (4)将数组变量“x”的数据传送到数组变量“y”中。

24. 阅读下面的程序片段,回答后面的问题 .sect \rst: B _c_int00 NOP NOP

.space 18*4*16 tint: B timeout NOP NOP

问:(1) “.sect”伪指令的作用是什么?

(2) 标号“rst”的地址为6000H,请问标号“tint”的地址是多少? 答: 定义存储器映像寄存器的符号名称

A的结果是18

25.阅读下面的命令连接文件(简称CMD文件)和程序文件: CMD文件: MEMORY

{ PAGE 0: PROG: origin = 0x1000, length = 0x1000 PAGE 1: DATA: origin = 0x2000, length = 0x1000 }

SECTIONS { .text: {} > PROG PAGE 0

第页(共 2 页) 30

.data: {} > DATA PAGE 1 }

程序文件:

.data

table: .word 1,2,3,4 ; 变量初始化

.text

start: STM # 0,SWWSR ; 插入0个等待状态 问题:(1)MEMORY和SECTIONS的作用各是什么?

(2)标号“table”和“start”的地址分别是什么,分别位于程序空间还是数据空间?

答:定义一个自定义段名的程序段

604Ch

26.已知DSP的三个时钟引脚状态CLKMD1-CLKMD3=110,外部晶振=10MHz,参数设置表: CLKMD1 CLKMD2 CLKMD3 CLKMD复位时钟方式 值 0 0 0 E007H PLL×15 0 0 1 9007H PLL×10 0 1 0 4007H PLL×5 1 0 0 1007H PLL×2 1 1 0 F007H PLL×1 1 1 1 0000H 2分频 1 0 1 F000H 4分频 STM #00H,CLKMD Status:LDM CLKMD,A AND #01H,A BC Status,ANEQ

STM #4087H,CLKMD 问题:(1)DSP复位后,DSP的工作时钟是多少?

(2)执行上面的程序片段后,DSP的工作时钟是多少? 答:(1)10 MHz (5) (2)50MHz (5) 五、程序设计

1.实现计算z=x+y-w的程序。 .title \.mmregs

STACK .usect \.bss x,1

.bss y,1 .bss w,1 .bss z,1 .def start .data

第页(共 2 页) 31

table:.word 10,26,23 .text

start: STM #0,SWWSR

STM #STACK+10h,SP ;初始化堆栈指针SP STM #x,AR1 RPT #2 MVPD table,*AR1+;数据从程序存储器传送到数据存储器 CALL SUMB end: B end SUMB: LD @x,A ADD @y,A

SUB @w,A;实现减法运算 STL A,@z RET .end

2.实现对数组X[5]={1,2,3,4,5}的初始化,然后将数据存储器中的数组X[5]复制到数组Y[5]。最后实现数组X和数组Y中对应元素相乘并累加,即z=1*1+2*2+3*3+4*4+5*5

.mmregs

.bss x, 5 .bss y, 5 .bss z,1 .def start table:.word 1,2,3,4,5 .text

start: STM #x, AR1 RPT 4 MVPD table,*AR1+;从程序存储器传送到数据存储器数组X[5] STM # x, AR2 STM # y, AR3

RPT 4 MVDD *AR1,*AR3 ;从数据存储器数组X[5]传送到Y[5]

SSBX FRCT ;准备整数乘法

STM # x, AR2

STM # y, AR3 STM # z, AR4 RPTZ 4 MAC *AR2+,*AR3+,A STL A,*AR4 End: B end .end

第页(共 2 页) 32

3.写出计算y??xi的主要汇编程序,并给程序添加注释,画出程序的流程图。

i?120解:程序及注释: .bss x, 20 .bss y, 1

STM #x, AR1 STM #19, AR2 LD #0, A

loop: ADD *AR1+, A BANZ loop, *AR2- STL A, @y 流程图:

开始AR1=#x;AR2=19;;给变量x分配20个字单元 ;给变量y分配1个字单元 ;取x地址

;设置循环次数 ;累加器清零 ;累加x分量

;循环是否结束,没有结束则继续累加 ;把结果存入y

A=(AR1)+A;AR2=AR2-1NAR2=0?Yy=AL;

4.在进行DSP的程序设计时,如果程序中要使用堆栈,则必须要先进行设置。下面程序段是对堆栈的设置,完成的功能是在RAM空间开辟了200个字的空间作为堆栈区,请完成程序段。(4分)

size .set (1)

stack .usect “STACK”, size ;…

STM #stack+(2), SP 5.采用TMS320C54xDSP的定时器0产生方波,DSP主频为40MHz。要求:周期为20s的方波发生,从DSP的通用I/O引脚XF输出,定时中断周期为10ms,需要中断1000次,输出端XF引脚电平取一次反。请在空处填写正确指令完成下面程序段。(12分)

;初始化定时器0,定时为10ms,本设置中TDDR=9,PRD=39999,主频为40MHz ;T=25ns

第页(共 2 页) 33

结束 ;定时长度计算公式:T=CLKOUT* (TDDR+1) * (PRD+1)=10ms ;定时器0寄存器地址 TIM0 .set 0024H PRD0 .set 0025H TCR0 .set 0026H

;K_TCR0:设置定时器控制寄存器的内容 K_TCR0_SOFT .set 0b<<11 ;Soft=0 K_TCR0_FREE .set 0b<<10 ;Free=0 K_TCR0_PSC .set 1001b<<6 ;PSC=9H K_TCR0_TRB .set 1b<<5 ;TRB=1 K_TCR0_TSS .set 0b<<4 ;TSS=0

K_TCR0_TDDR .set 1001b<<0 ;TDDR=9

K_TCR0 .set K_TCR0_SOFT| K_TCR0_FREE| K_TCR0_PSC

| K_TCR0_TRB| K_TCR0_TSS| K_TCR0_TDDR ;初始化定时器0 STM #039999,TIM0 STM #039999,PRD0 STM (1) ,TCR0 ;启动定时器0中断 RET ;定时器0的中断服务子程序

t0_flag .usect “vars”,1 ;当前XF输出电平标志位,

;若t0_flag=1,则XF=1

;若t0_flag=0,则XF=0

t0_counter .usect “vars”,1 ;计数长度变量

time0_rev: PSHM TRN PSHM T PSHM ST0 (2)

RSBX CPL

ADDM # -1,*(t0_counter) CMPM *(t0_counter),#0

BC (3) ,NTC ;NTC表示TC为0 ST #1000, (4) BITF t0_flag, #1 BC xf_out, NTC SSBX XF ST #0, t0_flag B still_wait xf_ out:

(5)

ST #1, t0_flag Still_wait:

POPM ST1

第页(共 2 页) 34

POPM (6) POPM T POPM TRN RETE

46.用C55x汇编语言实现计算 y??aixi 的程序。(10分)

i?1答:mpym *AR0+, *AR1+, AC0

mpym *AR0+, *AR1+, AC1 add AC1, AC0

mpym *AR0+, *AR1+, AC1 add AC1, AC0

mpym *AR0+, *AR1+, AC1 add AC1, AC0

或者:

mpym *AR0+, *AR1+, AC0 ||rpt #2

macm *AR0+, *AR1+, AC0

7.用C55x汇编语言实现计算 y1?x1*a1?x2*a2的程序。(10分) 答:mpym *AR0+, *AR1+, AC3 masm *AR0+, *AR1+, AC3

8.以8点的FFT为例,用C55x的汇编语言实现FFT的算法,并且解释该算法的实现方法。(20分)

答:.sect \

_fft:

aadd #(ARGS-Size+1),SP ; Adjust stack for local vars

mov mmap(ST1_55),AR2 ; Save ST1,ST3 mov mmap(ST3_55),AR3 mov AR2,fft.d_ST1 mov AR3,fft.d_ST3

btst @#0,T1,TC1 ; Check SCALE flag set mov #0x6340,mmap(ST1_55) ; Set CPL,XF,SATD,SXAM,FRCT (SCALE=1)

mov #0x1f22,mmap(ST3_55) ; Set: HINT,SATA,SMUL xcc do_scale,TC1

mov #0x6300,mmap(ST1_55) ; Set CPL,XF,SATD,SXAM (SCALE=2) do_scale

mov T2,fft.d_T2 ; Save T2 || mov #1,AC0

mov AC0,fft.d_L ; Initialize L=1

第页(共 2 页) 35

|| sfts AC0,T0 ; T0=EXP mov AC0,fft.d_N ; N=1<

mov XAR1,XCDP ; CDP = pointer to U[] mov XSP,XAR4

add #fft.d_temp,AR4 ; AR4 = pointer to temp

mov XAR0,XAR1 ; AR1 points to sample buffer mov T0,T1

mov XAR0,XAR5 ; Copy externd bits to XAR5

outer_loop ; for (L=1; L<=EXP; L++) mov fft.d_L,T0 ; note: Since the buffer is

|| mov #2,AC0 ; arranged in re,im pairs sfts AC0,T0 ; the index to the buffer neg T0 ; is doubled

|| mov fft.d_N,AC1 ; But the repeat coutners sftl AC1,T0 ; are not doubled mov AC0,T0 ; LE=2<

mov AC0,AR0 ; LE1=LE>>1 || sfts AC0,#-1

sub #1,AC0 ; Init mid_loop counter mov mmap(AC0L),BRC0 ; BRC0=LE1-1

sub #1,AC1 ; Init inner loop counter mov mmap(AC1L),BRC1 ; BRC1=(N>>L)-1 add AR1,AR0

mov #0,T2 ; j=0

|| rptblocal mid_loop-1 ; for (j=0; j

add AR0,AR5 ; AR5 = pointer to X[id].re add #1,AR5,AR2 ; AR2 = pointer to X[id].im add AR1,AR3 ; AR3 = pointer to X[i].re || rptblocal inner_loop-1 ; for(i=j; i

:: mpy *AR2-,*CDP+,AC1 ; -X[id].im*U.im)/SCALE

masr *AR5-,*CDP-,AC0 ; AC1=(X[id].im*U.re :: macr *AR2+,*CDP-,AC1 ; +X[id].re*U.im)/SCALE mov pair(hi(AC0)),dbl(*AR4); AC0H=temp.re AC1H=temp.im || mov dbl(*AR3),AC2 xcc scale,TC1

|| mov AC2>>#1,dual(*AR3) ; Scale X[i] by 1/SCALE mov dbl(*AR3),AC2 scale

add T0,AR2

第页(共 2 页) 36

|| sub dual(*AR4),AC2,AC1 ; X[id].re=X[i].re/SCALE-temp.re mov AC1,dbl(*(AR5+T0)) ; X[id].im=X[i].im/SCALE-temp.im || add dual(*AR4),AC2 ; X[i].re=X[i].re/SCALE+temp.re mov AC2,dbl(*(AR3+T0)) ; X[i].im=X[i].im/SCALE+temp.im inner_loop ; End of inner loop amar *CDP+

amar *CDP+ ; Update k for pointer to U[k] || add #2,T2 ; Update j

mid_loop ; End of mid-loop sub #1,T1

add #1,fft.d_L ; Update L

bcc outer_loop,T1>0 ; End of outer-loop

mov fft.d_ST1,AR2 ; Restore ST1,ST3,T2 mov fft.d_ST3,AR3 mov AR2,mmap(ST1_55)

mov AR3,mmap(ST3_55) mov fft.d_T2,T2

aadd #(Size-ARGS-1),SP ; Reset SP ret

.end

9.已知事件管理器通用定时器工作于连续递增计数模式,且定时器的使能信号和定时器时钟信号如下图所示,当周期寄存器的值TxPR=4时,画出通用定时器连续递增计数模式的示意图(至少画出2个计数周期)。

10.已知ADC模块中的排序器工作于启动/停止操作,使用触发信号1启动3个自动转换I1、I2、I3,触发信号2启动3个自动转换V1、V2、V3。 (1)MAX CONV1的值应该设置为_______________。

(2)在ADC输入通道选择排序控制寄存器设置表中填入相应的转换值。 Bit15~12 X X X

第页(共 2 页) 37

Bit11~8 X X X Bit7~4 X X Bit3~0 CHSELSEQ1

X X CHSELSEQ2 CHSELSEQ2 CHSELSEQ2

11.给出函数 int fn(long l1,longl2,long l3,int *p4,int*p5,int *p6,int *p7,int*p8,int i9,int i10)中所使用的寄存器。(10分)

12.设VC5509 DSP定时器输入时钟100MHz,如果要求定时器输出中断信号或同步事件信号的频率为1000次每秒,假设将TDDR设为9,则 PRD应为多少,写出相关公式(3分)

13.C55x DSP复位期间或复位之后输出的时钟频率如何?(2分)

第页(共 2 页) 38

第页(共39 2 页)

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

Top