打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一文讲清楚,DSP芯片指令系统
DSP数字信号处理器TMS320C54x的指令系统

1、寻址方式


当硬件执行指令时,寻找指令所指定的参与运算的操作数的方法——寻址方式。
根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。

C54x芯片的寻址方式可以分为两类:
● 数据寻址
● 程序寻址  

寻址方式 :

C54x有7种基本的数据寻址方式:
立即寻址:由指令提供一个操作数
绝对寻址:由指令提供一个操作数地址
累加器寻址:以累加器的内容为地址访问程序空间某单元
直接寻址:寻址地址为DP或SP的值加上指令提供的偏移量
间接寻址:利用辅助寄存器访问存储器
存储器映像寄存器寻址:用来改变映像寄存器,但不影响DP或SP的值
堆栈寻址:用来管理系统堆栈中的操作

即:


部分寻址缩略语:



(1)立即寻

指令中含有执行指令所需的操作数。操作数紧随操作码存放在程序存储器中。

例如:LD#F180,A; 将立即数F180加载到A

立即数的数值形式:
      ① 短立即数。3、5、8、9位,单字指令;
      ② 长立即数。16位,双字指令。

特点:指令中含有一个固定的立即数,运行速度较快,但需占用程序存储空间,并且数值不能改变。

用途:用于表示常数或对寄存器初始化。

支持立即数的指令 :

注意:在立即寻址的指令中,应在数值或符号前面加一个“#”,表示是一个立即数,以区别于地址。

(2)绝对寻址

指令中含有所要寻找的操作数的16位存储单元地址。

16位地址表示形式:
① 地址标号,如:TABLE;
② 16位符号常量,如:89AB、1234。

特点:指令中包含一个固定的16位地址,能寻址所有数据存储空间,但运行速度慢,需要较大的存储空间。

用途:用于对速度要求较低的场合。

绝对寻址是利用16位地址来寻址操作数的存储单元。由于绝对地址代码的位数为16位,所以绝对地址寻址的指令至少应为2个字长。

绝对寻址有四种类型 :

① 数据存储器地址(dmad)寻址;
用于确定操作数存于数据存储单元的地址。语法:使用一个程序标号或一个数字来指定数据空间的一个地址。


 ② 程序存储器地址(pmad)寻址;
用于确定程序存储器中的一个地址。语法:使用一个符号或具体的数字来指定程序空间的一个地址。


 ③ 端口(PA)寻址;
用一个符号或一个数字来确定外部I/O端口的地址。  


 ④ *(1k)寻址。  
使用一个指定数据空间的地址来确定数据存储器中的一个地址。
语法:允许所有使用单数据存储器(Smem)寻址的指令去访问数据空间的任意单元,而不改变DP(数据存储器页指针)的值,也不用对AR(辅助寄存器)进行初始化。


(3)累加器寻址

将累加器的内容作为地址去访问程序存储单元,即将累加器中的内容作为地址,用来对存放数据的程序存储器寻址。 

用途:用于完成程序存储空间与数据存储空间之间的数据传输。



(4)直接寻址

所要寻址的数据存储器16位地址是由基地址和偏移地址构成。


DP地址的范围是从0~511(29-1),将存储器分成512页。7位dmad范围是从0~127,每页有128个可以访问的单元。

以DP为基准的直接寻址是由DP值确定是512页中的哪一页,由dmad确定是该页中的哪一个单元。 

SP可以指向存储器中的任意一个地址。dmad可以指向当前页中具体的单元,从而允许访问存储器任意基地址中的连续的128个单元 。

直接寻址标识:
    ① 变量前加@,如@x;
    ② 在偏移量前加@,如@5。

利用直接寻址可以在不改变DP或SP的情况下,随机寻址128个存储单元中的任何一个单元。

直接寻址的优点:每条指令只需要一个字。



直接寻址特点:
    ① 所寻址数据存储器的16位地址是由DP或SP与7位偏移地址dmad构成;
    ② 可在单周期寻址128个单元;
    ③ 寻址速度快,能进行流水线并行操作。

用途:主要用于要求运算速度较快的场合。

