DSP技术及应用第3章课件.ppt

上传人(卖家):三亚风情 文档编号:3606345 上传时间:2022-09-24 格式:PPT 页数:69 大小:1.92MB
下载 相关 举报
DSP技术及应用第3章课件.ppt_第1页
第1页 / 共69页
DSP技术及应用第3章课件.ppt_第2页
第2页 / 共69页
DSP技术及应用第3章课件.ppt_第3页
第3页 / 共69页
DSP技术及应用第3章课件.ppt_第4页
第4页 / 共69页
DSP技术及应用第3章课件.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

1、1第三章第三章 DSP指令系统与特点指令系统与特点 2SmemSmem:1616位单寻址操作数。位单寻址操作数。XmemXmem:1616位双寻址操作数,从位双寻址操作数,从DBDB数据总线上读出。数据总线上读出。YmemYmem:1616位双寻址操作数,从位双寻址操作数,从CBCB数据总线上读出。数据总线上读出。dmaddmad:1616位立即数,数据存储器地址。位立即数,数据存储器地址。pmadpmad:1616位立即数,程序存储器地址。位立即数,程序存储器地址。PAPA:1616位立即数,位立即数,I/OI/O口地址。口地址。srcsrc:源累加器(源累加器(A A或或B B)。)。ds

2、tdst:目的累加器(目的累加器(A A或或B B)。)。lklk:1616位长立即数。位长立即数。第一节第一节 TMS320C54xTMS320C54x的寻址方式的寻址方式 缩缩写写31 1立即数寻址立即数寻址2绝对地址寻址绝对地址寻址3累加器寻址累加器寻址4直接寻址直接寻址5间接寻址间接寻址6存储器映象寄存器寻址存储器映象寄存器寻址7堆栈寻址堆栈寻址寻址分类寻址分类4 1 1立即数寻址立即数寻址 在操作数前面需要加字号来说明该操作数在操作数前面需要加字号来说明该操作数为立即数。否则会把该操作数误认为是一个地为立即数。否则会把该操作数误认为是一个地址,从而把立即数寻址变成绝对地址寻址。址,从

3、而把立即数寻址变成绝对地址寻址。特特点点指令中包含有执行指令所需要的操作数。指令中包含有执行指令所需要的操作数。立即数分为立即数分为3 3、5 5、8 8或或9 9位的位的短立即数短立即数和和1616位位的的长立即数长立即数两种。两种。短立即数可包含在单字或双字指令中,长立短立即数可包含在单字或双字指令中,长立即数在双字指令中。即数在双字指令中。注注意意LD#93hLD#93h,A A LD 93hLD 93h,A A 举例举例5 2绝对地址寻址绝对地址寻址特特点点在指令中包含有所要寻址的存储单元的在指令中包含有所要寻址的存储单元的1616位位地址。这个地址。这个1616位的地址可以用其所在单

4、元的地位的地址可以用其所在单元的地址标号或者址标号或者1616位符号常数来表示。位符号常数来表示。(1 1)数据存储器地址()数据存储器地址(damddamd)寻址)寻址 用一个符号或一个用一个符号或一个数来确定数据空间数来确定数据空间的一个地址。的一个地址。方法方法MVKD SAMPLEMVKD SAMPLE,*AR3AR3LD 93hLD 93h,A A 举例举例6用一个符号或一用一个符号或一个具体的数来确个具体的数来确定程序存储器中定程序存储器中的一个地址的一个地址(2 2)程序存储器地址()程序存储器地址(pmadpmad)寻址)寻址 方法方法MVPD TABLEMVPD TABLE,

5、*AR4AR4MVPD 90hMVPD 90h,*AR4 AR4 举例举例7用一个符用一个符号或一个号或一个常数来确常数来确定外部定外部I/OI/O口地口地址址(3 3)PAPA寻址寻址 端口(端口(PAPA)方法方法PORTR FIFOPORTR FIFO,*AR5AR5PORTR 90hPORTR 90h,*AR5 AR5 举例举例8用一个符号用一个符号或一个常数或一个常数来确定数据来确定数据存储器中的存储器中的一个地址一个地址 (4 4)*(lklk)寻址)寻址 方法方法LD LD *(BUFFERBUFFER),),A A 举例举例特点特点允许所有使允许所有使用用SmemSmem寻址寻

