dsp指令ixh_C24XX系列DSP移位指令总结[通俗易懂]

dsp指令ixh_C24XX系列DSP移位指令总结[通俗易懂]C24XX系列DSP移位指令总结徐丽红王佰营TI公司C24XX系列DSP的移位指令很有特色而且效率很高;一般的移位功能不用专门的指令实现而是作为其他指令中的一个功能给出,并且移位并不占用CPU额外时间。以下整理出了DSP常用的移位指令:一、两类移位指令1>显性移位指令,移位次数由指令直接给出:1add—sub←0—162and—or—xor←#L3lacc←0—164sach—sacl←…

大家好,又见面了,我是你们的朋友全栈君。

C24XX系列DSP移位指令总结

徐丽红王佰营

TI公司C24XX系列DSP的移位指令很有特色而且效率很高;一般的移位功能不用专门的指令实现而是作为其他指令中的一个功能给出,并且移位并不占用CPU额外时间。以下整理出了DSP常用的移位指令:

一、两类移位指令

1>显性移位指令,移位次数由指令直接给出:1add—sub←0—16

2and—or—xor←#L

3lacc←0—16

4sach—sacl←  0—7

2>隐性移位指令

A:由TREG[0:3]指定

(1)addt—subt←T

(2)lact—←T

(3)不移位,bitt由TREG[0:3]给定位

B:由PM给定

(1)pac—apac—spac←→PM

(2)lta—ltp—lts—ltd←→PM

(3)mac—macd←→PM

(4)mpya—mpys←→PM

(5)sph—spl←→PM

(6)sqra—sqrs←→PM

无移位的指令:

lph—lt—mpy—mpu—spm

注: ←  表示可左移;

←→ 可左右移;

二、移位指令的总结:

1移位指令分显性移位和隐性移位,

隐性移位按给出移位数的方式不同分为TREG[0:3]和PM之分;

2显性移位指令多由acc参与,也就是由ACC参与的,除三条指令最后是T结尾的指令    (addt,subt,lact)由TREG[0:3]给出移位数外,其余皆为显性移位;

3显性移位分为:

A:≤7位的左移的两条指令:

Scah sacl;

B:其余为0—15,16位移位指令

1>仅对长立即数移位的指令,是三条逻辑指令

And- or – xor

2>直接0-15,16,间接0-15,16,长立即0-15的移位指令:

Add ,sub ,lacc

3>  TREG或PREG参与的指令仅用PM指令移位方式;

4>在TREG或PREG参与的指令中,除以下几条指令外,其它指令均含有由PM指定 的移位操作。

Lph – lt- mpy – mpu;

4、由中央处理单元结构(见下图)可知:

由上图可知移位操作有四处:

A 、输入移位器(ISCALE)

1>其数据来源有:

1程序读总线-程序存储器-指令中的立即数;

2数据读总线-数据存储器单元中的数据;

2>可实现

1程序提供的立即数

2数据RAM—直接寻址,    间接寻址

如:adddma [shift]直接寻址

adddma 6

addind,16 [ARn]间接寻址

