DSP56800E处理器概述.ppt_第1页
DSP56800E处理器概述.ppt_第2页
DSP56800E处理器概述.ppt_第3页
DSP56800E处理器概述.ppt_第4页
DSP56800E处理器概述.ppt_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,天津工业大学,1,DSC,数字信号控制器原理与实践MC56F8257,第9章 DSP56800E处理器概述,目录,天津工业大学,3,9.1 概述,9. 2 DSP56800E处理器,9.3 DSP56800E的寻址方式,9.4 DSP56800E指令系统,9.5 DSP56800E汇编语言基础,9.1 概述,1. DSP56800处理器 16位处理器,采用哈佛结构; 80MHz时钟频率下,可达到40MIPS的指令执行速度; 支持位操作;16位乘法运算; 具有3条内部地址总线和1条外部地址总线; JTAG/OnCE程序调试接口。 相关芯片,现已停产。,天津工业大学,4,天津工业大学,5,9.1 概述,2. DSP56800E处理器 16位处理器,具有DSP56800处理器所拥有的特点; AGU算术单元从16位增加到24位; 程序存储器、数据存储器容量大幅度增加; 数据处理类型上,增加了字节型和长整型等类型; 中断处理方面,DSP56800E处理器增加了中断控制器,优化了中断优先级设定及处理。 相关芯片:MC56F80x系列到MC56F83x系列。,天津工业大学,6,9.1 概述,3. DSP56800EX处理器 32位处理器,具有DSP56800E处理器所拥有的特点; 32位乘法运算及MAC; 在AGU算术运算单元中所有寄存器都有影子寄存器,减少了相关数据存储时间; 具有逆位寻址方式,支持傅里叶变换(FFT)。 相关芯片:MC56F84x系列。,天津工业大学,7,9.2 DSP56800E处理器,1. DSP56800E处理器结构及特点 DSP56800E内核包括数据算术逻辑单元(Data Arithmetic Logic Unit,ALU)、地址产生单元(Address Generation Unit,AGU)、程序控制器(Program Controller)、位操作单元(Bit-Manipulation Unit)、增强的片上模拟模块(EOnCE)和相关总线。,天津工业大学,8,9.2 DSP56800E处理器,特点: 高性能 兼容性 编程容易 支持高级语言 丰富的指令集 高代码密度 支持多任务 精度 硬件循环 并行化 无形的指令管道 低功耗 实时调试,天津工业大学,9,9.2 DSP56800E处理器,2. DSP56800E内核总线 包括地址总线和数据总线。 地址总线包括程序地址存储空间地址总线(PAB)、主数据地址总线(XAB1)和次数据地址总线(XAB2)。 PAB总线为21位,可以按字节、字和长字访问,用来按字访问程序存储器。 XAB1和XAB2为24位,仅限于按字访问,用来访问数据存储器。,天津工业大学,10,9.2 DSP56800E处理器,数据总线包括2个单方向的32位总线、2个单方向的16位总线和IP-BUS接口。 2个单方向的32位总线包括内核数据读总线(CDBR)和内核数据写总线(CDBW)。 2个单方向的16位总线包括次X数据总线(XDB2)和程序数据总线(PDB)。 数据ALU和数据存储器通过CDBR和CDBW实现读写,CDBR和XDB2可以实现同时对存储器读操作。 外围设备数据传输通过IP-BUS接口。指令字的预取通过PDB实现。,天津工业大学,11,9.2 DSP56800E处理器,3.数据算术逻辑单元ALU ALU实现数据所有的算术、逻辑和移位操作。 数据ALU中包括3个16位数据寄存器(X0、Y0和Y1)、4个36位累加寄存器(A、B、C及D)、1个乘-累加(MAC)单元、1个单个位累加移位器、1个算术逻辑多位移位器、1个MAC输出限制器和1个数据限制器。,9.2 DSP56800E处理器,天津工业大学,12,天津工业大学,13,9.2 DSP56800E处理器,4. 地址产生单元AGU AGU可以直接寻址XAB1和XAB2总线上的224(16M)字,PAB上的221(2M)字。 AGU包括7个24位地址寄存器(R0-R5、N)、4个影子寄存器(为R0、R1、N、M01而设)、1个24位专用的堆栈指针寄存器(SP)、2个偏移寄存器(N、N3)、1个16位变址寄存器(M01)、1个24位加法器和1个24位模运算单元。,9.2 DSP56800E处理器,天津工业大学,14,天津工业大学,15,9.2 DSP56800E处理器,5. 程序控制器 主要负责指令预取、解码、中断处理、硬件自锁和循环。 包括1个锁指令单元和解码器、硬件循环控制单元、中断控制逻辑、程序计数器(PC)、2个为快速中断而设的特殊寄存器、7个用户可以访问的状态和控制寄存器(2级硬件栈、循环地址寄存器(LA)、循环地址寄存器2(LA2)、循环计数寄存器(LC)、循环计数寄存器2(LC2)、状态寄存器(SR)、操作模式寄存器(OMR)。2个为快速中断而设的特殊寄存器包括快速中断返回地址寄存器(FIRA)和快速中断状态寄存器(FISR)。,9.2 DSP56800E处理器,天津工业大学,16,天津工业大学,17,9.2 DSP56800E处理器,6. 位操作单元 位操作单元执行数据存储器字、外设寄存器和DSP56800E内核寄存器的位域操作。 可以操作16位的字内的测试、设置、清0或者翻转单个位或多位。 位操作单元也可以为按照位域进行分支的指令来测试字节。,9.3 DSP56800E的寻找方式,寻址方式指明如何找到一条指令中的操作数(立即数、寄存器或者内存中),并提供操作数的准确地址。可分为以下4类: 直接寄存器寻址方式直接引用片上寄存器中的值; 间接地址寄存器寻址方式引用地址寄存器所指向的地址单元中的值; 立即数寻址方式指令中包含操作数本身; 绝对地址寻址方式使用指令中的地址所指向的地址单元中的值。,天津工业大学,18,天津工业大学,19,9.3 DSP56800E的寻找方式,(1)直接寄存器寻址方式 指明每个操作数(最高可达3个)是AGU、数据ALU或者是控制寄存器中的寄存器。 例如:MOVE.W R0,X0 (2)间接地址寄存器寻址方式 操作数并不在地址寄存器中,而位于地址寄存器中指向的存储单元中。例如: MOVE.BP X:(R5)+,A; MOVE.W X:(R5)+,A; MOVE.L X:(R5)+,A; MOVE.BP X:(R5)+,A;,天津工业大学,20,9.3 DSP56800E的寻找方式,(3)立即数寻址方式 不适用地址寄存器指明有效的地址,它在指令中直接指明操作数的值。例如: MOVE.L #-4,B 指令执行之前,B的值为任意数,执行之后B的值为0xFFFFFFFFC。 MOVE.W #-2,R0 指令执行之前,R0的值为任意数,执行之后R0的值为0xFFFFFE。,天津工业大学,21,9.3 DSP56800E的寻找方式,(4)绝对寻址方式 绝对寻址方式不使用地址寄存器指明有效地址。包括直接寻址、扩展寻址和立即数。例如: MOVE.W R2,X:$0003 (5)隐式的寻址方式 一些指令隐式地包含程序计数器(PC)、软件栈、硬件栈、循环地址寄存器(LA)、循环计数器(LC)或者状态寄存器(SR)等寄存器。 例如,JSR、RTI、RTS指令访问PC、SR、SP寄存器时不用明确地在指令中指出。,天津工业大学,22,9.4 DSP56800E指令系统,1. 数据传送类指令 传送指令在内核寄存器和内存或外设之间传送数据,或两个内存或外设地址间传送数据。将累加器的值写入内存或者外设的传送指令可以自动填充或者限制写入的值。,9.4 DSP56800E指令系统,天津工业大学,23,天津工业大学,24,9.4 DSP56800E指令系统,2. 算术运算类指令 (1)乘法指令 为数据ALU中所有乘法操作。部分乘法指令可以规定数据传送的方式。 这类指令数据传输允许预取下一条指令使用的新数据或者存储先前指令计算的结果。 乘法指令的执行需要1个指令周期,影响条件码寄存器一个或多个位。,9.4 DSP56800E指令系统,天津工业大学,25,天津工业大学,26,9.4 DSP56800E指令系统,2. 算术运算类指令 (2)算术指令 不包括乘法算术指令。虽然使用基于寄存器的操作数允许并行执行数据移动操作,但是这些指令仍可以对寄存器或存储器中的值进行操作。 指令使用复杂的寻址方式可能会耗时长,但是算术指令一般需要1个指令周期。 算术指令影响条件码寄存器的一个或多个位。,9.4 DSP56800E指令系统,天津工业大学,27,9.4 DSP56800E指令系统,天津工业大学,28,9.4 DSP56800E指令系统,天津工业大学,29,天津工业大学,30,9.4 DSP56800E指令系统,3. 逻辑运算类与位操作类指令 (1)移位指令 移位指令用来执行数据ALU中的移位和循环操作。除了多位移位指令(ASLL.L、ASRR.L和LSRR.L)执行需要2个指令周期,其它指令执行通常需要1个指令周期。 这些指令影响条件码寄存器一个或多个位。 ASL指令不能用于16位X0、Y0、Y1寄存器移位,因为条件代码的值可能有误,此时应用ASL.W指令。,9.4 DSP56800E指令系统,天津工业大学,31,天津工业大学,32,9.4 DSP56800E指令系统,3. 逻辑运算类与位操作类指令 (2)逻辑指令 逻辑指令执行布尔逻辑操作,逻辑指令不允许数据传输,除了EOR.L指令。逻辑指令执行需要1个指令周期。,9.4 DSP56800E指令系统,天津工业大学,33,天津工业大学,34,9.4 DSP56800E指令系统,3. 逻辑运算类与位操作类指令 (3)位操作指令 位操作指令用来测试或修改一个字中的一位或多位,可以对存储器、外设或寄存器进行操作。状态寄存器的进位位是受这些指令影响的唯一条件码。位操作指令执行需要2、3或4个指令周期。,9.4 DSP56800E指令系统,天津工业大学,35,天津工业大学,36,9.4 DSP56800E指令系统,3. 逻辑运算类与位操作类指令 (4)循环指令 循环指令用来执行程序循环,DSP56800E使用单指令(REP)或块指令(DO)支持有效的硬件循环。使用循环指令可以显著地增加迭代算法的性能。,天津工业大学,37,9.4 DSP56800E指令系统,4. 程序控制类指令 包括分支、转移、有条件分支、有条件转移和其他影响程序计数器和软件栈的指令。指令集中还有使DSC处于低功耗状态的STOP和WAIT指令。,9.4 DSP56800E指令系统,天津工业大学,38,天津工业大学,39,9.4 DSP56800E指令系统,5. AGU算术指令 AGU算术指令执行地址产生单元的所有地址计算操作。尽管一些指令使用立即数,但是通常大部分指令使用AGU寄存器作为操作数。只有CMPA、CMPA.W、DECTSTA、TSTA.B、TSTA.W、TSTA.L和TSTDECA.W指令会修改条件码寄存器中的位。 AGU算术指令没有可选的数据传送方式。指令执行通常需要1个指令周期,但有些操作会增加额外的周期,这取决于操作数寻址方式。,9.4 DSP56800E指令系统,天津工业大学,40,天津工业大学,41,9.5 DSP56800E汇编语言基础,1. DSP56800E汇编源程序格式 (1)标号,天津工业大学,42,9.5 DSP56800E汇编语言基础,1. DSP56800E汇编源程序格式 (2)操作码 操作码包括指令码以及后面即将介绍的DSP56800E编译器可以识别的伪指令码。 对于有标号的行,必须用至少一个空格或制表符(TAB)将标号与操作码隔开; 对于没有标号的行,不能从第一列开始写指令码,应以空格或制表符(TAB)开头。DSP56800E编译器不区分操作码中字母的大小写。,天津工业大学,43,9.5 DSP56800E汇编语言基础,1. DSP56800E汇编源程序格式 (3)操作数 操作数可以是地址、标号或指令码定义的常数,也可以是由伪运算符构成的表达式。若一条指令或伪指令有操作数,则操作数与操作码之间必须用空格隔开书写。操作数多于一个的,操作数之间用逗号“,”分隔。 常数标识 DSP56800E编译器识别的常数有十进制(默认,不需要前缀标识)、十六进制(用$或0x前缀标识)、二进制(用%前缀标识)。,天津工业大学,44,9.5 DSP56800E汇编语言基础,1. DSP56800E汇编源程序格式 (3)操作数 “#”表示立即数 一个常数前添加“#”表示一个立即数,不加“#”时,表示一个地址。 伪运算符 DSP56800E编译器识别表1-14所示的伪运算符。 (4)注释 注释即是说明文字,用分号“;”引导。,天津工业大学,45,9.5 DSP56800E汇编语言基础,天津工业大学,46,9.5 DSP56800E汇编语言基础,2. DSP56800E汇编语言伪指令 (1)字符串的替代定义DEFINE DEFINE symbol string 该指令用于定义替换的字符串,应用于之后的所有源代码行,用标志symbol取代字符串string。 此外,标志symbol不能超过512个字符,其中的第一个字符必须是字母,剩下的都必须是字母、数字或下划线。 当遇到DEFINE指令时,会被当作宏定义使用。DEFINE指令只适用于它所定义的范围,不允许与标签label一起使用。如: DEFINE ARRAYSIZ 10*5 DS ARRAYSIZ 以上两行可以变形为:DS 10*5,天津工业大学,47,9.5 DSP56800E汇编语言基础,2. DSP56800E汇编语言伪指令 (2)文件包含指令INCLUDE INCLUDE string 该指令是一个附加文件的链接指示命令,可以把另一个文件加入到当前的源文件一起汇编,成为一个完整的源程序。 string指代文件名。默认扩展名为.asm。 该指令不允许与标签label一起使用。 例如: INCLUDE storagemem.asm,天津工业大学,48,9.5 DSP56800E汇编语言基础,2. DSP56800E汇编语言伪指令 (3)初始化存储空间和指令计数器指令ORG ORG rmsrlcrmp,lmsllclmp 该指令用于指定地址并且指出存储空间和映射变化。它还可以指定一个隐式的计数模式,作为初始覆盖的机制使用。 该指令不允许与标签label一起使用。,天津工业大学,49,9.5 DSP56800E汇编语言基础,2. DSP56800E汇编语言伪指令 (4)数值等价表示指令EQU label EQU X: | P:expression EQU指令将expression的值和存储空间属性赋给符号label。如果表达式expression没有指明存储空间,那么它的前面可以选择性添加指定的存储空间修饰符来强制确定存储空间属性。 EQU指令是指令集中的一个将label赋值指令,而不是将程序计数器赋值给label的指令。标签label不能在程序其他任何地方重定义。expression可以是相对的或者是绝对的,但是不能包含一个还没有定义的符号(不允许向前参考)。 例如:A_D_PORT EQU X:$4000,天津工业大学,50,9.5 DSP56800E汇编语言基础,2. DSP56800E汇编语言伪指令 (5)全局变量声明指令GLOBAL GLOBAL symbol,symbol,.,symbol 该指令指明当前段所定义的符号列表,这些定义可以被所有的段访问。这个指令在被SECTION和ENDSEC所限定的程序块中使用时才有效。该指令不允许与标签label一起使用。例如: SECTION IO GLOBAL LOOPA ;LOOPA为全局的,可以被其他段访问 ENDSEC,天津工业大学,51,9.5 DSP56800E汇编语言基础,2. DSP56800E汇编语言伪指令 (6)局部变量声明指令LOCAL LOCAL symbol,symbol,.,symbol 该指令指明当前段所定义的符号列表,这些定义明确地局限于这个段。它可以当作包含一个名字相似符号的封闭段的嵌套段的向前参考。这个指令在被SECTION和ENDSEC所限定的程序块中使用时才有效。LOCAL指令必须在符号symbol定义之前出现。该指令不允许与标签label一起使用。例如: SECTION IO LOCAL LOOPA ;局限于此段 ENDSEC,天津工业大学,52,9.5 DSP56800E汇编语言基础,2. DSP56800E汇编语言伪指令 (7)设置指令SET label SET expression SET label expression 该指令用来将操作数域的expression的值赋给标签label。SET指令功能与EQU指令有些类似。但是,通过SET指令定义的标签label可以在程序的其它部分重新定义(但只能通过使用另一个SET指令)。SET指令在建立临时或者重用计数器时很有用。SET指令中操作数域的expression必须是绝对的,不能包含一个未定义的符号(不允许向前引用)。 例如:COUNT SET 0,天津工业大学,53,9.5 DSP56800E汇编语言基础,2. DSP56800E汇编语言伪指令 (8)外部模块符号引用指令XREF XREF symbol,symbol,.,symbol 该指令用于指定当前段引用的符号列表,这些符号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论