DSP实验第二章课件_第1页
DSP实验第二章课件_第2页
DSP实验第二章课件_第3页
DSP实验第二章课件_第4页
DSP实验第二章课件_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

DSP54.2-1DSP54.2-22。TMS320C54x结构概述•TMS320C54x内部硬件结构图(1)总线结构

•4组8条16—bit总线程序PB--PAB数据读数据写EB--EAB

•程序总线的改进功能例:MACPSmem,pmad,src;(Smem)×(pmad)+(src)→src

MVDPSmem,pmad;(Smem)→(pmad)

MVPDpmad,Smem

READASmem;A→PAR,(PAR)→Smem

FIRSXmem,Ymem,pmad;

DSP54.2-3DSP54.2-4

•片内外设通过一组双向寻址总线进行

•表1---3各种读/写方法用到的总线

(2)片内存储器

•分类:程序空间、数据空间、I/O空间

•类型:•功能:ROM---一般配置成程序存储空间RAM---一般配置成数据存储空间(根据PMST的有关状态位可以互相复用)

•‘C5402存储器结构图-----讲义图2—3’C5402存储器配置

•扩展程序存储器空间------讲义图2—4

•I/O存储器:片外64K字寻址空间(用PORTW和PORTR进行寻址)

DSP54.2-5(3)中央处理单元(CPU)

•CPU的基本组成(教材P.19)

1。

ALU—算术逻辑运算单元

•主要由40位ALU和两个40位累加器(ACCA和ACCB)组成,如讲义图2-5所示

•输入源

•输出

•图选项说明:

1)SXM:来自16—bit数据存储器数时

DSP54.2-6OVM:溢出方式控制正向溢出饱和:007FFFFFFF>0

负向溢出饱和:FF80000000<03)C:

进位位—•进位置1;相减借位置0;

•作为条件操作数,进行分支转移,调用或返回;例:BC1000h,C;if(C=1),thenpmadPC4)双16—bit长字运算

C16=1,ALU工作在双16—bit方式指令,见教材表1—8(p.26);•双精度运算(32--bit)举例及高(16-bit)和低(16-bit)位在存储器中的排列问题,参见教材p.150DSP54.2-7要点:指令中给出的地址,存取的总是高16—bit地址操作数;*AR3指向偶地址:偶地址放在高位奇地址(偶地址+1)放在低位*AR3指向奇地址:奇地址放在高位偶地址(奇地址-1)放在低位

2。累加器A和B

1)功能:

•作为乘/加或ALU的目的寄存器(dst)

MAC*AR2+,*AR3+,A,B;(Xmem)×(Ymem)+(src)dst•进行并行操作

LD*AR2+,A;dst=Xmem<<16

||MAC*AR3+,B;||

dst_=dst_+Ymem×T

DSP54.2-8

•用作MIN和MAX指令操作

MAXdst;dst=max(A,B)MINdst;dst=min(A,B)例:max:RPTBDdone-1LD*AR1+,A;执行循环前,对A,B加载LD*AR1+,B;(1w/1c)MAXB;最大值放在BLD*AR1+,Adone:···1628AR12397567-2345

······

DSP54.2-92)组成:累加器A:39-32(保护位)31-16(高位)15-0(低位)

累加器B:39-32(保护位)31-16(高位)15-0(低位)

•它们都是mmregs(见讲义p.1--9);•A和B的区别:累加器A的(32~16bit)(hi(A))可以作为乘/加单元的乘法器输入;3)保存累加器内容的指令:STHSTLSTLMSACCD(见教材p.21)

AGAHAL

BGBHBL

DSP54.2-10条件:AEG,BEG:=0ANEG,BNEG:

≠0AGT,BGT:>0AGEQ,BGEQ:≥0ALT,BLT:<0ALEQ,BLEQ:≤0SACCDsrc,Xmem,condif(cond.)then(src)<<(ASM-16)→Xmemelse(Xmem)→(Xmem)DSP54.2-11例:STHA,8,TEMP;(A)=FF43211234h

;(TEMP)=2112hSACCDA,*AR3+,ALT;条件存储例子

(A)=FFFE004321(A)=FFFE004321(ASM)=01(ASM)=01AR3=0202AR3=0203(0202h)=0101(0202h)=FC00DSP54.2-12

4)累加器的移位(Shift)和循环移位(Rotate)操作

•算术移位:SFTAsrc,shift[,dst];-16≤shift≤15C39---3231---00左移SX39---3231---0C右移受SXM影响

例:SFTAA,-5,B(A)=FF87650055(A)=FF87650055(B)=0043211234(B)=FFFC3B2802(C)=0(C)=1SXM=1SXM=1

DSP54.2-13

•逻辑移位:SFTLsrc,shift[,dst];-16≤shift≤15C0031---00左移00031---0C右移*保护位清零,不受SXM影响例:SFTLA,-5,B(A)=FF87650055(A)=FF87650055(B)=0043211234(B)=00043B2802(C)=0(C)=1

DSP54.2-14

•累加器循环左移:ROLsrc

C0031---0左移

•累加器循环右移:RORsrc

C0031---0右移

DSP54.2-15

•条件移位:SFTCsrc;ifsrc(31)=src(30)thensrc=src<<1*通常用来对累加器32位数归一化,以消去多余的符号位,同时使(TC)=1;•累加器带TC位循环左移:ROLTCsrc

C0031---0TCDSP54.2-165)饱和时累加器值的存储:SATsrc;PMST(0)=SST=1按指令要求对累加器40-bit值进行移位;40-bit值经移位操作限制到32-bit:

