DSP器件及应用课件3.ppt

上传人:s****8 文档编号:68601169 上传时间:2022-12-29 格式:PPT 页数:93 大小:1.34MB
返回 下载 相关 举报
DSP器件及应用课件3.ppt_第1页
第1页 / 共93页
DSP器件及应用课件3.ppt_第2页
第2页 / 共93页
点击查看更多>>
资源描述

《DSP器件及应用课件3.ppt》由会员分享,可在线阅读,更多相关《DSP器件及应用课件3.ppt(93页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、华中科技大学武昌分校 DSP器件及应用器件及应用 黄向宇黄向宇 12/29/20221第三章 TMS320C54x指令系统12/29/202223.1 汇编语言源程序格式助记符指令一般包含4个部分,其一般组成形式为:标号:指令域 操作数 ;注释1标号域所有汇编指令和大多数汇编伪指令前面都可以带有标号,标号可以长达32个字符,由AZ、az、09、_、和$符号组成,且第一个字符不能是数字,区分大小写。12/29/202232指令域指令域不能从第一列开始,否则被认为是标号。机器指令助记符(ABS,STH)汇编伪指令(.data,.list,.set)宏伪指令(.macro,.var,.mexit)宏

2、调用返回本节12/29/202243操作数区操作数区是一个操作数列表,可以是常数、符号或常数与符号构成的表达式。操作数间需用“,”号隔开。操作数前缀的使用规则:1)前缀#表示立即数,如:Label:ADD#123,A2)前缀*表示其后的操作数为间接地址,如:Label:LD*AR4,A3)前缀表示直接寻址或绝对寻址,如:ADD#10,XYZ12/29/202254注释区注释区可以从任何一列开始,可以包含ASCII字符和空格。12/29/202263.2 指令集符号与意义A 累加器AB 累加器BOVA ST0中累加器A的溢出标志OVB ST0中累加器B的溢出标志C ST0中的进位位ARx 辅助寄

3、存器SP 堆栈指针IFR 中断标志寄存器RC 循环计数器12/29/20227缩写语缩写语含义含义Smem16位单寻址操作数Xmem16位双寻址操作数,DB数据总线Ymem16位双寻址操作数,CB数据总线dmad16位立即数,数据存储器地址(065535)pmad16位立即数,程序存储器地址(065535)PA16位立即数,I/O口地址(065535)src源累加器(A或B)dst目的累加器(A或B)lk16位长立即数12/29/20228表3-1 指令系统中的符号和缩写返回首页12/29/2022912/29/20221012/29/20221112/29/202212返回本节12/29/2

4、022133.3 TMS320C54x的数据寻址方式3.3.1 立即寻址3.3.2 绝对寻址3.3.3 累加器寻址3.3.4 直接寻址3.3.5 间接寻址3.3.6 存储器映象寄存器寻址3.3.7 堆栈寻址12/29/202214TMS320C54x的寻址方式的寻址方式立即数寻址:立即数寻址:指令中嵌有一个固定的数指令中嵌有一个固定的数绝对地址寻址:绝对地址寻址:指令中有一个地址指令中有一个地址累累 加加 器器 寻寻 址址:按按 累累 加加 器器 内内 的的 地地 址址 去去 访访 问问 程程 序序 存存 储储 器器 中中 的一个单元的一个单元直接寻址:直接寻址:指令中的指令中的7bits是一

5、个数据页内的偏移地址,而所在的是一个数据页内的偏移地址,而所在的数据页由数据页指针数据页由数据页指针DP或或SP决定,偏移加上决定,偏移加上DP和和SP的值决定了在的值决定了在数据存储器中的实际地址数据存储器中的实际地址间接寻址:间接寻址:按照辅助寄存器中的地址访问存储器按照辅助寄存器中的地址访问存储器存存储储器器映映射射寄寄存存器器寻寻址址:修修改改存存储储器器映映射射寄寄存存器器中中的的值值,而而不不影影响响当前当前DP或或SP的值的值堆栈寻址:堆栈寻址:把数据压入和弹出系统堆栈把数据压入和弹出系统堆栈12/29/2022153.1 立即寻址在立即寻址方式中,指令中包括了立即操作数。一条指

