【大学课件】数字信号处理器.ppt

上传人:sccc 文档编号:5661919 上传时间:2023-08-07 格式:PPT 页数:69 大小:2.22MB
返回 下载 相关 举报
【大学课件】数字信号处理器.ppt_第1页
第1页 / 共69页
【大学课件】数字信号处理器.ppt_第2页
第2页 / 共69页
【大学课件】数字信号处理器.ppt_第3页
第3页 / 共69页
【大学课件】数字信号处理器.ppt_第4页
第4页 / 共69页
【大学课件】数字信号处理器.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《【大学课件】数字信号处理器.ppt》由会员分享,可在线阅读,更多相关《【大学课件】数字信号处理器.ppt(69页珍藏版)》请在三一办公上搜索。

1、1,DSP技术及应用,Digital Signal Processor数字信号处理器,http:/,2,第三章 DSP指令系统与特点,第一节 寻址方式,第二节 程序地址的生成,第三节 流水线操作技术,第四节 指令系统概述,http:/,3,Smem:16位单寻址操作数。Xmem:16位双寻址操作数,从DB数据总线上读出。Ymem:16位双寻址操作数,从CB数据总线上读出。dmad:16位立即数,数据存储器地址。pmad:16位立即数,程序存储器地址。PA:16位立即数,I/O口地址。src:源累加器(A或B)。dst:目的累加器(A或B)。lk:16位长立即数。,第一节 TMS320C54x的

2、寻址方式,http:/,4,1立即数寻址2绝对地址寻址3累加器寻址4直接寻址5间接寻址6存储器映象寄存器寻址7堆栈寻址,寻址分类,http:/,5,1立即数寻址,在操作数前面需要加字号来说明该操作数为立即数。否则会把该操作数误认为是一个地址,从而把立即数寻址变成绝对地址寻址。,特点,指令中包含有执行指令所需要的操作数。立即数分为3、5、8或9位的短立即数和16位的长立即数两种。短立即数可包含在单字或双字指令中,长立即数在双字指令中。,注意,LD#93h,A LD 93h,A,举例,http:/,6,2绝对地址寻址,特点,在指令中包含有所要寻址的存储单元的16位地址。这个16位的地址可以用其所在

3、单元的地址标号或者16位符号常数来表示。,(1)数据存储器地址(damd)寻址,用一个符号或一个数来确定数据空间的一个地址。,方法,MVKD SAMPLE,*AR3,举例,http:/,7,用一个符号或一个具体的数来确定程序存储器中的一个地址,2绝对地址寻址,(2)程序存储器地址(pmad)寻址,方法,MVPD TABLE,*AR4,举例,http:/,8,用一个符号或一个常数来确定外部I/O口地址,2绝对地址寻址,(3)PA寻址 端口(PA),方法,PORTR FIFO,*AR5,举例,http:/,9,用一个符号或一个常数来确定数据存储器中的一个地址,2绝对地址寻址,(4)*(lk)寻址,

4、方法,LD*(BUFFER),A,举例,特点,允许所有使用Smem寻址的指令去访问数据空间的任意单元而不改变数据页指针(DP)的值,也不用对ARx进行初始化,http:/,10,用累加器中的数值作为地址来读写程序存储器。,方法,READA Smem WRITA Smem,举例,特点,可用来完成程序存储器单元的数据与数据存储器单元的数据进行交换,3累加器寻址,http:/,11,可以在不改变DP或SP的情况下,随机地寻址128个存储单元中的任何一个单元。,用一个符号或一个常数来确定7位偏移值,与DP或SP共同形成16位的数据存储器实际地址。,4直接寻址,方法,LD#x,DPLD u,A ADD

5、v,A=SSBX CPL LD X1,A ADD Y2,A,举例,特点,http:/,12,CPL=0 7位dma域与9bit的DP相结合形成16位的数据存储器地址。CPL=1 7位dma域加上(正偏移)SP的值形成16位的数据存储器地址。,DP值是从0511(29-1),以DP为基准的直接寻址把存储器分成512页,7位的dma范围从0127,每页有128个可访问的单元。,http:/,13,5间接寻址,方法,特点,(AR0AR7)ARAU0/ARAU1 16位无符号算术运算寻址范围为64K,能在一个指令中访问两个数据存储器单元,两个独立的存储器单元读数据读一个、写另一个存储器单元读写两个连续

