dsp指令ixh_C24XX系列DSP移位指令总结
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 移位 指令
dsp指令ixh_C24XX系列DSP移位指令总结相关推荐
- TI公司三大系列DSP内部结构之比较
一引言 DSP有两种解释:一种是数字信号处理器(Digital SignalProcessor),也称数字信号芯片:另一种是数字信号处理技术(Digital Signal Processing).我们 ...
- 【DSP开发】C6000非多核非KeyStone系列DSP中断系统
C6000系列DSP的中断系统 上一篇介绍了C6455的GPIO系统,最后把GPIO4配置成了中断/事件模式,本文将介绍C6455的中断系统,介绍完基本概念后,给出把GPIO4映射到INT4的代码. ...
- dsp指令ixh_第一章 DSP入门教程(非常经典).pdf
DSP 入门教程 1.TI DSP 的选型 主要考虑处理速度.功耗.程序存储器和数据存储器的容量.片内的资源,如定时器的数量. I/O 口数量.中断数量.DMA 通道数等.DSP 的主要供应商有 TI ...
- 教你如何在STM32中使用DSP指令
01.DSP简介 提到DSP,作为电子专业的学生,大部分第一时间想到的是DSP芯片,DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用 ...
- TI DSP 指令注释
1, EALLOW,EDIS是成对使用的,有些寄存器是受到保护的,不能任意写,EALLOW相当于去掉保护,对写保护的寄存器进行操作后 EDIS 是重新把这个寄存器保护起来的意思. 原来TI的DSP为了 ...
- 达芬奇系列DSP——CCS_V5安装技术文档
达芬奇系列DSP --CCS_V5安装技术文档 Tanspring 20121101 1. 在TI官方网站下载(www.ti.com)CCS软件的安装文件(CCS5.2.1.00018_win32). ...
- 最强ADI SHARC系列DSP:ADSP-SC589的开发入门详解
作者的话 ADI的SHARC系列DSP,现阶段最强的型号是SC589,那么我就以SC589为例,写一点资料,让新手能够比较便捷的熟悉开发环境,软硬件,顺利的进入开发. 文档解决的是入门的问题,所以不会 ...
- C2000系列DSP学习开发前准备
文章目录 1.开发前资料获取和环境搭建 1.1.官方资料的获取 1.1.1.官方文档的获取 1.1.2.开发套件SDK的获取 1.2.软件安装 1.2.1.CCS软件安装 1.2.2. Pin Mux ...
- IP公司及其处理器IP系列(DSP, GPU, AI)
Synopsys 来源:https://www.synopsys.com/zh-cn/designware-ip.html ARC处理器 Embedded Vision Processors EV5x ...
最新文章
- python如何次传参给线程_python如何给线程中的函数传参?
- python字典怎么排序_如何对python的字典进行排序
- shell 实现ip字符串与整形互转
- 详解阿里开源分布式事务框架Seata
- java号段_JAVA手机号正则(多号段)
- 通过Instant Client包来使用SQL*PLUS
- matlab阅读怎么放大镜,matlab局部放大
- android 自定义键盘长按事件,Android触发事件总结(触摸屏事件,手势识别,键盘事件,模拟鼠标/按键事件)...
- kafka与zookeeper下载安装及kafka常用命令
- FPGA/数字IC秋招笔试面试003——FSM有限状态机、三段式状态机(2022届)
- 小学五年级计算机考试试题,小学信息技术考试题库中五年级试题——选择题
- 联想机房升级Win10联想硬盘保护系统EDU8.0安装手记
- sql2008安装图解 sql server 2008 R2安装教程
- Python 利用 BeautifulSoup 爬取网站获取新闻流
- windows 清除IE浏览器缓存的脚本
- android进入recovery模式,Android关机重启至recovery安卓进入Recovery模式模式
- Python异步并发机制详解,让你的代码运行效率就像搭上了火箭!!!
- C#学习(一):委托和事件
- 日有所思(7)——电拖疑问
- android和ios系统的内存,为什么说IOS系统的2G运存相当于安卓手机的8G运存
热门文章
- 区块链投资700元就能赚
- java的io安卓能用吗_阳光沙滩-用java写了一个Socket.IO的服务端,可是用安卓一直连接不上怎么办;...
- spring boot 集成druid数据库连接池,并打印sql
- grammer cards
- 【java】课程设计--抽卡模拟器
- php高级期末考试,期末考试求大神
- AC695x学习笔记(1): 简介
- 纯前端 vue 导出excel 这里用 vue-json-excel插件
- 从追赶者到竞争者,智能汽车产业“长沙模式”走的什么捷径?
- 【八月总结】回实验室第一个月