TMSCX dsp原理及应用 汪春梅新的_第1页
TMSCX dsp原理及应用 汪春梅新的_第2页
TMSCX dsp原理及应用 汪春梅新的_第3页
TMSCX dsp原理及应用 汪春梅新的_第4页
TMSCX dsp原理及应用 汪春梅新的_第5页
已阅读5页,还剩129页未读 继续免费阅读

下载本文档

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

文档简介

会计学1TMSCXdsp原理及应用汪春梅新的3.1寻址方式

寻址方式:

是指如何指定指令和操作数所在存储空间的地址。C55xDSP支持三种寻址模式:绝对寻址模式:

指令里有一个地址的全部或者部分,指示目的地址;直接寻址模式:

使用偏移地址指示目的地址;间接寻址模式:

使用指针指示目的地址。

第1页/共134页支持寻址模式操作数的指令应具有下表所示的句法元素:句法元素描述Smem指令语句里含有Smem时,该指令可以访问数据存储器、I/O空间或者MMR中的一个单字(16bits)。写该指令语句时,用一个兼容的寻址模式操作数来代替Smem。Lmem指令语句里含有Lmem时,该指令可以访问数据存储器或者MMR中的一个长字(32bits)。写该指令语句时,用一个兼容的寻址模式操作数来代替Smem。XmemandYmem指令语句里含有XmemandYmem时,该指令可以对数据存储器同时作两次16bits的访问。写该指令语句时,用兼容的寻址模式操作数来代替XmemandYmem。Cmem指令语句里含有Cmem时,该指令可以访问数据存储器的单字(16bits)。写该指令语句时,用一个兼容的寻址模式操作数来代替Cmem。Baddr指令语句里含有Baddr时,该指令可以访问累加器(AC0~AC3)、辅助寄存器(AR0~AR7)或T0~T3中的一个bit或者两个bit。只有寄存器bit测试/设置/清除/取反指令支持Baddr。写任意一条此类指令语句时,用一个兼容的寻址模式操作数来代替Baddr