注意:① 上述两种直接寻址方式是相互排斥的;② 采用DP寻址时,要注意数据所在的页面指针。

(5)间接寻址

是根据辅助寄存器(AR0~AR7)给出的16位地址进行寻址。
每一个辅助寄存器都可以用来寻址64K字数据存储空间中任何一个单元。
两个辅助寄存器算术运算单元(ARAU0和ARAU1) 可以根据辅助寄存器的内容进行操作,完成16位无符号数算术运算。
可完成以下操作:
① 用单指令对存储器进行16位数据的读操作或写操作;   
② 用单指令可以完成对两个独立的数据存储单元的读操作;
③ 用单指令可以读和写两个连续的数据存储单元;
④用单指令可以在读一个数据存储单元的同时,向另一个存储单元进行写操作。分为:
单操作数寻址:
用来完成存储单元中16位单数据的读写操作。
指令格式:



位倒序寻址:
实现过程:
① 根据FFT算法进行转换,按转换顺序将X(0)、X(8) 、X(4)、…、 X(15)的转换结果存入数据存储器。
② 按照位码倒序的方法寻址,可将乱序的转换结果进行整序输出。

双操作数寻址:
用于完成执行2次读操作或者1次读和1次的并行存储操作(用‖表示)。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。
两个数据存储器操作数由Xmem和Ymem表示。 

指令格式:


(6)存储器映像寄存器寻址

C54x共有8条指令可以进行MMR寻址。
LDM   MMR,dst    ;将MMR加载到累加器
MVDM  dmad,MMR   ;数据存储器向MMR传送数据
MVMD   MMR,dmad  ;MMR向指定地址传送数据
MVMM   MMRx,MMRy ;MMRx向MMRy传送数据
POPM   MMR        ;将数据从栈顶弹至MMR
PSHM   MMR        ;将MMR数据压入堆栈
STLM   src,MMR   ;累加器低位存入MMR
STM    #lk,MMR   ;长立即数lk存入MMR

MMR寻址特点:
    ① 寻址速度快,对MMR执行写操作开销小;
    ② 可直接利用MMR的名称快速访问数据存储空间的0页资源;
    ③  只能寻址数据空间的0页单元。   
用途:主要用于不改变DP、SP的情况下,修改MMR中的内容。  

(7)堆栈寻址

堆栈:当发生中断或子程序调用时,用来自动保存PC内容以及保护现场或传送参数。
C54x的堆栈是向低地址生长,并由16位堆栈指针SP管理。SP总是指向栈顶。  
堆栈寻址:利用SP指针,按照先进后出的原则进 行寻址。
当进栈操作时,SP先减小,然后数据进入堆栈;当出栈操作时,数据先出栈,然后SP增加。  
出栈操作时,数据先出栈,然后SP增加:

采用堆栈寻址的指令:
PSHD   Smem   ;将Smem中的数据压入堆栈
PSHM   MMR    ;将MMR中的数据压入堆栈
POPD   Smem   ;将数据从栈顶弹至Smem中
POPM   MMR    ;将数据从栈顶弹至MMR中

2、TMS320C54x的指令表示方法

C54x的助记符指令是由操作码和操作数两部分组成。在进行汇编以前,操作码和操作数都是用助记符表示。


指令系统中的符号和缩略语:




C54x的指令系统共有129条基本指令,由于操作数的寻址方式不同,由它们可以派生多至205条指令。

装载指令:


存储指令:


条件存储指令:
根据条件将源操作数存入目的存储器,共计4条指令。


END


社区话题




本期讨论:

8年老兵离职回老家,薪资打骨折。成都老哥有房无贷,丢了工作在想怎么开启下一程。夏天就要过去了,今年明显感受到不缺人,各家根本不招人啊,你们是不是也感受到了“寒意”?坛友所在的城市和行业又如何?

所有参与者将获得:20个 E币

优秀回答将获得:300个E币

欢迎加入工程师职场群

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
单片机的一些面试题整理
linux内核编程入门(二) —— 计算机体系结构及汇编
计算机组成原理第十一讲 指令系统(科大)
ARM寻址方式小结
计算机体系结构 第2章 指令系统的设计(1)
第二章_微机处理器结构
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服