DSP

TMS320C55x的指令系统

2019-07-13 17:22发布

C55x通过以下三种寻址方式访问数据空间、存储器映射寄存器、寄存器位和I/O空间:

  绝对寻址方式 通过在指令中指定一个常数地址完成寻址   直接寻址方式 使用地址偏移量寻址   间接寻址方式 使用指针完成寻址

1.绝对寻址方式

   C55x有绝对寻址方式:       1.1 k16绝对寻址
        其操作数为*abs16(#k16),【k16:16位的无符号常数】
        将7位的寄存器DPH和k16级联形成一个23位的地址,用于对数据空间的访问     1.2 k23绝对寻址
         操作数为*(#k23),【k23:23位的无符号常数】 
   1.3 I/O绝对寻址
         操作数是*port(#k16),【k16:16位无符号常数】
         使用助记符指令,其操作数是port(#k16)(操作数前没有*)

2.直接寻址方式

        注意:DP和SP互相排斥,通过ST1_55的CPL位来选择。0 DP,1 SP、    2.1 DP直接寻址          高7位由DPH提供,用来确定主数据页          低16位由两部分组成:                   DP                   7位偏移量(Doffset)     2.2 SP直接寻址            SPH确定高7位地址           16位地址由SP和7位偏移量决定,偏移量范围是0~127            由SPH和SP构成了扩展数据堆栈指针XSP       2.3寄存器位寻址             操作数是@bitoffset            只有寄存器的位测试、置位、清零、取反指令支持这种寻址模式       2.4 PDP直接寻址              port()限定,指定访问的是I/O空间。而不是数据存储单元。

3.间接寻址方式

3.1 AR间接寻址  通过一个辅助寄存器ARn(n=0,1,2,3,4,5,6,7)访问数据空间 ST2-55的ARMS位决定AR间接寻址的操作类型      ARMS=0,DSP模式:CPU提供DSP增强应用的高效执行功能      ARMS=1,控制模式:CPU能够优化代码的长度 3.2 双AR间接寻址 通过8个辅助寄存器(AR0~AR7)同时访问两个数据存储单元 实现功能: 执行一条可完成两个16位数据空间访问的指令 并行执行两条指令  3.3 CDP间接寻址 使用系数数据指针(CDP)对数据空间、寄存器位和I/O空间进行访问  3.4 系数间接寻址 支持以下算术指令: FIR滤波 乘法 乘加 乘减 双乘加或双乘减   

指令系统

1 并行执行 指令并行的特征 单指令中内置并行方式 —隐含并行方式       例如:MPY *AR0, *CDP, AC0 ::MPY *AR1, *CDP, AC1 用户自定义的两条指令间的并行方式      例如: MPYM *AR1–, *CDP, AC1 || XOR AR2, T1 内置与用户自定义混合的并行方式      例如: MPYM T3=*AR3+, AC1, AC2 || MOV #5, AR1 指令并行的规则      两条指令的总长度不能超过6个字节      在指令的执行过程中不存在操作器、地址产生单元、总线等资源冲突      其中一条指令必须有并行使能位或两条指令符合软-双并行条件 不能使用并行方式的情况     使用立即数寻址方式 例如: *abs16(#k16);*(#k23);port(#k16); *ARn(K16);*+ARn(K16);*CDP(K16); *+CDP(K16)     条件跳转、条件调用、中断、复位等程序控制指令 例如: BCC P24, cond;CALLCC P24, cond; IDLE;INTR k5;RESET;TRAP k5     使用下列指令或者操作修饰符 例如: mmap( );port( );.CR; .LR 资源冲突 C55x的资源     运算器 使用的操作器有:D单元的ALU、D单元的移位器、D单元的交换器、A单元的交换器、A单元的ALU和P单元     地址产生单元 两个数据地址(DA)产生单元、一个系数地址(CA)产生单元和一个堆栈地址(SA)产生单元 只能使用给定数量的数据地址产生单元      总线 两个数据读(DR)总线、一个系数读(CA)总线、两个数据写(DW)总线、1个ACB总线(将D单元寄存器的内容传送给A单元和P单元的操作器)、一个KAB总线(立即数总线)和一个KDB总线(立即数总线) 只能使用给定数量的总线   软-双并行条件     两个存储器操作数必须是双AR间接寻址模式     指令不能包含high_byte(Smem)和low_byte(Smem)     指令不能读、写同一个存储器单元     如果指令中的k4的值是0~8,就会改变XDP 的值,所以,不能与加载DP的指令组成并行指令     读重复计数寄存器(RPTC)指令不能和如下的任何一个单重复指令组成并行指令 2 C55x指令集按操作类型可分为6种: 注:一条指令的属性包括:指令,执行的操作,是否有并行使能位,长度,周期,在流水线上的执行阶段以及执行的功能单元等
    算术运算指令
    位操作指令
    扩展辅助寄存器操作指令
    逻辑运算指令
    移动指令
    程序控制指令