6、址的指令去访的指令去访问数据空间问数据空间的任意单元的任意单元而不改变数而不改变数据页指针据页指针(DPDP)的值,)的值,也不用对也不用对ARxARx进行初始化进行初始化 9用累加器用累加器中的数值中的数值作为地址作为地址来读写程来读写程序存储器。序存储器。方法方法READA READA SmemSmem WRITA WRITA SmemSmem 举例举例特点特点可用来完成可用来完成程序存储器程序存储器单元的数据单元的数据与数据存储与数据存储器器单元的数单元的数据进行交换据进行交换 3累加器寻址累加器寻址10可以在不改可以在不改变变DPDP或或SPSP的的情况下,随情况下,随机地寻址机地寻址

7、128128个存储单元个存储单元中的任何一中的任何一个单元。个单元。4直接寻址直接寻址 方法方法 LD#x LD#x,DP DP/(ST1的的 CPL=0)LD uLD u,A A ADD vADD v,A A=SSBX CPLSSBX CPL/(ST1的的 CPL=1)CPL=1)LD X1LD X1,A A ADD Y2 ADD Y2,A A 举例举例特点特点(ST0)用一个符号或用一个符号或一个常数来确一个常数来确定定7位偏移值,位偏移值,与与DP或或SP共共同形成同形成16位的位的数据存储器实数据存储器实际地址。际地址。11CPL=0 7CPL=0 7位位dmadma域与域与9bit9

8、bit的的DPDP相结合相结合形成形成1616位的数据存储器地址。位的数据存储器地址。CPL=1 7CPL=1 7位位dmadma域加上(正偏移)域加上(正偏移)SPSP的值形成的值形成1616位的数据存储器地址。位的数据存储器地址。DPDP值是从值是从0511(2 29 9-1-1),以),以DPDP为基准的直接寻址把存储器分成为基准的直接寻址把存储器分成512512页,页,7 7位的位的dmadma范围从范围从0127,每页有,每页有128128个可访问的单元。个可访问的单元。9位数据页指针位数据页指针DP7位位dma15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

9、016位堆栈指针位堆栈指针 SP7位位dma15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 016位数据存储器地址位数据存储器地址+125间接寻址间接寻址 方法方法特点特点(AR0AR0AR7AR7)ARAU0/ARAU1 ARAU0/ARAU1 1616位无符号算术位无符号算术运算运算寻址范围为寻址范围为64K64K 能在一个指令中访问能在一个指令中访问两个数据存储器单元两个数据存储器单元两个独立的存储器单元读数据两个独立的存储器单元读数据读一个、写另一个存储器单元读一个、写另一个存储器单元读写两个连续的存储器单元读写两个连续的存储器单元 13(1 1)单操作数寻址)

10、单操作数寻址 定义间接寻定义间接寻址的类型址的类型定义寻址所使用定义寻址所使用的辅助寄存器的辅助寄存器 CMPT=0 CMPT=0 标准方式标准方式 ARFARF确定辅助寄存器,确定辅助寄存器,ST0ST0中中ARPARP000 000 CMPT=1 CMPT=1 兼容方式如兼容方式如ARF=000ARF=000,用,用ARP(ST0)ARP(ST0)选择辅助寄选择辅助寄存器,否则,用存器,否则,用ARFARF来确定辅助寄存器。来确定辅助寄存器。ARFARF的值装入的值装入ARPARP。LD LD*AR1,BAR1,BST0ARPARP14AR0(16)AR1(16)AR2(16)AR3(16

11、)AR4(16)AR5(16)AR6(16)AR7(16)BK(16)ARAU0ARAU1ARP(3)DAB(16)(读读)EAB(16)(写写)或或CAB(16)(32位读位读)数据总线数据总线DB(16)数据总线数据总线EB(16)AR0 BK lk 1+/-%0 BAR0 BK 1+/-%0ST015单数据存储器操作数间接寻址类型单数据存储器操作数间接寻址类型 MOD域域操作码语法操作码语法功功 能能说说 明明0000*ARxaddr=ARxARx包含了数据存储器地址包含了数据存储器地址0001*ARx-addr=ARxARx=ARx-1访问后,访问后,ARx中的地址减中的地址减1001

12、0*ARx+addr=ARxARx=ARx+1访问后,访问后,ARx中的地址加中的地址加10011*+ARxaddr=ARx+1ARx=ARx+1在寻址前,在寻址前,ARx中的地址加中的地址加1,然后再寻址,然后再寻址0100*ARx-0Baddr=ARxARx=B(ARx-AR0)访问后,从访问后,从ARx中以位倒序进位的方式减去中以位倒序进位的方式减去AR00101*ARx-0addr=ARxARx=ARx-AR0访问后,从访问后,从ARx中减去中减去AR00110*ARx+0addr=ARxARx=ARx+AR0访问后,把访问后,把AR0加到加到ARx中去中去0111*ARx+0Badd

