好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

TMS320C54X的指系统.ppt

84页
  • 卖家[上传人]:公****
  • 文档编号:602359176
  • 上传时间:2025-05-17
  • 文档格式:PPT
  • 文档大小:1.78MB
  • / 84 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 单击以编辑,母版标题样式,单击以编辑母版文本样式,第二级,第三级,第四级,第五级,*,三、,TMS320C54X,的指令系统,TMS320C5000,指令系统,C54x,寻址方式,C54x,特殊寻址,方式说明,C54x,指令集,C54x,特殊指令,使用说明,TMS320C54x,的寻址方式,立即数寻址:指令中嵌有一个固定的数,绝对地址寻址:指令中有一个固定的地址,累加器寻址:按累加器内的地址去访问程序存储器中的一个单元,直接寻址:指令中的7,bits,是一个数据页内的偏移地址,而所在的数据页由数据页指针,DP,或,SP,决定该偏移加上,DP,和,SP,的值决定了在数据存储器中的实际地址间接寻址:按照辅助寄存器中的地址访问存储器存储器映射寄存器寻址:修改存储器映射寄存器中的值,而不影响当前,DP,或,SP,的值堆栈寻址:把数据压入和弹出系统堆栈在立即数寻址中,指令里包括了立即操作数在一条指令中可对两种立即数编码一种是短立即数(3、5、8或9,bits),,另一种是16,bits,的长立即数立即数可包含在单字或双字指令中3-,5-,8-或9-,bit,值在单字指令中,16-,bit,值在双字指令中。

      1.立即数寻址,立即数寻址的其他例子:,LD#0,ARP ;ARP=2(#k3),LD#3,ASM,;ASM=3(#k5),LD#50,DP ;DP=50(#k9),LD#1234,A ;A=1234(#k),STM#,FFFFh,,IMR,;IMR=,FFFFh,(#,lk,),短立即数,RPT,长立即数,RPT,2.直接寻址,在直接寻址中,指令代码包含了数据存储器地址的低七位这7-,bit,dma,作为偏移地址与数据页指针(,DP),或堆栈指针(,SP),相结合共同形成16-,bit,的数据存储器实际地址如右图所示CPL=0:,dma,与9-,bit,的,DP,相结合形成数据存储器地址以,DP,为基准的直接寻址,DP,9-bit,9-,bit,的,DP,指向数据存储空间的512个数据页中的一页,0,1,2,510,511,编程举例:,编程举例:,直接寻址编程:,.,mmregs,.,bss,x,4,1,a0.word 012h,a1.word 3211h,a2.word fe11h,a3.word ff03h,.sect “program”,LD#0,A,LD#X,DP,LD#a0,T,MAC x,A,LD#a1,T,MAC X+1,A,LD#a2,T,MAC X+2,A,.,以,SP,为基准的直接寻址,CPL=1:,dma,加上,SP,基地址形成数据存储器地址。

      st1,中),使用以,SP,为基址的直接寻址:,AND sample,A,LD sample,A,ADD sample,B ;.,3.间接寻址,在间接寻址中,64,K,数据空间任意单元都可通过一个辅助寄存器中的16-,bit,地址进行访问C54x,有8个16-,bit,辅助寄存器(,AR0-AR7)两个辅助寄存器算术单元(,ARAU0,和,ARAU1),,根据辅助寄存器的内容进行操作,完成无符号的16-,bit,算术运算间接寻址很灵活,不仅能从存储器中读或写一个单16-,bit,数据操作数,而且能在一条指令中访问两个数据存储器单元(即从两个独立的存储器单元读数据,或读一个存储器单元同时写另一个存储器单元,或读写两个连续的存储器单元)单操作数寻址,单操作数间接寻址方框图,单操作数间接寻址类型:,*,Arx,:,ARx,包含了数据存储器地址,*,ARx,-/*,ARx,+:,访问后,,ARx,中的地址减1/加1,*+,ARx,:,在寻址之前,,ARx,中的地址加1,*,ARx,-0B/*,ARx,+0B:,访问后,从,ARx,中以位倒序进位的,方式减去/加上,AR0,*,ARx,-0/,*,ARx,+0,:,访问后,从,ARx,中减去/加上,AR0,*,ARx,-%/*,ARx,+%:,访问后,,ARx,中的地址以循环寻址,的方式减1/加1,*,ARx,-0%/*,ARx,+0%:,访问后,从,ARx,中以循环寻址的方,式减去/加上,AR0,*,ARx,(,lk,):,ARx,和16-,bit,的长偏移(,lk,),的和用来,作为数据存储器地址。

      ARx,本身不,被修改,*+,ARx,(,lk,):,在寻址之前,把一个带符号的16-,bit,的长偏移,(,lk,),加到,ARx,中,然后用新的,ARx,的值作为,数据存储器的地址,*+,ARx,(,lk,)%:,在寻址之前,把一个带符号的16-,bit,的长偏移,以循环寻址的方式加到,ARx,中,然后再用新,的,ARx,的值作为数据存储器的地址,编程举例:,编程举例:,间接寻址编程:,.,mmregs,.,bss,x,4,1,a.word 1,2,3,4,.sect “program”,STM#a,AR1,STM#x,AR2,LD#0,A,LD *AR1+,T,MAC *AR2+,A,LD *AR1+,T,MAC *AR2+,A,LD *AR1+,T,MAC *AR2+,A,LD *AR1,T,MAC *AR2,A,.,双操作数寻址方式,双数据存储器操作数间接寻址类型,*,Arx,:,ARx,是数据存储器地址,*,ARx,-/*,ARx,+:,访问后,,ARx,中的地址减1/加1,*,ARx,+0%:,访问后,,AR0,以循环寻址的方式加,到,ARx,中例如:,MPY *AR2,*AR3,A,FIRS *AR2,*AR3,,coef,双数据存储器操作数间接寻址方框图,4.绝对地址寻址,有个别指令可以使用16,bits,的绝对地址寻址:,数据存储器地址(,dmad,),寻址:,MVDK,Smem,dmad,MVDM,dmad,MMR,MVKD,dmad,Smem,MVMD,pmad,Smem,程序存储器地址(,pmad,),寻址:,FIRS,Xmem,Ymem,pmad,MACD,Smem,pmad,src,MACP,Smem,pmad,src,MVPD,pmad,Smem,端口地址(,PA),寻址,PORTR PA,Smem,PORTW,Smem,PA,*(,lk,),寻址适用于支持单数据存储器操作数的指令,5.累加器寻址,累加器寻址是用累加器中的数作为一个地址。

      这种寻址方式可用来对存放数据的程序存储器寻址共有两条指令可以采用累加器寻址:,READA,Smem,WRITA,Smem,READA,是把累加器,A,所确定的程序存储器单元中的一个字,传送到单数据存储器(,Smem,),操作数所确定的数据存储器单元中WRITA,是把,Smem,操作数所确定的数据单元中的一个字,传送到累加器,A,确定的程序存储器单元中去只有8条指令能使用存储器映射寄存器寻址:,LDM MMR,,dst,MVDM,dmad,MMR,MVMD MMR,dmad,MVMM,MMRx,MMRy,POPM MMR,PSHM MMR,STLM,src,MMR,STM#,lk,MMR,6.存储器映射寄存器寻址,存储器映射寄存器寻址用来修改存储器映射寄存器而不影响当前数据页指针(,DP),或堆栈指针(,SP),的值存储器映射寄存器寻址既可以在直接寻址中使用,又可以在间接寻址中使用7.堆栈寻址,系统堆栈用来在中断和子程序期间自动存放程序计数器它也能用来存放额外的数据项或传递数据值处理器使用一个16-,bit,的存储器映射寄存器堆栈指针来对堆栈寻址,它总是指向存放在堆栈中的最后一个元素共有四条使用堆栈寻址方式访问堆栈的指令:,PSHD,把一个数据存储器的值压入堆栈。

      PSHM,把一个存储器映射寄存器的值压入堆栈POPD,把一个数据存储器的值弹出堆栈POPM,把一个存储器映射寄存器的值弹出堆栈特殊寻址方式说明,本小节重点介绍两种广泛应用的特殊寻址方式循环寻址和位倒序寻址位倒序寻址,位倒序寻址提高了执行速度和在,FFT,算法的程序中使用存储器的效率在这种寻址方式中,,AR0,存放的整数,N,是,FFT,点数的一半一个辅助寄存器指向一数据存放的物理单元当使用位倒序寻址把,AR0,加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是从右向左间接寻址中*,Arn,+0B/-0B,表示位倒序寻址8,点的,FFT,蝶型结运算,0000,0100,0010,0110,0001,0101,0011,0111,FFT,中混序就是位倒序,FFT,运算时输出/输入序列中必有其一要混序位倒序寻址的执行,设,FFT,长度,N=16,,则,AR0,赋值为8,位倒序方式读入数据情况如下:,循环寻址:,许多算法,如卷积,相关和,FIR,滤波等,都需要在存储器中实现一个循环缓冲器在这些算法中,一个循环缓冲器就是一个包含了最近的数据的滑动窗口当新的数据来到时,缓冲器就会覆盖最早的数据。

      循环缓冲器实现的关键是循环寻址的实现C54x,间接寻址中提供了循环寻址的方式,以%表示循环寻址图示,循环寻址的有效地址计算,定义循环缓冲器大小寄存器(,BK),来确定了循环缓冲器的大小大小为,R,的循环缓冲器必须从一个,N-bit,边界开始循环缓冲器的有效基地址(,EFB),就是用户选定的辅助寄存器(,ARx,),的低,N,位置 0后所得到的值满足条件:,循环缓冲器的尾地址(,EOB),是通过用,BK,的低,N,位代替,ARx,的低,N,位得到循环缓冲器的,INDEX,就是,ARx,的低,N,位,,step,就是加到辅助寄存器,或从辅助寄存器中减去的值循环寻址的算法如下:,if 0,index+step,BK:index=index+stepelse if index+step BK:index=index+step-BKelse if index+step,二进制 100000 -,N=6,R(BK)=31-,二进制 011111-,N=5,应用举例:,计算16阶的,FIR,滤波器输出256个点,.,sect“fir-,prog,”,STM#255,BRC;,Repeat 256 times,RPTBD fir_filter_loop,STM#16,BK;,FIR circular buffer size,LD *AR7+,A;,load the input value,STL A,*AR4+%;,replace oldest sample with,;,newest sample,RPTZ A,#16,MAC*AR4+0%,*AR3+0%,A;,filtering,STH A,*AR5+;,replace the oldest buffer value,fir_filter_loop,TMS320C54x,的指令集有近两百条指令,按功能分为如下几类,:,算术运算指令,逻辑运算指令,程序控制指令,装入和存储指令,TMS320C54x,的指令集,一、算术运算指令,算术运算指令可分为如下几类:,加法指令,减法指令,乘法指令,乘加指令,乘减指令,双数/双精度指令,特殊操作指令,1、加法指令,定点,DSP,中数据表示方法,当它表示一个整数时,其最低位(,D0),表示1,,D1,位表示2的1次方,次高位(,D14),表示2的14方。

      如果表示一个有符号数时,最高位(,D15),为符号位,0表示正数,1表示负数例如,07,FFFH,表示最大的正数32767(十进制),而0,FFFFH,表示最大的负数-1(负数用2的补码方式显示)当需要表示小数时,小数点的位置始终在最高为后,而最高位(,D15),表示符号位这样次高位(,D14),表示0.5,然后是0.25,最低位(,D0),表示所以04000,H,表示小数0.5,01000,H,表示小数0.25,而0001,H,表示16位定点,DSP,表示的最小的小数(有符号)0.000030517578125实现16。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.