1一、填空题1、一个典型的数字信号处理系统,它由信号的采集、传输、处理、存储和还原等部分组成。2、TMS320VC5509A片内存储器配置:ROM32KB、RAM128KB。3、C55x的堆栈指针寄存器有有关堆栈指针SPH、数据堆栈指针(SP)、系统堆栈指针(SSP)、相关扩展寄存器(SPH)、XSP。4、C55x指令中用到的语法元素有Smem、Lmem、Xmem和Ymem、Cmem、Baddr。5、C55x的间接寻址方式有AR间接寻址方式、双AR间接寻址方式、CDP间接寻址方式、系数间接寻址方式。6、软件复位只影响、、、和,不影响其他寄存器。7、CCS有两种工作模式软件仿真器模式和硬件在线编程模式。其中软件仿真器模式可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。8、DSP的含义有数字信号处理和数字信号处理器两种。9、C55x的CPU包括4个40位的累加器:AC0~AC3。每个累加器分为低字、高字和8个保护位。10、C55x的状态寄存器有ST1_-55、ST2-55、ST3-55、ST0-55。211、C55x的寻址方式有绝对寻址方式、直接寻址方式、间接寻址方式。12、C55x指令中用到的语法元素有、、、、。13、硬件复位后,DSP处于一个已知的状态,即所有的当前指令,指令流水,复位。14、CCS是一种针对TMS320系列DSP的集成开发环境。CCS工作于Windows操作系统下,采用图形接口界面,提供有环境配置、源文件编辑、程序调试、跟踪和分析等工具。二、简答题1、简述C55xCPU内部总线结构。答:内部独立总线:12组程序地址总线(PAB):1组,24位程序数据总线(PB):1组,32位数据读地址总线(BAB、CAB、DAB):3组,24位数据读总线(BB、CB、DB):3组,16位数据写地址总线(EAB、FAB):2组,24位数据写总线(EB、FB):2组,16位2、简述C55x的CPU组成。答:1.指令缓冲单元(I单元)组成:32×16位指令缓冲队列和指令译码器。功能:接收程序代码并放入指令缓冲队列;由指令译码器解释指令,再把指令流传给其它的工作单元2.程序流单元(P单元)组成:程序地址发生器和程序控制逻辑功能:产生所有程序空间地址,并送到PAB总线3.地址-数据流单元(A单元)组成:数据地址产生电路(DAGEN);附加16位ALU和1组寄存器功能:产生读/写数据空间地址,并送到BAB、CAB、DAB总线4.数据运算单元(D单元)组成:1个40位的筒形移位寄存器(barrelshifter);2个乘加单元(MAC);1个40位的ALU;若干寄存器。功能:CPU中最主要的部分,是主要的数据处理部件5.存储器接口单元(M单元)是CPU和数据空间或I/O空间之间传输所有数据的中间媒介33、简述C55x的指令系统。答:C55X指令系统分为6大类:算术运算指令,位操作指令,扩展辅助寄存器操作指令,逻辑运算指令,移动指令,程序控制指令4、简述C55xCPU处理中断的步骤。答:①接收中断请求。软件和硬件都要求DSP将当前程序挂起。②响应中断请求。CPU必须响应中断。如果是可屏蔽中断,响应必须满足某些条件;如果是不可屏蔽中断,则CPU立即响应。③准备进入中断服务子程序。CPU要执行的主要任务有:完成当前指令的执行,并冲掉流水线上还未解码的指令。自动将某些必要的寄存器的值保存到数据堆栈和系统堆栈。从用户事先设置好的向量地址获取中断向量,该中断向量指向中断服务子程序。④执行中断服务子程序。CPU执行用户编写的ISR。ISR以一条中断返回指令结束,自动恢复步骤③中自动保存的寄存器值。5、简述*.CMD文件、*.MAP文件的区别。CMD的专业名称叫链接器配置文件,是存放链接器的配置信息,我们简称为命令文件,CMD文件是用来标示实际存在目标系统中且可被使用的存储器范围,告诉链接程序怎么计算地址和分配空间。它包括三个部分:(1)输入、输出定义:.obj文件——链接器要链接的目标文件;.lib文件——链接器要链接的库文件;.map文件——链接器生成的交叉索引文件;.out文件——链接器生成的可执行代码。这部分可通过CCS中的BuildOption菜单进行设置(2)MEMORY命令描述系统实际的硬件资源(3)SECTIONS命令:描述“段”如何定位MAP文件是CCS软件编译后产生的有关DSP用到所有程序、数据及IO空间的一种映射文件。一、生成方法MAP文件主要有两种生成方法,一种是由系统自动生成,默认文件名为所建立的项目名(如XXX为项目名)加上.map后缀xxx.map,另一种在CMD文件中指定生成MAP文件,操作方法为在MEMORY指令前面加上“-mabc.map”,文件名可以任意。二、文件格式MAP文件大概分为文件头、内存配置、段映射、全局符号四部分。内存配置与CMD文件中的MEMORY指令关联,在CMD文件中定义的程序与数据区间定义,在该部分均可以找到对应,与CMD文件不同的时,在MAP文件中加入了一个实际使用的区间,即在程序中实际用到的空间长度。段映射部分与CMD文件中的SECTION指令关联,在该部分程序中所有的段实际映射的起始地址与实际长度均有详细说明。可以具体到程序中PROGMA指定的段和各个单独文件产生的OBJ文件。全局符号可以是程序使用的每一个函数、程序中定义的全局变量均可以在此找到对应的起始地址。MAP文件中采用两种方式列举,一种为按相应地址排列,另一种按全局符号字母排列。三、存储地址4MAP文件默认保存在所在项目下面,由CMD文件产生的MAP文件保存在该项目的DEBUG目录下面。6、简述DSP芯片的主要特点。(1)在一个指令周期内可完成一次乘法和一次加法;(2)程序和数据空间分开,可以同时访问指令和数据;(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;(4)具有低开销或无开销循环及跳转的硬件支持;(5)快速的中断处理和硬件I/O支持;(6)具有在单周期内操作的多个硬件地址产生器;(7)可以并行执行多个操作;(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行7、简述C55x的CPU在读取程序代码和读/写数据时的区别。答:当CPU从程序空间读取程序代码时,使用24位地址,程序空间字节地址范围是0x000000-0xFFFFFF当CPU访问数据空间时,使用23位地址。数据空间字节地址范围是0x000000-0xFFFFFF,一个字(Word)为16位。8、简述TMS320VC5509A的片内外设。DSP的片内外设完成与外部的通信,主要功能:采集原始数据,输出处理结果,控制其他设备等。主要片内外设有:ADC;时钟发生器;指令Cache;外部存储器接口EMIF;直接存储器访问DMA控制器;多通道缓冲串口;增强型主机接口;实时时钟;通用I/O引脚GPIO;FIFO寄存器。9、简述C55x的堆栈种类及涉及到的寄存器。C55X支持两个16位堆栈,即数据堆栈和系统堆栈扩展数据堆栈指针涉及的寄存器为:XSP数据堆栈指针涉及的寄存器为:SP扩展系统堆栈指针涉及的寄存器为:XSSP系统堆栈指针涉及的寄存器为:SSPXSP和XSSP的高位域部分涉及的寄存器为:SPH10、简述断点和探针点的区别。在探针处将数据文件中的数据传送给调试程序,断电没有该功能,探针处装入数据后继续运行,断点要动手操作后才能继续运行。三、程序设计题1、将TMS320VC5509ADSP位于数据区地址4080H开始的16个单元的数值复制的数据5区4100H开始的16个单元中,请写出用C语言实现的程序。2、Main(){3、Inti;4、unsignedint*px;5、unsignedint*py;6、unsignedint*pz;7、px=(unsignedint*)0x4080;8、py=(unsignedint*)0x4100;9、for(i=0,pz=px;i16;i++,pz++)10、(*pz)=i;11、for(i=0,pz=py;i16;i++,pz++)12、(*pz)=0x1234;13、for(i=0,i16;i++,px++,py++)14、(*py)=(*px);15、While(1)16、{17、}18、}19、2、由TMS320VC5509ADSP处理器控制拨码开关的原理图如图1所示,请写出用4位拨码开关点亮指示灯D1、D2、D3、D4的C语言程序。(注:指示灯控制寄存器的地址为0x400001;拨码开关控制寄存器的地址为0x400002)3、#includefunc.h//定义指示灯控制寄存器地址和寄存器类型4、#defineLBDS(*((unsignedint*)0x400001))5、//定义拨码开关控制寄存器地址和寄存器类型6、#defineDIPS(*(unsignedint*)0x400002)7、main()8、{//9、PLL_Init(12);//初始化DSP运行时钟10、SDRAM_init();//初始化EMIF接口11、while(1)12、{13、LBDS=DIPS;//读取拨码开关状态直接送指示灯显示14、}15、}6图1拨码开关扩展原理3、由TMS320VC5509ADSP处理器控制指示灯LED的原理如图1所示,请写出依次(正向和反向)点亮指示灯D1、D2、D3、D4的C语言程序。(注:指示灯控制寄存器的地址为0x400001)7图1指示灯扩展原理#includefunc.h//定义指示灯寄存器地址和寄存器类型#defineLBDS(*((unsignedint*)0x400001))//子程序接口voidDelay(unsignedintnDelay);//延时子程序main(){unsignedintuLED[4]={1,2,4,8};//控制字,逐位置1:0001B0010B0100B1000Binti;PLL_Init(72);//初始化DSP运行时钟SDRAM_init();//初始化EMIF接口while(1){for(i=0;i4;i++){LBDS=uLED[i];//正向顺序送控制字Delay(256);//延时}for(i=3;i=0;i--){LBDS=uLED[i];//反向顺序送控制字Delay(256);//延时}}}voidDelay(unsignedintnDelay){intii,jj,kk=0;for(ii=0;iinDelay;ii++){8for(jj=0;jj1024;jj++){kk++;}}}