6、的存储器单元,http:/,14,5间接寻址,(1)单操作数寻址,定义间接寻址的类型,定义寻址所使用的辅助寄存器,ST1,CMPT=0 标准方式ARF确定辅助寄存器,ST0中ARP0 CMPT=1 兼容方式如ARF=0,用ARP选择辅助寄存器,否则,用ARF来确定辅助寄存器。ARF的值装入ARP。,LD*AR1,B,http:/,15,单操作数间接寻址的硬件框图,http:/,16,单数据存储器操作数间接寻址类型,http:/,17,1)循环寻址 循环缓冲区的长度值存放在循环缓冲区长度寄存器BK中,BK中的数值由指令设定。长度为R的循环缓冲器必须从一个N位地址的边界开始,即循环缓冲器基地址的最

7、低N位必须为0。N是满足2NR的最小整数。R的值必须装入BK。例如,含有31个字的循环缓冲器必须从最低5位为0的地址开始,即xxxx xxxx xxx0 00002,N=5,2N=25R=31,且31必须装入BK。如:STM#1k,BK如果R=32,则最小的N值为6,循环缓冲区的起始地址必须有6个最低有效位为0,即 00 00002。,http:/,18,2)位倒序寻址 在这种寻址方式中,用AR0存放FFT点数的一半整数N,用另一辅助寄存器指向一数据存放的物理单元。当使用位倒序寻址把AR0加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是从右向左进位。例如:0110 1000

8、+0000 1000 0110 0100,以8位辅助寄存器为例,AR1表示了在存储器中数据的基地址(0110 0000)2,AR0的值为(0000 1000)2。利用以下两条语句可以向外设口(口地址为PA)输出整序后的FFT变换结果:RPT#15 重复执行下条指令15+1次PORTW*AR1+0B,PA 向外设口PA输出整结果,http:/,19,位倒序对FFT变换结果的序号调整,http:/,20,5间接寻址,(2)双操作数寻址方式,确定包含Xmem地址的辅助寄存器,确定包含Ymem地址的辅助寄存器,定义用于访问Ymem操作数的间接寻址方式的类型,定义用于访问Xmem操作数的间接寻址方式的类

9、型,MPY*AR2,*AR3,A,http:/,21,Xar或Yar 辅助寄存器00 AR201 AR310 AR411 AR5,辅助寄存器选择,双数据存储器操作数寻址的类型,http:/,22,0页寻址。不影响当前DP或SP值。用于直接寻址和间接寻址,用来修改存储器映象寄存器,6存储器映象寄存器寻址,功能,LDM PRD,A,举例,特点,方法,高9位数据存储器地址被置0,利用指令中的低位地址访问MMR。,http:/,23,7堆栈寻址,从高地址向低地址方向生长,SP)来管理堆栈,SP始终指向堆栈中所存放的最后一个数据,即SP指针始终指向栈顶。在压入操作时,先减小SP的值,再将数据压入堆栈;在

10、弹出操作时,先从堆栈弹出数据,再增加SP的值。,用来在中断和子程序调用时自动保存程序计数器(PC)中的数值,也能用来保护现场或传送参数,功能,特点,PSHD*AR2 POPD*AR3,http:/,24,第二节 程序地址的生成,程序地址生成器(PAGEN)构成,程序计数器(PC)重复计数器(RC)块重复计数器(BRC)块重复起始地址寄存器(RSA)块重复结束地址寄存器(REA),核心,16位程序计数器(PC)内中保存某个内部或外部程序存储器的地址。,地址内容为:即将取指的某条指令;某个16位立即操作数;系数表。在程序存储器中的地址,http:/,25,将程序存储器地址加载到程序计数器的途径,h

11、ttp:/,26,1分支转移操作,通过分支转移指令改写PC,可以改变程序的流向。而子程序调用指令则通过将一个返回地址压入堆栈,执行返回时恢复原地址。,可执行:分支转移循环控制子程序操作,功能,方法,http:/,27,条件分支转移无条件分支转移,BD用指令中所给出的地址加载PCBACCD用所指定的累加器的低16位作为地址加载PC。,带延迟不带延迟操作,转移种类,BCD如果指令中所规定的条件得到满足,就用指令中所给出的地址加载PC;BANZD如果当前辅助寄存器不等于0,就用指令中所规定的地址加载PC。,BC new,AOV BANZ loop,*AR2-,B nextBACC A,http:/,

12、28,2调用和返回,转移前,原程序的下条指令的地址被压入堆栈,而在返回时则将这个地址弹出至PC,使被中断了的原程序能继续执行。,当采用调用指令进行子程序或函数调用时,DSP中断当前运行的程序,转移到程序存储器的其它地址继续运行。,功能,方法,无条件调用与返回有条件调用与返回,带延迟不带延迟,CALLd lopRET main,http:/,29,3条件指令中的条件判断,http:/,30,多重条件判断,BC pmad,cond,cond,cond,相与关系,相或关系,BC pmad,condBC pmad,cond,http:/,31,第1组,例如,可以从A类中选一个条件,同时可以从B类中选择

