1二、简答题(每题6分,共30分)1.简述位码倒寻址的主要用途及实现方法。1.C54X有哪几种基本的数据寻址方式?以DP和SP为基地址的直接寻址方式,其实际地址是如何生成的?1.什么是COFF和段?段的作用是什么?COFF目标文件包含哪些段?1.简述C54X的宏命令及其功能。1.简述TMS320C54x芯片的中断系统。1.简述C54X芯片的主要特点。答:TMS320C54x的主要特征如下:(1)CPU(中央处理单元)利用其专用的硬件逻辑和高度并行性提高芯片的处理性能。(2)存储器具有192K字可寻址存储空间(包括64K字程序存储空间、64K字数据存储空间和64K字I/O空间)。(3)高度专业化的指令集能够快速地实现算法并用于高级语言编程优化。(4)片内外设和专用电路采用模块化的结构设计,可以快速地推出新的系列产品。(5)TMS320C54x执行单周期定点指令时间为25/20/15/12.5/10ns,每秒指令数为40/66/100MIPS。1.简述存储器映像寄存器寻址方式及其地址产生的两种方法。答:存储器映像寄存器寻址是用来修改存储器映像寄存器的,但不影响当前数据页指针DP或堆栈指针SP的值。存储器映像寄存器(MMR)地址的产生有两种方法:(1)在直接寻址方式下,不管当前DP或SP的值为何值,使数据寄存器地址的高9位(MSBs)强制置0,数据存储器地址的低7位(LSBs)则来自于指令字。(2)在间接寻址方式下,只使用当前辅助寄存器的低7位作为数据存储器地址的低7位,地址的高9位为0,指定的辅助寄存器的高9位在寻址后被强制置0。2.简述TMS320C54x的7种基本的数据寻址方式。2.简述McBSP接口的特点。2.C54X的指令集包含了哪几种基本类型的操作?2.简述TMS320C54x芯片的存储器分配方法。答:TMS320C54x采用改进的哈佛结构。存储空间由三个独立可选的存储空间组成,这三个独立可选的存储空间包括64K字的程序存储空间、64K字的数据存储空间和64K字的I/O空间。TMS320C54x的工作方式状态寄存器PMST提供了三个控制位:MP/MC、OVLY和DROM,用于在存储空间中配置片内存储器。MP/MC:微处理器/微型计算机工作方式位。OVLY:RAM重叠位。DROM:数据ROM位。2.简述直接寻址及其两种两种寻址方式。答:直接寻址就是在指令中包含有数据存储器地址(dma)的低7位,用这7位作为偏移地址,并与基地址值(数据页面指针DP的9位或堆栈指针SP的16位)组成一个16位的数据存储器地址。直接寻址分为数据页指针直接寻址和堆栈指针直接寻址两种。数据页指针直接寻址:当状态寄存器ST1中的CPL位等于0时,ST0中的DP值(9位地址)与指2令中的7位地址一起形成16位数据存储器地址;堆栈指针直接寻址:当ST1中的CPL位等于1时,将指令中的7位地址与16位堆栈指针SP相加,形成16位的数据存储器地址。2.C54X的指令集包含了哪几种基本类型的操作?3.段的作用是什么?COFF目标文件包含哪些段?答:所谓段(Section),是指连续地占有存储空间的一个代码块或数据块,是COFF文件中最重要的概念。一个目标文件中的每一个段都是分开的和各不相同的。所有的COFF目标文件都包含以下三种形式的段:.text文本段.data数据段.bss保留空间段3.堆栈寻址的作用是什么?压栈和弹出堆栈操作是如何实现的?答:系统堆栈用来在中断或调用子程序期间自动存放程序计数器,也能用来存放用户当前的程序环境或传递数据值。处理器使用一个16位存储器映像寄存器的一个堆栈指针(SP)来寻址堆栈,SP始终指向存放在堆栈中的最后一个单元。当调用一个子程序或一个中断响应发生时,PC会被自动压栈,堆栈指针SP指向存放最后一个数据的堆栈单元;返回时,返回地址从堆栈中弹出并装入PC。堆栈存放数据是从高地址向低地址进行的。压入堆栈时,先减小SP,再将数据压入堆栈;弹出堆栈时,先从堆栈弹出数据,再增加SP值。3.HPI8接口有几个寄存器?他们的作用是什么?3.简述链接器命令文件中的MEMORY命令和SECTIONS命令3.画出汇编程序的编辑、汇编和链接过程图,并说明各部分的作用是什么?编辑:程序代码的编写,生成.asm文件。汇编:利用TMS320C54x的汇编器对已经编好的一个或者多个源文件分别进行汇编,并生成.lst(列表)文件和.obj(目标)文件。链接:利用TMS320C54x的链接器LNK500,根据链接器命令文件(.cmd)对已经汇编过的一个或是多个目标文件(.obj)进行链接,生成.map文件和.out文件。编辑汇编汇编链接链接调试调试固化程序.asm.obj.cmd.out-m.map-l.lst-o编辑33.简述C54X链接器的作用及其功能。答:链接器作用是根据链接器命令文件(.cmd)对已经汇编过的一个或是多个目标文件(.obj)进行链接,生成.map文件和.out文件。链接器的功能如下:(1)、将各个段配置到目标系统的存储器中。(2)、对各个符号和段进行重新定位,并给它们指定一个最终的地址。(3)、解决输入文件之间未定义的外部引用问题。4.CPU响应中断有哪些条件?简述中断处理一般过程。答:对于软件中断和非可屏蔽中断,CPU立即响应。如果是可屏蔽中断,只有满足以下条件才能响应:(1)优先级别最高。(2)ST1中的INTM位为0,允许可屏蔽中断。(3)IMR中的相应位为1,允许可屏蔽中断。中断流程:1)接受中断请求2)响应中断3)执行中断服务程序4.简述位码倒寻址的主要用途及实现方法。5.简述线性缓冲区法实现FIR滤波器延时一个采样周期运算Z-15.使用循环寻址时,必须遵循的3个原则是什么?5.一个典型的DSP系统通常由哪些部分组成?画出原理框图。5.简述C54X芯片的存储器分配方法。5.定时器由哪些寄存器组成,他们是如何工作的?5.简述串行通信,并描述C54X的三种串行口。答:串行通信,就是发送器将并行数据逐位移出成为串行数据流,接收器将串行数据流以一定的时序和一定的格式呈现在连接收/发器的数据线上。TMS320C54x有三种类型的串行口:标准同步串行口(SPI)、缓冲串行口(BSP)和时分多路串行口(TDM)。标准同步串行口(SPI,SerialPortInterface):有两个独立的缓冲器用于传送数据,接收缓冲器和发送缓冲器,每个缓冲器有一条可屏蔽的中断线。串行数据可以按8位字或16位字转换。缓冲串行口(BSP,BufferedSerialPort):在标准同步串行口的基础上增加了一个自动缓冲单元(ABU)。BSP是一种增强型标准串行口,它是全双工的,并有两个可设置大小的缓冲区。时分多路复用串行接口(TDM,Time-DivisionMultiplexed):允许同一个串口以分时方式传送多路数据,TDM为多处理器通信提供了一种简单而有效的方式。45.简述C54X的流水线6个独立阶段,并描述各个阶段功能。5.使用循环寻址时,必须遵循的3个原则是什么?二、指令解释(每题3分,共30分)1、MAC*AR3+,*AR4+,A,B2、SUB#12345,8,A,B3、ADD*AR2+,*AR2-,A4、RPT#99NOP5、MVDD*AR3+,*AR5+6、ABDST*AR3+,*AR4+7、CALAA8、STT,*AR7-9、DSTB,*AR1+10、STA,*AR4+||LD*AR4-,A1、LD#80H,A2、WRITASMEM3、PORTRFIFO,*AR54、LDMMMR,A5、MVKDSAMPLE,*AR56、ADD*AR3+,14,A7、MPYATEMP210、MACD*AR2-,COEFFS,A1、LD#0032H,4,A立即数0032H先左移4位后,再加载累加器A.2、STM#1000H,*AR2立即数1000H存储到AR2指向的地址单元3、MAC#345,A,B立即数345与T寄存器内值相乘后与累加器A值相加,结果加载累加器B.4、MVDD*AR3-,100HAR3指向的地址单元的值传送给地址100H单元,AR3中地址减一。5、LDM*AR1,A1、STLA,@quot2、ADD#4568H,8,A,B3、LDMAR1,A1、LD#10H,4,A2、ADDA,-8,B53、STLB,*AR3+5、DSTB,*AR1-2、ADD#4568H,8,A,B5、DSTB,*AR1-AR3指向的地址单元的值加载到累加器A.三、编程题(每题15分,共30分)1.编写一段程序,将PM中的10个数据首先传送到DM中(地址以0050H开始),再将该数据传送到地址以0070H开始的DM中。2.编一程序,首先实现对DATA开始的5个单元赋初值0,1,2,3,4,5,然后再对每个单元内容加1。1.试编一程序,计算y=xaiii51,其中数据均为小数。并找出5项乘积xaii(i=1,2,3,4,5)中的最小值,放入z单元中。解:.title“cjy4.asm”.mmregsSTACK.usect“STACK”,10H.bssa,4;为a分配4个存储单元.bssx,4;为x分配4个存储单元.bssy,1;为结果y分配1个存储单元.defstart.data;定义数据代码段table:.word1*32768/10;在table开始的8个.word2*32768/10;地址放数据.word-3*32768/10.word4*32768/10.word8*32768/10.word6*32768/10.word-4*32768/10.word-2*32768/10.text;定义可执行程序代码段start:SSBXFRCT;设置FRCT位,表示进行小数乘STM#x,AR1;将x的首地址传给AR1RPT#7;重复8次下条指令6MVPDtable,*AR1+;将程序空间8个数传给数据存储器STM#x,AR2;将数据存储器第一个数x1的地址传给AR2STM#a,AR3;将数据存储器第五个数a1的地址传给AR3RPTZA,#3;将A清零,重复4次下条指令MAC*AR2+,*AR3+,A;执行乘法累加和,结果放在A中STHA,@y;将A的高端字存入结果y,低端字省去end:Bend;原处循环等待.end计算的程序段,其中数据均为小数:a1=0.1,a2=0.2,a3=-0.3,a4=0.4,x1=0.8,x2=0.6,x3=-0.4,x4=-0.2。1.编写一段程序,将PM中的10个数据首先传送到DM中(地址以0016H开始),再将该数据传送到地址以0058H开始的DM中。1.编写一段程序,将程序存储器中的10个数据首先传送到数据存储器中(以DATA1开始),再将DATA1开始的10个单元内容传送到DATA2开始的数据储存期中。1.设计一存储空间为100个单元的堆栈。将栈底地址指针送SP,对其初始化(共5分)解:size.set100;设置堆栈空间的;大小为100stack.usect“STK”,size;设置堆栈段的首地址;和堆栈空间STM#stack+size,SP2.假设目标存储器的配置如下:(共10分)程序存储器EPROME000h~FFFFH(片外)数据存储器SPRAM0060H~007FH(片内)DARAM0080H~017FH(片内)要求编写链接命令文件ex421.cmd。此命令用来链接ex421.obj和vector.obj两个目标文件(输入文件),并生成一个映像文件ex421.map,以及一个可执行的输出文件ex421.out。标号“start”是程序的入口。解:ex421.objvectors.obj-oex421.out-mex421.map-estartMEMORY{PAGE0:EPROM:org=0E000H,len=100Hvecs:org=0FF80H,len=04Hvecs1:org=0FFC8H,len=04H41iiixay7PAGE1:SPRAM:org=0060H,len=20HDARAM:org