13、r=ARxARx=B(ARx+AR0)访问后,把访问后,把AR0以位倒序进位的方式加到以位倒序进位的方式加到ARx中中1000*ARx-%addr=ARxARx=circ(ARx-1)访问后,访问后,ARx中的地址以循环寻址的方式减中的地址以循环寻址的方式减11001*ARx-0%addr=ARxARx=circ(ARx-AR0)访问后,从访问后,从ARx中以循环寻址的方式减去中以循环寻址的方式减去AR01010*ARx+%addr=ARxARx=circ(ARx+1)访问后,访问后,ARx中的地址以循环寻址的方式加中的地址以循环寻址的方式加11011*ARx+0%addr=ARxARx=ci

14、rc(ARx+AR0)访问后,把访问后,把AR0以循环寻址的方式加到以循环寻址的方式加到ARx中中1100*ARx(lk)addr=ARx+lkARx=ARxARx和和16位的长偏移(位的长偏移(lk)的和用来作为数据存储器地址。)的和用来作为数据存储器地址。ARx本身不被修改本身不被修改1101*+ARx(lk)addr=ARx+lkARx=ARx+lk在寻址前,把一个带符号的在寻址前,把一个带符号的16位的长偏移(位的长偏移(lk)加到)加到ARx中,中,然后用新的然后用新的ARx的值作为数据存储器的地址的值作为数据存储器的地址1110*+ARx(lk)%addr=circ(ARx+lk)

15、ARx=circ(ARx+lk)在寻址前,把一个带符号的在寻址前,把一个带符号的16位的长偏移以循环寻址的方式加位的长偏移以循环寻址的方式加到到ARx中,然后再用新的中,然后再用新的ARx的值作为数据存储器的地址的值作为数据存储器的地址1111*(lk)addr=lk一个无符号的一个无符号的16位的长偏移(位的长偏移(lk)用来作为数据存储器的绝对)用来作为数据存储器的绝对地址。(也属绝对寻址)地址。(也属绝对寻址)161)1)循环寻址循环寻址 循环缓冲区的长度值存放在循环缓冲循环缓冲区的长度值存放在循环缓冲区长度寄存器区长度寄存器BKBK中,中,BKBK中的数值由指令设定。中的数值由指令设定

16、。长度为长度为R R的循环缓冲器必须从一个的循环缓冲器必须从一个N N位地址的边界开始,即循环位地址的边界开始,即循环缓冲器基地址的最低缓冲器基地址的最低N N位必须为位必须为0 0。N N是满足是满足2 2N NR R的最的最小整数。小整数。R R的值必须装入的值必须装入BKBK。例如,含有例如,含有3131个字的循环缓冲器必须从最低个字的循环缓冲器必须从最低5 5位为位为0 0的的地址开始,即地址开始,即xxxxxxxx xxxxxxxx xxx0 0000 xxx0 00002 2,N=5N=5,2 2N N=2=25 5R=31R=31,且,且3131必须装入必须装入BKBK。如:。如

17、:STM#31STM#31,BKBK如果如果R=32R=32,则最小的,则最小的N N值为值为6 6,循环缓冲区的起始地址,循环缓冲区的起始地址必须有必须有6 6个最低有效位为个最低有效位为0 0,即,即 00 000000 00002 2。172)2)位倒序寻址位倒序寻址 在这种寻址方式中,用在这种寻址方式中,用AR0AR0存放存放FFTFFT点数的一半整数点数的一半整数N N,用另一辅助寄存器指向一数据,用另一辅助寄存器指向一数据存放的物理单元。当使用位倒序寻址把存放的物理单元。当使用位倒序寻址把AR0AR0加到辅助寄加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左存器中时,地址以