13、一个条件。但是不能从同一类中选择两个条件。另外,两种条件测试的累加器必须是同一个。,可以同时测试AGT和AOV,但不能同时测试AGT和BGT。,http:/,32,第2组,例如,可以在A、B、C三类中各选择一个条件,但不能从同一类中选择两个条件,可以在A、B、C三类中各选择一个条件,但不能从同一类中选择两个条件,http:/,33,特例,如果条件分支转移出去的地方只有12字的程序段,则可以用一条单周期条件执行指令(XC)来代替分支转移指令:XC n,cond,cond,cond当n=1,且条件得到满足,就执行紧随此条件指令后的个字指令。当n=2,且条件得到满足,就执行紧随此指令后的1个双字指令

14、或者2条单字指令。当条件不满足,就依n的值执行1条或2条NOP指令。,http:/,34,例3-3 编写计算 的主要程序部分。.bss x,4;为X建立4个单元,;放置X1、X2、X3、X4.bss y,1;为Y建立1个单元,放置Y STM#x,AR1;将X1的地址传给AR1 STM#3,AR2;将循环次数3传给AR2 LD#0,A;对A清零loop:ADD*AR1+,A;对X1、X2、X3、X4循环累;加,结果放A中 BANZ loop,*AR2-;检查循环是否应结束 STL A,y;将累加结果存入Y中,http:/,35,特点2,特点1,4单条指令的重复操作,重复执行(RC)+1次。RC内

15、容不能编程设置,只能由重复指令(RPT和RPTZ)中的操作数加载。操作数n的最大值为65 535,最大重复执行次数为65 535+1。,一旦重复指令被取指、译码,直到重复循环完成以前,对所有的中断(包括,但不包括)均不响应。,功能,重复执行下一条指令,http:/,36,重复过程,当RPT指令执行时:首先把循环的次数装入循环计数器(RC),其循环次数n由一个16位单数据存储器操作数 Smem或一个8位或16位常数k或lk给定。这样,紧接着的下一条指令会循环执行n+1次。循环,RC在执行减1操作时不能被访问。注意:该循环内不能套用循环。当RPTZ指令执行时:对目的累加器dst清0,循环执行下一条

16、指令n+1次。,http:/,37,例3-5 利用单条指令的重复操作对数组x5=0,0,0,0,0进行初始化。.bss x,5;为数组x分配5个存储单元STM#x,AR1;将x的首地址赋给AR1LD#0,A;对A清零RPT#4;设置重复执行下条指令5次STL A,*AR1+;对x5各单元清零或者.bss x,5STM#x,AR1RPTZ A,#4;对A清零并设置重复执行下条指令5次STL A,*AR1+,http:/,38,特点,5块重复操作,利用C54x内部的块重复计数器(BRC,加载值可为065 535)、块重复起始地址寄存器(RSA)、块重复结束地址寄存器(REA)与程序块重复指令RPT

17、B,可对紧随RPTB、由若干条指令构成的程序块进行重复操作。,功能,将重复操作的范围扩大到任意长度的循环回路,注意,1.RPT指令一旦执行,不会停止操作,即使有中断请求也不响应;2.RPTB指令可以响应中断;,http:/,39,例3-6 对数据组x5中的每个元素加1。.bss x,5;为数组x分配5个存储单元begin:LD#1,16,B;将1左移16位放入B的;高端字的最低位STM#4,BRC;4BRC,(PC)+2 RSA STM#x,AR4;将x的首地址赋给AR4 RPTB next-1;将NEXT-1 REA ADD*AR4,16,B,A;x地址的内容左移16位加;B的高端字,结果放

18、ASTH A,*AR4+;将A的高端字存入x单元,;完成加1操作next:LD#0,B;对B清零;必需next-1作为结束地址,http:/,40,对寄存器的占用,6循环的嵌套,执行RPT指令时占用RPTC寄存器(重复计数器);执行RPTB指令时要用到BRC、RSA和RSE寄存器。只有一套块重复寄存器,故块重复操作不能嵌套。由于RPT与RPTB两者用了不同的寄存器,因此RPT指令可以嵌套在RPTB指令中,实现循环的嵌套。执行BANZ指令只占用辅助寄存器ARx。不会与RPT RPTB指令相冲突。,嵌套原则,参与嵌套循环的寄存器不能重复使用,http:/,41,图3-3 一个三重循环嵌套结构,ht

