2023年DSP原理及应用邹彦知识点总结.docx
填空:OVLY=(0),片内RAM仅配置到到数据存储空间。DROM=(1),片内ROM配置程序和数据存储空间。ST1的CPL=(1)表达选用对战指针SP的直接寻址方式。ST1的C16=(1)表达ALU工作在双精度算术运算式。软件中断是由(INTR)(TRAD)(RESET)产生的。时钟发生器涉及一个(内部振荡电路)和一个(锁相环电路)。状态寄存器ST1中CPL=0表达(使用DP),CPL=1表达(使用SP)累加器寻址的两条指令分别是(READA Smem)(WRITA Smem)链接器对段的解决重要通过(MEMORY)和(SECTIONS)两个命令完毕。所有的TMS320C54x芯片内部都包含(程序)存储器和(数据)存储器。所有的COFF目的文献都包含以下三种形式的段:(.text文本段 .data数据段 .bss保存空间段)。TMS320C54x有8组16位总线(1组程序总线,3组数据总线,4组地址总线)。TMS320C54x DSP具有两个(40)位累加器。累加器A的(AG或3239)位是保护位。对于32位数寻址时,假如寻址的第一个字处在偶地址,那么第二个就处在(下一个高)地址;假如寻址的第一个字处在奇地址,那么第二个就处在(前一个低)地址。DSP芯片特点:有(改善的哈佛结构)、(低功耗设计)和(高度并行性)(多解决单元)(特殊DSP指令)等特点。DSP片内寄存器在C语言中一般采用(指针)方式来访问,经常采用的方法是将DSP寄存器地址的列表定义在(头文献)。TMS320C54x有3个16位寄存器作为状态和控制寄存器(ST0)(ST1)(PMST)。TMS320C54x的三类串行口:(标准同步串行口)(缓冲串行口)(时分多路串行口)。TMS320C54x的工作方式状态寄存器PMST提供了三个控制位,涉及(MP/非MC)、(OVLY)、(DROM)。MEMORY的作用(是用于描述系统实际的硬件资源,用来定义用户设计的系统中所包含的各种形式的存储器,以及他们占据的地址范围)。SECTIONS的作用(是用于描述段如何定位到家当的硬件资源上。将输出段定位到所定义的存储器中)。直接寻址就是在指令中包具有数据存储器地址的(低7位)用作偏移地址,并与(基地地址)组成16位的数据存储器地址。时钟发生器为TMS320C54x提供时钟信号,时钟发生器可以由(内部振荡电路)或(外部时钟电路)驱动。桶型移位寄存器能把输入的数据进行(0-31)位的左移和(0-15)位右移。即寻址方式中的立即数有两种数值形式,数值的位数为(3、5、8、9)位时为短立即数,数值的位数为(16)位时为长立即数。MP/非MC=(1),允许片内ROM配置到程序存储空间。MP/非MC=(0),严禁片内ROM配置到程序存储空间。OVLY=(1),片内RAM配置程序和数据存储空间。DROM=(0),严禁ROM配置到到数据存储空间。指令:ADD #4568H,8,A,B /将4568H左移8位与A相加,赋给B。ADD A,-8,B/将A右移8位加上B,保存于B。ADD *AR3+,14,A/将AR3左移4加上AA。DST B,*AR1-/B存到长字单元AR1中,且AR减1。LDM AR1,A /存储器映像寄存器寻址方式,将映像寄存器加载累加器AR1A的低位,其余位置0。LD #10H,4,A/将10H左移4位加载到累加器A中。LDM MMR,A/MAC *AR3+,*AR4+,A,B/AR3.AR44+AB,AR3与AR3都加1。MVKD SAMPLE,*AR5/SAMPLEAR5中。MVDD *AR3+,*AR5+ /数据存储器内部传送数据AR3AR5,且指令结束后AR3与AR5加1。MPYA TEMP2/B<=A.Temp2,T=Temp2。PPT #99NOP/反复NOP100次。STL A,quot/将累加器A的低16位字存放在quot的存储单元中。STL B,*AR3+/将累加器的低位移位后加载到AR3所指地址。WRITA SMEM /将A的内容写入SMEM中。LD #0032H,4,A/立即数0032H先左移4位后,再加载累加器A.STM #1000H,*AR2/立即数1000H存储到AR2指向的地址单元MAC #345,A,B/立即数345与T寄存器内值相乘后与累加器A值相加,结果加载累加器B.MVDD *AR3-,100H /AR3指向的地址单元的值传送给地址100H单元, AR3中地址减一。LDM *AR1,A/AR1指向的地址单元的值加载到累加器A.简答:CPU响应中断有哪些条件?中断解决一般过程是什么?对于软件中断和非可屏蔽中断,CPU立即响应。假如是可屏蔽中断,只有满足以下条件才干响应:1 优先权利最高;2 ST1中的INTM=0即允许可屏蔽中断;3 IMR中相位为1,允许可屏蔽中断。中断流程:1 接受中断请求;2 响应中断;3 执行中断服务程序。简述链接器命令文献中的MEMORY和SECTIONS。MEMORY命令用于描述系统实际的硬件资源,用来定义用户设计的系统中所包含的各种形式的存储器,以及他们占据的地址范围。SECTIONS命令用于描述段如何定位到家当的硬件资源上。将输出段定位到所定义的存储器中。简述TMS320C54x芯片的重要特点。1 CPU(中央解决单元)运用其专用的硬件逻辑和高度并行性提高芯片的解决性能。2 存储器具有192k字可寻址存储空间(涉及64 K字程序存储空间、64 K字数据存储空间和64 K字I/O空间)。3 高度专业化的指令集可以快速地实现算法冰用于高级语言编程优化。4 片内外设和专用电路采用模块化的结构设计,可以快速的推出新的系列产品。5 TMS320C54x执行单周期定点指令时间为25/20/15/12.5/10ns,每秒指令数位40/66/100MIPS。6 TMS320C54x电源由IDLE1、IDLE2、IDLE3功耗下降指令控制功能,以便DSP工作在节电模式下,使之更适合于手机。7 在片仿真接口,片上的JTAG接口符合IEEE1149.1边界扫描逻辑接口标准,可与主机连接,用于芯片的仿真和测试。简述TMS320C54x芯片存储器的分派方法。TMS320C54x采用改善的哈佛结构。存储空间由三个独立可选的存储空间组成:64k字的程序存储空间、64k的数据存储空间、64k的I/O存储空间。TMS320C54x的工作方式状态寄存器PMST提供了三个控制位:MP/非MC、OVLY、DROM,用于在存储空间中配置片内存储器。MP/非MC:微解决器/微型计算机工作方式位。OVLY:RAM重叠位。DROM:数据ROM位。简述直接寻址及其两种方式:直接寻址就是在指令中包具有数据存储器地址的低7位,用着7位作为偏移地址,并与基地址值组成一个16位的数据存储器地址。直接寻址分为数据页指针直接寻址、堆栈指针直接寻址两种。数据页指针直接寻址:当状态寄存器ST1中的CPL位等于0时,ST0中的DP值与指令中的7位地址一起形成16位数据存储器地址;堆栈指针直接寻址:当ST1中的CPL位等于1时,将指令中的7位地址与16位堆栈指针SP相加,形成16位的数据存储器地址。简述位码倒寻址的重要用途及实现方法。位码倒寻址的重要用于FFT算法中。实现方法:ARO存放的整数N是FFT点数的一半,一个辅助寄存器只想一个数据存放的物理单元,当使用位码倒寻址把ARO加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是通常的从右向左。堆栈寻址的作用是什么?压栈和弹出堆栈是如何实现的?系统堆栈用来在中断或调用子程序期间自动存放程序计数器,也能用来存放用户当前的程序环境或传递数据值。解决器使用一个16位存储器映像寄存器的一个堆栈指针来寻址堆栈,SP始终指向存放在对战中的最后一个单元。当调用一个子程序或一个中断响应发生时,PC会被自动压栈,堆栈指针SP指向存放最后一个数据的堆栈单元;返回时,返回地址从堆栈中弹出并装入PC。堆栈存放数据是从高地址向低地址进行的,压入堆栈时,先减小SP,再将数据压入堆栈;弹出对战士,先从堆栈弹出数据,在增长SP值。简述TMS320C54x宏命令及其功能。宏命令是源程序中具有独立功能的一段程序代码,它可以根据用户的需要,由用户创建自己的指令。宏命令一经定义,便可在以后的程序中多次调用,从而可以简化和缩短源程序。功能:定义自己的宏,重新定义已存在的宏、简化长的或复杂的汇编代码、访问由归档器创建的宏库、解决一个宏中的字符串、控制展开列表。使用过程:宏定义,宏调用,宏展开。画出汇编程序的编辑、汇编和链接过程图,并说明各部分的作用?3答:编辑:程序代码的编写,生成 .asm文献。汇编:运用TMS320C54x的汇编器对已经编好的一个或者多个源文献分别进行汇编,并生成 .lst(列表)文献和 .obj(目的)文献。链接:运用TMS320C54x的链接器LNK500,根据链接器命令文献(.cmd)对已经汇编过的一个或是多个目的文献(.obj)进行链接,生成 .map文献和 .out文献。简述流水线的6个独立阶段并介绍其功能。1 程序预取指:将所要取指的地址放在程序地址总线上;2 取指:从程序总线上取指令字,并装入指令寄存器;3 指令译码:对IR中的内容译码,产生执行指令所需要的一系列控制信号;4 寻址:数据地址产生单元在数据地址总线上输出读操作数的地址。;5 读:从数据总线和控制总线上读操作数;6 执行指令:从数据总线上写数据。154简述TMS320C54x芯片的中断系统。中断系统是计算机发展史上的一个里程碑。也是衡量微解决器性能好坏的一项重要指标。中断系统既支持硬件中断,又支持软件中断。无论是哪种中断都可以分为可屏蔽中断和非可屏蔽中断。中断系统涉及:中断结构、中断流程、中断编程。简述串行通信,并描述TMS320C54x的三个串口。串行通信是发送器将并行数据逐位移出成为串行数据流,接受器将串行数据流以一定的时序和一定的格式呈显在连接受/发器的数据线上。三类串行口:标准同步串行口(SPI):有两个独立的缓冲器用于传送数据,接受缓冲器和发送缓冲器,每个缓冲器有一条可屏蔽的中断线。串行数据可以按8位字或16位字转换。缓冲串行口(BSP):在标准同步串行口的基础上增长了一个自动缓冲单元,BSP是一种增强型标准串行口,它是全双工的,并有两个可设立大小的缓冲区。时分多路串行口(TDM):允许同一个串口以分时方式传送多路数据,TDM为多解决器通信提供了一种简朴而有效的方式。段的作用是什么?COFF目的文献包含哪些段?所谓段,是指连续地占有存储空间的一个代码块或数据块,是COFF文献中最重要的概念。一个目的文献中的每一个段都是分开的和各不相同的。所有的COFF目的文献都包含一下三种形式的段:.text文本段 .data数据段 .bss保存空间段TMS320C54x有哪几种基本的寻址方式?立即寻址、绝对寻址、累加器寻址、直接寻址、间接寻址、存储器映像寄存器寻址、堆栈寻址。一个典型的DSP系统通常由哪些部分组成?画出原理框图。A/D、DSF、D/A。 0100101 1000简述存储器映像寄存器寻址地址产生及其地址产生的两种方式。存储器映像寄存器是用来修改存储器映像寄存器的,但不影响当前数据页指针DP或堆栈指针SP的值。1 在直接寻址方式下,不管当前DP或SP为什么值,是数据寄存器地址的高9位强制置0,数据存储器地址的低7位则来自于指令字;2 在间接寻址方式,只使用当前辅助寄存器的低7位作为数据存储器地址的低7位,地址的高9位为0,指定的辅助寄存器的高9位在寻址后被强制置0。简述链接器的作用和功能。链接器的作用就是根据链接命令或链接命令文献(.cmd),将一个或多个COFF目的文献链接起来,生成存储器映像文献(.map)和可执行文献的输出文献(.out)。功能:1 将各个段配置到目的系统的存储器中;2 对各个符号和段进行重新定位,并给他们制定一个最终的地址;3 结局输入文献之间未定义的外部引用问题。HPI接口有几个寄存器?他们的作用是什么?1 HPI存储器:用于TMS320C54x与主机间传送数据。地址从1000H到17FFH,空间容量为2K字。2 HPI地址寄存器:由主机对其直接访问,存放当前寻址HPI存储单元的地址。3 HPI数据锁存器:有主机对其直接访问,存放当前进行读/写的数据。4 HPI控制寄存器:TMS320C54x和主机都能对其直接访问,用于主解决与DSP互相握手,实现互相中断请求。5 HPI控制逻辑:用于解决HPI与主机之间的接口信号。程序:设计一存储空间为100个单元的堆栈。将栈底地址指针送SP,对其初始化。Size .set 100;设立堆栈空间的大小为100Stack .usect "STK",size ;设立堆栈段的首地址和堆栈空间STM #stack+size,SP 运用SUBC完毕整除法,41H/7H=9H,余数是2H。LD #0041H, BSTM #0100H, AR2STM #0110H, AR3ST #0007H, *AR2RPT #15SUBC *AR2,BSTL B,*AR3+STH B,*AR3编写求解加、减法的程序,计算z=x+y-w。.title "ex41.asm".mmregsSTACK .usect “STACK”,10H. bss x,1.bss y,1.bss w,1.bss z,1.def start.dataTable: .word 6, 7,9.textStart: STM #0,SWWSRSTM #STACK+10H,SPSTM #x,AR1RPT #2MVPD table,*AR1+LD x,AADD y,ASUB w,A;后面减前面STL A,zEnd: B end.end假设目的存储器的配置如下:程序存储器:EPROM E000hFFFFH(片外)数据存储器:SPRAM 0060H007FH (片内);DARAM 0080H017FH (片内)规定编写链接命令文献ex421.cmd。此命令用来链接ex421.obj和vector.obj两个目的文献(输入文献),并生成一个映像文献ex421.map,以及一个可执行的输出文献ex421.out。标号"start"是程序的入口。答案:ex421.obj vectors.obj-o ex421.out-m ex421.map-e startMEMORYPAGE 0: EPROM : org=0E000H,len=100Hvecs : org=0FF80H,len=04Hvecs1 : org=0FFC8H,len=04HPAGE 1:SPRAM : org=0060H,len=20HDARAM : org=0080H,len=100HSECTIONS.text : >EPROM PAGE 0.bss : >SPRAM PAGE 1.data : >EPROM PAGE 0STACK : >DARAM PAGE 1.vectors: >vecs PAGE 0INT_2 : >vecs1 PAGE 0阅读下列汇编源程序,在每条语句后写出注释,并叙述程序的功能。.title "cjy4.asm".mmregsSTACK .usect "STACK",10H.bss a,4 ;为a分派4个存储单元.bss x,4 ;为x分派4个存储单元.bss y,1 ;为结果y分派1个存储单元.def start.data ;定义数据代码段table: .word 1*32768/10 ;在table开始的8个.word 2*32768/10 ;地址放数据.word -3*32768/10.word 4*32768/10.word 8*32768/10.word 6*32768/10.word -4*32768/10.word -2*32768/10.text ;定义可执行程序代码段start:SSBX FRCT ;设立FRCT位,表达进行小数乘STM #x,AR1 ;将x的首地址传给AR1RPT #7 ;反复8次下条指令MVPD table,*AR1+ ;将程序空间8个数传给数据存储器STM #x,AR2 ;将数据存储器第一个数x1的地址传给AR2STM #a,AR3 ;将数据存储器第五个数a1的地址传给AR3RPTZ A,#3 ;将A清零,反复4次下条指令MAC *AR2+,*AR3+,A ;执行乘法累加和,结果放在A中 STH A,y ;将A的高端字存入结果y,低端字省去end: B end ;原处循环等待.end编写一段程序,将PM中的10个数据一方面传送到DM中(以地址0016H开始),再将该数据传送到地址以0058H开始的DM中。(PM:程序存储器;DM:数据存储器)。编程实现小数乘法,规定将变量temp1装入累加器高16位与temp2相乘,结果存入temp3。SSBX FRCT ;置FRCT标志位,准备小数乘法LD temp1,16,A ;将变量temp1装入累加器A的高16位MPYA temp2 ;完毕temp2与累加器A的高16位相乘,结果放入B累加器,并将temp2装入T寄存器STH temp3 ;将乘积结果的高16位存入变量temp3将数组x5 初始化为1,2,3,4,5。(共10分).data;定义初始化数据段起始地址TBL:.word 1,2,3,4,5 ;为标号地址TBL;开始的5个单元赋初值.sect “.vectors” ;定义自定义段,并获得该段起始地址B START ;无条件转移到标号为START的地址.bss x,5 ;为数组x分派5个存储单元.text ;定义代码段起始地址START:STM #x,AR5 ;将x的首地址存入AR5RPT #4 ;设立反复执行5次下条指令MVPD TBL,*AR5+ end: B end.end阅读下列汇编源程序,在每条语句后写出注释,并叙述程序的功能。.title “cjy1.asm” ;为汇编源程序取名 .mmregs ;定义存储器映象寄存器STACK .usect “STACK”,30H;设立堆栈.bss x,10 ;为数组x分派10个存储单元.bss y,10 ;为数组y分派10个存储单元.datatable:.word 1,2,3,4,5,6,7,8,9,10.def start ;定义标号start.textstart:STM #0,SWWSR ;复位SWWSRSTM #STACK+30H,SP;初始化堆指针STM #x,AR1 ;将目的地首地址赋给AR1RPT #19 ;设定反复传送的次数为20次MVPD table,*AR1+ ;程序存储器传送到数据存储器STM #x,AR2 ;将x的首地址存入AR2STM #y,AR3 ;将y的首地址存入AR3RPT #19 ;设立反复执行20次下条指令MVDD *AR2+,*AR3+;将地址x开始的20个值复制到地址y开始的20个单元end: B end.end程序功能:将数据存储器中的数组x10复制到数组y10。