6、令中可对两种立即数编码,一种是短立即数(3、5、8或9位),另一种是16位的长立即数。短立即数指令编码为一个字长,16位立即数的指令编码为两个字长。立即数寻址指令中在数字或符号常数前面加一个“”号,来表示立即数。返回首页12/29/20221612/29/202217立即数寻址的其他例子:立即数寻址的其他例子:立即数寻址的其他例子:立即数寻址的其他例子:LD#0LD#0,ARP ARP ;ARP=0ARP=0(#k3#k3)LD#3LD#3,ASM ASM ;ASM=3ASM=3(#k5#k5)LD#50LD#50,DP DP ;DP=50DP=50(#k8#k8)STM#STM#FFFFhF

7、FFFh,IMR IMR ;IMR=IMR=FFFFhFFFFh(#lk lk)短立即数短立即数RPT长立即数长立即数RPT12/29/2022183.2 绝对寻址3.2.1 数据存储器(dmad)寻址3.2.2 程序存储器(pmad)寻址3.2.3 端口地址(PA)寻址3.2.4 长立即数*(lk)寻址返回首页12/29/2022193.2.1 数据存储器(dmad)寻址使用数据存储器寻址的指令有:MVDK Smem,dmadMVDM dmad,MMR MVKD dmad,SmemMVMD MMR,dmad数据存储器寻址使用符号(符号地址)或一个表示16位地址的立即数来指明寻址的数据存储单元

8、的16位绝对地址。例如:MVKD SMAPLE,*AR5;返回本节12/29/2022203.2.2 程序存储器(pmad)寻址使用程序存储器寻址的指令有:FIRS Xmem,Ymem,pmadMACD Smem,pmad,srcMACP Smem,pmad,srcMVDP Smem,pmadMVPD pmad,Smem程序存储器(pmad)寻址使用符号(符号地址)或一个表示16位地址的立即数来给出程序空间的地址。例如,把程序存储器中标号为TABLE单元中的值复制到AR7所指定的数据存储器中去,指令可写为:MVPD TABLE,*AR7;返回本节12/29/2022213.2.3 端口地址(P

9、A)寻址使用端口地址的指令有:PORTR PA,Smem PORTW Smem,PA端口地址(PA)寻址使用一个符号(符号地址)或一个表示16位地址的立即数来给出外部I/O口地址。例如:PORTR FIFO ,*AR5;返回本节12/29/2022223.2.4 长立即数*(lk)寻址长立即数*(lk)寻址用于所有支持单数据存储器操作数(Smem)的指令。长立即数*(lk)寻址使用一个符号(符号地址)或一个表示16位地址的立即数来指定数据存储空间的一个地址。例如,把数据空间中地址为BUFFER单元中的数据传送到累加器A,指令可写为:LD *(BUFFER),A返回本节12/29/2022233

10、.3 累加器寻址返回首页累加器寻址是用累加器中的数作为一个地址,这种寻址方式可用来对存放数据的程序存储器寻址。共有两条指令可以采用累加器寻址:READA SmemWRITA SmemREADA是把累加器A所确定的程序存储器单元中的一个字,传送到单数据存储器(Smem)操作数所确定的数据存储器单元中WRITA是把Smem操作数所确定的数据单元中的一个字,传送到累加器A确定的程序存储器单元中去12/29/2022243.4 直接寻址返回首页在直接寻址中,指令代码包含了数据存储器地址的低七位。这7-bit dma作为偏移地址与数据页指针(DP)或堆栈指针(SP)相结合共同形成16-bit的数据存储器

11、实际地址无须改变DP或SP的值就能任意访问当前基地址中连续的128单元指令代码只需要1个字:15-8为指令的操作码,7确定寻址方式,6-0偏移地址必须对指针进行初始化12/29/202225直接寻址直接寻址 采用DP或SP方式,由ST1中CPL位决定。CPL0,采用DP方式;CPL1,采用SP方式:(指令代码只有1个字,注意指针初始化)DP方式方式 DP方式,DP中内容作为dmad地址高9位,指令中地址标号作为低7位构成dmad地址 SP方式方式 SP方式,以SP中内容作为dmad基地址,指令中地址标号作为正向偏移量,二者相加构成dmad地址 12/29/202226图3-1DP作为基地址的直

12、接寻址方式图3-2SP作为基地址的直接寻址方式返回本节12/29/2022273.5 间接寻址3.5.1 单操作数寻址3.5.2 双操作数寻址返回首页12/29/202228利用8个辅助寄存器(AR0AR7)中的任一个ARx中的内容作地址寻址64K字数据存贮空间中的任一个存贮单元C54x有8个16-bit辅助寄存器(AR0-AR7),两个辅助寄存器算术单元(ARAU0和ARAU1),根据辅助寄存器的内容进行操作,完成无符号的16-bit算术运算间接寻址很灵活,不仅能从存储器中读或写一个单16-bit数据操作数,而且能在一条指令中访问两个数据存储器单元(即从两个不同的存储器单元读数据,读一个存储

13、器单元同时写另一个存储器单元,或读写两个连续的存储器单元)12/29/202229间接寻址间接寻址对SARAM(单寻址)的访问 对SARAM访问使用寄存器AR0AR7,其中AR0为变址寄存器 对DARAM(双寻址)的访问 对DARAM访问使用辅助寄存器AR2AR5 12/29/2022303.5.1 单操作数寻址表3-3列出了单数据存储器(Smem)操作数间接寻址类型。特殊的间接寻址方式有:1循环寻址2位倒序寻址12/29/202231表3-3 单数据存储器操作数间接寻址类型12/29/20223212/29/202233LD *AR2+,A ;含义?12/29/202234特殊寻址方式说明特

14、殊寻址方式说明循环寻址循环寻址许多算法,如卷积,自相关和FIR滤波等,都需要在存储器中实现一个循环缓冲器。在这些算法中,一个循环缓冲器就是一个包含了最近的数据的滑动窗口。当新的数据来到时,缓冲器就会覆盖最早的数据。循环缓冲器实现的关键是循环寻址的实现。C54x间接寻址中提供了循环寻址的方式,以%表示。位倒序寻址位倒序寻址位倒序寻址提高了执行速度和在FFT算法的程序中使用存储器的效率。在这种寻址方式中,AR0存放的整数N是FFT点数的一半。一个辅助寄存器指向一数据存放的物理单元。当使用位倒序寻址把AR0加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是从右向左。间接寻址中*Ar

15、n+0B/-0B表示位倒序寻址12/29/2022353.5.2 双操作数寻址双数据存储器操作数间接寻址类型为*ARx、*ARx-、*ARx+、*ARx+0%。所用辅助寄存器只能是AR2、AR3、AR4、AR5。其特点是:占用程序空间小,运行速度快,在一个机器周期内通过两个16位数据总线(C和D)读两个操作数。指令中Xmem表示从DB总线上读出的16位操作数,Ymem表示从CB总线上读出的16位操作数。例如:MPY *AR2,*AR3,A 返回本节12/29/2022363.6 存储器映象寄存器寻址存储器映象寄存器寻址用于修改存储器映象寄存器(MMR)中的内容,而不影响当前数据页指针DP和当前

16、堆栈指针SP。由于这种方式不需要修改DP和SP,对寄存器的写操作开销最小。存储器映象寄存器寻址可用于直接寻址和间接寻址。返回首页12/29/202237只有8条指令能使用存储器映射寄存器寻址:LDM MMR,dstMVDM dmad,MMR MVMD MMR,dmad MVMM MMRx,MMRy POPM MMRPSHM MMRSTLM src,MMRSTM#lk,MMR12/29/2022383.7 堆栈寻址返回首页系统堆栈用来在中断和子程序期间自动存放程序计数器它也能用来存放额外的数据项或传递数据值处理器使用一个16-bit的存储器映射寄存器堆栈指针SP来对堆栈寻址,它总是指向存放在堆栈

17、中的最后一个元素共有四条使用堆栈寻址方式访问堆栈的指令:PSHD 把一个数据存储器的值压入堆栈PSHM 把一个存储器映射寄存器的值压入堆栈 POPD 把一个数据存储器的值弹出堆栈POPM 把一个存储器映射寄存器的值弹出堆栈12/29/2022393.4 指令系统3.4.1 算术运算指令3.4.2 逻辑运算指令3.4.3 程序控制指令3.4.4 加载和存储指令返回首页12/29/202240 一 算术运算指令C54x的算术运算指令包括加法指令、减法指令、乘法指令、乘累加指令与乘法减法指令、双字/双精度运算指令及专用指令。分别如表4-2、表4-3、表4-4、表4-5、表4-6、表4-7所示。12/

18、29/202241指令中表示整数时,有有符号数和无符指令中表示整数时,有有符号数和无符号数两种格式。号数两种格式。TMS320C54xTMS320C54x提供了多条用于加提供了多条用于加法的指令,如法的指令,如ADDADD、ADDCADDC、ADDMADDM和和ADDSADDS,具体,具体说明见表说明见表4-24-21)1)加法指令加法指令12/29/202242 ADD指令有10种句法。如果目的累加器dst被指定,则结果存放在dst中;如果没有被指定,则结果存放在源累加器src中。移位操作数的范围为?16SHIFT15,0SHFT15。正数为左移位,左移位低位添0,高位受SXM位影响。如果S