19、tp:/,42,第三节 流水线操作技术,流水线操作,在执行多条指令时,将每条指令的预取指、取指、译码、寻址、读取操作数、执行等阶段,相差一个阶段地重叠地执行。,流水线操作的优点,一条k段流水能在k+(n-1)个周期内处理n条指令。其前k个周期用于完成第一条指令,其余n-1条指令的执行需要n-1个周期。而非流水处理器上执行n条指令则需要nk 个周期。当指令条数n较大时,可认为每个周期内执行的最大指令个数为k。,http:/,43,预取指P取指F译码D寻址A读取操作数R执行X,流水线操作,在第一个机器周期用PC中的内容加载PAB,在第二个机器周期用读取到的指令字加载PB。,第三个周期用PB的内容加

20、载指令寄存器IR,对IR内的指令进行译码,产生执行指令所需要的一系列控制信号。,http:/,44,预取指P取指F译码D寻址A读取操作数R执行X,流水线操作,用数据1读地址加载DAB,或用数据读地址加载CAB,修正辅助寄存器和堆栈指针。,读数据1加载DB,或读数据2加载CB;用数据3写地址加载到EAB,以便在流水线的最后一级将数据送到数据存储空间。,执行指令,或用写数据加载EB。,http:/,45,空转浪费周期,1延迟分支转移的流水线图,无延迟流水线分支转移的问题,地址 指令a1,a2 B b1 这是一个四周期、二字分支指令a3 i3 这是任意的一周期、一字指令a4 i4 这是任意的一周期、

21、一字指令.b1 j1,例3-7,http:/,46,分支转移指令流水线图,用分支转移指令的地址a1加载PAB。,取得双字分支转移指令,取得双字分支转移指令,http:/,47,分支转移指令流水线图,i3和i4指令取指。由于这两条指令处在分支转移指令的后面,虽然已经取指,但不能进入译码级,且最终被丢弃。,分支转移指令进入译码级,用新的值b1加载PAB,http:/,48,分支转移指令流水线图,j1指令取指,双字分支转移指令进入流水线的执行级,执行j1指令,双字分支转移指令进入流水线的执行级,由于i3和i4指令是不允许执行的,所以这两个周期均花在分支转移指令的执行上。,http:/,49,允许跟在

22、延迟分支转移指令之后的两条单字或一条双字指令可以被执行,延迟分支转移,注意,1.延迟操作指令后面只有两个字的空 隙,因此不能在此空隙中安排任何 一类分支转移指令或重复指令;2.在CALLD或RETD的空隙中还不能安 排PUSH和POP指令。3.延迟操作指令比它们的非延迟型 指令要快,在调试延迟型指令时,直观性稍差一些,因此希望在大多 数情况下还是采用非延迟型指令。,http:/,50,例3-8 在完成R=(x+y)*z操作后转至next。可以分别编出如下两段程序:利用普通分支转移指令B 利用延迟分支转移指令BDLD x,A LD x,AADD y,A ADD y,ASTL A,s STL A,

23、sLD s,T LD s,TMPY z,A BD next STL A,r MPY z,A B next STL A,r(共8个字,10个T)(共8个字,8个T),在空闲的随后两周期中执行下两条指令,http:/,51,XC n,cnd,cnd,cnd如果条件满足,则执行下面n(n=1或2)条指令,否则下面n条指令改为执行n条NOP指令。,2条件执行指令的流水线图,条件执行指令XC,有下列程序:地址 指令a1 i1a2 i2a3 i3a4 XC 2,conda5 i5a6 i6,http:/,52,条件执行指令流水线图,XC指令的地址a4加载到PAB,取XC指令的操作码,求解XC指令所规定的条

24、件。如果条件满足,则后面指令i5和i6进入译码级并执行;否则不对i5和i6指令译码。,http:/,53,1.XC是一条单字单周期指令,与条件跳 转指令相比,具有快速选择其后1或2 条指令是否执行的优点;2.XC指令在执行前2个周期就已经求出 条件,如果在这之后到执行前改变条 件(如发生中断),将会造成无期望 的结果。3.要尽力避免在XC指令执行前2个周期 改变所规定的条件。4.并没有规定XC指令后的一条或两条指 令必须是单周期指令。,注意,http:/,54,CPU在单个周期内两次访问双寻址存储器,3双寻址存储器的流水线冲突,流水线冲突原因,不会产生流水线冲突的情况,(1)在单周期内允许同时

