- 1、本文档共223页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章DSP的软件结构 3.1 C55xx寻址模式概述 C55x支持3种寻址模式,能灵活地访问数据存储器、存储器映射寄存器、寄存器和I/O空间。 绝对寻址模式:指令里有一个地址的全部或部分完成寻址。 直接寻址模式:使用地址偏移量寻址。 间接寻址模式:使用指针完成寻址。 3.1.1 绝对寻址模式 1. K16绝对寻址模式 K16绝对寻址模式:用称为DPH(扩展数据页寄存器的高段)的7-bit寄存器,和一个16-bit无符号常数构成一个23-bit数据空间地址。该模式可以访问存储器或存储器映射寄存器。 2 k23绝对寻址模式 k23绝对寻址模式:指定一个23-bit无符常数作为全地址。使用该指令要将常数编码成3byte,作为指令的扩展部分(丢弃3byte扩展的最高位)。因为这个扩展部分的存在,使用这种寻址模式的指令不能和其他指令并行执行。 该模式可以访问存储器或存储器映射寄存器。 3 I/O绝对寻址模式 I/O绝对寻址:指定一个16bit无符号数作为I/O地址。 该模式可以访问I/O空间 3.1.2 直接寻址模式 1) DP直接寻址: 使用DPH指定的主数据页,与数据页寄存器(DP)连接。 该模式可以访问存储器或存储器映射寄存器。 DPH和DP的连接称为扩展数据页寄存器(XDP)。 2) SP直接寻址 SP直接寻址:使用SPH指定的主数据页,与数据堆栈指针(SP)连接。 该模式用来访问数据存储器的堆栈值。 注意: CPL=0 DP直接寻址模式 CPL=1 SP直接寻址模式 3) 寄存器bit直接寻址 该寻址模式里,操作数里的偏移值@bitoffset是从该寄存器里的最低bit(LSB)偏移。例:如果bitoffset是0,则正在寻址一个寄存器的最低bit。如果是3,则在寻址寄存器的第3bit。 这些指令只能访问的寄存器的bits:累加器AC0~3,辅助寄存器AR0~7和暂时寄存器T0~3 4) PDP直接寻址 当一条指令使用该模式寻址时,9bit外设数据页寄存器(PDP),在512个外设数据页(0~512)里选择一页。 要访问某一页的第一字,指定偏移为0即可。 3.1.3 间接寻址模式 1 AR间接寻址 2 双AR间接寻址 3 CDP 间接寻址 4 系数间接寻址 使用C语言编程,为何还要讲述汇编(Assemble)呢? 虽然C语言能完成95%以上的代码,但可以肯定地说,DSP编程中不可避免要用到汇编,主要有以下几种情况: 1)有些场合对代码实时性要求比较高,此时C语言难以满足。而汇编能发挥出DSP的极限,程序员常常通过汇编来编写实时性高的代码。 2)C语言无法保证严格的时序性要求,相对而言,汇编则较容易实现。比如,汇编很容易实现先启动定时器1,100ns后再启动定时器3。 3)C语言存在无法控制到的盲区。比如,C55XX内部有些寄存器并没有地址(如含有可屏蔽中断位“INTM”的状态寄存器ST0、ST1等),只能通过汇编指令来访问这些寄存器,此时C语言是束手无策的。 4)在调用_c_int0函数建立C语言环境前,编写一些特殊的程序,比如关闭看门狗 使用C语言开发应用程序的优缺点 优点: -易于开发和维护。由于用C语言书写接近自然语言,其可读性强、利于理解,在编制、修改、实现算法方面比用汇编语言开发容易。 -可移植性强。 -不容易发生流水线冲突。编译器能提供完善的解决流水线冲突的结果。 -有大量现存的算法可利用。 -适用于人机界面的开发。 缺点: -代码量大。 -程序效率较低。 -优化代码存在一定困难。 综上所述,我们一般用C语言设计应用程序的总体框架、解决人机接口和对速度效率要求不太高的复杂算法。 使用汇编语言开发应用程序的优缺点 优点: -更能发挥系统特点。由于汇编语言掌控系统硬件的能力强于C语言,设计出来的程序更加贴近硬件特性,往往能将硬件效能发挥到极致。 -代码精练,效率高。用汇编语言设计的程序,代码短、不容易产生冗余。 -代码量小。 缺点: -可读性差。不利于复杂算法的开发和实现。 -可移植性差。 -容易产生流水线冲突。由于排除冲突需要靠人来辅助完成,这要求编程人员有较为丰富的开发经验和对硬件工作机制的深刻理解。 何时使用混合编程技术 -当程序中需要操作与硬件密切相关的设备,而用C语言较难实现时。比如:在中断程序设计时需要设置中断向量表,向量表中空间有限用C语言语句有困难,且需向量表要在内存中精确定位,这时可将设置中断向量表的部分用汇编语言代替。 -当需要绕开C编译器的规定,进行特殊操作时。比如:C语言规定,程序不能访问程序代码区,而系
文档评论(0)