19、XM1,则高位进行符号扩展;如果SXM0,则高位清零。负数为右移位,受SXM位影响。如果SXM1,则高位进行符号扩展;如果SXM0,则高位清零。12/29/202243表4-2加法指令12/29/202244【例1】ADD *AR3+,14,A指令执行前指令执行后A0000001200HA0005401200HC1C0AR30100HAR30101HSXM1SXM1数据存储器0100H1500H0100H1500H12/29/202245【例2】ADD A,-8,B 指令执行前指令执行后A0005401200HA0005401200HB0000001800HB0000055812HC1C012

20、/29/202246【例3】ADD#4568H,8,A,B 指令执行前指令执行后A0000001200HA0000001200HB0000001800HB0000457A00HC1C012/29/202247【例4】ADDC *+AR2(5),A ;不受SXM位影响 指令执行前指令执行后A0000000030HA0000000045HC1C0AR20100HAR20105H数据存储器0100H0000H0100H0000H0105H0014H0105H0014H12/29/202248【例5】ADDM#123BH,*AR4+;该指令不能循环执行 指令执行前指令执行后AR40100HAR4010

21、1H数据存储器0100H0014H0100H124FH12/29/202249【例6】ADDM#0F088H,*AR2+指令执行前指令执行后VOM1VOM1SXM1SXM1AR20105HAR20106H数据存储器0105H8007H0105H8000H12/29/202250 【例7】ADDS *AR2-,B ;无论SXM为何值,都不进行符号扩展 指令执行前指令执行后B0000000003HB000000F004HCxC0AR20106HAR20105H数据存储器0106HF001H0106HF001H12/29/2022512)减法指令 TMS320C54x 中减法指令有许多,如SUB、S

