TMS320C2XX开发设计中应注意的问题
2008-10-29
作者:黄红兵 殷小贡 沈文光 任治国
摘 要: 以TMS320F206为例,阐述了TMS320C2XX系列DSP芯片硬软件设计中应注意的问题。着重探讨了硬件设计、流水线冲突、中断资源、闪速存储器" title="闪速存储器">闪速存储器的使用等几个重点问题。
关键词: TMS320F206 流水线 中断 闪速存储器
高速数字信号处理器是当前信息产业的热点技术之一,采用最先进的DSP无疑会使所开发的产品具有更强的市场竞争力。与普通的MCU相比,DSP芯片放弃了冯·诺依曼结构,采用程序存储器" title="程序存储器">程序存储器总线和数据存储器" title="数据存储器">数据存储器总线分开的改进的哈佛结构,独立的程序和数据存储器空间允许同时存取程序指令和数据,因而大大提高了处理速度。在改进的哈佛结构的基础上,DSP芯片广泛采用流水线操作以减少指令执行时间,从而进一步增强了处理器的数据处理能力,非常适合于实时数字信号处理,但同时也给设计者带来了高频干扰和流水线冲突等诸多问题。
TMS320C2XX系列DSP芯片结构资源相似,开发工具相同,因而其开发设计具有很高的可比性。TMS320F206(以下简称F206)是TI公司TMS320C2XX系列的一款高性价比定点DSP,目前已广泛应用于图形图像处理、语音处理、通信及仪器仪表等领域。由于DSP的开发、应用方式与普通的MCU差异很大,因此探讨其开发设计很有必要。笔者在进行以DSP为核心的产品开发中,遇到了很多意想不到的麻烦。本文总结了笔者开发F206时的几点心得,希望对正在和即将进行TMS320C2XX系列DSP开发的同仁们有所帮助。
1 TMS320F206简介
F206是100引脚的TQFP(正方扁平)封装,它主要具有如下特点:
(1)处理能力强。若时钟采用20MHz晶振,则指令周期为50ns,运算能力高达20MIPS。DSP芯片采用静态CMOS集成工艺制作,采用四级流水线操作,其先进的哈佛结构允许对数据与指令的操作同时进行,因而大大提高了数据的吞吐率和指令的执行速度,特殊的DSP指令系统提供了功能强大的数字信号处理操作。
(2)片内具有32K×16位的闪速存储器和4.5K×16位的RAM。利用闪速存储器存储程序,不仅降低了成本、减小了体积,同时系统软件升级也非常方便;大容量的片内RAM可满足大多数设计要求,无需扩展片外存储器,既降低了成本又使硬件设计十分简洁。
(3)地址映射分为4个可独立寻址的空间:
·64K字程序存储器,包含程序执行所用的指令和数据。
·64K字本地数据存储器,保存指令所用的数据。
·32K字全局数据存储器,保存与其它处理器共用的数据,或者用作额外数据空间。本地数据存储器的上端32K字(8000h-FFFFh)地址空间可用作全局数据存储器。
·64K字的输入/输出(I/O)空间,与外部外围接口,并且包含片内外围寄存器。
(4)资源丰富。F206具有1个同步串行口SSP、1个异步串行口ASP、1个软件可编程定时器(TIMER)以及大量中断资源和独特的JTAG接口等。由于与目标系统之间采用了JTAG逻辑扫描电路接口(基于IEEE1149.1标准),在仿真时不占用硬件资源,且可随时终止仿真察看CPU内部及外设的工作情况,使得程序的调试和查错十分方便。通过JTAG端口可向片内Flash串行下载程序,无需专门的编程器(XDS510仿真器即具有编程功能),进一步减少了开发成本,便于开发设计和产品的软件升级。
2 硬件设计与调试
2.1 硬件设计时应注意的问题
F206硬件设计时,应重点注意以下几点:
(1)时钟电路。DSP时钟可由外部提供,也可由板上的振荡器提供。但一般DSP系统中经常使用外部时钟输入,因为使用外部时钟时,时钟的精度高、稳定性好、使用方便。由于DSP工作是以时钟为基准,如果时钟质量不高,那么系统的可靠性、稳定性就很难保证。因此,若采用外部时钟,选择晶振时应对其稳定性、毛刺做全面的检验,以便DSP系统可靠地工作。
(2)复位电路" title="复位电路">复位电路。应同时设计上电复位电路和人工复位电路,在系统运行中出现故障时可方便地人工复位。对于复位电路,一方面应确保复位低电平时间足够长,保证DSP可靠复位;另一方面应保证稳定性良好,防止DSP误复位。
(3)在DSP电路中,对所有的输入信号必须有明确的处理,不能悬浮或置之不理。尤其要注意的是:若设计中没用到不可屏蔽硬件中断NMI,则硬件设计时应确保将其相应引脚拉高,否则程序运行时会出现不可预料的结果;若设计中用到NMI,也应在程序正常执行阶段置其相应引脚为高电平。
(4)模拟电路与数字电路应分开布置,独立布线后应单点连接电源和地,避免相互干扰。
(5)DSP、片外程序存储器和数据存储器接入电源前,应加滤波电容并使其尽量靠近芯片电源引脚,以滤除电源噪声。另外,在DSP与片外程序存储器和数据存储器等关键部分周围建议布上地网,以减少外界干扰。
(6)片外程序存储器和数据存储器应尽量靠近DSP芯片放置,同时要合理布局,使数据线和地址线长短基本保持一致。对于DSP系统而言,应选择存取速度与DSP相仿的外部存储器,不然DSP的高速处理能力将不能充分发挥。DSP指令周期为ns级,因而DSP硬件系统中最易出现的问题是高频干扰,因此在制作DSP硬件系统的印制电路板(PCB)时,应特别注意对地址线和数据线等重要信号线的布线要做到正确合理。布线时尽量使高频线短而粗,且远离易受干扰的信号线,如模拟信号线等。
当DSP周围电路较复杂时,建议将DSP及其时钟电路、复位电路、片外程序存储器、数据存储器制作成最小系统,以减少干扰。笔者曾在这个问题上花费大量时间和精力,由于干扰严重,DSP根本无法正常工作。后将DSP及其时钟电路、复位电路、片外程序存储器和数据存储器制成最小系统,主要信号线通过金手指与其它相应电路相连,结果DSP系统运行正常。
2.2 硬件调试时应注意的问题
在硬件调试前,应先对电路板进行细致的检查,观察有无短路或断路情况(由于DSP的PCB板布线一般较密、较细,这种情况发生的概率还是比较高的)。加电后,应用手感觉是否有些芯片特别热。如果发现有些芯片烫得厉害,需立即掉电重新检查电路。排除故障后,接着就应检查晶体是否振荡,复位是否正确可靠。然后用示波器检查DSP的CLK-OUT1和CLK-OUT2引脚的信号是否正常,若正常则表明DSP本身工作基本正常。
2.2.1 保证电源的稳定可靠
在DSP硬件系统调试前,应确保给实验板供电的电源有良好的恒压恒流特性。尤其要注意的是,DSP的入口电压应保持在5.0±0.05V。电压过低,则通过JTAG接口向Flash写入程序时,会出现错误提示;电压过高,则会损坏DSP芯片。由于电源电压过高,笔者曾有过一个上午烧坏3块DSP的惨痛经历。另外,由于在调试时要频繁对实验板接电和断电,若电源质量不好,则很可能在突然上电时因电压陡升而烧坏DSP芯片。这样既会造成经济损失,又将影响开发进度。因此,在调试前应高度重视电源的选择,同时在调试过程中应经常检查电源是否正常。
2.2.2 利用仿真软件" title="仿真软件">仿真软件排除硬件故障
在完成对电路板的检查后,就可通过仿真软件来调试程序。由于仿真时,程序代码下载到目标系统中的片外程序存储器,因而通过仿真软件可以比较容易地检查出一些硬件故障。
在上电后,若仿真软件调试窗口始终无法调入程序,则有两种可能:(1)DSP芯片引脚存在断路或短路现象;(2)DSP芯片损坏。倘若是第一次利用仿真软件调试程序,此时应对实验板断电,仔细检查DSP芯片各引脚的焊接情况。如果软件调试窗口曾正确调入程序,则可能是DSP芯片损坏。此时,可通过检测实验板的整板阻抗进一步判断DSP芯片是否受损。若整板阻抗急剧下降,可将给DSP芯片供电的电源线割断,检测DSP芯片的电阻。正常的DSP芯片的电阻为MΩ级,若被测芯片电阻明显低于该值,则可断定DSP芯片已被烧坏。
如果软件调试窗口可调入程序,但调入的程序局部出错,如对片外程序存储器或数据存储器操作的代码变成了.word xxxx,此时可能是片外程序存储器或数据存储器出现故障。应仔细检查存储器是否存在短路或虚焊,若不存在则应进一步判断存储器是否受损。本人曾遇到上述现象,后经仔细检查,发现存储器有引脚虚焊。
3 软件设计与调试
哈佛结构、流水线操作再加上集成电路的优化设计,使得DSP芯片的指令周期为ns级,快速的指令周期可使DSP芯片能够实时实现许多应用。但在实际的程序设计中,DSP芯片的这些特点却给程序设计者带来了许多意想不到的麻烦。下面,笔者将根据自身的实际经验介绍编程与调试时应注意的一些问题。
3.1 流水线冲突
F206采用四级流水线操作,指令流水线由一系列总线操作组成,它具有4个独立的操作阶段:取指、译码、取操作数和执行。由于4个操作阶段是独立的,因此这些操作可以交叠地进行;在任意的指定周期内,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的值为零,因而编程时还要对ADTR进行读或写处理,而不能只是简单地清除其中断标志位和中断允许位后返回。笔者曾因这个问题耗时多日,程序调试总不能得到正确的结果,后编写了相应的中断服务程序后,再进行调试终于得到了正确结果。
NMI中断可用作软件复位,但因为中断矢量仅仅是一条转移指令,因而它既不中止存储器操作也不初始化状态位。如果要求DSP重新对外围器件设置,则利用NMI软件复位不能满足要求。根据实际,笔者设计了一个利用NMI中断硬件复位DSP的电路,如图1所示。
在NMI中断服务程序中,DSP给PO6口一个正脉冲即可使DSP复位,但应注意新增电路中的RC时间常数应小于DSP原有复位电路的RC时间常数,以免影响DSP正常复位。
3.5 数据页DP
在所有程序中必须初始化DP。初始化DP非常重要,复位不能初始化DP,并且上电时,DP是不确定的。没有初始化DP的程序就不能正确执行。另外,在编程时应注意:①DSP对片内存储区的访问比片外存储区要快,因此应将经常使用的数据分配至片内存储空间,以提高数据处理速度。②尽可能采用直接寻址的寻址方式,这样可在提供较大数据访问能力的同时,提高指令速度。这种寻址方式具有128字的寻址能力,但寻址范围是指定DP下的128字。当程序复杂特别是有中断存在的情况下,改变DP的值很容易造成程序的混乱。基于此考虑一般将DP的值固定不变,尽可能合理地在各功能模块间分配这128个高效且使用方便的存储单元。应特别注意的是,如果DP的值不为零,在对IFR、IMR等操作时,应先将DP的值置零,在操作完成后再将DP的值还原,这是因为IFR、IMR的地址都是DP为零的相对地址。另外,在中断程序入口如果使用直接寻址方式保存状态寄存器的值,那么在中断返回之前装载所保存的值时,也应先将DP的值设成零,否则程序将无法正常运行。
3.6 内置闪速存储器(Flash)
F206的一个显著优势是具备32K×16位的片内闪速存储器,它具有可擦除、可编程和非易失电源等特点。在复位期间,通过将MP/MC置为低电平可选择闪存。利用JTAG接口向目标系统下载程序包括:Flash的清零(clear,所有位清零)、擦除(erase,所有位置1)及编程。其片内Flash由两块相对独立的16KB Flash组成,因而每次清零、擦除需对两块16KB Flash分别进行。F206运算速度有20、28.5和40MIPS,但程序代码成功烧录进片内Flash的前提条件是其工作于20MIPS,否则程序无法烧录进DSP。另外应将NMI中断相应引脚拉高,否则由JTAG将程序代码烧录进Flash时会出现错误提示,使烧录无法完成。
笔者在调试程序时曾遇到这样的情况,程序在仿真时可以正常运行,烧录到Flash后却无法运行了。原因是上电时DSP外围芯片复位时间长于DSP的启动时间,后来尝试着在程序初始化之前插入一段延时(约为几十ms),重新烧录后程序执行正常。
DSP技术的发展越来越成熟,DSP的应用也日益广泛。了解和掌握DSP技术,并应用DSP技术开发新一代高科技产品十分必要。本文介绍的DSP开发中应注意的几个问题,可以大大缩短开发时间,仅供读者参考。
参考文献
1 张芳兰.TMS320C2XX用户指南.北京:电子工业出版社,1999
2 TMS320C2XX User’s Guide·USA:TEXAS INSTRUMENTS,1997
3 张雄伟,曹铁勇.DSP芯片的原理与开发应用.北京:电子工业出版社,2000
4 王念旭.DSP基础与应用系统设计.北京:北京航空航天大学出版社,2001