您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术TMS320C2XX开发设计中应注意的问题(二) 正文
TMS320C2XX开发设计中应注意的问题(二)

TMS320C2XX开发设计中应注意的问题(二)

点击数:7196 次   录入时间:03-04 11:49:50   整理:http://www.55dianzi.com   DSP/FPGA技术

3软件设计与调试 

哈佛结构、流水线操作再加上集成电路的优化设计,使得DSP芯片的指令周期为ns级,快速的指令周期可使DSP芯片能够实时实现许多应用。但在实际的程序设计中,DSP芯片的这些特点却给程序设计者带来了许多意想不到的麻烦。下面是编程与调试时应注意的一些问题。 

3.1 流水线冲突 
F206采用四级流水线操作,指令流水线由一系列总线操作组成,它具有四个独立的操作阶段:取指、译码、取操作数和执行。由于四个操作阶段是独立的,因此这些操作可以交叠地进行,在任意的指定周期内,1到4个不同的指令均可有效,各条指令均处于一个不同的完成阶段,因此,流水线冲突是不可避免的。通常情况下,发生流水线冲突时,编程者可通过调整程序语句的次序或在相应位置插入一定数量的NOP来解决。 

3.2 设置等待状态寄存器 
对高速DSP而言,它的读操作从地址稳定到数据有效仅需几十ns的时间,而DSP外设的速度则参差不齐。为了解决高速DSP与低速外设在速度上的冲突,在高速的DSP与存储器等外设的接口之间,等待状态的设计是一个关键的问题。若DSP不能与外设很好配合,则会导致程序执行结果出错。F206内置一个软件可编程等待状态寄存器(WSGR),通过设置WSGR,可分别为片外存储器和I/O端口设置CPU的等待时间。


在程序调试过程中,若程序随机运行或仿真软件调试窗口出现“Time out waiting for devICe”红色告警字样,而程序流程没有问题,则可能是DSP与外部慢速器件配合不正常,此时应重新设置等待状态寄存器,增加CPU等待外设的时间。由于例程 [2]中WSGR值均为0000h,容易产生误导,使初学者误以为在任何情况下WSGR值均为 0000h。笔者在调试程序时,曾遇到这个问题,后来不断调整WSGR的设置,终于使程序能够正常执行。在具体应用中,程序设计者应根据实际用到的片外资源设置WSGR的值,切忌盲从。 
3.3 保留区域 
编程时应注意本设计中程序、数据存储器配置的地址映射,切记不能向任何保留地址写数据,否则将造成处理器的不可预测操作。F206程序存储器地址 FE00H-FEFFH(片外)为保留地址,数据存储器地址0000H-005FH、0080H-01FFH、0200H-02FFH (CNF=1时)和0400H-07FFH均为保留地址。 

3.4 中断资源 
F206中断资源丰富,其0000H-003fH地址单元对应中断向量空间,每个中断矢量均为一条转移指令,该指令要求4个8bit字,因而中断向量空间可容纳32个中断矢量。对于程序设计中没有用到的向量空间,应填零以防意外。F206不支持中断嵌套,当它响应了某个硬件中断时,会自动将其中断标志位和中断允许位INTM置1(INTM为1,禁止所有中断),但在中断服务程序结束后不会自动将二者清零。因此,在中断服务程序结束前,应先将这两个标志位清零,否则DSP将无法正常响应中断。注意,DSP中向标志位写入1才能对标志位清零,并且应先清除中断标志位,然后再对中断允许位INTM清零。 

若某一中断客观存在,而程序中又无相应的中断服务程序,则会导致程序紊乱。如在中断屏蔽寄存器(IMR)中将异步串行口的传送/接收中断打开,此时若异步串行口控制寄存器(ASPCR)把传送或接收中断屏蔽,此时仍会产生该中断,只是写入异步数据发送和接收寄存器(ADTR)或读ADTR的值为零,因而编程时也应对该中断处理,而不能只是简单地清除其中断标志位和中断允许位后返回。笔者曾因这个问题耗时多日,程序调试总不能得到正确的结果,后编写了相应的中断服务程序后,再进行调试终于得到了正确结果。 

NMI中断可用做软件复位,但因为中断矢量仅仅是一条转移指令,因而它既不中止存储器操作也不初始化状态位。如果要求DSP重新对外围器件设置,则利用NMI软件复位不能满足要求。根据实际,设计了一个利用NMI中断硬件复位DSP的电路(图1)。




本文关键字:开发  DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术