25、访问DARAM的不同块。(2)当流水线中的一条指令访问某一存储器块时,允许流水线中处于同一级的另一条指令访问 另一个存储器块。(3)允许处于流水线不同级上的两条指令同时访 问同一个存储器块。,http:/,55,是利用一次访问中对前、后半个周期分时进行访问的缘故。,CPU能够在单周期内对DARAM进行两次访问而不冲突,对PAB/PB取指 利用前半周期对DAB/DB读取第一个数据 利用前半周期对CAB/CB读取第二个数据 利用后半周期对EAB/EB将数据写存储器 利用后半周期,http:/,56,(1)同时从同一存储器块中取指和取操作数(都在前半个周期);2.同时对同一存储器块进行写操作和读(第

26、二个数)操作(都在后半周期)。,解决冲突办法,人为合理安排指令,错开访问时序,CPU通过写操作延迟一个周期,或者通过插入一个空周期的办法,自动地解决,CPU同时访问DARAM的同一存储器块就会发生时序上的冲突。,http:/,57,从DARAM块中同时取指和取操作数,冲突,延迟一个周期,http:/,58,4解决流水线冲突的方法,(1)可能发生流水线冲突的情况,1)辅助寄存器(AR0AR7)。2)重复块长度寄存器(BK)。3)堆栈指针。4)暂存器(T)。5)处理器工作方式状态寄存器(PMST)。6)状态寄存器(ST0和ST1)。7)块重复计数器(BRC)。8)存储器映象累加器(AG、AH、AL

27、、BG、BH、BL)。,http:/,59,流水线冲突情况分析,http:/,60,发生流水线冲突的例子,在流水线的执行阶段进行写操作,在流水线的寻址阶段生成地址,冲突,无等待周期问题,解决,数据未准备好,http:/,61,发生流水线冲突的例子,在流水线的执行阶段进行写操作,读数阶段将常数10写到AR1,冲突,同时利用E总线,CPU自动地将STM的写操作延迟一个周期,在流水线的寻址阶段生成地址,新冲突,数据未准备好,解决,http:/,62,发生流水线冲突的例子,STLM指令后面插入一条NOP指令,在流水线的执行阶段进行写操作,读数阶段将常数10写到AR1,在流水线的寻址阶段生成地址,E总线

28、错开,解决,数据准备好,解决,http:/,63,4解决流水线冲突的方法,(2)用等待周期表解决流水线冲突,等待周期表给出了对存储器映象寄存器以及ST0、ST1、PMST的控制字段进行写操作的各种指令所需插入的等待周期。对双字或三字指令,都会提供隐含的保护周期。利用这些指令提供的隐含的保护周期,有时可以不插NOP指令。,http:/,64,等待周期表1,http:/,65,例3-11 利用表3-8等待周期表1选择插入的NOP数。SSBX SXMNOPLD x,B 由于LD x,B是一条单字指令,不提供隐含的保护周期。根据表3-8的等待周期表1,应当在SSBX SXM 指令后插入一条NOP指令。

29、而SSBX SXMLD*(x),B由于LD*(x),B是一条双字的绝对寻址指令,它隐含一个等待周期,故SSBX指令就不要再插NOP指令了。,ST1第8位SXM0禁止符号位扩展SXM1允许符号位扩展,http:/,66,例3-12 利用隐含等待周期解决流水线冲突。LD GAIN,TSTM#input,AR1MPY*AR1+,A例3-13利用表3-8等待周期表3插入NOP周期解决流水线冲突。STLM B,AR2NOPSTM#input,AR3MPY AR2+,*AR3+,A,LD 中写T和STM中写AR1要用到E总线,由于STM是一条双字指令,隐含一个等待周期,故对于AR1来说,等待周期为0。,S

30、TM中写AR3要用到E总线,会与STLM中写AR2用E总线相冲突,查表3-8等待周期表3的控制字段为AR3,STLM指令后应插入2个NOP,但由于下条指令STM隐含1个等待周期,故只需要插入一条NOP指令。,http:/,67,第四节 指令系统概述,TMS320C54x是TMS320系列中的一种定点数字信号处理器,它的指令系统分助记符形式和代数式形式两种。共有指令129条,由于操作数的寻址方式不同,派生至205条。,http:/,68,可同时读入2或3个操作数;支持双精度运算的32位长操作数指令;可进行单条指令重复和块指令重复操作;有块存储器传送指令和并行操作(如并行存储和加载、并行存储和加/减法、并行存储和乘法、并行加载和乘法)指令;设有条件存储指令及延迟操作指令、有从中断快速返回指令;有为特殊用途设计的指令(如支持FIR滤波、最小均方算法LSM、多项式计算以及浮点运算);有为省电安排的空转指令。,TMS320C54x指令系统的主要特点,http:/,69,谢 谢,http:/,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号