•若SXM=0(A)≥7FFFFFFFh则以7FFFFFFFh处理

•若SXM=1(A)>7FFFFFFFh则以7FFFFFFFh处理•

若(A)<80000000h则以80000000h处理按指令要求存储数据;*参看教材p.31续表1-11PMST(0)=SST的说明DSP54.2-17例(A)=7FFFFF0000hAR1=100hSTHA,-4,*AR1+;(100)=7FFFh(100)=5555hSXM=1STLA,-4,*AR1+;(100)=FFFFhSST=1说明:A移-4位后为:(A)=07FFFFF000h≥7FFFFFFFh,饱和处理:(A)=7FFFFFFFh

DSP54.2-186)累加器专用指令:FIRSXmem,Ymem,pmad

;B=B+A×pmad,A=(Xmem+Ymem)<<16LMSXmem,Ymem

;B=B+Xmem×Ymem,A=(A+Xmem<<16)+215

SQDSTXmem,Ymem

;B=B+A(32--16)×A(32--16),A=(Xmem-Ymem)<<16

3。桶形移位器(Barrelshift)

•作用:将输入数据左移0—31或右移0—16,经常用作数据定标,位提取,扩展算术和溢出保护等操作;

输入:DB(16-bit),DB和CB(32-bit)A和B(40-bit)

DSP54.2-19

•输出:ALU,经MSW/LSW写选择,送到写总线EB;•移位位数:用2的补码表示,正值左移(0~31),负值右移(0~-16)①立即数:-16~15②ST1中的ASM(4~0):-16~15③T寄存器中的低6位:-16~31乘法器/加法器单元

1)作用:完成(17-bit×17-bit)乘法运算,输出耦合到40-bit相加器,

MAC

指令在流水情况下做到1个指令周期DSP54.2-20

2)乘法器输入的选择:DSP54.2-213)乘法类型:

•(unsigned×unsigned):对16-bit操作数,第17位填零;MPYUSmem,dst;dst=uns(T)×uns(Smem)•(unsigned×signed):一个第17位填零,另一个符号扩展;•(signed×signed):两者用符号扩展成17-bit数;•若设置为小数模式:SSBXFRCT

乘法结果左移一位,消去多余的符号位DSP54.2-224)T寄存器提供一个操作数

•可以用支持mmreg寻址的指令装入

LDSmem,T•有时在乘法操作后,自动隐含装入例:MACXmem,Ymem,src[,dst];dst=src+Xmem×ymem

,T=Xmem

5)乘法/累加指令:MAC=MPY+ADD

6)MAC和MAS中相乘时饱和的处理:

当OVM=1和FRCT=1时•若PMST(1)=SMUL=1,则对乘法结果作饱和处理后再相加;

•若PMST(1)=SMUL=0,则对乘法/相加后最终结果作饱和处理;

DSP54.2-235。比较、选择和存储单元(CSSU)

1)功能:

•利用优化的片内硬件资源完成数据通信、模式识别等领域中的维特比(Viterbi)蝶形运算;•完成累加器的高位字(31~16)和低位字(15~0)的最大值比较;

2)Viterbi运算原理:AH,AL○J2*J○oldstatenewstate

2*J+1○

BH,BL○J+8DSP54.2-24D-cod:LD*AR2,TT=MDADST*AR5,AAH=(2*J)+M,AL=(2*J+1)-MDSADT*AR5+,BBH=(2*J)-M,BL=(2*J+1)+MCMPSA,*AR4(J)=max(AH,AL),etc.CMPSB,*AR3(J+8)=max(BH,BL),etc.

AR5AR4AR3MetricsJMetricsJ+8Metrics2*J&2*J+10

Oldstate151624Newstate31DSP54.2-25

说明:•相加操作是由ALU完成,此时ALU配置成双16-bit模式(C16=1),

DADST指令把两数和(Lmem(31~16)+(T))→dst(39~16)两数差(Lmem(15~0)-(T))→dst(15~0)在一个机器周期内完成两次16-bit数的相加;•利用CMPS指令和比较器、过渡寄存器完成比较选择,状态转移寄存器TRN自动记录比较的结果;

CMPSA,*AR4;ifA(31~16)

>A(15~0)

thenA(31~16)→*AR4elseA(15~0)→*AR4(TRN<<1)+0→TRN(TRN<<1)+1→TRN0→TC

1→TC

DSP54.2-26

6.指数编码器:1)功能:支持单周期指令EXP的专用硬件,求得的累加器中的指数值以二进制补码形式存储在T寄存器的(5~0)位;*指数范围:-8~31(即TS移位值);

2)‘C54x中定点数的指数表示:定点数=尾数×2-指数

(尾数与指数用补码表示)例:定点数0x2000=(0.25)10=0.5×2-1

则:尾数=0x4000,指数=1

DSP54.2-273)指数值计算:EXPsrc;if(src)=0then0→T;else(src冗余符号位-8)→T

累加器的指数值=冗余符号位-8

•冗余符号位数是对整个累加器40—bit而言,即包括8位保护位,这也就是(-8)的原因;

•当累加器的值超过32位,指数值为负值;4)指数运算举例:(参考教材p.157)例1:EXPA;A=FFFFFFFFCBA=FFFFFFFFCB(-53)10T=0000T=0019(25)10DSP54.2-28例2:EXPA;A=0785432105A=0785432105T=

温馨提示

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

评论

0/150

提交评论