22、UBB、SUBC和SUBS,具体说明见表4-3。其中,SUBS是无符号数的减法运算,SUBB是带借位的减法运算,而SUBC是含条件的移位减。在TMS320C54x中,没有专门的除法指令,要实现除法运算一般有两种方法:一种方法是用乘法进行,如要除以某个数,可以先求出该数的倒数,再乘以其倒数;另一种方法是用SUBC指令,再重复16次减法运算,可实现两个无符号数的除法运算。减法指令中状态位与加法指令中的基本相同。12/29/202252表4-3 减法指令12/29/20225312/29/202254【例8】SUB#12345,8,A,B指令执行前指令执行后A0000001200HA00000012

23、00HB0000001800HBFFFFCFD900HCXC0SXM1SXM112/29/202255【例9】LD#8,DP ;使页面指针DP8 LD#0006H,A ;加载A累加器 SSBX C ;置借位位C为1 SUBB 5,A ;完成带借位的减法运算。数据地址0405H,为直接寻址12/29/202256指令执行前指令执行后A0000000006HAFFFFFFFFFEHC1C0DP008HDP008H数据存储器0405H0008H0405H0008H12/29/2022573)乘法指令 TMS320C54x 中有大量的乘法运算指令,其结果都是32位,放在A或B累加 器 中,如 表 4-

24、4所 示。乘 数 在TMS320C54x的乘法指令中的使用很灵活,可以是T寄存器、立即数、存储单元以及A或B累加器的高16位。如果是无符号数相乘,则使用一条专用于无符号数相乘的指令,即MPYU指令,其他指令都是有符号数的乘法。12/29/202258表4-4 乘法指令12/29/202259【例10】实现整数乘法。LD#0030H,A ;将0030H装入累加器ASTM#0100H,AR2 ;AR20100HST#2000H,*AR2 ;(AR2)2000HRSBX FRCT ;清FTCT标志位,准备整数乘LD#2,DP ;DP002HLD 0,T ;将AR2中的内容2000H装入T寄存器MPY

