3 寻址方式及指令系统
3.0 引言
本章主要介绍三部分内容;寻址方式、流水线机制、指令系统。熟悉寻址方式有利于提高编制程序的效率,特别是有利于程序算法的设计;流水线机制是DSP**率、高速运行的原因之一,尤其在编写程序时应当注意。
需说明的是'C54X的指令系统中的指令有两种表示形式,一种是类似于汇编语言的助记符形式(方便起见,本书后面将统称汇编),另一种是类似于**语言的代数形式。其指令系统较一般的单片机指令系统复杂,有许多需要特别注意的指令用法.尤其是涉及流水线操作和两次读/写的指令。更应该与芯片的硬件操作状���配合。以免产生错误结果,'C54X共有指令216条,其中进行两次存储器操作指令26条,并行运算操作指令工3条。
另外,由于硬件乘法器及桶行移位寄存器可以进行乘法,滤波及数字信号处理等单指令复杂运算,对于大多数数字信号处理程序来说使用方便、有效。
3.1 寻址方式
指令的寻址方式是指当硬件执行指令时,寻找指令所指定的参与运算的操作数的方法。不同的寻址方式为编程提供了极大的柔性编程操作空间,可以根据程序要求采用不同的寻址方式,提供程序的时间和代码效率。'C54X有七种寻址方式,包括立即寻址、**寻址、累加器寻址、直接寻址、间接寻址、存储器映像寄存器寻址和堆栈寻址。
(1)立即寻址
立即寻址的指令是双字节指令,**个字节是操作码,第二个字节是立即操作数。因此,操作数就是放在程序存储区内的常数。
例如:
LD #10,A
表示将立即数1O(前面加井,以区别于地址表示方法)送入累加器A,这里的数字工。是指令代码的一部分。因此,立即寻址的操作数在程序运行中不能改变,故常常用于程序的初始化部分.另外,立即寻址方式中的立即数有两种数值形式:3、5、8、9位短立即数和工6位长立即数。它们在指令中分别编码为单字或双字指令。
2)**寻址
**寻址方式的指令中包含的是所寻找操作数的工6位单元地址。这些地址可以用其所在单元的地址号或16位符号常数表示。由于指令中的**地址是16位,所以,**寻址指令长度至少为2个字节。 目前,很多高校的专业课程都增设了《DSP原理与应用》这门课程。本书将以TMS320(25402为主,面向高年级大学生,系统地介绍TMS320C5000系列 DSP。
现在介绍TMS320C5000的书很多,那么为什么还要编写本书?主要因为现在很多DSP书籍面向的读者是以本科及以上学历的学生为主,没有考虑到学生的知识背景进行编写,从而导致一些学生一谈到DSP就厌烦,DSP原理与应用》在很多高校里只是作为知识结构更新和课程设置更新的标志,从而使很多学生学完之后,要么对DSP一知半解,要么畏之如虎,并没有真正地理解和应用DSP。其次,许多书籍只是先介绍DSP的结构原理,再介绍DSP的应用案例,在介绍的时候往往只给出分析结果,没有给出“所以然”,这样一来,书中介绍的内容就没有实际的指导作用。造成了对DSP精通者不屑阅读此类书籍,不懂者看了似乎懂,一旦进行实际操作还是模棱两可。再者,DSP器件以高速数字运算为主要特征,所以它在应用时对电磁兼容性等指标的要求较高。学习者一般没有实际工程经验,很难画出PCB图,所以DSP在学生的印象中不如单片机那么直接,就更谈不上积累经验了,即使开设实验也是一些验证性的实验。本书的编写就考虑到上述的问题,争取汲取其他书籍的优点,突出DSP的特点,用简单的语言来引导那些想涉足DSP领域的人员,告诉他们What is DSP?What t0 do andhow to do。希望本书能成为一把钥匙,让你顺利地开启DSP开发的大门。
对于DSP的初学者而言,学习DSP这门课需要做到如下几点:
(1)坚持 坚持就是胜利!获取任何知识都是艰难的,做任何事情都需要努力。万事开头难,学习DSP也一样,但是只要能够坚持就能够成功。
(2)多问 学习的工程就是解决问题的过程,所以在学习的过程中,一定要多问自己为什么。为什么DSP能完成这些任务?为什么DSP内部这样进行设计?为什么算法这样进行设计?你要不断地问自己怎么样才能有学习的动力,只有不断地解决为什么,才能够获得知识。所有的问题也可以用实践来回答。
(3)多交流 一定要多和其他的。DSP学习者进行充分的交流,也许其他人对DSP有不同的理解方式,有不同的应用方式,或者在学习过程中有不同的心得体会。也许你百思不得其解的问题,别人已经详细地说明了原因,这样做能够节省你大量宝贵的时间和精力,当然*好你也要把自己的心得说出来,不是完全是为了帮助别人,也许别人能够发现你的学习体会中的问题。