第2章TMS320C55x的硬件结构_第1页
第2章TMS320C55x的硬件结构_第2页
第2章TMS320C55x的硬件结构_第3页
第2章TMS320C55x的硬件结构_第4页
第2章TMS320C55x的硬件结构_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

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

文档简介

1、nCPU寄存器寄存器 第第2章章 TMS320C55x的硬件结构的硬件结构2.4 CPU寄存器寄存器lC55x的寄存器(见表的寄存器(见表2-8 )lC55x寄存器的映射地址及描述(见表寄存器的映射地址及描述(见表2-9 )2.4.1 概况概况 注意事项:注意事项: ST0_55、ST1_55和和ST3_55都有两个访问地址;都有两个访问地址; T3、RSA0L、REA0L和和SP有两个访问地址;有两个访问地址; 任何装入任何装入BRC1的指令将相同的值装入的指令将相同的值装入BRS1。 对于对于ST0_55、ST1_55和和ST3_55,对于其中一个地址,所有的对于其中一个地址,所有的C55

2、x位均位均可访问;在另外一个地址(称为保护地可访问;在另外一个地址(称为保护地址),某些保护位不能被修改。保护地址),某些保护位不能被修改。保护地址是为了提供对址是为了提供对C54x代码的支持,以代码的支持,以便写入便写入ST0、ST1以及以及PMST(C54x对对应应ST3_55) 对于对于T3、RSA0L、REA0L和和SP,当使用当使用DP直接寻址方式访问存储器映直接寻址方式访问存储器映射寄存器时,将访问两个地址中更高的射寄存器时,将访问两个地址中更高的地址,即地址,即 T3=23H(不是(不是0EH);); RSA0L=3DH(不是(不是1BH);); REA0L=3FH(不是(不是1

3、CH);); SP=4DH(不是(不是18H)表表2-8 寄存器总表(寄存器总表(1)缩 写名 称大小AC0AC3累加器0340位AR0AR7辅助寄存器0716位BK03,BK47,BKC循环缓冲区大小寄存器16位BRC0,BRC1块循环计数器0和116位BRS1BRC1保存寄存器16位BSA01,BSA23,BSA45,BSA67,BSAC循环缓冲区起始地址寄存器16位CDP系数数据指针(XCDP的低位部分)16位CDPHXCDP的高位部分7位CFCT控制流关系寄存器8位CSR计算单循环寄存器16位DBIER0,DBIER1调试中断使能寄存器0和116位DP数据页寄存器(XDP的低位部分)1

4、6位DPHXDP的高位部分7位IER0,IER1中断使能寄存器0和116位IFR0,IFR1中断标志寄存器0和116位IVPD,IVPH中断向量指针16位表表2-8 寄存器总表(寄存器总表(2)PC程序计数器24位PDP外设数据页寄存器9位REA0,REA1块循环结束地址寄存器0和124位RETA返回地址寄存器24位RPTC单循环计数器16位RSA0,RSA1块循环起始地址寄存器0和124位SP数据堆栈指针16位SPHXSP和XSSP的高位7位SSP系统堆栈指针16位ST0_55ST3_55状态寄存器0316位T0T3暂时寄存器16位TRN0TRN1变换寄存器0和116位XAR0XAR7扩展辅

5、助寄存器0723位XCDP扩展系数数据指针23位XDP扩展数据页寄存器23位XSP扩展数据堆栈指针23位XSSP扩展系统堆栈指针23位表表2-9 存储器映射寄存器(存储器映射寄存器(1) 表表2-9 存储器映射寄存器(存储器映射寄存器(2) 表表2-9 存储器映射寄存器(存储器映射寄存器(3) 表表2-9 存储器映射寄存器(存储器映射寄存器(4) 表表2-9 存储器映射寄存器(存储器映射寄存器(5) 表表2-9 存储器映射寄存器(存储器映射寄存器(6) 表表2-9 存储器映射寄存器(存储器映射寄存器(7) 表表2-9 存储器映射寄存器(存储器映射寄存器(8) 表表2-9 存储器映射寄存器(存储

6、器映射寄存器(9) 2.4.2 累加器(累加器(AC0AC3)lC55x的的CPU包括包括4个个40位的累加器位的累加器AC0、AC1、AC2、AC3lAC0、AC1、AC2、AC3等价。任何一条使用一个累加等价。任何一条使用一个累加器的指令,都可以通过编程来使用器的指令,都可以通过编程来使用4个累加器中的任何一个累加器中的任何一个个l在在C54x兼容模式(兼容模式(C54CM=1)下,累加器)下,累加器AC0、AC1分分别对应于别对应于C54x里的累加器里的累加器A、B l 每个累加器分为低字(每个累加器分为低字(ACxL)、高字()、高字(ACxH) 和和8个个保护位(保护位(ACxG),

7、用户可以使用访问存储器映射寄存器用户可以使用访问存储器映射寄存器的寻址方式,分别访问这的寻址方式,分别访问这3部分部分 AC0GAC0LAC0HAC1GAC1LAC1HAC2GAC2LAC2HAC3GAC3LAC3HAC0AC1AC2AC3393231161502.4.3 变换寄存器变换寄存器TRN0、TRN1lC55x有有2个变换寄存器个变换寄存器TRN0、TRN1l用途:在用途:在比较比较-选择选择-极值极值指令里使用指令里使用u比较两个累加器的高段字和低段字后,执行选择两比较两个累加器的高段字和低段字后,执行选择两个个16位极值的指令,以更新位极值的指令,以更新TRN0和和TRN1。比较

8、累。比较累加器的高段字后更新加器的高段字后更新TRN0,比较累加器的低段字后,比较累加器的低段字后更新更新TRN1u在比较完两个累加器的全部在比较完两个累加器的全部40位后,执行选择一个位后,执行选择一个40位极值的指令,以更新被选中的变换寄存器位极值的指令,以更新被选中的变换寄存器(TRN0或或TRN1) 2.4.4 T寄存器(寄存器(T0-T3) l用途用途u存放乘法、乘加以及乘减运算里的一个乘数存放乘法、乘加以及乘减运算里的一个乘数u存放存放D单元里加法、减法和装入运算的移位数单元里加法、减法和装入运算的移位数u用交换指令交换辅助寄存器(用交换指令交换辅助寄存器(AR0-AR7)和)和T

9、寄存器寄存器中的内容时,跟踪多个指针值中的内容时,跟踪多个指针值u在在D单元单元ALU里作双里作双16位运算时,存放位运算时,存放Viterbi蝶形的蝶形的变换尺度变换尺度l CPU包括包括4个个16位通用位通用T寄寄存器:存器:T0、T1、T2、T32.4.5 用作数据地址空间和用作数据地址空间和I/O空间的寄存器空间的寄存器 表表2-10 用作数据地址空间和用作数据地址空间和I/O空间的寄存器空间的寄存器1. 辅助寄存器(辅助寄存器(XAR0XAR7/AR0AR7)低字的作用:低字的作用: 用于用于ARAR间接寻址模式,以间接寻址模式,以及双及双ARAR间接寻址模式。间接寻址模式。 提供提

10、供7 7位数据页内的位数据页内的1616位偏位偏移量(形成一个移量(形成一个2323位地址)位地址); ;存放位地址存放位地址; ;作为通用寄存器作为通用寄存器或计数器。或计数器。高高7 7位用于指定要访问数据位用于指定要访问数据空间的数据页空间的数据页访问属性:访问属性: XARn只能用专用指令访问; ARn可用专用指令访问,也可以作为存储器映射寄存器访问; ARnH不能单独访问,必须通过访问XARn来访问ARnHlCPU在存储器中映射了一个系数数据指针(在存储器中映射了一个系数数据指针(CDP)和)和一个相关的扩展寄存器(一个相关的扩展寄存器(CDPH):):2. 系数数据指针(系数数据指

11、针(XCDP/CDP)lCPU可以连接这个寄存器形成一个扩展系数数据指针可以连接这个寄存器形成一个扩展系数数据指针(XCDP)u高高7位(位(CDPH)用于指定要访问数据空间的数据页)用于指定要访问数据空间的数据页u低字(低字(CDP)用来作为)用来作为16位偏移量与位偏移量与7位数据页形成位数据页形成一个一个23位地址位地址 lXCDP或或CDP用在用在CDP间接寻址方式和系数间接寻间接寻址方式和系数间接寻址方式中,址方式中,CDP可用于任何指令中访问一个单数据可用于任何指令中访问一个单数据空间值,在双空间值,在双MAC指令中,它还可以独立地提供第指令中,它还可以独立地提供第三个操作数。三个

12、操作数。 表表2-12 XCDP的访问属性的访问属性 3. 循环缓冲区首地址寄存器循环缓冲区首地址寄存器lCPU有有5个个16位的循环缓冲区首地址寄存器:位的循环缓冲区首地址寄存器:BSA01,BSA23,BSA45,BSA67,BSACl作用:定义循环的首地址作用:定义循环的首地址l每个循环缓冲区首地址寄存器与一个或两个特殊的每个循环缓冲区首地址寄存器与一个或两个特殊的指针相关联指针相关联4. 循环缓冲区大小寄存器循环缓冲区大小寄存器l三个三个16位的循环缓冲区大小寄存器(位的循环缓冲区大小寄存器(BK03,BK47,BKC)l 用途:指定循环缓冲区大小(最大为用途:指定循环缓冲区大小(最大

13、为65535)l每个循环缓冲区大小寄存器与一个或四个特殊的指针每个循环缓冲区大小寄存器与一个或四个特殊的指针相关联相关联5.数据页寄存器(数据页寄存器(XDP/DP)lCPU在存储器中映射了一个数据页寄存器(在存储器中映射了一个数据页寄存器(DP)和一)和一个相关的扩展寄存器(个相关的扩展寄存器(DPH)lCPU连接这两个寄存器形成一个扩展数据页寄存器连接这两个寄存器形成一个扩展数据页寄存器(XDP)uDPH指定要访问数据空间的指定要访问数据空间的7位数据页位数据页u低字(低字(DP)用来代表一个)用来代表一个16位偏移地址位偏移地址l用途:用途:u在基于在基于DP的直接寻址方式中,的直接寻址

14、方式中,XDP指定指定23位地址位地址u在在k16绝对寻址方式中,绝对寻址方式中,DPH与一个与一个16位的立即数位的立即数连接形成连接形成23位地址位地址表表2-15 XDP寄存器的访问属性寄存器的访问属性6.外设数据页指针(外设数据页指针(PDP)l对于对于PDP直接寻址方式,直接寻址方式, 9位的外设数据页指针位的外设数据页指针(PDP)选择)选择64K字字I/O空间中的一个空间中的一个128字页面字页面7.堆栈指针(堆栈指针(XSP/SP,XSSP/SSP)l有关堆栈指针有关堆栈指针u数据堆栈指针数据堆栈指针(SP)u系统堆栈指针系统堆栈指针(SSP)u相关扩展寄存器相关扩展寄存器(S

15、PH)l当访问数据堆栈时,当访问数据堆栈时,CPU连接连接SPH和和SP形成一个扩展的形成一个扩展的堆栈指针(堆栈指针(XSP),指向最后压入数据堆栈的数据),指向最后压入数据堆栈的数据uSPH代表代表7位数据页位数据页uSP指向页中某个具体地址指向页中某个具体地址l当访问系统堆栈时,当访问系统堆栈时,CPU连接连接SPH和和SSP形成一个扩展形成一个扩展的堆栈指针(的堆栈指针(XSSP),指向最后压入系统堆栈的数据),指向最后压入系统堆栈的数据表表2-16 堆栈指针的访问属性堆栈指针的访问属性2.4.6 程序流寄存器(程序流寄存器(PC、RETA、CFCT)l程序流寄存器(程序流寄存器(3个

16、)个)寄存器描 述PC24位的程序计数器。存放I单元里解码的16字节代码的地址.当CPU执行中断或调用子程序时,当前的PC值(返回地址)存起来,然后把新的地址装入PC。当CPU从中断服务或子程序返回时,返回地址重新装入PCRETA返回地址寄存器。如果所选择的堆栈配置使用快速返回,则在执行子程序时,RETA就作为返回地址的暂存器。RETA和CFCT一起,高效执行多层嵌套的子程序。可用专门的32位装入和存储指令,成对地读写RETA和CFCTCFCT控制流关系寄存器。CPU保存有激活的循环记录(循环的前后关系)。如果选择的堆栈配置使用快速返回,则在执行子程序时,CFCT就作为8位循环关系的暂存器。R

17、ETA和CFCT一起,高效执行多层嵌套的子程序。可用专门的32位 装入和存储指令,成对地读写RETA和CFCT lCFCT寄存器寄存器 CPU由内部位按照一定规则来存放循环的前后关系,即由内部位按照一定规则来存放循环的前后关系,即子程序里循环的状态(激活和未激活)子程序里循环的状态(激活和未激活)u当当CPU执行中断或调用子程序时,循环关系位就存执行中断或调用子程序时,循环关系位就存放在放在CFCT里里u当当CPU从中断或调用子程序返回时,循环关系位就从中断或调用子程序返回时,循环关系位就从从CFCT恢复恢复表表2-18 CFCT各位的含义各位的含义2.4.7 中断管理寄存器中断管理寄存器表表

18、2-19 中断管理寄存器中断管理寄存器 中断向量指针(中断向量指针(IVPD,IVPH)lDSP中断向量指针(中断向量指针(IVPD)l主机中断向量指针(主机中断向量指针(IVPH)16位,指向位,指向256字节的程序字节的程序空间中的中断向量表空间中的中断向量表(IV0IV15和和IV24IV31),这些中断向量供),这些中断向量供DSP专用专用16位,指向位,指向256字节的程序字节的程序空间中的中断向量表空间中的中断向量表(IV16 IV23),这些中),这些中断向量供断向量供DSP和主机共享使和主机共享使用用 说明说明:如果如果IVPDIVPD和和IVPHIVPH的值相同,所有中断向量

19、可能占有相同的的值相同,所有中断向量可能占有相同的256256字节大小的程序空间;字节大小的程序空间;DSPDSP硬件复位时,硬件复位时,IVPDIVPD和和IVPHIVPH都被装入到都被装入到FFFFHFFFFH地址处;地址处;IVPDIVPD和和IVPHIVPH均不受软复位的影响均不受软复位的影响 表表2-20 中断向量地址中断向量地址 在修改在修改IVPIVP之前应确保:之前应确保:INTM=1INTM=1,即所有可屏蔽中断不能响应。,即所有可屏蔽中断不能响应。每个硬件不可屏蔽中断对于原来的每个硬件不可屏蔽中断对于原来的IVPDIVPD和修改后的和修改后的IVPDIVPD都有一个中断向量

20、和中断服务程序。都有一个中断向量和中断服务程序。由由1616位的中断向量指针加上一个位的中断向量指针加上一个5 5位的中断编号后左移位的中断编号后左移3 3位组成一个位组成一个2424位的中断地址。位的中断地址。 2. 中断标志寄存器(中断标志寄存器(IFR0,IFR1)表表2-21 中断标志寄存器中断标志寄存器IFR1表表2-22 中断标志寄存器中断标志寄存器IFR0l16位的中断标志寄存器IFR0和IFR1包括所有可屏蔽中断的标志位l当一个可屏蔽中断向CPU提出申请时,IFR中相应的标志位置1,等待CPU应答中断l可以通过读IFR标志已发送申请的中断,或写1到IFR相应的位撤销中断申请,即

21、写入1清相应位为0l中断被响应后将相应位清0,器件复位将所有位清03.中断使能寄存器(中断使能寄存器(IER0,IER1)表表2-23 中断使能寄存器中断使能寄存器IER1表表2-24 中断使能寄存器中断使能寄存器IER0 l通过设置IER0、IER1的位为u 1 ,打开相应的可屏蔽中断u 0 ,关闭相应的可屏蔽l上电复位时,将所有IER位清0。lER0、IER1不受软件复位指令和DSP热复位的影响,在全局可屏蔽中断使能(INTM=1)之前应初始化它们。4. 调试中断使能寄存器(调试中断使能寄存器(DBIER0,DBIER1)l仅当仅当CPU工作在工作在 实时实时 仿真模式仿真模式 调试调试

22、暂停暂停 时,这两个时,这两个16位的调试中断使能寄存器才会位的调试中断使能寄存器才会使用使用l如果如果CPU工作在实时方式下,工作在实时方式下,DBIER0、DBIER1将被忽略将被忽略2.4.8 循环控制寄存器循环控制寄存器l单循环指令可以重复执行一个单周期指令或并行执单循环指令可以重复执行一个单周期指令或并行执行两个单周期指令,重复次数行两个单周期指令,重复次数N被装在被装在RPTC中,指中,指令将被重复执行令将被重复执行N+1次。次。l在一些无条件单指令循环操作中,可以使用在一些无条件单指令循环操作中,可以使用CSR设设置重复次数。置重复次数。1.1.单指令循环控制单指令循环控制寄存器

23、(寄存器(RPTC,CSR)2.块循环寄存器(块循环寄存器(BRC0,BRC1,BRS1,RSA0,RSA1,REA0,REA1)l块循环指令可以实现块循环指令可以实现2级嵌套,一个块循环(级嵌套,一个块循环(1级)嵌套在另级)嵌套在另一个块循环(一个块循环(0级)内部级)内部l当当C54CM=0,即工作在,即工作在C55x方式下,才实现方式下,才实现2级嵌套级嵌套u当无循环嵌套时,当无循环嵌套时,CPU使用使用0级寄存器级寄存器u当出现循环嵌套时,当出现循环嵌套时,CPU对于对于1级嵌套使用级嵌套使用1级寄存器级寄存器l当当C54CM=1,即工作在,即工作在C54x方式下方式下u只能使用只能

24、使用0级寄存器,通过借助块重复标志寄存器级寄存器,通过借助块重复标志寄存器(BRAF)完成嵌套)完成嵌套表表2-25 块循环寄存器块循环寄存器2.4.9 状态寄存器状态寄存器ST0_55 ST0_55(以及(以及ST1_55和和ST3_55)有)有两个访问地址。两个访问地址。 所有位都可以由第一个地址访问,所有位都可以由第一个地址访问,而在另一个地址(保护地址)里,加而在另一个地址(保护地址)里,加黑部分不能修改;黑部分不能修改; 保护地址是为了支持把保护地址是为了支持把C54x的代的代码写入码写入ST0、ST1和和PMST累加器溢出标志(累加器溢出标志(ACOV0,ACOV1,ACOV2,A

25、COV3)l当累加器当累加器AC0、AC1、AC2或或AC3有数据溢出时有数据溢出时,相应的相应的ACOV0、ACOV1、ACOV2或或ACOV3被置被置1,直到发生以,直到发生以下任一事件:下任一事件:u复位复位uCPU执行条件跳转、调用、返回,或执行一条测试执行条件跳转、调用、返回,或执行一条测试ACOVx状态的指令状态的指令u被指令清被指令清0l溢出方式受溢出方式受M40位的影响位的影响u当当M40=0时,溢出检测在第时,溢出检测在第31位,与位,与C54x兼容兼容u当当M40=1时,溢出检测在第时,溢出检测在第39位位2. 进位位(进位位(CARRY)l进位进位/借位的检测取决于借位的

26、检测取决于M40位位u当当M40=0时,由第时,由第31位检测进位位检测进位/借位借位u当当M40=1时,由第时,由第39位检测进位位检测进位/借位借位l当当D单元单元ALU做加法运算时,若产生进位,则置位做加法运算时,若产生进位,则置位CARRY;如果不产生进位时,则将如果不产生进位时,则将CARRY清清0例外:例外:使用以下语句(将使用以下语句(将Smem移动移动16位),有进位时置位),有进位时置位位CARRY,无进位时不清,无进位时不清0。ADD Smem#16,ACx,ACyl当当D单元单元ALU做减法运算时做减法运算时u若产生借位,将若产生借位,将CARRY清清0。u如果不产生借位

27、,则置位如果不产生借位,则置位CARRY。 例外例外:使用以下语句(将:使用以下语句(将Smem移动移动16位),有借位时位),有借位时 CARRY 清清0,无借位时,无借位时CARRY不变。不变。SUB Smem#16,ACx,ACylCARRY位可以被逻辑移位指令修改。对带符号移位指令位可以被逻辑移位指令修改。对带符号移位指令和循环移位指令,可以选择和循环移位指令,可以选择CARRY位是否需要修改位是否需要修改l目的寄存器是累加器时,用以下指令修改目的寄存器是累加器时,用以下指令修改CARRY位,位,以指示计算结果以指示计算结果MIN src,dstMAX src,dstABSsrc,ds

28、tNEGsrc,dstl可以通过下面两条指令对可以通过下面两条指令对CARRY清零和置位:清零和置位:BCLR CARRY ;清零清零BSET CARRY ;置位置位3. DP位域位域lDP位域位域u占据占据ST0_55的第的第80位位u提供与提供与C54x兼容的数据页指针兼容的数据页指针lC55x有一个独立的数据页指针有一个独立的数据页指针DPuDP(157)的任何变化都会反映在)的任何变化都会反映在ST0_55的的DP位位域上。域上。u基于基于DP的直接寻址方式,的直接寻址方式,C55x使用完整的数据页指针使用完整的数据页指针DP(150),因此不需要使用),因此不需要使用ST0_55的的

29、DP位域。位域。l如果想装入如果想装入ST0_55,但不想改变,但不想改变DP位域的值,可以用位域的值,可以用OR或或AND指令。指令。l所有能影响一个测试所有能影响一个测试/控制位的指令,都可以选择影响控制位的指令,都可以选择影响TC1还是还是TC2lTCx或关于或关于TCx的布尔表达式,都可以在任何条件指的布尔表达式,都可以在任何条件指令里用作触发器令里用作触发器l可以通过下面指令对可以通过下面指令对TCx置位和清零:置位和清零:BCLR TC1 ;TC1清零清零BSET TC1 ;TC1置位置位BCLR TC2 ;TC2清零清零BSET TC2 ;TC2置位置位4. 测试测试/控制位(控

30、制位(TC1,TC2) 测试测试/ /控制位用于保存一些特殊指令的测试结果,使用控制位用于保存一些特殊指令的测试结果,使用要点如下:要点如下:2.4.10 状态寄存器状态寄存器ST1_55l如果如果C54CM=0C55x忽略忽略ASM,C55x移位指令在暂存寄存(移位指令在暂存寄存(T0T3)里指定累加器的移位值,或者直接在指令里用)里指定累加器的移位值,或者直接在指令里用常数指定移位值。常数指定移位值。l如果如果C54CM=1 C55x以兼容方式运行以兼容方式运行C54x代码,代码,ASM用于给出某用于给出某些些C54x移位指令的移位值,移位范围移位指令的移位值,移位范围-1615。1. A

31、SM位位l如果如果C54CM=0,C55x不使用不使用BRAF。l如果如果C54CM=1,C55x以兼容方式运行以兼容方式运行C54x代码,代码,BRAF用于指定或控制一个块循环操作的状态。用于指定或控制一个块循环操作的状态。u在由调用、中断或返回引起的代码切换过程中,都要在由调用、中断或返回引起的代码切换过程中,都要保存和恢复保存和恢复BRAF的值。的值。u当执行远程跳转(当执行远程跳转(FB)或远程调用()或远程调用(FCALL)指令时,)指令时,BRAF自动清零。自动清零。2. BRAF位位l如果如果C54CM=0,C55x忽略忽略C16 指令本身决定是用单指令本身决定是用单32位操作还

32、是双位操作还是双16位操作。位操作。l如果如果C54CM=1,C55x以兼容方式运行以兼容方式运行C54x代码,代码,C16会会影响某些指令的执行。影响某些指令的执行。u当当C16=0时,关闭双时,关闭双16位模式,位模式,D单元单元ALU执行一条指执行一条指令是以单令是以单32位操作(双精度运算)形式位操作(双精度运算)形式u当当C16=1时,打开双时,打开双16位模式,位模式, D单元单元ALU执行一条指执行一条指令是以两个并行的令是以两个并行的16位操作(双位操作(双16位运算)形式位运算)形式3. C16位位l如果如果C54CM0,C55x CPU不支持不支持C54x代码代码l如果如果

33、C54CM1,C55x的的CPU支持支持C54x编写的代码编写的代码u在使用在使用C54x代码时就必须置位该模式,所有代码时就必须置位该模式,所有C55x CPU的资源都可以使用的资源都可以使用u在移植代码时,可以利用在移植代码时,可以利用C55x增加的特性优化代码增加的特性优化代码4. C54CM位位l可用以下指令或伪指令来改变模式:可用以下指令或伪指令来改变模式:BCLR C54CM ;清零清零C54CM(运行时)(运行时).C54CM_off ;告知汇编器告知汇编器C54CM0BSET C54CM ;置位置位C54CM(运行时)(运行时).C54CM_on ;告知汇编器告知汇编器C54C

34、M1l如果如果CPL0,CPL决定选择决定选择DP直接寻址模式直接寻址模式l如果如果CPL1,CPL决定选择决定选择SP直接寻址模式直接寻址模式l可用以下指令和伪指令来改变寻址模式:可用以下指令和伪指令来改变寻址模式:BCLR CPL ;清零清零CPL(运行时)(运行时).CPL_off ;告知汇编器告知汇编器CPL0BSET CPL ;置位置位CPL(运行时)(运行时).CPL_on;告知汇编器告知汇编器CPL15. CPL位位l如果如果FRCT1,C55x打开小数模式。打开小数模式。 乘法运算的结果左乘法运算的结果左移一位进行小数点调整。两个带符号的移一位进行小数点调整。两个带符号的Q15

35、制数相乘,得制数相乘,得到一个到一个Q31制数时,就要进行小数点调整。制数时,就要进行小数点调整。l如果如果FRCT0,C55x关闭小数模式。乘法运算的结果不关闭小数模式。乘法运算的结果不移位。移位。l可用下面的指令清零和置位可用下面的指令清零和置位FRCT:BCLR FRCT ;清零清零FRCTBSET FRCT ;置位置位FRCT6. FRCT位位l如果如果HM0,C55x继续继续执行内部程序存储器的指令。执行内部程序存储器的指令。l如果如果HM1,C55x停止停止执行内部程序存储器的指令。执行内部程序存储器的指令。l可用下面的指令清零和置位可用下面的指令清零和置位HM:BCLR HM ;

36、清零清零HMBSET HM ;置位置位HM7. HM位位当当DSPDSP得到得到HOLDHOLD信号时,会将外部接口总线置于高阻态。信号时,会将外部接口总线置于高阻态。根据根据HMHM的值,的值,DSPDSP也可以停止内部程序执行。也可以停止内部程序执行。l如果如果INTM0,C55x使能所有可屏蔽中断使能所有可屏蔽中断l如果如果INTM1,C55x禁止所有可屏蔽中断禁止所有可屏蔽中断l使用使用INTM位需要注意的要点:位需要注意的要点:uINTM位能够全局使能或禁止可屏蔽中断,但是位能够全局使能或禁止可屏蔽中断,但是它对不可屏蔽中断无效。在使用它对不可屏蔽中断无效。在使用INTM位时,要位时

37、,要使用状态位清零和置位指令来修改使用状态位清零和置位指令来修改INTM位。其位。其它能影响它能影响INTM位的,只有软件中断指令和软件位的,只有软件中断指令和软件置位指令置位指令。8. INTM位位uCPU响应中断请求时,自动保存响应中断请求时,自动保存INTM位。特别地,位。特别地,CPU把把ST1_55保存到数据堆栈时,保存到数据堆栈时,INTM位也被保存位也被保存起来。起来。u执行中断服务子程序(执行中断服务子程序(ISR)之前,)之前,CPU自动置位自动置位INTM位,禁止所有的可屏蔽中断。位,禁止所有的可屏蔽中断。ISR可以通过清零可以通过清零INTM位,来重新开放可屏蔽中断。位,

38、来重新开放可屏蔽中断。u中断返回指令,从数据堆栈恢复中断返回指令,从数据堆栈恢复INTM位的值。位的值。u在调试器实时仿真模式下,在调试器实时仿真模式下,CPU暂停时,忽略暂停时,忽略INTM位,位,CPU只处理临界时间中断。只处理临界时间中断。 l如果如果M400,D单元的计算模式选择单元的计算模式选择32位模式:位模式:u第第31位是符号位位是符号位u计算过程中的进位取决于第计算过程中的进位取决于第31位位u由第由第31位判断是否溢出位判断是否溢出u饱和过程,饱和值是饱和过程,饱和值是00 7FFF FFFFh(正溢出)或(正溢出)或FF 8000 0000h(负溢出)(负溢出)u累加器和

39、累加器和0的比较,用第的比较,用第310位来进行位来进行u可对整个可对整个32位进行移位和循环操作位进行移位和循环操作9. M40位位u累加器左移或循环移位时,从第累加器左移或循环移位时,从第31位移出位移出u累加器右移或循环移位时,移入的位插入到第累加器右移或循环移位时,移入的位插入到第31位位上上u对于累加器带符号位的移位对于累加器带符号位的移位如果如果SXMD0,则累加器的保护位值要设为,则累加器的保护位值要设为0如果如果SXMD1,累加器的保护位要设为第,累加器的保护位要设为第31位位的值;对于累加器的任何循环移位或逻辑移位,的值;对于累加器的任何循环移位或逻辑移位,都要清零目的累加器

40、的保护位都要清零目的累加器的保护位l如果如果M401,D单元的计算模式选择单元的计算模式选择40位的带符号移位位的带符号移位模式:模式:u第第39位是符号位位是符号位u计算过程中的进位取决于第计算过程中的进位取决于第39位位u由第由第39位判断是否溢出位判断是否溢出u饱和过程,饱和值是饱和过程,饱和值是7F FFFF FFFFh(正溢出)或(正溢出)或80 0000 0000h(负溢出)(负溢出)u累加器和累加器和0的比较,用第的比较,用第390位来进行位来进行u可对整个可对整个40位进行移位和循环操作位进行移位和循环操作u累加器左移或循环移位时,从第累加器左移或循环移位时,从第39位移出位移

41、出u累加器右移或循环移位时,移入的位插入到第累加器右移或循环移位时,移入的位插入到第39位上位上l如果如果SATD0,关闭,关闭D单元的饱和模式,不执行饱和模式单元的饱和模式,不执行饱和模式l如果如果SATD1,打开,打开D单元的饱和模式单元的饱和模式u如果如果D单元内的运算产生溢出,则结果值饱和单元内的运算产生溢出,则结果值饱和u饱和值取决于饱和值取决于M40位位M400,CPU的饱和值为的饱和值为00 7FFF FFFFh(正溢出)(正溢出)或或FF 8000 0000h(负溢出)(负溢出)M401,CPU的饱和值为的饱和值为7F FFFF FFFFh(正溢出)(正溢出)或或80 0000

42、 0000h(负溢出)(负溢出)10. SATD位位l如果如果SXMD0,关闭,关闭D单元的符号扩展模式单元的符号扩展模式u对于对于40位的运算,位的运算,16位或更小的操作数都要补位或更小的操作数都要补0,扩展,扩展至至40位位u对于条件减法指令,任何对于条件减法指令,任何16位的除数都可以得到理想的位的除数都可以得到理想的结果结果u当当D单元的单元的ALU被局部配置为双被局部配置为双16位模式时,位模式时,D单元单元ALU的高的高16位补零扩展至位补零扩展至24位。累加器值右移时,高段和低位。累加器值右移时,高段和低段的段的16位补零扩展位补零扩展u累加器带符号移位时,如果是一个累加器带符

43、号移位时,如果是一个32位操作(位操作(M40=0),),累加器的保护位(第累加器的保护位(第3932位)填零位)填零u累加器带符号右移时,移位值补零扩展累加器带符号右移时,移位值补零扩展11. SXMD位位l如果如果SXMD1时,打开符号扩展模式:时,打开符号扩展模式:u对于对于40位的运算,位的运算,16位或更小的操作数,都要符号扩展位或更小的操作数,都要符号扩展至至40位位u对于条件减法指令,对于条件减法指令,16位的除数必须是正数,其最高位位的除数必须是正数,其最高位(MSB)必须是)必须是0u当当D单元的单元的ALU局部配置为双局部配置为双16位模式时,位模式时,D单元单元ALU的高

44、的高16位值带符号扩展至位值带符号扩展至24位。累加器右移时,高段和位。累加器右移时,高段和低段的低段的16位都要带符号扩展位都要带符号扩展u累加器带符号移位时,其值带符号扩展累加器带符号移位时,其值带符号扩展如果是一个如果是一个32位操作(位操作(M40=0),则将第),则将第31位的值,位的值,复制到累加器的保护位(第复制到累加器的保护位(第3932位)位)u累加器带符号右移时,除非有限定符累加器带符号右移时,除非有限定符uns()表明它表明它是无符号的,否则移位值都要被带符号扩展。对于是无符号的,否则移位值都要被带符号扩展。对于无符号运算(布尔逻辑运算、循环移位和逻辑移位无符号运算(布尔

45、逻辑运算、循环移位和逻辑移位运算),不管运算),不管SXMD的值是什么,输入的操作数都的值是什么,输入的操作数都要被补零扩展至要被补零扩展至40位。对于乘加单元位。对于乘加单元MAC里的运里的运算,不管算,不管SXMD值是多少,输入的操作数都要带符值是多少,输入的操作数都要带符号扩展至号扩展至17位。如果指令里的操作数是在限定符位。如果指令里的操作数是在限定符uns()里,则不管里,则不管SXMD值是多少,都视为无符号的值是多少,都视为无符号的用下面的指令清零和置位SXMD: BCLR SXMD ;清零SXMD BSET SXMD ;置位SXMDlXF是通用的输出位,能用软件处理且可输出至是通

46、用的输出位,能用软件处理且可输出至DSP引脚引脚l用下面的指令清零和置位用下面的指令清零和置位XF:BCLR XF ;清零清零XFBSET XF ;置位置位XF12. XF位位2.4.11 状态寄存器状态寄存器ST2_55lARnLC (n0、1、2、3、4、5、6、7)位决定)位决定ARn用作线性寻址还是循环寻址。用作线性寻址还是循环寻址。ARnLC0:线性寻址:线性寻址ARnLC1:循环寻址:循环寻址1. AR0LCAR7LC位域位域l 用状态位清零用状态位清零/置位置位 指令来清零指令来清零/置位置位ARnLC。例例: BCLR AR3LC ;清零清零AR3LC BSET AR3LC ;

47、置位置位AR3LCl如果如果ARMS0,辅助寄存器(,辅助寄存器(AR)间接寻址的)间接寻址的CPU模模式采用式采用DSP模式操作数,该操作数能有效执行模式操作数,该操作数能有效执行DSP专用专用程序。这些操作数里,有的在指针加程序。这些操作数里,有的在指针加/减时使用反向操作减时使用反向操作数。短偏移操作数不可用。数。短偏移操作数不可用。l如果如果ARMS1,辅助寄存器(,辅助寄存器(AR)间接寻址的)间接寻址的CPU模模式采用控制模式操作数,该操作数能为控制系统的应用式采用控制模式操作数,该操作数能为控制系统的应用优化代码的大小。短偏移操作数优化代码的大小。短偏移操作数*ARn(short

48、(#k3)可可用。其它偏移需要在指令里进行用。其它偏移需要在指令里进行2字节扩展,而这些有扩字节扩展,而这些有扩展的指令不能和其他指令并行执行。展的指令不能和其他指令并行执行。2. ARMS位位l用下面的指令和伪指令来改变模式:用下面的指令和伪指令来改变模式:BCLR ARMS ;清零清零ARMS(运行时)(运行时).ARMS_off ;告知编译器告知编译器ARMS0BSET ARMS ;置位置位ARMS(运行时)(运行时).ARMS_on ;编译器编译器ARMS1lCDPLC位决定系数数据指针(位决定系数数据指针(CDP)是用线性寻址)是用线性寻址(CDPLC0),还是循环寻址(),还是循环

49、寻址(CDPLC位位1)l用下面的指令清零和置位用下面的指令清零和置位CDPLC:BCLR CDPLC ;清零清零CDPLCBSET CDPLC ;置位置位CDPLC3. CDPLC位位lDBGM位用于调试程序里有严格时间要求的部分位用于调试程序里有严格时间要求的部分u 如果如果DBGM0,使能该位,使能该位u 如果如果DBGM1,禁止该位。仿真器不能访问存,禁止该位。仿真器不能访问存储器和寄存器。软件断点仍然可以使储器和寄存器。软件断点仍然可以使CPU暂停,暂停,但不会影响硬件断点或暂停请求但不会影响硬件断点或暂停请求4. DBGM位位l 为了保护流水,只能由状态位清零为了保护流水,只能由状

50、态位清零/置位指令修改置位指令修改DBGM,其它指令都不会影响,其它指令都不会影响DBGM位:位:BCLR DBGM ;清零清零DBGMBSET DBGM ;置位置位DBGMl当当CPU响应一个中断请求时,会自动保护响应一个中断请求时,会自动保护DBGM位的位的状态。确切地说,当状态。确切地说,当CPU把把ST2_55保存到数据堆栈时,保存到数据堆栈时,DGBM位就被保存起来位就被保存起来l执行一个中断服务子程序执行一个中断服务子程序(ISR)前,前,CPU自动置位自动置位DBGM,禁止调试。,禁止调试。ISR可以通过清零可以通过清零DBGM位,重位,重新使能调试新使能调试lEALLOW使能(

51、使能(EALLOW1)或禁止()或禁止(EALLOW0)对)对非非CPU仿真寄存器的写访问仿真寄存器的写访问l当当CPU响应一个中断请求时,自动保存响应一个中断请求时,自动保存EALLOW位的状态。位的状态。确切地说,当确切地说,当CPU把把ST2_55保存到数据堆栈时,也就是保保存到数据堆栈时,也就是保存了存了EALLOW位位l执行一个中断服务子程序(执行一个中断服务子程序(ISR)前,)前,CPU自动清自动清EALLOW位,禁止访问仿真寄存器。位,禁止访问仿真寄存器。ISR通过置位通过置位EALLOW位,可以位,可以重新开放对仿真寄存器的访问重新开放对仿真寄存器的访问l中断返回指令,从数据

52、堆栈恢复中断返回指令,从数据堆栈恢复EALLOW位位5.EALLOW位位 在在D单元执行的一些指令里,单元执行的一些指令里,CPU将将rnd()括号里的操作数括号里的操作数取整。取整操作的类型取决于取整。取整操作的类型取决于RDM的值的值l如果如果RDM=0,CPU给给40位的操作数加上位的操作数加上8000h(即(即215),然后),然后CPU清零第清零第150位,产生一个位,产生一个24位或位或16位位的取整结果的取整结果u若结果是若结果是24位的整数,只有第位的整数,只有第3916位是有意义的位是有意义的u若结果是若结果是16位的整数,只有第位的整数,只有第3116位是有意义的位是有意义

53、的6. RDM位位l如果如果RDM=1,取整至最接近的整数。取整结果取决于取整至最接近的整数。取整结果取决于40位操作数的第位操作数的第150位:位:If(0=(位(位15-0)8000h) CPU 清零第清零第150位位 If(8000h(位(位15-0)10000h) CPU给该操作数加上给该操作数加上8000h,再清零第,再清零第150位位 If ((位(位15-0)= =8000h) If (位(位31-16)是奇数)是奇数 CPU给该操作数加上给该操作数加上8000h,再清零第,再清零第150位位2.4.12 状态寄存器状态寄存器ST3_55 说明:说明: ST3_55的第的第118

54、位位总是写作总是写作1100b(Ch)l检查是否已完成程序检查是否已完成程序cache清零清零uCACLR0:已经完成。清零过程完成时:已经完成。清零过程完成时, cache硬件硬件清零清零CACLR位位uCACLR1:未完成。所有的:未完成。所有的cache块无效块无效l清零清零cache所需的时间周期数取决于存储器的结构所需的时间周期数取决于存储器的结构l当当cache清零后,指令缓冲器单元里的预取指令队列的内清零后,指令缓冲器单元里的预取指令队列的内容会自动清零容会自动清零1. CACLR位位l使能或禁止程序使能或禁止程序cacheuCAEN0:禁止。:禁止。cache控制器不接收任何程

55、序要求控制器不接收任何程序要求,所有的程序要求都由片内存储器或片外存储器(根据解所有的程序要求都由片内存储器或片外存储器(根据解码的地址而定)来处理。码的地址而定)来处理。uCAEN1:使能。依据解码的地址,可以从:使能。依据解码的地址,可以从cache、片、片内存储器或片外存储器提取程序代码。内存储器或片外存储器提取程序代码。l当清零当清零CAEN位禁止位禁止cache时,时,I单元的指令缓冲队列的内单元的指令缓冲队列的内容会自动清零容会自动清零2. CAEN位位lCAFRZ能锁定程序能锁定程序cacheuCAFRZ0 :cache工作在默认操作模式工作在默认操作模式uCAFRZ1 :cache被冻结(其内容被锁定)。没有访被冻结(其内容被锁定)。没有访问该问该cache时,它的内容不会更改,但被访问时仍然可时,它的内容不会更改,但被访问时仍然可用。用。cache内容一直保持不变,直到内容一直保持不变,直到C

温馨提示

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

评论

0/150

提交评论