25、#-2,A ;完 成 2000H与 0FFFEH相 乘,结 果 放入A累加器(32位),;AFF FFFF C000H12/29/202260 4)乘加和乘减指令 乘加指令完成一个乘法运算,将乘积再与源累加器的内容相加。指令中使用R后缀的,其运算结果要进行凑整。乘减指令完成从累加器B或源累加器src或目的累加器dst中减去T寄存器或一个操作数与另一个操作数的乘积,结果存放在累加器B或dst或src中。表4-5是对乘加、乘减指令的说明。12/29/202261表4-5乘加和乘减指令12/29/20226212/29/202263【例11】MAC#345H,A,B 指令执行前指令执行后A00000

26、01000HA0000001000HB0000000000HB00000D2400HT0400HT0400HFRCT0FRCT012/29/202264【例12】MAC#345H,A,B 指令执行前指令执行后A0000001000HA0000001000HB0000000000HB00001A3800HT0400HT0400HFRCT1FRCT112/29/202265【例13】MACR *AR3+,*AR4+,A,B 指令执行前指令执行后A0000001000HA0000001000HB0000000004HB000C4C0000HT0008HT5678HFRCT1FRCT1AR30100H

27、AR30101HAR40200HAR40201H数据存储器0100H5678H0100H5678H0200H1234H0200H1234H12/29/202266【例14】MACSU *AR3+,*AR4+,A 指令执行前指令执行后A0000001000HA0009A0AA84HT0008HT8765HFRCT0FRCT0AR30100HAR30101HAR40200HAR40201H数据存储器0100H8765H0100H8765H0200H1234H0200H1234H12/29/202267【例15】MAS *AR3+,*AR4+,A,B 指令执行前指令执行后A0000001000HA0

28、000001000HB0000000004HBFFF3B40F40HT0008HT5678HFRCT1FRCT1AR30100HAR30101HAR40200HAR40201H数据存储器0100H5678H0100H5678H0200H1234H0200H1234H12/29/202268表4-6 双精度(32位操作数)指令12/29/202269表4-7 专用指令返回本节12/29/2022704.2.2 逻辑运算指令逻辑指令包括与、或、异或(按位)、移位和测试指令,分别如表4-8、表4-9、表4-10、表4-11、表4-12所示。12/29/202271表4-8 与逻辑运算指令12/29/

29、202272表4-9 或逻辑运算指令12/29/202273表4-10 异或逻辑运算指令12/29/202274表4-11 移位逻辑运算指令12/29/202275表4-12 测试指令返回本节12/29/2022764.2.3 程序控制指令程序控制指令包括分支转移指令、子程序调用指令、中断指令、返回指令、重复指令、堆栈操作指令及混合程序控制指令,分别如表4-13、表4-14、表4-15、表4-16、表4-17、表4-18及表4-19所示。12/29/202277表4-13 分支转移指令12/29/202278表4-14 子程序调用指令12/29/202279表4-15 中断指令12/29/20

30、2280表4-16 返回指令12/29/202281表4-17 重复指令12/29/202282表4-18 堆栈操作指令12/29/202283表4-19 混合程序控制指令返回本节12/29/2022844.2.4 加载和存储指令加载和存储指令包括加载指令、存储指令、条件存储指令、并行加载和存储指令、并行加载和乘法指令、并行存储和加/减法指令、混合加载和存储指令,分别如表4-20、表4-21、表4-22、表4-23、表4-24、表4-25、表4-26及表4-27所示。加载指令是将存储器内容或立即数赋给目的寄存器;存储指令是把源操作数或立即数存入存储器或寄存器。12/29/202285表4-20 加载指令12/29/202286表4-21 存储指令12/29/202287表4-22 条件存储指令12/29/202288表4-23 并行加载和存储指令12/29/202289表4-24 并行加载和乘法指令12/29/202290表4-25 并行存储和加/减法指令12/29/202291表4-26 并行存储和乘法指令12/29/202292表4-27 混合加载和存储指令(数据块传送指令)返回本节12/29/202293

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