。第2页/共134页3.1.1绝对寻址模式寻址模式功能k16绝对寻址用DPH的7-bit寄存器,和一个16-bit无符号常数构成一个23-bit数据空间地址。该模式可以访问存储器或者MMR。k23绝对寻址指定一个23-bit无符号常数作为全地址。该模式可以访问存储器或者MMR。I/O绝对寻址指定一个16bit无符号常数作为I/O地址,该模式可以访问I/O空间。第3页/共134页k16绝对寻址其操作数为*abs16(#k16),其中,k16为16位无符号常数。将7位的寄存器DPH和k16级联形成一个23位的地址,用于对数据空间的访问。该模式可以访问一个数据存储器单元或者MMR。k16绝对寻址模式

第4页/共134页k16绝对寻址其操作数为*abs16(#k16),其中,k16为16位无符号常数。将7位的寄存器DPH和k16级联形成一个23位的地址,用于对数据空间的访问。该模式可以访问一个数据存储器单元或者MMR。指令实例:(1)语法格式:MOVSmem,dst

指令语句:MOV*abs16(#2002h),T2 指令实例:(2)语法格式:MOVK16,Smem

指令语句:MOV#248,*abs16(#2002h)

第5页/共134页k16绝对寻址程序执行的结果是:T2=

。汇编语言k16绝对寻址程序阅读与分析:

.defstart

.mmregs

.textstart:MOV

#03H

,

DPH

MOV

#24

,

*abs16(#2002h)

MOV

*abs16(#2002h)

,

T2here:bhere操作数*abs16(#2002h)的寻址地址:

。032002H0018H第6页/共134页k23绝对寻址操作数为*(#k23),其中,k23为23位的无符号常数,作为所寻址数据空间的地址。k23绝对寻址模式

第7页/共134页I/O绝对寻址对于代数格式汇编语言指令,操作数是*port(#k16),其中k16为16位无符号常数,用于指明16位I/O端口地址。使用助记符格式汇编语言指令,其操作数是port(#k16)(操作数前没有*)。

I/O绝对寻址第8页/共134页3.1.2直接寻址模式

直接寻址的分类见下表:寻址模式描述DP直接寻址使用DPH指定的主数据页,和DP相连接形成23位数据空间地址,用于访问存储器和MMR。SP直接寻址使用SPH指定的主数据页,和SP相连接形成23位地址,用于访问数据存储器里的堆栈值。寄存器bit直接寻址用一个偏移来指定一个bit地址。该模式用于访问一个寄存器bit或者两个相邻的寄存器bit。PDP直接寻址用PDP(外设数据页寄存器)和一个偏移,来指定一个I/O端口地址。该模式用来访问I/O空间的单元。第9页/共134页3.1.2直接寻址模式

直接寻址中的DP直接寻址和SP寻址与状态寄存器ST1-55的CPL位有关。当CPL=0采用DP直接寻址模式,操作数@Daddr当CPL=1采用SP直接寻址模式,操作数*SP(offset)

直接寻址模式中的寄存器bit直接寻址和PDP直接寻址与状态寄存器ST1-55的CPL位无关。第10页/共134页3.1.2直接寻址模式

一、DP直接寻址

DP直接寻址的23位地址构成:高7位由DPH提供,用来确定主数据页;其余低16位为以下两部分的和:(1)DP里的值。DP定义了在主数据页内的起始地址。(2)汇编程序计算的7-bit偏移量(Doffset)。DP直接寻址模式

第11页/共134页DP直接寻址偏移量(Doffset)的计算访问对象计算Doffset说明数据存储器Doffset=(Daddr-.dp)&7FhDaddr是读/写操作的16bit地址,.dp是利用汇编伪指令分配的数值(一般DP的匹配),&表示按位“与”MMRDoffset=Daddr&7FhDaddr是读/写操作的16bit地址,&表示按位“与”,mmap()迫使CPU把数据页视为0来操作。Doffset的计算有两种情况:表2-1DP直接寻址Doffset的计算一、DP直接寻址第12页/共134页DP直接寻址偏移量(Doffset)的计算

DP直接寻址Doffset的计算代码示例:TheassemblercalculatesDoffset:Doffset=(1)寻址数据存储器Atruntime,the23-bitdata-spaceaddressisgenerated:23-bitaddress=(Daddr–.dp)&7Fh=(FFF4h–FFF0h)&7Fh=04hDPH:(DP+Doffset)=03:(FFF0h+0004h)=03FFF4hAMOV#03FFF0h,XDP.dp#0FFF0hMOV@0FFF4h,T2指令实例:;Maindatapageis03.Forrun-time,;DPisFFF0h.;Forassemblytime,.dpisFFF0h.;LoadT2withthevalueatlocal;addressFFF4h.分析:一、DP直接寻址第13页/共134页DP直接寻址偏移量(Doffset)的计算

DP直接寻址Doffset的计算代码示例:汇编器计算偏移量:Doffset=(2)寻址MMR(memory-mappedregister)

程序运行时:(CPU:DPH=DP=0)23-bit地址产生如下:23-bitaddress=Daddr&7Fh=0010h&7Fh=10hDPH:(DP+Doffset)=00:(0000h+0010h)=000010hMOVmmap(@AR0),T2;LoadT2withthevalueinAR0.;mmap()qualifierindicatesaccesstoMMR.;AR0ismappedtoaddress000010hindataspace指令实例:分析:一、DP直接寻址第14页/共134页

二、SP直接寻址

SP直接寻址的23位地址构成:最高7位地址由寄存器SPH确定;低16位地址是SP值和指令里指定的7位偏移量之和。偏移量范围是0~127。(由SPH和SP构成了扩展数据堆栈指针XSP)SP直接寻址模式第15页/共134页

二、SP直接寻址

SP直接寻址的23位地址构成:最高7位地址由寄存器SPH确定;低16位地址是SP值和指令里指定的7位偏移量之和。偏移量范围是0~127。指令实例:(1)语法格式:MOVSmem,dst

指令语句:MOV*SP(5),T2 指令寻址分析:假设SPH=00h,SP=FF00h;

操作数*SP(5),T2的寻址地址为:指令执行结果:将数据空间中地址为00FF05h单元内的数值加载到T2寄存器中。 SPH:(SP+offset)=00FF05h;第16页/共134页三、寄存器位直接寻址模式操作数是@bitoffset只有寄存器的位测试、置位、清零、取反指令支持这种寻址模式。

说明:(1)偏移量bitoffset是从所要位寻址的寄存器最低位开始,如果bitoffset是3,则正在寻址该寄存器的第3位。(2)该寻址方式只能访问以下的寄存器:AC0–AC3、AR0–AR7、T0–T3。指令实例:(1)语法格式:BSETBaddr,src

指令语句:BSET@0,AC3 CPU置位AC3的第零位。指令寻址分析:第17页/共134页四、PDP直接寻址

使用PDP寻址方式时,16bit的I/O空间地址的形成如下:64K×16bit的I/O空间被分成512个外设数据页,每页有128个字,用9位的外设数据页指针寄存器PDP指出页地址,同时由指令中指定的一个7位偏移值来表示页内的偏移量,从而形成一个16bit的外设I/O地址。第18页/共134页四、PDP直接寻址

图2-5PDP直接寻址模式第19页/共134页四、PDP直接寻址

指令实例:用PDP直接寻址模式访问I/O空间

语法:MOVSmem,dst

语句:MOVport(@0),T2;指令寻址地址:PDP:Poffset

语法:MOVk9,PDP

语句:MOV#008,PDP;PDP=008h 初始化PDP寄存器的语句:MOVport(@0),T2;PDP:Poffset=0400h

第20页/共134页3.1.3间接寻址模式CPU支持的间接寻址模式见下表:寻址模式功能AR间接寻址使用8个辅助寄存器(AR0~AR7)中的一个指向数据。CPU用辅助寄存器来产生地址的方式取决于访问数据空间、单个寄存器位或者I/O空间。双AR间接寻址地址产生过程与AR间接寻址模式相同。该模式用在访问两个或者多个数据存储器单元的指令中。CDP间接寻址用系数数据指针(CDP)指向数据。CPU用CDP产生的地址的方式取决于访问数据空间、单个寄存器位或者I/O空间。系数间接寻址地址产生过程与CDP间接寻址模式相同。该模式所支持的指令,可以在访问数据存储器里一个系数的同时,用双AR间接寻址访问另外两个数据存储器的值。第21页/共134页一、AR间接寻址模式通过一个辅助寄存器ARn(n=0,1,2,3,4,5,6,7)访问数据。ST2-55的ARMS位决定AR间接寻址的操作类型ARMS=0,DSP模式:CPU提供DSP增强应用的高效执行功能;ARMS=1,控制模式:CPU能够优化代码的长度。ARn产生地址的方式取决于所访问的类型,具体见下表:

表2-4AR间接寻址模式访问的类型访问ARn包含

数据存储空间(存储器或MMR)一个23位地址的低16位。高7位由ARnH来提供。单个寄存器bit(或相邻两个bit)一个bitI/O空间一个16-bit的I/O地址。3.1.3间接寻址模式

第22页/共134页3.1.3间接寻址模式

(1)AR间接寻址模式访问数据存储空间访问数据空间时,使用一条装入XARn的指令,语法:AMOVk23,XAdst

语句:AMOV#7FFFFFh,XAR0;将23位地址值(7FFFFFh)存入XAR0。第23页/共134页3.1.3间接寻址模式

(2)AR间接寻址模式访问寄存器位

访问寄存器位时,所选择的辅助寄存器,ARn中只有一个bit。例如:AR6里是0,则AR6指向所操作寄存器的最低bit0。指令实例:(1)语法格式:BSETBaddr,src

指令语句:MOV#15,AR6BSET*AR6,AC3 CPU置位AC3的第15位。指令寻址分析:

说明:(1)该寻址方式只能访问以下的寄存器:AC0–AC3、AR0–AR7、T0–T3。第24页/共134页3.1.3间接寻址模式

(3)AR间接寻址模式访问I/O空间

访问I/O空间时,用16bit地址访问I/O空间里的字,辅助寄存器ARn中包含全部16-bitI/O地址。指令实例:用

AR间接寻址模式访问I/O空间

语法:MOVSmem,dst

语句:MOVport(*ARn),T2;I/O空间中的值读入到T2中。MOV#FF80h,AR6; MOVport(*AR6),T2;

MOVT2,port(*AR6+);

MOVport(*-AR6),T2; 作业:分析每一条程序语句的运行结果。第25页/共134页3.1.3间接寻址模式

二、双AR间接寻址模式访问多数据空间

双AR间接寻址模式用来:(1)执行访问两个16-bit数据存储器(

XmemandYmem)的指令。

例如指令语法:ADDXmem,Ymem,ACx(2)并行执行两条指令,每条指令必须单独访问一个存储器SmemorLmem。例如指令语法:MOVSmem,dst||ANDSmem,src,dst提问:查本书附录分析指令功能。提问:查本书附录分析指令功能。第26页/共134页3.1.3间接寻址模式

三、CDP间接寻址模式CDP间接寻址模式使用系数数据寄存器CDP访问数据空间、寄存器位和I/O空间。CDP间接寻址操作数第27页/共134页3.1.3间接寻址模式三、CDP间接寻址模式指令实例:用

CDP间接寻址模式访问I/O空间

语法:MOVSmem,dst

语句:MOVport(*CDP),T2;I/O空间中的值(地址为CDP中的16-

;bit数值)读入到T2中。指令实例:用

CDP间接寻址模式访问数据空间

语法:MOVSmem,dst

语句:MOV(*CDP),T2;数据空间中的值(地址为XDP中的23-

;bit数值)读入到T2中。

;CDPH:CDP=XCDP第28页/共134页3.1.3间接寻址模式

四、系数间接寻址模式

系数间接寻址模式的地址产生过程与CDP间接寻址模式数据空间的地址产生过程一样。

支持以下算术指令:

FIR滤波、乘法、乘加、乘减、双乘加或双乘减。系数间接寻址模式功用:系数间接寻址模式主要是每个周期对3个存储器操作数操作的指令。其中两个操作数(Xmem和Ymem)用双AR间接寻址模式访问,第三个操作数Cmem用系数间接寻址模式访问。第29页/共134页四、系数间接寻址模式3.1.3间接寻址模式指令实例:系数间接寻址模式

语法:MPYXmem,Cmem,ACx::MPYYmem,Cmem,ACy

语句:MPY*AR0,*CDP,AC0;两个操作数(Xmem和Ymem)用;双AR间接寻址模式访问。

::MPY*AR1,*CDP,AC1;系数数据Cmem采用系数间接寻;址,地址为CDPH:CDP=XCDP。指令寻址分析:

CPU用XCDP处的系数乘以XAR0的值,并将结果存储到AC0中;同时,用同一个系数乘以XAR1的值,将结果存储到AC1中,不修改CDP的值。 指令说明:

Cmem必须放在与Xmem和Ymem不同的存储器块里。 第30页/共134页四、系数间接寻址模式3.1.3间接寻址模式系数间接寻址操作数

第31页/共134页3.2TMS320C55X的指令系统指令实例:MPY*AR0,*CDP,AC0::MPY*AR1,*CDP,AC1;隐含并行系数间接寻址方式一、C55X指令的并行执行(1)单指令中内置并行方式由一条指令同时执行两个不同的操作,通常用符号“::”来分割指令的两个部分,这种并行方式也称为隐含(内置)并行方式。第32页/共134页3.2TMS320C55X的指令系统指令实例:MPYM*AR1-,*CDP,AC1||XORAR2,T1;第一条指令在D单元执行乘法运算,第二条指令在A单元的ALU执行一个逻辑操作。一、C55X指令的并行执行(2)用户自定义的两条指令间的并行方式这类并行指令是用户或者C语言编译器定义的,是由两条指令同时并行执行两个操作,通常用符号“||”来分隔这两条指令。第33页/共134页3.2TMS320C55X的指令系统指令实例:MPYMT3=*AR3+,AC1,AC2||MOV#5,AR1;第一条指令隐含了内置并行方式;第二条指令是用户自定义的并行方式。一、C55X指令的并行执行(3)内置与用户自定义混合的并行方式。指令分析:

MPYM[R][40][T3=][uns(]Xmem[)],[uns(]Ymem[)],ACx;

ACx=M40(rnd(uns(Xmem)*uns(Ymem)))[,T3=Xmem]第34页/共134页指令并行的规则两条指令的总长度不能超过6个字节在指令的执行过程中不存在操作器、地址产生单元、总线等资源冲突其中一条指令必须有并行使能位或两条指令符合软-双并行条件3.2TMS320C55X的指令系统一、C55X指令的并行执行第35页/共134页不能使用并行方式的情况

使用立即数寻址方式例如: *abs16(#k16);*(#k23);port(#k16); *ARn(K16);*+ARn(K16);*CDP(K16); *+CDP(K16)条件跳转、条件调用、中断、复位等程序控制指令例如:

BCCP24,cond;CALLCCP24,cond; IDLE;INTRk5;RESET;TRAPk5使用下列指令或者操作修饰符例如:

mmap();port();<instruction>.CR; <instruction>.LR第36页/共134页资源冲突C55x的资源运算器使用的操作器有:D单元的ALU、D单元的移位器、D单元的交换器、A单元的交换器、A单元的ALU和P单元地址产生单元两个数据地址(DA)产生单元、一个系数地址(CA)产生单元和一个堆栈地址(SA)产生单元只能使用给定数量的数据地址产生单元总线两个数据读(DR)总线、一个系数读(CA)总线、两个数据写(DW)总线、1个ACB总线(将D单元寄存器的内容传送给A单元和P单元的操作器)、一个KAB总线(立即数总线)和一个KDB总线(立即数总线)只能使用给定数量的总线第37页/共134页软-双并行条件

两个存储器操作数必须是双AR间接寻址模式指令不能包含high_byte(Smem)和low_byte(Smem)指令不能读、写同一个存储器单元如果指令中的k4的值是0~8,就会改变XDP的值,所以,不能与加载DP的指令组成并行指令读重复计数寄存器(RPTC)指令不能和如下的任何一个单重复指令组成并行指令第38页/共134页算术运算指令位操作指令扩展辅助寄存器操作指令逻辑运算指令移动指令程序控制指令注:一条指令的属性包括:指令,执行的操作,是否有并行使能位,长度,周期,在流水线上的执行阶段以及执行的功能单元等。

3.2TMS320C55X的指令系统二、TMS320C55XDSP的汇编指令第39页/共134页TMS320C55XDSP的汇编指令指令集中使用的术语、符号和缩写

第40页/共134页指令集中使用的运算符第41页/共134页算术运算指令

加法指令加法指令有几点说明:如果目的操作数是累加器ACx,在D单元的ALU中进行运算操作;如果目的操作数是辅助或临时寄存器TAx,在A单元的ALU中进行运算操作;如果目的操作数是存储器(Smem),在D单元的ALU中进行运算操作;如果是移位指令(16位立即数移位除外),在D单元移位器中进行运算操作状态位影响指令执行的状态位有:CARRY,C54CM,M40,SATA,SATD,SXMD执行指令后会受影响的状态位:ACOVx,ACOVy,CARRY状态位的含义见本书的附录C:TMS320C55X的状态寄存器。第42页/共134页加法指令

第43页/共134页举例:ADD*AR3+,T0,T1;AR3间接寻址得到的内容与T0的内容相加,结果装入T1,并将AR3增1。执行前T00302330000EF00数据存储器0302hAR3T1CARRYT00303330022001EF00数据存储器0302hAR3T1CARRY执行后第44页/共134页举例:

ADD*AR1<<T0,AC1,AC0;将由AR1寻址得到的内容左移T0位与AC1相加,结果装入AC0CARRY=0见仿真结果Carry受bit31影响!第45页/共134页减法指令状态位影响指令执行的状态位有:CARRY,C54CM,M40,SATA,SATD,SXMD。执行指令后会受影响的状态位:ACOVx,ACOVy,CARRY指令第46页/共134页减法指令

第47页/共134页举例:

SUBuns(*AR1),BORROW,AC0,AC1

将CARRY位求反,AC0减去由AR1寻址得到的 内容及CARRY的内容,并将结果装入AC1

第48页/共134页条件减法指令SUBCSmem,[ACx,]ACy if((ACx–(Smem<<#15))>=0) ACy=(ACx–(Smem<<#15))<<#1+1 else ACy=ACx<<#1状态位影响指令执行的状态位有:SXMD。执行指令后会受影响的状态位:ACOVy,CARRY第49页/共134页举例:

SUBC*AR1,AC0,AC1

如果(AC0–(*AR1)<<#15)>=0,则AC1=(AC0–(*AR1)<<#15)<<#1+1,否则AC1=AC0<<#1第50页/共134页条件加减法指令状态位影响指令执行的状态位有:C54CM,M40,SATD,SXMD,TC1,TC2。执行指令后会受影响的状态位:ACOVy,CARRY第51页/共134页举例:

ADDSUBCC*AR1,AC0,TC2,AC1

如果TC2=1,则AC1=AC0+(*AR1<<#16, 否则AC1=AC0-(*AR1)<<#16第52页/共134页乘法指令指令—在D单元的MAC中完成操作状态位影响指令执行的状态位有:FRCT,SMUL,M40,RDM,SATD执行指令后会受影响的状态位:ACOVx,ACOVy第53页/共134页乘法指令

第54页/共134页举例:

MPYAC1,AC0;AC1=AC0*AC1第55页/共134页乘加指令指令—在D单元的MAC中完成操作状态位影响指令执行的状态位有:FRCT,SMUL,M40,RDM,SATD。执行指令后会受影响的状态位:ACOVx,ACOVy第56页/共134页乘加指令第57页/共134页举例1:

MACMR*AR1,*CDP,AC2 AC2=AC2+(*AR1)*(*CDP)第58页/共134页举例2:

MACMRuns(*AR2+),uns(*AR3+),AC3 AC3=(*AR2)+(*AR3)+AC3,AR2=AR2+1, AR3=AR3+1

第59页/共134页乘减指令指令—在D单元的MAC中完成操作状态位影响指令执行的状态位有:FRCT,SMUL,M40,RDM,SATD。执行指令后会受影响的状态位:ACOVx,ACOVy第60页/共134页乘减指令

第61页/共134页举例:

MASRT1,AC0,AC1 AC1=AC1-AC0*T1第62页/共134页双乘加/减指令指令—利用D单元的两个MAC在一个周期内同时执行两个乘法或乘加/减运算状态位影响指令执行的状态位有:FRCT,SMUL,M40,RDM,SATD。执行指令后会受影响的状态位:ACOVx,ACOVy第63页/共134页举例:

MASR40uns(*AR0),uns(*CDP),AC0 ::MACR40uns(*AR1),uns(*CDP),AC1

;AC0=AC0-uns(*AR0)*uns(*CDP) ;AC1=AC1-uns(*AR1)*uns(*CDP)第64页/共134页双16位算术指令指令—利用D单元中的ALU在一个周期内完成两个并行的算术运算,包括一加一减、一减一加、两个加法或两个减法状态位影响指令执行的状态位有:C54CM,SATD,SXMD。执行指令后会受影响的状态位:ACOVx,ACOVy,CARRY第65页/共134页双16位算术指令第66页/共134页举例:

ADDSUBT1,*AR1,AC1

;AC1(39-16)=(*AR1)+T1

;||AC1(15-0)=(*AR1)-T1第67页/共134页比较和选择极值指令指令—在D单元的ALU中完成两个并行16位极值选择操作和一个40位极值选择操作状态位影响指令执行的状态位有:C54CM,SATD。执行指令后会受影响的状态位:ACOVw,CARRY第68页/共134页比较和选择极值指令第69页/共134页举例:

MAXDIFFAC0,AC1,AC2,AC1第70页/共134页最大/最小值指令指令MAX[src,]dst;dst=max(src,dst)MIN[src,]dst;dst=min(src,dst)状态位影响指令执行的状态位有:C54CM,M40,SXMD。执行指令后会受影响的状态位:CARRY第71页/共134页举例1:

MAXAC2,AC1

;由于(AC2)<(AC1),所以AC1保 持不变且CARRY状态位置1举例2:

MINAC1,T1;由于T1<AC1(15-0),所以T1的内容保持不变且将CARRY状态位置1

第72页/共134页存储器比较指令指令CMPSmem==K16,TCx

;IfSmem==K16thenTCx=1elseTCx=0状态位影响指令执行的状态位有:无。执行指令后会受影响的状态位:TCx举例CMP*AR1+==#400h,TC1第73页/共134页寄存器比较指令指令—在D单元和A单元的ALU中完成两个累加器、辅助寄存器或临时寄存器的比较,若累加器与辅助寄存器或临时寄存器比较,在A单元将ACx(15-0)与TAx进行比较状态位影响指令执行的状态位有:C54CM,M40,TCy。执行指令后会受影响的状态位:TCx第74页/共134页举例1:

CMPAC1==T1,TC1

;由于AC1(15-0)=T1,所以将TC1置1第75页/共134页条件移位指令指令SFTCCACx,TCx

;IfACx(39–0)=0thenTCx=1;IfACx(31–0)hastwosignbitsthen;ACx=ACx(31–0)<<#1andTCx=0;elseTCx=1状态位影响指令执行的状态位有:无。执行指令后会受影响的状态位:TCx举例SFTCCAC0,TC1第76页/共134页带符号移位指令指令—移位指令中的移位值由立即数、SHIFTW或Tx内容确定状态位影响指令执行的状态位有:C54CM,M40,SATA,SATD,SXMD。执行指令后会受影响的状态位:ACOVx,ACOVy,CARRY第77页/共134页举例1:

SFTST2,#1;T2=T2<<#1举例2:

SFTSCAC0,#–5,AC1

;AC1=AC0>>5,移出的位装入CARRY

第78页/共134页修改辅助寄存器(MAR)指令指令状态位影响指令执行的状态位有:ST2-55执行指令后会受影响的状态位:无举例AADD#255,T0;T0=T0+255AMOV#255,AR0;AR0=255AMAR*AR3+;AR3=AR3+1第79页/共134页修改堆栈指针指令指令

AADDK8,SP;SP=SP+K8状态位影响指令执行的状态位有:无。执行指令后会受影响的状态位:无。举例

AADD#127,SP;SP=SP+127第80页/共134页隐含并行指令指令加-存储、乘加/减-存储、加/减-存储、装载-存储和乘加/减-装载状态位影响指令执行的状态位有:FRCT,SMUL,C54CM,M40,RDM,SATD,SXMD。执行指令后会受影响的状态位:ACOVx,ACOVy,CARRY第81页/共134页隐含并行指令

第82页/共134页举例:

MPYMR*AR0+,T0,AC1 ::MOVHI(AC0<<T2),*AR1+

;AC1=(*AR0)*T0,因为FRCT=1,AC1=rnd(AC1*2), ;AC0=AC0<<T2,(*AR1)=AC0(31-16),AR1=AR1+1, ;AR0=AR0+1

第83页/共134页绝对距离指令指令以并行方式完成两个操作,一个在D单元的MAC中,另一个在D单元的ALU中ABDSTXmem,Ymem,ACx,ACy;ACy=ACy+|HI(ACx)|;ACx=(Xmem<<#16)–(Ymem<<#16)状态位影响指令执行的状态位有:FRCT,C54CM,M40,SATD,SXMD。执行指令后会受影响的状态位:ACOVx,ACOVy,CARRY第84页/共134页举例:

ABDST*AR0+,*AR1,AC0,AC1

;AC1=AC1+|HI(AC0)|

;AC0=((*AR0)<<#16)–((*AR1)<<#16) ;AR0=AR0+1第85页/共134页绝对值指令指令ABS[src,]dst;dst=|src|状态位影响指令执行的状态位有:C54CM,M40,SATA,SATD,SXMD。执行指令后会受影响的状态位:ACOVx,CARRY举例

ABSAR1,AC1;AC1=|AR1|第86页/共134页FIR滤波指令指令FIRSADDXmem,Ymem,Cmem,ACx,ACy;ACy=ACy+(ACx(32-16)*Cmem)

;ACx=(Xmem<<#16)+(Ymem<<#16)FIRSSUBXmem,Ymem,Cmem,ACx,ACy;ACy=ACy+(ACx(32-16)*Cmem)

;ACx=(Xmem<<#16)–(Ymem<<#16)状态位影响指令执行的状态位有:FRCT,SMUL,C54CM,M40,SATD,SXMD。执行指令后会受影响的状态位:ACOVx,ACOVy,CARRY第87页/共134页举例:

FIRSADD*AR0,*AR1,*CDP,AC0,AC1

;AC1=AC1+AC0(32-16)*(*CDP)

;AC0=((*AR0)<<#16)+((*AR1)<<#16)第88页/共134页最小均方(LMS)指令指令LMSXmem,Ymem,ACx,ACy

;ACy=ACy+(Xmem*Ymem)

;::ACx=rnd(ACx+(Xmem<<#16))状态位影响指令执行的状态位有:FRCT,SMUL,C54CM,M40,RDM,SATD,SXMD。执行指令后会受影响的状态位:ACOVx,ACOVy,CARRY第89页/共134页举例:

LMS*AR0,*AR1,AC0,AC1

;AC1=AC1+(*AR0)*(*AR1)

;::AC0=rnd(AC0+((*AR0)<<#16))第90页/共134页补码指令指令NEG[src,]dst;dst=–src状态位影响指令执行的状态位有:M40,SATA,SATD,SXMD。执行指令后会受影响的状态位:ACOVx,CARRY举例

NEGAC1,AC0;AC0=-AC1第91页/共134页归一化指令指令MANTACx,ACy;ACy=mant(ACx),::NEXPACx,Tx;Tx=–exp(ACx)EXPACx,Tx;Tx=exp(ACx)状态位影响指令执行的状态位有:无。执行指令后会受影响的状态位:无举例

MANTAC0,AC1;AC1等于AC0的尾数,即将AC0右移与32位带符号数对齐后的值;::NEXPAC0,T1;T1等于将AC0的MSB左移与32位带符号数对齐所移位的次数值第92页/共134页饱和和舍入指令指令SAT[R][ACx,]ACy;ACy=saturate(rnd(ACx))ROUND[ACx,]ACy;ACy=rnd(ACx)状态位影响指令执行的状态位有:C54CM,M40,RDM,SATD。执行指令后会受影响的状态位:ACOVy第93页/共134页举例1:

ROUNDAC0,AC1

;AC1=AC0+8000h,且16个最低有效位清0举例2:

SATAC0,AC1

;将32位的AC0饱和,将饱和后的值FF80000000装入AC1

第94页/共134页平方差指令指令SQDSTXmem,Ymem,ACx,ACy

;ACy=ACy+(ACx(32-16)*ACx(32-16))

;ACx=(Xmem<<#16)–(Ymem<<#16)状态位影响指令执行的状态位有:FRCT,SMUL,C54CM,M40,SATD,SXMD。执行指令后会受影响的状态位:ACOVx,ACOVy,CARRY第95页/共134页举例:

SQDST*AR0,*AR1,AC0,AC1

;AC1=AC1+(AC0(32-16))*(AC0(32-16)) ;AC0=((*AR0)<<16)-((*AR1<<16)第96页/共134页位操作指令

位域比较指令指令BANDSmem,k16,TCx

;If(((Smem)ANDk16)==0),TCx=0

;elseTCx=1状态位影响指令执行的状态位有:无。执行指令后会受影响的状态位:TCx举例:BAND*AR3,#00A0h,TC2

;由于(*AR3)ANDk16==0,TC2=0第97页/共134页位计数指令BCNTACx,ACy,TCx,Tx

;Tx=(ACxANDACy)中1的个数 ;若Tx为奇数,则TCx=1,反之TCx=0状态位影响指令执行的状态位有:无。执行指令后会受影响的状态位:TCx举例:BCNTAC1,AC2,TC1,T1

;T1=(AC1与AC2)中1的个数,个数是奇数,TC1=1第98页/共134页位域扩展和抽取指令指令位域抽取:BFXTRk16,ACx,dst;从LSB到MSB将k16中非零位对应的ACx中的位抽取出来,依次放到dst的LSB中位域扩展:BFXPAk16,ACx,dst;将ACx的LSB放到k16中非零位对应的dst中的位置上,;ACx的LSB个数等于k16中1的个数状态位影响指令执行的状态位有:无。执行指令后会受影响的状态位:无第99页/共134页举例1:

BFXTR#8024h,AC0,T2

;从最低位到最高位将(8024h)中非零位对应的AC0中的位抽取出来依次放到T2的LSB中

举例2:

BFXPA#8024h,AC0,T2

;将AC0的LSB放到#8024h中非零位对应的T2中的位置上,AC0的LSB个数等于#8024h中1的个数

第100页/共134页存储器位操作指令指令测试、清零、置位和取反状态位影响指令执行的状态位有:无。执行指令后会受影响的状态位:TCx第101页/共134页举例1:

BTSTAC0,*AR0,TC1

;位地址AC0(3-0)=8,测试(*AR0)的位8,结果存入TC1举例2:

BTSTNOT#12,*AR0,TC1

;测试(*AR0)的位12,结果存入TC1,并将(*AR0)的位12取反

第102页/共134页寄存器位操作指令指令测试、置位、清零和取反操作状态位影响指令执行的状态位有:无。执行指令后会受影响的状态位:TCx第103页/共134页举例1:

BTST@#12,T0,TC1

;测试T0的位12,将结果存入TC1

举例2:

BNOTAR1,T0

;将T0中由AR1确定的位12取反

第104页/共134页举例3:

BTSTPAR1(T0),AC0

;由基地址(AR1)和偏移地址T0确定的位地址为39,测试AC0中的第39位并存入TC1;测试AC0中的第40位并存入TC2第105页/共134页状态位设置指令指令置位和清零状态位影响指令执行的状态位有:无。执行指令后会受影响的状态位:已经选择的状态位第106页/共134页举例1:

BCLRAR1LC,ST2_55

;由标号AR1LC确定位地址为1,将ST2-55的位2清零

举例2:

BSETCARRY,ST0_55

;由标号CARRY确定位地址为11,将ST0-55的位11置位

举例3:

BSETCARRY

;将ST0-55的CARRY(位11)置位

第107页/共134页扩展辅助寄存器操作指令

指令状态位影响指令执行的状态位有:ST2-55。执行指令后会受影响的状态位:无第108页/共134页举例1:

AMAR*AR1+,XAR0;将(*AR1)的内容装入XAR0,且AR1增1AMOV#7FFFFFh;将23位的值(7FFFFFh)装入XAR0MOVdbl(*AR3),XAR1;将(*AR3)低7位和(*(AR3+1))的16位装入XAR1第109页/共134页位操作指令

位域比较指令指令BANDSmem,k16,TCx

;If(((Smem)ANDk16)==0),TCx=0

;elseTCx=1状态位影响指令执行的状态位有:无。执行指令后会受影响的状态位:TCx举例:BAND*AR3,#00A0h,TC2

;由于(*AR3)ANDk16==0,TC2=0第110页/共134页逻辑运算指令

按位与/或/异或/取反指令指令状态位影响指令执行的状态位有:C54CM,M40。执行指令后会受影响的状态位:无第111页/共134页举例1:

NOTAC0,AC1

;将AC0的内容取反,结果存入AC1

举例2:

ANDAC0,AC1;AC1=AC1ANDAC0

举例3:AC0<<#4,AC1;将AC0逻辑左移4位后与AC1相或,结果存 入AC1举例4:XORAC0,AC1;AC1=AC1XORAC0第112页/共134页逻辑移位指令状态位影响指令执行的状态位有:C54CM,M40。执行指令后会受影响的状态位:CARRY第113页/共134页举例1:

SFTLAC1,#1;AC1=AC1<<#1,由于M40=0,CARRY=位31,且位(39-32)清零

举例2:

SFTLAC0,T0,AC1;AC1=AC0<<-6,由于M40=0,所以(39-32)清零

第114页/共134页循环移位指令ROLBitOut,src,BitIn,dst;将BitIn移进src的LSB,src被移出的位存放于BitOut,此时的结果放到dst中RORBitIn,src,BitOut,dst;将BitIn移进src的MSB,src被移出的位存放于BitOut,此时的结果放到dst中状态位影响指令执行的状态位有:CARRY,M40,TC

温馨提示

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

评论

0/150

提交评论