18、位倒序的方式产生,即进位是从左向右,而不是从右向左进位。向右,而不是从右向左进位。例如:例如:0110 10000110 1000 +0000 1000 +0000 1000 0110 01000110 0100以以8 8位辅助寄存器为例,位辅助寄存器为例,AR1AR1表示了在存储器中数表示了在存储器中数据的基地址(据的基地址(0110 00000110 0000)2 2,AR0AR0的值为(的值为(0000 10000000 1000)2 2。利用以下两条语句可以向外设口(口地址为。利用以下两条语句可以向外设口(口地址为PAPA)输出整序后的输出整序后的FFTFFT变换结果:变换结果:RPT

19、#15RPT#15 ;重复执行下条指令重复执行下条指令15+115+1次次PORTW PORTW *AR1+0BAR1+0B,PAPA;向外设口向外设口PAPA输出结果输出结果18位倒序对位倒序对FFTFFT变换结果的序号调整变换结果的序号调整 序号序号存储单元地址存储单元地址整序前整序前FFT变换结果变换结果位倒序位倒序AR1更新的地址值更新的地址值AR0=0000 10002整序后整序后PA输出的输出的FFT变换结果变换结果00000X(0)00000110 0000X(0)10001X(8)10000110 1000X(1)20010X(4)01000110 0100X(2)30011X

20、(12)11000110 1100X(3)40100X(2)00100110 0010X(4)50101X(10)10100110 1010X(5)60110X(6)01100110 0110X(6)70111X(14)11100110 1110X(7)81000X(1)00010110 0001X(8)91001X(9)10010110 1001X(9)101010X(5)01010110 0101X(10)111011X(13)11010110 1101X(11)121100X(3)00110110 0011X(12)131101X(11)10110110 1011X(13)141110X

21、(7)01110110 0111X(14)151111X(15)11110110 1111X(15)19(2 2)双操作数寻址方式)双操作数寻址方式 确定确定包含包含XmemXmem地址地址的辅的辅助寄助寄存器存器 确定确定包含包含YmemYmem地址地址的辅的辅助寄助寄存器存器定义用于定义用于访问访问YmemYmem操作数的操作数的间接寻址间接寻址方式的类方式的类型型 定义用于定义用于访问访问XmemXmem操操作数的间作数的间接寻址方接寻址方式的类型式的类型 MPY MPY*AR2,AR2,*AR3,AAR3,A20Xar或或Yar 辅助寄存器辅助寄存器00 AR201 AR310 AR4

22、11 AR5辅助辅助寄存器寄存器选择选择Xmod或或Ymod操作码语操作码语法法功功 能能说说 明明00*ARxaddr=ARxARx是数据存储器地址是数据存储器地址01*ARx-addr=ARxARx=ARx-1访问后,访问后,ARx中的地址减中的地址减110*ARx+addr=ARxARx=ARx+1访问后,访问后,ARx中的地址加中的地址加111*ARx+0%addr=ARxARx=circ(ARx+AR0)访问后,访问后,AR0以循环寻址的以循环寻址的方式加到方式加到ARx中中210 0页寻址。页寻址。不影响当前不影响当前DPDP或或SPSP值值。用于直接寻用于直接寻址和间接寻址和间接

23、寻址址用来修用来修改存储改存储器映象器映象寄存器寄存器 6存储器映象寄存器寻址存储器映象寄存器寻址功能功能LDM PRD,ALDM PRD,A举例举例特点特点方法方法高高9 9位数据位数据存储器地址存储器地址被置被置0 0,利利用指令中的用指令中的低位地址低位地址访问访问MMRMMR。227堆栈寻址堆栈寻址 从高地址向低地址方向生长,从高地址向低地址方向生长,SPSP用来管理堆栈,用来管理堆栈,SPSP始终指向始终指向堆栈中所存放的最后一个数据,堆栈中所存放的最后一个数据,即即SPSP指针始终指向栈顶。在压指针始终指向栈顶。在压入操作时,先减小入操作时,先减小SPSP的值,再的值,再将数据压入

24、堆栈;在弹出操作将数据压入堆栈;在弹出操作时,先从堆栈弹出数据,再增时,先从堆栈弹出数据,再增加加SPSP的值。的值。用来在中断和用来在中断和子程序调用时子程序调用时自动保存程序自动保存程序计数器(计数器(PCPC)中的数值,也中的数值,也能用来保护现能用来保护现场或传送参数场或传送参数 功能功能特点特点PSHD PSHD*AR2 AR2 POPD POPD*AR3AR323第二节第二节 程序地址的生成程序地址的生成程序地址程序地址生成器生成器(PAGENPAGEN)构成构成程序计数器(程序计数器(PCPC)重复计数器(重复计数器(RCRC)块重复计数器(块重复计数器(BRCBRC)块重复起始

25、地址寄存器(块重复起始地址寄存器(RSARSA)块重复结束地址寄存器(块重复结束地址寄存器(REAREA)核心核心1616位程序计数器(位程序计数器(PCPC)内中保存某个内部或外内中保存某个内部或外部程序存储器的地址。部程序存储器的地址。地址内容为:地址内容为:即将取指的某条指令;即将取指的某条指令;某个某个1616位立即操作数;位立即操作数;系数表。系数表。在程序存储器中的地址在程序存储器中的地址24操作操作加载到加载到PC的地址的地址复位复位PC=FF80h。顺序执行指令顺序执行指令PC=PC+1。分支转移分支转移用紧跟在分支转移指令后面的用紧跟在分支转移指令后面的16位立即数加载位立即

26、数加载PC。由累加器分支转移由累加器分支转移用累加器用累加器A或或B的低的低16位立即数加载位立即数加载PC。块重复循环块重复循环假如假如ST1中的块重复有效位中的块重复有效位BRAF=1,当,当PC+1等于块重复等于块重复结束地址(结束地址(REA)+1,将块重复起始地址(,将块重复起始地址(RSA)加载)加载PC。子程序调用子程序调用将将PC+2压入堆栈,并用紧跟在调用指令后面的压入堆栈,并用紧跟在调用指令后面的16位立即位立即数加载数加载PC。返回指令将栈顶弹出至。返回指令将栈顶弹出至PC,回到原先的程序,回到原先的程序处继续执行。处继续执行。从累加器调用子程从累加器调用子程序序将将PC

27、+1压入压入堆堆栈,用累加器栈,用累加器A或或B的低的低16位加载位加载PC。返回。返回指令将栈顶弹出至指令将栈顶弹出至PC,回到原先的程序处继续执行。,回到原先的程序处继续执行。硬件中断或软件中硬件中断或软件中断断将将PC压入堆栈,用适当的中断向量地址加载压入堆栈,用适当的中断向量地址加载PC。中断返。中断返回时,将栈顶弹出至回时,将栈顶弹出至PC,继续执行被中断了的子程序。,继续执行被中断了的子程序。将程序存储器地址加载到程序计数器的途径将程序存储器地址加载到程序计数器的途径25PC程序存储器程序存储器地址地址IPTR(PMST)中断向量号中断向量号+PC+1分支转移指令分支转移指令低字低

28、字块重复起始地址块重复起始地址RSA压入堆栈压入堆栈+1=块重复结束地址块重复结束地址REA+1块重复循环块重复循环子程序调用子程序调用调用调用返回返回PC+1PC硬件中断或软件中断硬件中断或软件中断顺序执行顺序执行复位复位分支转移分支转移261分支转移操作分支转移操作 通过分支转移指令改写通过分支转移指令改写PCPC,可,可以改变程序的流向。而子程序以改变程序的流向。而子程序调用指令则通过将一个返回地调用指令则通过将一个返回地址压入堆栈,执行返回时恢复址压入堆栈,执行返回时恢复原地址。原地址。可执行可执行:分支转移分支转移循环控制循环控制子程序操子程序操作作 功能功能方法方法27条件条件分支

29、转移分支转移无条件分支转移无条件分支转移 BDBD用指令用指令中所给出的中所给出的地址加载地址加载PCPCBACCDBACCD用用所指定的累所指定的累加器的低加器的低1616位作为地址位作为地址加载加载PCPC。带延迟带延迟不带延迟不带延迟操作操作转移种类转移种类BCDBCD如果指令如果指令中所规定的条中所规定的条件得到满足,件得到满足,就用指令中所就用指令中所给出的地址加给出的地址加载载PCPC;BANZDBANZD如果当如果当前辅助寄存器前辅助寄存器不等于不等于0 0,就用,就用指令中所规定指令中所规定的地址加载的地址加载PCPC。BC newBC new,AOV AOV BANZBANZ

30、 loop,loop,*AR2-AR2-B nextB nextBACC ABACC A282调用和返回调用和返回 转移前,原程序的下转移前,原程序的下条指令的地址被压入条指令的地址被压入堆栈,而在返回时则堆栈,而在返回时则将这个地址弹出至将这个地址弹出至PCPC,使被中断了的原程序使被中断了的原程序能继续执行。能继续执行。当采用调用指令进当采用调用指令进行子程序或函数调行子程序或函数调用时,用时,DSPDSP中断当中断当前运行的程序,转前运行的程序,转移到程序存储器的移到程序存储器的其它地址继续运行。其它地址继续运行。功能功能方法方法无条件调用与返回无条件调用与返回有条件调用与返回有条件调用

31、与返回带延迟带延迟不带延迟不带延迟CALLD lopCALLD lopRET mainRET main293条件指令中的条件判断条件指令中的条件判断ST0ST0操作数符号操作数符号条件条件说明说明AEQA=0 累加器累加器A等于等于0BEQB=0 累加器累加器B等于等于0ANEQA0 累加器累加器A不等于不等于0BNEQB0 累加器累加器B不等于不等于0ALTA0 累加器累加器A小于小于0BLTB0 累加器累加器B小于小于0ALEQA0 累加器累加器A小于等于小于等于0BLEQB0 累加器累加器B小于等于小于等于0AGTA0 累加器累加器A大于大于0BGTB0 累加器累加器B大于大于0AGEQ

32、A0 累加器累加器A大于等于大于等于0BGEQB0 累加器累加器B大于等于大于等于0AOVAOV=1 累加器累加器A溢出溢出BOVBOV=1 累加器累加器B溢出溢出ANOVAOV=0 累加器累加器A不溢出不溢出BNOVBOV=0 累加器累加器B不溢出不溢出CC=1 ALU进位位置进位位置1NCC=0 ALU进位位置进位位置0TCTC=1 测试测试/控制标志置控制标志置1NTCTC=0 测试测试/控制标志置控制标志置0BIOBIO低低 BIO控制分支转移的输入信号为低电平控制分支转移的输入信号为低电平NBIOBIO高高 BIO控制分支转移的输入信号为高电平控制分支转移的输入信号为高电平UNC无无

33、无条件振作无条件振作30多重条件判断多重条件判断 BC BC pmadpmad,condcond,condcond,condcond相与关系相与关系相或关系相或关系BC BC pmadpmad,condcondBC BC pmadpmad,condcond第第1组组第第2组组A 类类B 类类A 类类B 类类C 类类EQOVTCCBIONEQNOVNTCNCNBIOLTLEQGTGEQ31第第1 1组组 例如例如 可以从可以从A A类中选一个条件,同类中选一个条件,同时可以从时可以从B B类中选择一个条件。类中选择一个条件。但是不能从同一类中选择两但是不能从同一类中选择两个条件。个条件。另外,两

34、种条件测试的累加另外,两种条件测试的累加器必须是同一个。器必须是同一个。可以同时测试可以同时测试AGTAGT和和AOVAOV,但,但不能同时测试不能同时测试AGTAGT和和BGTBGT。BC BC pmadpmad,AGTAGT,AOVAOVBC BC pmadpmad,AGTAGT,BOVBOV32第第2 2组组 例如例如 可以在可以在A A、B B、C C三类中各选择三类中各选择一个条件,但不能从同一类一个条件,但不能从同一类中选择两个条件中选择两个条件 可以在可以在A A、B B、C C三类中各选三类中各选择一个条件,但不能从同择一个条件,但不能从同一类中选择两个条件一类中选择两个条件

35、BC BC pmadpmad,TCTC,C C,BIOBIOBC BC pmadpmad,NTCNTC,TCTC,NBIONBIO33特特例例如果条件分支转移出去的地方只有如果条件分支转移出去的地方只有1 12 2字的字的程序段,则可以用一条单周期条件执行指令程序段,则可以用一条单周期条件执行指令(XCXC)来代替分支转移指令:)来代替分支转移指令:XC nXC n,condcond,condcond,condcond当当n=1n=1,且条件得到满足,就执行紧随此,且条件得到满足,就执行紧随此条件指令后的个字指令。条件指令后的个字指令。当当n=2n=2,且条件得到满足,就执行紧随此,且条件得到

36、满足,就执行紧随此指 令 后 的指 令 后 的 1 1 个 双 字 指 令 或 者个 双 字 指 令 或 者 2 2 条 单条 单字指令。字指令。34例例3-3 编写计算编写计算 的主要程序部分。的主要程序部分。.bssbss x,4 x,4 ;为;为X X建立建立4 4个单元,个单元,;放置;放置X1X1、X2X2、X3X3、X4X4 .bssbss y,1 y,1 ;为;为Y Y建立建立1 1个单元,放置个单元,放置Y Y STM#xSTM#x,AR1 AR1 ;将;将X1X1的地址传给的地址传给AR1AR1 STM#3STM#3,AR2 AR2 ;将循环次数;将循环次数3 3传给传给AR

37、2AR2 LD#0LD#0,A A ;对;对A A清零清零loop:ADDloop:ADD *AR1+AR1+,A A ;对;对X1X1、X2X2、X3X3、X4X4循环循环 ;累加,结果放;累加,结果放A A中中 BANZ loop,AR2-BANZ loop,AR2-;检查循环是否应结束;检查循环是否应结束 STL ASTL A,y y ;将累加结果存入;将累加结果存入Y Y中中41iixy35特点特点2 2特点特点1 14单条指令的重复操作单条指令的重复操作 重复执行(重复执行(RCRC)+1+1次。次。RCRC内容不能编程设置,内容不能编程设置,只能由重复指令(只能由重复指令(RPTR

38、PT和和RPTZRPTZ)中的操作数加载。)中的操作数加载。操作数操作数n n的最大值为的最大值为65 65 535535,最大重复执行次数,最大重复执行次数为为65 535+165 535+1。功能功能重复执行下一条指令重复执行下一条指令 一旦重复指令被取一旦重复指令被取指、译码,直到重指、译码,直到重复循环完成以前,复循环完成以前,对所有的中断(包对所有的中断(包括括NMINMI,但不包括,但不包括RSRS)均不响应。)均不响应。36重复过程重复过程当当RPTRPT指令执行时:指令执行时:首先把循环的次数装入循环计数器(首先把循环的次数装入循环计数器(RCRC),),其循环次数其循环次数n

39、 n由一个由一个1616位单数据存储器操作数位单数据存储器操作数 SmemSmem或一个或一个8 8位或位或1616位常数位常数k k或或lklk给定。这样,给定。这样,紧接着的下一条指令会循环执行紧接着的下一条指令会循环执行n+1n+1次。次。循环,循环,RCRC在执行减在执行减1 1操作时不能被访问。操作时不能被访问。注意:该循环内不能套用循环。注意:该循环内不能套用循环。当当RPTZRPTZ指令执行时:指令执行时:对目的累加器对目的累加器dstdst清清0 0,循环执行下一条指令循环执行下一条指令n+1n+1次。次。37例例3-5 利用单条指令的重复操作对数组利用单条指令的重复操作对数组

40、x5=0 x5=0,0 0,0 0,0 0,00进行初始化。进行初始化。.bssbss x,5 x,5 ;为数组;为数组x x分配分配5 5个存储单元个存储单元STM#x,AR1 STM#x,AR1;将;将x x的首地址赋给的首地址赋给AR1AR1LD#0,A LD#0,A ;对;对A A清零清零RPT#4RPT#4 ;设置重复执行下条指令;设置重复执行下条指令5 5次次STL A,STL A,*AR1+AR1+;对;对x5x5各单元清零各单元清零或者或者.bssbss x,5 x,5STM#x,AR1STM#x,AR1RPTZ A,#4RPTZ A,#4;对;对A A清零并设置重复执行下条指

41、令清零并设置重复执行下条指令5 5次次STL A,STL A,*AR1+AR1+38特点特点5块重复操作块重复操作 利用利用C54xC54x内部的块重复计数器(内部的块重复计数器(BRCBRC,加载值,加载值可为可为0 065 53565 535)、块重复起始地址寄存器)、块重复起始地址寄存器(RSARSA)、块重复结束地址寄存器()、块重复结束地址寄存器(REAREA)与程)与程序块重复指令序块重复指令RPTBRPTB,可对紧随,可对紧随RPTBRPTB、由若干条、由若干条指令构成的程序块进行重复操作。指令构成的程序块进行重复操作。功能功能将重复操作的范围扩大到将重复操作的范围扩大到64K6

42、4K长度的循环回路长度的循环回路 注意注意1.RPT1.RPT指令一旦执行,不会停止操指令一旦执行,不会停止操作,即使有中断请求也不响应;作,即使有中断请求也不响应;2.RPTB2.RPTB指令可以响应中断;指令可以响应中断;39例例3-6 对数据组对数据组x5x5中的每个元素加中的每个元素加1 1。.bssbss x,5 x,5 ;为数组;为数组x x分配分配5 5个存储单元个存储单元begin:LDbegin:LD#1,16,B#1,16,B ;将;将1 1左移左移1616位放入位放入B B的的 ;高端字的最低位;高端字的最低位STM#4,BRCSTM#4,BRC ;4BRC4BRC,(,

43、(PCPC)+2 RSA+2 RSA STM#x,AR4STM#x,AR4;将;将x x的首地址赋给的首地址赋给AR4 AR4 RPTB next-1RPTB next-1;将;将NEXT-1 REA NEXT-1 REA ADD ADD*AR4,16,B,A AR4,16,B,A;x x地址的内容左移地址的内容左移1616位加位加 ;B B的高端字,结果放的高端字,结果放A ASTH A,STH A,*AR4+AR4+;将;将A A的高端字存入的高端字存入x x单元,单元,;完成加;完成加1 1操作操作nextnext:LD#0,B :LD#0,B ;对;对B B清零清零 ;必需;必需nex

44、t-1next-1作为结束地址作为结束地址40对寄存器的占用对寄存器的占用6循环的嵌套循环的嵌套 执行执行RPTRPT指令时占用指令时占用RCRC寄存器(重复计数器);寄存器(重复计数器);执行执行RPTBRPTB指令时要用到指令时要用到BRCBRC、RSARSA和和RSERSE寄存器。寄存器。只有只有一套块重复寄存器,故块重复操作不能嵌套。一套块重复寄存器,故块重复操作不能嵌套。由于由于RPTRPT与与RPTBRPTB两者用了不同的寄存器,因此两者用了不同的寄存器,因此RPTRPT指指令可以嵌套在令可以嵌套在RPTBRPTB指令的循环中,实现循环的嵌套。指令的循环中,实现循环的嵌套。执行执行

45、BANZBANZ指令只占用辅助寄存器指令只占用辅助寄存器ARxARx。不会与。不会与RPT RPT RPTBRPTB指令相冲突。指令相冲突。嵌套原则嵌套原则参与嵌套循环的寄存器不能重复使用参与嵌套循环的寄存器不能重复使用 41一个三重循环嵌套结构 STM#L-1,AR7 ;2T1st:外部外部 STM#M-1,BRC ;2T RPTB 2nd-1 ;4T 中间中间 中间中间 RPT#N-1 ;1T 内部内部 中间中间 中间中间2nd:外部外部 外部外部 BANZ 1st,*AR7-;4T1层层2层层3层层42第三节第三节 流水线操作技术流水线操作技术 流水线流水线操作操作在执行多条指令时,将每

46、条指令在执行多条指令时,将每条指令的预取指、取指、译码、寻址、的预取指、取指、译码、寻址、读取操作数、执行等阶段,读取操作数、执行等阶段,相差相差一个阶段一个阶段地地重叠重叠地执行。地执行。流水流水线操线操作的作的优点优点一条一条k k段流水能在段流水能在k k+(n n-1-1)个周期内处理)个周期内处理n n条指令。其前条指令。其前k k个周期用于完成第一条指令个周期用于完成第一条指令,其余,其余n n-1-1条指令的执行需要条指令的执行需要n n-1-1个周期。个周期。而非流水处理器上执行而非流水处理器上执行n n条指令则需要条指令则需要nknk 个周期。当指令条数个周期。当指令条数n

47、n较大时,可认为每个较大时,可认为每个周期内执行的最大指令个数为周期内执行的最大指令个数为k k。43预取指预取指P取指取指F译码译码D寻址寻址A读取操作数读取操作数R执行执行X流水线操作流水线操作 在第一个机器在第一个机器周期用周期用PCPC中的中的内容加载内容加载PAB PAB 在第二个机器周在第二个机器周期用读取到的指期用读取到的指令字加载令字加载PBPB。第三个周期用第三个周期用PBPB的内容加载的内容加载指令寄存器指令寄存器IRIR,对,对IRIR内的指内的指令进行译码,产生执行指令令进行译码,产生执行指令所需要的一系列控制信号。所需要的一系列控制信号。44预取指预取指P取指取指F译

48、码译码D寻址寻址A读取操作数读取操作数R执行执行X流水线操作流水线操作 用数据用数据1 1读地址加载读地址加载DABDAB,或用数据读地,或用数据读地址加载址加载CABCAB,修正辅助,修正辅助寄存器和堆栈指针。寄存器和堆栈指针。读数据读数据1 1加载加载DBDB,或读数,或读数据据2 2加载加载CBCB;用数据;用数据3 3写地写地址加载到址加载到EABEAB,以便在流,以便在流水线的最后一级将数据送水线的最后一级将数据送到数据存储空间。到数据存储空间。执行指令,或用执行指令,或用写数据加载写数据加载EBEB。45空转浪费周期空转浪费周期1延迟分支转移的流水线图延迟分支转移的流水线图 无延迟

49、流水线分支转移的问题无延迟流水线分支转移的问题地址地址 指令指令a1a1,a2 a2 B b1 B b1 这是一个四周期、二字分支指令这是一个四周期、二字分支指令a3 a3 i3 i3 这是任意的一周期、一字指令这是任意的一周期、一字指令a4 a4 i4 i4 这是任意的一周期、一字指令这是任意的一周期、一字指令b1 j1b1 j1例例46分支转移指令流水线图分支转移指令流水线图用 分 支 转 移用 分 支 转 移指 令 的 地 址指 令 的 地 址a1a1加载加载PABPAB。取得双字分取得双字分支转移指令支转移指令取得双字分取得双字分支转移指令支转移指令123456PAB=a2预取指预取指

50、 取指取指译码译码寻址寻址读数读数执行执行PB=b1IR=b1b1PAB=a1预取指预取指 取指取指译码译码寻址寻址读数读数执行执行PB=BIR=BBPAB=a4预取指预取指 取指取指译码译码寻址寻址读数读数执行执行PB=i4PAB=a3预取指预取指 取指取指译码译码寻址寻址读数读数执行执行PB=i3PAB=b1预取指预取指 取指取指译码译码寻址寻址读数读数执行执行PB=j1 IR=j1j1Bb1流水线的一次嵌平流水线的一次嵌平流水线的一次嵌平流水线的一次嵌平j17891047分支转移指令流水线图分支转移指令流水线图分支转移指令分支转移指令进入译码级进入译码级用新的值用新的值b1b1加载加载P

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(DSP技术及应用第3章课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|