您好,欢迎访问三七文档
-1-数字信号处理课程组电子与信息工程学院数字信号处理及DSP技术(DigitalSignalProcessingandDSPTechnology)-2-目录1.1概述1.2DSP56800E处理器1.3DSP56800E的寻址方式1.4DSP56800E指令系统1.5DSP56800E汇编语言基础数字信号控制器原理与实践——MC56F8257-3-1.1概述1.DSP56800处理器16位处理器,采用哈佛结构;80MHz时钟频率下,可达到40MIPS的指令执行速度;具有3条内部地址总线和1条外部地址总线;2.DSP56800E处理器16位处理器,具有DSP56800处理器所拥有的特点;AGU算术单元从16位增加到24位;程序存储器、数据存储器容量大幅度增加;在数据处理类型上增加了字节型和长整型等类型;中断处理方面,DSP56800E处理器增加了中断控制器,优化了中断优先级设定及处理。相关芯片:MC56F80x系列到MC56F83x系列。-4-3.DSP56800EX处理器32位处理器,具有DSP56800E处理器所拥有的特点;32位乘法运算及MAC;在AGU算术运算单元中所有寄存器都有影子寄存器,减少了相关数据存储时间;具有逆位寻址方式,支持傅里叶变换(FFT)。相关芯片:MC56F80x系列到MC56F84x系列。1.1概述-5-1.2DSP56800E处理器1.DSP56800E处理器结构及特点DSP56800E内核包括:数据算术逻辑单元(DataArithmeticLogicUnit,ALU)地址产生单元(AddressGenerationUnit,AGU)程序控制器(ProgramController)位操作单元(Bit-ManipulationUnit)增强的片上模拟模块(EOnCE)和相关总线。特点:高性能、兼容性、编程容易、支持高级语言、丰富的指令集、高代码密度、支持多任务、精度高、硬件循环、并行化、无形的指令管道、低功耗、实时调试。PCLALA2HWS0HWS1FIRAOMRSRLCLC2FISR指令解码器中断单元锁相环单元ALU1ALU2R0R1R2R3R4R5NSPM01N3程序控制单元地址产生单元(AGU)程序存储器数据存储器IP-总线接口外部总线接口位控单元EOnCEJTAGTAPA1B1C1D1Y1Y0X0A0B0C0D0A2B2C2D2MAC和ALU多位移位器数据算术逻辑单元(ALU)YXDB2CDBRCDBWPDBPABXAB2XAB1-7-2.DSP56800E内核总线包括地址总线和数据总线。地址总线包括程序地址存储空间地址总线(PAB)、主数据地址总线(XAB1)和次数据地址总线(XAB2)。PAB总线为21位,可以按字节、字和长字访问,用来按字访问程序存储器。XAB1和XAB2为24位,仅限于按字访问,用来访问数据存储器。1.2DSP56800E处理器-8-数据总线包括2个单方向的32位总线、2个单方向的16位总线和IP-BUS接口。2个单方向的32位总线包括内核数据读总线(CDBR)和内核数据写总线(CDBW)。2个单方向的16位总线包括次X数据总线(XDB2)和程序数据总线(PDB)。数据ALU和数据存储器通过CDBR和CDBW实现读写,CDBR和XDB2可以实现同时对存储器读操作。外围设备数据传输通过IP-BUS接口。指令字的预取通过PDB实现。1.2DSP56800E处理器-9-3.数据算术逻辑单元ALUALU实现数据所有的算术、逻辑和移位操作。数据ALU中包括3个16位数据寄存器(X0、Y0和Y1)、4个36位累加寄存器(A、B、C及D)、1个乘-累加(MAC)单元、1个单个位累加移位器、1个算术逻辑多位移位器、1个MAC输出限制器和1个数据限制器。1.2DSP56800E处理器-10-4.地址产生单元AGUAGU可以直接寻址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位模运算单元。1.2DSP56800E处理器-11-5.程序控制器主要负责指令预取、解码、中断处理、硬件自锁和循环。包括1个锁指令单元和解码器、硬件循环控制单元、中断控制逻辑、程序计数器(PC)、2个为快速中断而设的特殊寄存器、7个用户可以访问的状态和控制寄存器(2级硬件栈、循环地址寄存器(LA)、循环地址寄存器2(LA2)、循环计数寄存器(LC)、循环计数寄存器2(LC2)、状态寄存器(SR)、操作模式寄存器(OMR))。2个为快速中断而设的特殊寄存器包括快速中断返回地址寄存器(FIRA)和快速中断状态寄存器(FISR)。1.2DSP56800E处理器-12-6.位操作单元位操作单元执行数据存储器字、外设寄存器和DSP56800E内核寄存器的位域操作。可以操作16位的字内的测试、设置、清0或者翻转单个位或多位。位操作单元也可以为按照位域进行分支的指令来测试字节。1.2DSP56800E处理器-13-1.3DSP56800E的寻址方式寻址方式指明如何找到一条指令中的操作数(立即数、寄存器或者内存中),并提供操作数的准确地址。可分为以下4类:直接寄存器寻址方式—直接引用片上寄存器中的值;间接地址寄存器寻址方式—引用地址寄存器所指向的地址单元中的值;立即数寻址方式—指令中包含操作数本身;绝对地址寻址方式—使用指令中的地址所指向的地址单元中的值。-14-(1)直接寄存器寻址方式指明每个操作数(最高可达3个)是AGU、数据ALU或者是控制寄存器中的寄存器。例如:MOVE.WR0,X0(2)间接地址寄存器寻址方式操作数并不在地址寄存器中,而位于地址寄存器中指向的存储单元中。例如:MOVE.BPX:(R5)+,A;MOVE.WX:(R5)+,A;MOVE.LX:(R5)+,A;MOVE.BPX:(R5)+,A;1.3DSP56800E的寻址方式-15-(3)立即数寻址方式不适用地址寄存器指明有效的地址,它在指令中直接指明操作数的值。例如:MOVE.L#-4,B指令执行之前,B的值为任意数,执行之后B的值为0xFFFFFFFFC。MOVE.W#-2,R0指令执行之前,R0的值为任意数,执行之后R0的值为0xFFFFFE。1.3DSP56800E的寻址方式-16-(4)绝对寻址方式绝对寻址方式不使用地址寄存器指明有效地址。包括直接寻址、扩展寻址和立即数。例如:MOVE.WR2,X:$0003(5)隐式的寻址方式一些指令隐式地包含程序计数器(PC)、软件栈、硬件栈、循环地址寄存器(LA)、循环计数器(LC)或者状态寄存器(SR)等寄存器。例如,JSR、RTI、RTS指令访问PC、SR、SP寄存器时不用明确地在指令中指出。1.3DSP56800E的寻址方式-17-1.4DSP56800E指令系统1.数据传送类指令传送指令在内核寄存器和内存或外设之间传送数据,或两个内存或外设地址间传送数据。将累加器的值写入内存或者外设的传送指令可以自动填充或者限制写入的值。-18-2.算术运算类指令(1)乘法指令为数据ALU中所有乘法操作。部分乘法指令可以规定数据传送的方式。这类指令数据传输允许预取下一条指令使用的新数据或者存储先前指令计算的结果。乘法指令的执行需要1个指令周期,影响条件码寄存器一个或多个位。1.4DSP56800E指令系统-19-1.4DSP56800E指令系统-20-2.算术运算类指令(2)算术指令不包括乘法算术指令。虽然使用基于寄存器的操作数允许并行执行数据移动操作,但是这些指令仍可以对寄存器或存储器中的值进行操作。指令使用复杂的寻址方式可能会耗时长,但是算术指令一般需要1个指令周期。算术指令影响条件码寄存器的一个或多个位。1.4DSP56800E指令系统-23-1.4DSP56800E指令系统-24-1.4DSP56800E指令系统-25-3.逻辑运算类与位操作类指令(1)移位指令移位指令用来执行数据ALU中的移位和循环操作。除了多位移位指令(ASLL.L、ASRR.L和LSRR.L)执行需要2个指令周期,其它指令执行通常需要1个指令周期。这些指令影响条件码寄存器一个或多个位。ASL指令不能用于16位X0、Y0、Y1寄存器移位,因为条件代码的值可能有误,此时应用ASL.W指令。1.4DSP56800E指令系统3.逻辑运算类与位操作类指令(2)逻辑指令逻辑指令执行布尔逻辑操作,逻辑指令不允许数据传输,除了EOR.L指令。逻辑指令执行需要1个指令周期。-28-3.逻辑运算类与位操作类指令(3)位操作指令位操作指令用来测试或修改一个字中的一位或多位,可以对存储器、外设或寄存器进行操作。状态寄存器的进位位是受这些指令影响的唯一条件码。位操作指令执行需要2、3或4个指令周期。1.4DSP56800E指令系统-29-3.逻辑运算类与位操作类指令(4)循环指令循环指令用来执行程序循环,DSP56800E使用单指令(REP)或块指令(DO)支持有效的硬件循环。使用循环指令可以显著地增加迭代算法的性能。1.4DSP56800E指令系统-30-4.程序控制类指令包括分支、转移、有条件分支、有条件转移和其他影响程序计数器和软件栈的指令。指令集中还有使DSC处于低功耗状态的STOP和WAIT指令。1.4DSP56800E指令系统-32-5.AGU算术指令AGU算术指令执行地址产生单元的所有地址计算操作。尽管一些指令使用立即数,但是通常大部分指令使用AGU寄存器作为操作数。只有CMPA、CMPA.W、DECTSTA、TSTA.B、TSTA.W、TSTA.L和TSTDECA.W指令会修改条件码寄存器中的位。AGU算术指令没有可选的数据传送方式。指令执行通常需要1个指令周期,但有些操作会增加额外的周期,这取决于操作数寻址方式。1.4DSP56800E指令系统-33-1.5DSP56800E汇编语言基础1.DSP56800E汇编源程序格式(1)标号-34-1.DSP56800E汇编源程序格式(2)操作码操作码包括指令码以及后面即将介绍的DSP56800E编译器可以识别的伪指令码。对于有标号的行,必须用至少一个空格或制表符(TAB)将标号与操作码隔开;对于没有标号的行,不能从第一列开始写指令码,应以空格或制表符(TAB)开头。DSP56800E编译器不区分操作码中字母的大小写。1.5DSP56800E汇编语言基础-35-1.DSP56800E汇编源程序格式(3)操作数操作数可以是地址、标号或指令码定义的常数,也可以是由伪运算符构成的表达式。若一条指令或伪指令有操作数,则操作数与操作码之间必须用空格隔开书写。操作数多于一个的,操作数之间用逗号“,”分隔。常数标识DSP56800E编译器识别的常数有十进制(默认,不需要前缀标识)、十六进制(用$或0x前缀标识)、二进制(用%前缀标识)。1.5DSP56800E汇编语言基础-36-1.DSP56800E汇编源程序格式(3)操作数“#”表示立即数一个常数前添加“#”表示一个立即数,不加“#”时,表示一个地址。伪运算符DSP56800E编译器识别表1-14所示的伪运算符。(4)注释注释即是说明文字,用分号“;”引导。1.5DSP56800E汇编语言基础-37-1.5DSP56800E汇编语言基础-38-2.DSP56800E汇编语言伪指令(1)字符串的替代定义DEFINEDEFINEsymbolstring该指令用于定义替换的字符串,应用于之后的所有源代码行,用标志symbol取代字符串string。此外,标志symbol不能超过512个字符,其中的第一个字符必须是字母,剩下的都必须是字母、数字或下划线。当遇到DEFINE指令时,会被当作宏定义使用。DEFINE指令只适用于它所定义的范围,不允许与标签la
本文标题:DSC第1章
链接地址:https://www.777doc.com/doc-2910415 .html