CPU寄存器第2章TMS320C55x的硬件结构2.4CPU寄存器C55x的寄存器(见表2-8)C55x寄存器的映射地址及描述(见表2-9)2.4.1概况☼注意事项:ST0_55、ST1_55和ST3_55都有两个访问地址;T3、RSA0L、REA0L和SP有两个访问地址;任何装入BRC1的指令将相同的值装入BRS1。对于ST0_55、ST1_55和ST3_55,对于其中一个地址,所有的C55x位均可访问;在另外一个地址(称为保护地址),某些保护位不能被修改。保护地址是为了提供对C54x代码的支持,以便写入ST0、ST1以及PMST(C54x对应ST3_55)对于T3、RSA0L、REA0L和SP,当使用DP直接寻址方式访问存储器映射寄存器时,将访问两个地址中更高的地址,即T3=23H(不是0EH);RSA0L=3DH(不是1BH);REA0L=3FH(不是1CH);SP=4DH(不是18H)表2-8寄存器总表(1)缩写名称大小AC0~AC3累加器0~340位AR0~AR7辅助寄存器0~716位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的低位部分)16位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_55~ST3_55状态寄存器0~316位T0~T3暂时寄存器16位TRN0~TRN1变换寄存器0和116位XAR0~XAR7扩展辅助寄存器0~723位XCDP扩展系数数据指针23位XDP扩展数据页寄存器23位XSP扩展数据堆栈指针23位XSSP扩展系统堆栈指针23位表2-9存储器映射寄存器(1)地址寄存器名称位范围000000hIER0中断使能寄存器015~2000001hIFR0中断标志寄存器015~2000002h(C55x代码适用)ST0_55状态寄存器015~0注意:地址000002h只适用访问ST0_55的C55x代码。写入ST0的C54x代码必须用000006h访问ST0_55。000003h(C55x代码适用)ST1_55状态寄存器115~0注意:地址000003h只适用访问ST1_55的C55x代码。写入ST1的C54x代码必须用000007h访问ST1_55。000004h(C55x代码适用)ST3_55状态寄存器315~0注意:地址000004h只适用访问ST3_55的C55x代码。写入处理器模式状态寄存器(PSMST)的C54x代码必须用00001Dh访问ST3_55。地址寄存器名称位范围000005h—保留(不使用)—000006h(C54x代码适用)ST0(ST0_55)状态寄存器015~0注意:地址000006h是ST0_55的保护地址。只适用访问ST0的C54x代码,C55x代码必须用000002h访问ST0_55。000007h(C54x代码适用)ST1(ST1_55)状态寄存器115~0注意:地址000007h是ST1_55的保护地址。只适用访问ST1的C54x代码,C55x代码必须用地址000003h访问ST1_55。000008h000009h00000AhAC0LAC0HAC0G累加器015~031~1639~3200000Bh00000Ch00000DhAC1LAC1HAC1G累加器115~031~1639~32表2-9存储器映射寄存器(2)地址寄存器名称位范围00000EhT3暂时寄存器315~000000FhTRN0变换寄存器015~0000010hAR0辅助寄存器015~0000011hAR1辅助寄存器115~0000012hAR2辅助寄存器215~0000013hAR3辅助寄存器315~0000014hAR4辅助寄存器415~0000015hAR5辅助寄存器515~0000016hAR6辅助寄存器615~0000017hAR7辅助寄存器715~0000018hSP数据堆栈指针15~0表2-9存储器映射寄存器(3)000019hBK03AR0~AR3的循环缓冲区大小寄存器15~0注意:在C54x兼容模式下(C54CM=1),BK03用作所有辅助寄存器的循环缓冲区大小寄存器。C54CM是状态寄存器1(ST1_55)里的一个位。00001AhBRC0块循环计数器015~000001BhRSA0L块循环起始地址寄存器的低位部分15~000001ChREA0L块循环结束地址寄存器的低位部分15~000001Dh(C54x代码适用)PMST(ST3_55)状态寄存器315~0注意:该地址是ST3_55的保护地址,C54x代码可用它访问PMST。C55x代码必须使用地址000004h访问ST3_55。表2-9存储器映射寄存器(4)00001EhXPCC54x代码兼容模式下,扩展程序计数器7~000001Fh—保留(不使用)—000020hT0暂时寄存器015~0000021hT1暂时寄存器115~0000022hT2暂时寄存器215~0000023hT3暂时寄存器315~0000024h000025h000026hAC2LAC2HAC2G累加器215~031~1639~32000027hCDP系数数据指针15~0表2-9存储器映射寄存器(5)000028h000029h00002AhAC3LAC3HAC3G累加器315~031~1639~3200002BhDPH扩展数据页寄存器的高位部分6~000002Ch00002Dh——保留(不使用)——00002EhDP数据页寄存器15~000002FhPDP外设数据页寄存器8~0000030hBK47AR4~AR7的循环缓冲区大小寄存器15~0000031hBKCCDP的循环缓冲区大小寄存器15~0000032hBSA01AR0和AR1的循环缓冲区起始地址寄存器15~0000033hBSA23AR2和AR3的循环缓冲区起始地址寄存器15~0表2-9存储器映射寄存器(6)000034hBSA45AR4和AR5的循环缓冲区起始地址寄存器15~0000035hBSA67AR6和AR7的循环缓冲区起始地址寄存器15~0000036hBSACCDP的循环缓冲区起始地址寄存器15~0000037h—保留给BIOS。一个16位寄存器,保存BIOS操作所需要的数据表指针起始地址—000038hTRN1变换寄存器115~0000039hBRC1块循环计数器115~000003AhBRS1BRC1保存寄存器15~000003BhCSR计算单循环寄存器15~0表2-9存储器映射寄存器(7)00003Ch00003DhRSA0HRSA0L块循环起始地址寄存器023~1615~000003Eh00003FhREA0HREA0L块循环结束地址寄存器023~1615~0000040h000041hRSA1HRSA1L块循环起始地址寄存器123~1615~0000042h000043hREA1HREA1L块循环结束地址寄存器123~1615~0000044hRPTC单循环计数器15~0000045hIER1中断使能寄存器110~0表2-9存储器映射寄存器(8)000046hIFR1中断标志寄存器110~0000047hDBIER0调试中断使能寄存器015~2000048hDBIER1调试中断使能寄存器110~0000049hIVPDDSP向量的中断向量指针15~000004AhIVPH主机向量的中断向量指针15~000004BhST2_55状态寄存器215~000004ChSSP系统堆栈指针15~000004DhSP数据堆栈指针15~000004EhSPH扩展堆栈指针的高位部分6~000004FhCDPH扩展系数数据指针的高位部分6~0000050h~00005Fh—保留(不使用)—表2-9存储器映射寄存器(9)2.4.2累加器(AC0~AC3)C55x的CPU包括4个40位的累加器AC0、AC1、AC2、AC3AC0、AC1、AC2、AC3等价。任何一条使用一个累加器的指令,都可以通过编程来使用4个累加器中的任何一个在C54x兼容模式(C54CM=1)下,累加器AC0、AC1分别对应于C54x里的累加器A、B每个累加器分为低字(ACxL)、高字(ACxH)和8个保护位(ACxG),用户可以使用访问存储器映射寄存器的寻址方式,分别访问这3部分AC0GAC0LAC0HAC1GAC1LAC1HAC2GAC2LAC2HAC3GAC3LAC3HAC0AC1AC2AC339~3231~1615~02.4.3变换寄存器TRN0、TRN1C55x有2个变换寄存器TRN0、TRN1用途:在比较-选择-极值指令里使用比较两个累加器的高段字和低段字后,执行选择两个16位极值的指令,以更新TRN0和TRN1。比较累加器的高段字后更新TRN0,比较累加器的低段字后更新TRN1在比较完两个累加器的全部40位后,执行选择一个40位极值的指令,以更新被选中的变换寄存器(TRN0或TRN1)TRN015~0TRN12.4.4T寄存器(T0-T3)用途存放乘法、乘加以及乘减运算里的一个乘数存放D单元里加法、减法和装入运算的移位数用交换指令交换辅助寄存器(AR0-AR7)和T寄存器中的内容时,跟踪多个指针值在D单元ALU里作双16位运算时,存放Viterbi蝶形的变换尺度T015~0T1T2T3CPU包括4个16位通用T寄存器:T0、T1、T2、T32.4.5用作数据地址空间和I/O空间的寄存器表2-10用作数据地址空间和I/O空间的寄存器寄存器功能XAR0~XAR7和AR0~AR7指向数据空间中的一个数据,用间接寻址模式访问XCDP和CDP指向数据空间中的一个数据,用间接寻址模式访问BSA01、BSA23、BSA45、BSA67、BSAC指定一个循环缓冲区起始地址,加给一个指针BK03、BK47、BKC指定循环缓冲区大小XDP和DP指定用DP直接寻址方式访问的起始地址PDP确定访问I/O空间的外设数据页XSP和SP指向数据堆栈的一个数据XSSP和SSP指向系统堆栈的一个数据1.辅助寄存器(XAR0~XAR7/AR0~AR7)AR0HAR0AR1HAR1AR2HAR2AR3HAR3AR4HAR4AR5HAR5AR6HAR6AR7HAR7XAR022~1615~0XAR1XAR2XAR3XAR4XAR5XAR6XAR7低字的作用:用于AR间接寻址模式,以及双AR间接寻址模式。提供7位数据页内的16位偏移量(形成一个23位地址);存放位地址;作为通用寄存器或计数器。高7位用于指定要访问数据空间的数据页访问属性:XARn只能用专用指令访问;ARn可用专用指令访问,也可以作为存储器映射寄存器访问;ARnH不能单独访问,必须通过访问XARn来访问ARnHCPU在存储器中映射了一个系数数据指针(CDP)和一个相关的扩展寄存器(CDPH):2.系数数据指针(XCDP/CDP)CDP保留CDPH15~015~76~0CPU可以连接这个寄存器形成一个扩展系数数据指针(XCDP)高7位(CDPH)用于指定要访问数据空间的数据页低字(CDP)用来作为16位偏移量与7位数据页形成一个23位地址CDPHCDP