DSP的基本原理及应用第四讲.docx
《DSP的基本原理及应用第四讲.docx》由会员分享,可在线阅读,更多相关《DSP的基本原理及应用第四讲.docx(36页珍藏版)》请在冰点文库上搜索。
![DSP的基本原理及应用第四讲.docx](https://file1.bingdoc.com/fileroot1/2023-7/6/61ea7c0b-c58a-4866-bd5f-fe1856f203bd/61ea7c0b-c58a-4866-bd5f-fe1856f203bd1.gif)
DSP的基本原理及应用第四讲
第6章DSP55xx芯片的指令系统及编程
TMS320C55xxDSP指令集可分为六大类操作类型:
装载和存储指令:
交换、数据移动、堆栈操作及复制(DELAY)
算术指令:
加法、减法、加减、减加、乘法、乘累加、乘累减、移位、带条件加减、带条件移位,比较指令等
程序控制指令:
条件转移、无条件转移、重复、条件执行、CALL等
bit控制指令:
bitTest、Set、Clear、Complement
扩展辅助寄存器指令:
辅助寄存器数据移动、堆栈操作
逻辑操作指令:
与、或、非、异或、取反、逻辑移位
其它操作指令:
mmap、port
§6.1装载和存储指令
语法
并行使能bit
长度
周期
流水线
执行单元
Accumulator,Auxiliary,orTemporaryRegisterContentSwap
AunitALU
SWAPARx,Tx
Yes
2
1
AD
Aunitregisterfile
SWAPTx,Ty
Yes
2
1
AD
Aunitregisterfile
SWAPARx,ARy
Yes
2
1
AD
Aunitregisterfile
SWAPACx,ACy
Yes
2
1
X
Dunitregisterfile
SWAPPARx,Tx
Yes
2
1
AD
Aunitregisterfile
SWAPPT0,T2
Yes
2
1
AD
Aunitregisterfile
SWAPPAR0,AR2
Yes
2
1
AD
Aunitregisterfile
SWAPPAC0,AC2
Yes
2
1
X
Dunitregisterfile
SWAP4AR4,T0
Yes
2
1
AD
Aunitregisterfile
Accumulator,Auxiliary,orTemporaryRegisterLoad
MOVk4,dst
Yes
2
1
X
AorDunitregisterfile
MOV–k4,dst
Yes
2
1
X
AorDunitregisterfile
MOVK16,dst
No
4
1
X
AorDunitregisterfile
MOVSmem,dst
No
2
1
X
AorDunitregisterfile
MOV[uns()high_byte(Smem)[]],dst
No
3
1
X
AorDunitregisterfile
MOV[uns()low_byte(Smem)[]],dst
No
3
1
X
AorDunitregisterfile
MOVK16<<#16,ACx
No
4
1
X
DunitALU
MOVK16<<#SHFT,ACx
No
4
1
X
Dunitshifter
MOV[rnd()Smem<No
3
1
X
Dunitshifter
MOVlow_byte(Smem)<<#SHIFTW,ACx
No
3
1
X
Dunitshifter
MOVhigh_byte(Smem)<<#SHIFTW,ACx
No
3
1
X
Dunitshifter
MOVSmem<<#16,ACx
No
2
1
X
DunitALU
MOV[uns()Smem[]],ACx
No
3
1
X
Dunitregisterfile
MOV[uns()Smem[]]<<#SHIFTW,ACx
No
4
1
X
Dunitshifter
MOV[40]dbl(Lmem),ACx
No
3
1
X
Dunitregisterfile
MOVXmem,Ymem,ACx
No
3
1
1
Dunitregisterfile
MOVdbl(Lmem),pair(HI(ACx))
No
3
1
X
Dunitregisterfile
MOVdbl(Lmem),pair(LO(ACx))
No
3
1
X
Dunitregisterfile
MOVdbl(Lmem),pair(TAx)
No
3
1
X
Aunitregisterfile
Accumulator,Auxiliary,orTemporaryRegisterMove(page4-41)
MOVsrc,dst
Yes
2
1
X
AorDunitALU
MOVHI(ACx),TAx
Yes
2
1
X
AunitALU
MOVTAx,HI(ACx)
Yes
2
1
X
DunitALU
Accumulator,Auxiliary,orTemporaryRegisterStore(page4-46)
MOVsrc,Smem
No
2
1
X
AorDunitregisterfile
MOVsrc,high_byte(Smem)
No
3
1
X
AorDunitregisterfile
MOVsrc,low_byte(Smem)
No
2
1
X
AorDunitregisterfile
MOVHI(ACx),Smem
No
2
1
X
Dunitregisterfile
MOV[rnd()HI(ACx)[]],Smem
No
3
1
X
Dunitregisterfile
MOVACx<No
3
1
X
Dunitregisterfile
MOV[rnd(]HI(ACx<No
3
1
X
Dunitregisterfile
MOVACx<<#SHIFTW,Smem
No
3
1
X
Dunitregisterfile
MOVHI(ACx<<#SHIFTW),Smem
No
3
1
X
Dunitregisterfile
MOV[rnd()HI(ACx<<#SHIFTW)[]],Smem
No
4
1
X
Dunitregisterfile
MOV[uns(][rnd(]HI(saturate(ACx))[))],Smem
No
3
1
X
Dunitregisterfile
MOV[uns(][rnd(]HI(saturate(ACx<No
3
1
X
Dunitregisterfile
MOV[uns()(rnd()HI(saturate(ACx<<#SHIFTW))[])],Smem
No
4
1
X
Dunitregisterfile
MOVACx,dbl(Lmem)
No
3
1
X
Dunitregisterfile
MOV[uns(]saturate(ACx)[)],dbl(Lmem)
No
3
1
X
Dunitregisterfile
MOVACx>>#1,dual(Lmem)
No
3
1
X
Dunitregisterfile
MOVpair(HI(ACx)),dbl(Lmem)
No
3
1
X
Dunitregisterfile
MOVpair(LO(ACx)),dbl(Lmem)
No
3
1
X
Aunitregisterfile
MOVpair(TAx),dbl(Lmem)
No
3
1
X
Dunitregisterfile
MOVACx,Xmem,Ymem
No
3
1
X
Dunitregisterfile
MemoryDelay
DELAYSmem
No
3
1
X
AorDunitregisterfile
Memory-to-MemoryMove/MemoryInitialization
AorDunitregisterfile
MOVCmem,Smem
No
3
1
X
MOVSmem,Cmem
No
3
1
X
MOVK8,Smem
No
3
1
X
MOVK16,Smem
No
4
1
X
MOVCmem,dbl(Lmem)
No
3
1
X
MOVdbl(Lmem),Cmem
No
3
1
X
MOVdbl(Xmem),dbl(Ymem)
No
3
1
X
MOVXmem,Ymem
No
3
1
X
PopTopofStack(TOS)
AorDunitregisterfile
POPdst1,dst2
Yes
2
1
X
POPdst
Yes
2
1
X
POPdst,Smem
No
3
1
X
POPdbl(ACx)
Yes
2
1
X
POPSmem
No
2
1
X
POPdbl(Lmem)
No
2
1
X
PushtoTopofStack(TOS)
AorDunitregisterfile
PSHsrc1,src2
Yes
2
1
X
PSHsrc
Yes
2
1
X
PSHsrc,Smem
No
3
1
X
PSHdbl(ACx)
Yes
2
1
X
PSHSmem
No
2
1
X
PSHdbl(Lmem)
No
2
1
X
SpecificCPURegisterLoad
AorDunitregisterfile
MOVk12,BK03
Yes
3
1
AD
MOVk12,BK47
Yes
3
1
AD
MOVk12,BKC
Yes
3
1
AD
MOVk12,BRC0
Yes
3
1
AD
MOVk12,BRC1
Yes
3
1
AD
MOVk12,CSR
Yes
3
1
AD
MOVk7,DPH
Yes
3
1
AD
MOVk9,PDP
Yes
3
1
AD
MOVk16,BSA01
No
4
1
AD
MOVk16,BSA23
No
4
1
AD
MOVk16,BSA45
No
4
1
AD
MOVk16,BSA67
No
4
1
AD
MOVk16,BSAC
No
4
1
AD
MOVk16,CDP
No
4
1
AD
MOVk16,DP
No
4
1
AD
AorDunitregisterfile
MOVk16,SP
No
4
1
AD
MOVk16,SSP
No
4
1
AD
MOVSmem,BK03
No
3
1
X
MOVSmem,BK47
No
3
1
X
MOVSmem,BKC
No
3
1
X
MOVSmem,BSA01
No
3
1
X
MOVSmem,BSA23
No
3
1
X
MOVSmem,BSA45
No
3
1
X
MOVSmem,BSA67
No
3
1
X
MOVSmem,BSAC
No
3
1
X
MOVSmem,BRC0
No
3
1
X
MOVSmem,BRC1
No
3
1
X
MOVSmem,CDP
No
3
1
X
MOVSmem,CSR
No
3
1
X
MOVSmem,DP
No
3
1
X
MOVSmem,DPH
No
3
1
X
MOVSmem,PDP
No
3
1
X
MOVSmem,SP
No
3
1
X
MOVSmem,SSP
No
3
1
X
MOVSmem,TRN0
No
3
1
X
MOVSmem,TRN1
No
3
1
X
MOVdbl(Lmem),RETA
No
3
5
X
SpecificCPURegisterMove
AunitALU
MOVTAx,BRC0
Yes
2
1
X
MOVTAx,BRC1
Yes
2
1
X
MOVTAx,CDP
Yes
2
1
X
MOVTAx,CSR
Yes
2
1
X
MOVTAx,SP
Yes
2
1
X
MOVTAx,SSP
Yes
2
1
X
MOVBRC0,TAx
Yes
2
1
X
MOVBRC1,TAx
Yes
2
1
X
MOVCDP,TAx
Yes
2
1
X
MOVRPTC,TAx
Yes
2
1
X
MOVSP,TAx
Yes
2
1
X
MOVSSP,TAx
Yes
2
1
X
SpecificCPURegisterStore
AorDunitregisterfile
MOVBK03,Smem
No
3
1
X
MOVBK47,Smem
No
3
1
X
MOVBKC,Smem
No
3
1
X
MOVBSA01,Smem
No
3
1
X
MOVBSA23,Smem
No
3
1
X
MOVBSA45,Smem
No
3
1
X
MOVBSA67,Smem
No
3
1
X
MOVBSAC,Smem
No
3
1
X
MOVBRC0,Smem
No
3
1
X
MOVBRC1,Smem
No
3
1
X
MOVCDP,Smem
No
3
1
X
MOVCSR,Smem
No
3
1
X
MOVDP,Smem
No
3
1
X
MOVDPH,Smem
No
3
1
X
MOVPDP,Smem
No
3
1
X
MOVSP,Smem
No
3
1
X
MOVSSP,Smem
No
3
1
X
MOVTRN0,Smem
No
3
1
X
MOVTRN1,Smem
No
3
1
X
MOVRETA,dbl(Lmem)
No
3
5
X
§6.2算术指令
语法
并行使能bit
长度
周期
流水线
执行单元
(矢量距离)AbsoluteDistance
ABDSTXmem,Ymem,ACx,ACy
No
4
1
X
(绝对值)AbsoluteValue
ABS[src,]dst
Yes
2
1
X
AorDunitALU
(加法)Addition
ADD[src,]dst
Yes
2
1
X
AorDunitALU
ADDk4,dst
Yes
2
1
X
AorDunitALU
ADDK16,[src,]dst
No
4
1
X
AorDunitALU
ADDSmem,[src,]dst
No
3
1
X
AorDunitALU
ADDACx<Yes
2
1
X
DunitALU&shifter
ADDACx<<#SHIFTW,ACy
Yes
3
1
X
DunitALU&shifter
ADDK16<<#16,[ACx,]ACy
No
4
1
X
DunitALU
ADDK16<<#SHFT,[ACx,]ACy
No
4
1
X
DunitALU&shifter
ADDSmem<No
3
1
X
DunitALU&shifter
ADDSmem<<#16,[ACx,]ACy
No
3
1
X
DunitALU
ADD[uns(]Smem[)],CARRY,[ACx,]ACy
No
3
1
X
DunitALU
ADD[uns(]Smem[)],[ACx,]ACy
No
3
1
X
DunitALU
ADD[uns(]Smem[)]<<#SHIFTW,[ACx,]ACy
No
4
1
X
DunitALU&shifter
ADDdbl(Lmem),[ACx,]ACy
No
3
1
X
DunitALU
ADDXmem,Ymem,ACx
No
3
1
X
DunitALU
ADDK16,Smem
No
4
1
X
DunitALU
ADDV[ACx,]ACy
Yes
2
1
X
DunitMAC
(比较)CompareandSelectExtremum
DunitALU
MAXDIFFACx,ACy,ACz,ACw
Yes
3
3
X
DMAXDIFFACx,ACy,ACz,ACw,TRNx
Yes
3
1
X
MINDIFFACx,ACy,ACz,ACw
Yes
3
1
X
XDMINDIFFACx,ACy,ACz,ACw,TRNx
Yes
3
1
X
(带条件加减法)ConditionalAddition/Subtraction
ADDSUBCCSmem,ACx,TC1,ACy
No
3
1
X
DunitALU
ADDSUBCCSmem,ACx,TC2,ACy
No
3
1
X
DunitALU
ADDSUBCCSmem,ACx,TC1,TC2,ACy
No
3
1
X
DunitALU
ADDSUB2CCSmem,ACx,Tx,TC1,TC2,ACy
No
3
1
X
Dunitshifter
(带条件移位)ConditionalShift
SFTCCACx,TCx
Yes
2
1
X
Dunitshifter
(带条件减法)ConditionalSubtract
SUBCSmem,[ACx,]ACy
No
3
1
X
DunitALU
双16bit加减法Dual16-BitArithmetic
DunitALU
ADDSUBTx,Smem,ACx
No
3
1
X
SUBADDTx,Smem,ACx
No
3
1
X
ADDdual(Lmem),[ACx,]ACy
No
3
1
X
SUBdual(Lmem),[ACx,]ACy
No
3
1
X
SUBACx,dual(Lmem),ACy
No
3
1
X
SUBdual(Lmem),Tx,ACx
No
3
1
X
ADDdual(Lmem),Tx,ACx
No
3
1
X
SUBTx,dual(Lmem),ACx
No
3
1
X
ADDSUBTx,dual(Lmem),ACx
No
3
1
X
SUBADDTx,dual(Lmem),ACx
No
3
1
X
并行乘法(Accumulate/Subtract)
DunitMACs
MPY[R][40][uns()Xmem[]],[uns()Cmem[]],Acx
∷MPY[R][40][uns()Ymem[]],[uns()Cmem[)],ACy
No
4
1
X
MAC[R][40][uns()Xmem[]],[uns()Cmem[]],Acx
∷MPY[R][40][uns()Ymem[]],[uns()Cmem[]],ACy
No
4
1
X
MAS[R][40][uns()Xmem[]],[uns()Cmem[]],Acx
∷MPY[R][40][uns()Ymem[]],[uns()Cmem[]],ACy
No
4
1
X
AMARXmem
∷MPY[R][40][uns()Ymem[]],[uns()Cmem[]],ACx
No
4
1
X
MAC[R][40][uns()Xmem[]],[uns()Cmem