addind [shift [ ,ARn]

add#lR [ ,shift]立即寻址

3>输入移位器的移位数值的大小由包含在指令中的常量或由临时寄存器(TREG)来指定;其中,由指令字中的常量决定的移位量允许用户采用特定的数据定标或调整运算来得到特定的代码;由TREG低4位数值所决定的移位量,允许用户动态调整数据的比例系数,从而来适应不同要求的系统性能;

4>(0—16)左移时,最低位填0,未用的最高位填0或进行符号扩展,这要由SXM位的值决定:SXM=0,填0;SXM=1,则未使用的最高有效位填0或1,进行符号扩展;

5>两种方法获得左移的位数:指令中直接设置移位位数或TREG的最低4位提供移位位数;

B、乘积移位器(PSCALE)

1>其数据来源PREG

2>可实现

以状态寄存器ST1中的乘积移位模式控制位PM指定方式对PREG来的数据进行移位的方式

PM = 00无移位

PM = 01左移一位

PM = 10左移四位

PM = 11右移六位

如:shifted(PREG)

a> apac功能:(ACC)+ shifted(PREG)→ACC;

b> spac功能:(ACC)- shifted(PREG)→ACC;

c> pac功能:shifted(PREG)→ACC;

e> sph功能:16MSBsofshiftEd(PREG)→数据空间地址;

f>  spl功能:16LSBsofshifted(PREG)→数据空间地址;

g>包括有指令apac功能的指令有:

lta ; mac ; macd ; mpya ; sqra ;

i>包括有指令spac功能的指令有:

lts ; mpys ; sqrs ;

j>包含有指令pac功能的指令有

ltp

3>乘积移位器可以供给:

<1>数据写总线

<2>中央算术逻辑部分CALU;再给ACC;

所以有以下几种情况:

shifted(PREG)→ACC;

(ACC)+ shifted(PREG)→ACC

(ACC)- shifted(PREG)→ACC

16MSBsofshiftEd(PREG)→数据空间地址

16LSBsofshifted(PREG)→数据空间地址

4> 一般当PREG参与并且数据传输的目标是ACC或RAM时,数据就会经过PSCALE,就由PM决定是否移位;自然,MPY,MPYU和LPT指令数据传输的目标是PREG,所以就不会有移位了;

5> 乘积移位操作不受符号扩展位SXM的约束,无论SXM为何值,对未用到的最高有效位总是进行符号扩展;

C、输出移位器(OSCALE)

1>其数据来源为ACC

2>可实现

(ACC)x2shift

如:sach , sacl(shift≤7)

16MSBsof(ACC)x2shift→数据存储空间

16LSBsof(ACC)x2shift→数据存储空间

3>输出移位器可以供:

数据写总线—数据RAM空间。

4>输出移位器对累加器的结果进行移位操作,将累加器的高位字(ACCH)和低位字(ACCL)分别移位处理,将结果送至16位的数据写总线上而存入数据存储器;

5> 当输出移位器执行移位时,其最高有效位丢失而最低有效位填0;

D、累加器ACC的移位操作

ACC可实现如下循环或移位,和以上的移位不同,专用于循环或移位,占用指令时间,是该指令专门的工作;

rol —累加器逻辑循环左移—左移一位,C入LSB,MSB入C,不受SXM影响;

ror— 累加器逻辑循环右移—右移一位,C入MSB,LSB入C,不受SXM影响;

sfl — 累加器算术左移—最高位入C,最低位补0,不受SXM影响;

sfr — 累加器算术右移—受SXM位影响:

若SXM=1,为算术右移,符号位(最高有效位)不变且被复制到位30,位0入C;

若SXM=0,为逻辑右移,ACC中所有位右移一位,LSB入C,MSB填0;

注意:有的移位受符号扩展方式位(SXM)的影响,注意正确设置SXM的值,以达到预期目标;

关键字:TMS320LF2407  TMS320C2000 DSP 移位 指令

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145098.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 局域网服务器传输大文件方案,局域网快速传输大文件【操作方案】

    局域网服务器传输大文件方案,局域网快速传输大文件【操作方案】很多小伙伴都遇到过局域网快速传输大文件的困惑吧,一些朋友看过网上零散的局域网快速传输大文件的处理方法,并没有完完全全明白局域网快速传输大文件是如何解决的,今天小编准备了简单的解决办法,只需要按照1:首先需要传递文件的两台电脑之间都需要下载安装一个工具软件飞秋(feiQ),其是一款局域网聊天传送文件的即时通讯软件,如下图所示:2:两台电脑之间通过一根网线连接在一起(通过网线水晶头插入网孔的方式),如…

    2022年5月5日
    154
  • SPSS作业-卡方检验-列联表[通俗易懂]

    SPSS作业-卡方检验-列联表[通俗易懂]作业要求:某厂生产三种类型啤酒:淡啤酒、普通啤酒、黑啤酒。根据下列资料检验男性与女性饮酒者啤酒偏好是否相同。 作业数据: 淡啤 普啤 黑啤 合计 男性 20 40 20 80 女性 30

    2022年5月16日
    35
  • java BigDecimal类型 比较大小

    java BigDecimal类型 比较大小一般我们进行类型比较有.equals()、==、.compareTo()但是当比较bigdecimal类型时最好使用.compareTo()来比较大小BigDecimala=BigDecimal.ZERO;BigDecimalb=BigDecimal.valueOf(0.000);BigDecimalc=BigDecimal.valueOf(0.0);a.equals(b)的结果会是fal…

    2022年7月14日
    43
  • 一次完整的渗透测试流程

    一次完整的渗透测试流程目录渗透测试信息收集漏洞探测漏洞利用内网转发内网渗透痕迹清除撰写渗透测试保告渗透测试渗透测试就是利用我们所掌握的渗透知识,对网站进行一步一步的渗透,发现其中存在的漏洞和隐藏的风险,然后撰写一篇测试报告,提供给我们的客户。客户根据我们撰写的测试报告,对网站进行漏洞修补,以防止黑客的入侵!渗透测试的前提是我们得经过用户的授权,才可以对网站进行渗透。如果我…

    2022年5月2日
    38
  • css3新发现height:100vh;

    css3新发现height:100vh;vh/vwvh:相对于视窗的高度,视窗被均分为100单位的vh;vw:相对于视窗的宽度,视窗被均分为100单位的vw;vmax:相对于视窗的宽度或高度中较大的那个。其中最大的那个被均分为100单位的vmax;vmin:相对于视窗的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin;视区所指为浏览器内部的可视区域大小,即window.innerWidth/…

    2022年4月30日
    123
  • fastdfs工作原理(技术原理)

    FastDFS架构:FastDFS服务端有三个角色:跟踪服务器(trackerserver)、存储服务器(storageserver)和客户端(client)。**trackerserver:**跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。相比GFS中的master更为精简,不记录文件索引信息,占用的内存量很少。**storageserver:**存储服务器(又称:存储节点或数据服务器),文件和文件属性(me

    2022年4月13日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号