TMS3206(以下简称F206)是TI公司生产的定点DSP芯片TMS320C2XX系列中的一个成员,F206提供了一个4.5K字的片内存储器,片内存储器操作比外部存储器具有更高的抗干扰能力、更低的价格和更低的功耗。此外,F206片内还集成了32K字的闪速存储器,当系统断电后,闪速存储器内容仍保持不变,加电后又可使用。F206的这些特点使得到了广泛的应用。
在电力故障录波器的设计中使用了TMS320F206,主要目是是利用它较强的数据处理能力,对电力线路的电压、电流信号进行连续的16点FFT运行(采集点数为64点/周期),计算出基波及各次谐波含量以便更准确地进行故障启动判断。系统主要由数据采集及逻辑控制、F206(DSP)、硬件监控电路、数据通信接口等部分构成。为了满足数据存储及处理的需要,还在F206外扩展了64K字的数据存储RAM(四片IDT71256高速RAM芯片)。
电力故障录波器的设计关键在于保证对电力故障信号及时准确的记录,系统对实时性的要求相当高。此外,由于变电站、发电厂环境中的电磁条件十分复杂,加之系统运行的时钟频率较高,极有可能产生干扰和被干扰现象。有鉴于此,为了保证系统运行的实时性和稳定性,必须非常小心地进行复位及抗干扰设计。
下面就结合基于TMS320F206的故障录波器的设计体会,详细探讨DSP复位的特点、对系统运行的影响和需要注意的问题。
1 几种复位方式的讨论
对于TM320F206而言,复位是不可屏蔽的外部中断(中断矢量地址0000H),随时可用它外F206置于一种已知状态。复位是优先级别最高的中断,一般在加电后芯片处于未知状态时对其复位。因为复位信号终止存储器操作并初始化各硬件状态位,所以每次复位后系统应重新运行初始化程序。
在严格的意义上,F206的复位源只有一个,即复位引脚RS产生一个低电平脉冲信号,使芯片复位。为使系统在加电后能正确工作,RS端的低电平有效时间至少需要6个时钟周期;F206锁存复位脉冲并产生足够长的内部复位脉冲以确保芯片复位;在RS上升沿后16个周期,芯片完成对硬件的初始化并从0000H单元开始执行第一条指令,通常这里是一条分支到系统初始化程序的跳转指令。
虽然F206严格意义上的复位源只有一个,但根据对复位源的不同操作,F206的复位又可以分上电复位、硬件监复位、软件复位等几种不同的方式。
1.1 上电复位
前面已介绍过,对于TMS320F206数字信号处理器而言,为使芯片初始化正确,一般应保证复位端(RS)低电平至少持续6个时钟周期,即当时钟为20MHz时为300ns。但在上电后,系统的晶振往往需要几百毫秒的稳定期,一般为100ms~300ms。根据这一特点,可以使用如图1中所示的上电复位电路。
1.2 硬件监控复位(看门狗)
由于TMS320F206的工作时钟频率较高,加之故障录波器的工作环境电磁干扰比较严重,为保证设备的正常运行,必须设置硬件监控功能。
F206芯片中并没有内置看门狗功能,所以只能使用外部硬件监控电路。在有些DSP的相关设计资料中经常推荐使用MAX706硬件监控芯片,这种芯片具有时间长达1.6s的看门狗定时器功能,这具备上电复位和电源监控功能。
但是,根据我们的设计经验和对系统运行的仔细分析,使用MAX706等类似的许多硬件监控芯片存在两个需要注意的问题。第一,看门狗定时器的时间过长,MAX706的典型时间为1.6s,也就是说,当DSP中的程序运行产生错误时,MAX706的典型时间为1.6s,也就是说,当DSP中的程序运行产生错误时,MAX706要在1.6s(相当于80个工频周期)后才能发出复位信号。第二,监控芯片输出的复位信号脉冲宽度过大,MAX706的典型值为200ms(相当于10个工频周期),这主要是为了兼顾上电复位时对晶振100ms~300ms稳定期的要求。因此,从程序运行产生错误到DSP芯片完成复位,将有共1.8s的非受控时间,这对实时性要求很高的电力故障录波器来说是不能忍受的,如果在此期间电网发生故障,录波器将无法作出正确的反应。很显然,必须寻找一种具有合适看门狗定时器时间和复位脉冲宽度的硬件监控芯片。
在这里,必须明确对看门狗定时器时间的选择条件。在程序设计中,为了保证硬件监控效果,不宜过多地设置对看门狗芯片的操作,一般应在程序循环的关键部位设置一至两处对看门狗芯片的触发。所以,看门狗定时器的时间只要大于一个需时最长的程序循环即可。在基于F206的故障录波器中,需时最长程序循环包含一个16点的FFT运算,整个程序循环的总时间小于2ms。
由此看来,硬件监控电路的看门狗时间只要大于2ms即可满足要求,过长的看门狗时间是不必要的,对保证装置的实时性也是十分不利的。
根据以上标准,我们选用了MAX6374监控芯片,其看门狗定时器时间可以通过外部引脚ST2、ST1、ST0的逻辑电平进行精确调节,其引脚电平与看门狗定时器时间的关系如表1所示。
在对MAX6374监控芯片的触发操作时,为了保证程序的紧凑和监控的有效,不宜采用在一处发脉冲的方式,而应该在程序的一点发出高电平,然后在另一点将电平变低,如此循环复地触发看门狗定时器。在此将看门狗定时器时间调节在3ms。
MAX6374的复位脉冲宽度为1μs,相当于20个DSP时钟周期(系统采用20MHz有源晶体振荡器),完全满足F206的复位要求。
MAX6374监控芯片没有上电复位和电压监控功能,需要另外设计上电复位电路。
1.3 软件复位
除了使用硬件监控功能外,在DSP系统的设计中,为了确保程序运行的准确可靠,还经常使用软件复位,即在程序开始时在内存中的特定位置设置标志,在程序循环或运行的重要位置检测标志,若标志发生改变,则判断系统因干扰或其它原因造成内存中数据错误,进而发出软件复位指令使系统复位,以免造成运行错误。
具体在故障录波器的设计中,我们在片内数据RAM和片外数据RAM中设置了若干检测标志,在每次程序循环时都对标志进行检查。若片外数据RAM中的检测标志发生变化,则认为片外数据RAM受到了干扰而产生错误;若片内数据RAM中的检测标志发生变化,则认为DSP芯片也受到了干扰而产生错误。实际经验表明,片外RAM受干扰发生错误的概率远大于DSP芯片受干扰时的情况。
但是,在TMS320F206的指令中,并没有软件复位指令,那么如何实现软件复位功能呢?在设计中,我们可以利用程序指令NMI触发不可屏蔽中断NMI进行复位操作,注意此时应该将芯片的NMI引脚通过上位电阻接至电源正端,以防止意外的中断。
在这里有两种利用NMI中断产生软件复位的方法:第一种是NMI中断矢量处或者中断服务程序中放置一条无条件跳转指令,使程序重新从0000H或指定的程序空间地址开始运行,但此时不影响芯片的任何模式也不中上正在工作的指令和存储器操作。很显然,这种软件复位并非真正意义的的复位操作,而只是进行程序初始化。这种方法适用于仅外部数据RAM被干扰时的情况。
第二种方法是将F206芯片的外部输出引脚XF引至芯片的复位输入端RS,在NMI中断服务程序中将XF端置零以产生硬件复位信号(这里需要特别指出的是,XF端的芯片复位期间及复位后状态为1)。显然,此时芯片的复位操作与上电复位相同。这种方法适用于内部数据RAM被干扰时的情况。
综上所述,可以将几种在DSP运行时产生复位的方式列表比较,如表2所示。
在程序设计中综合采用以上几种复位方式,完整的系统复位原理图(包括电复位)如图1所示。
图中,在F206的复位端(RS)接一个或门的主目的是为了将几种低电位的复位信号隔离起来,不至于互相影响。
2 进一步的说明
(1)在基于TMS320F206的电力故障录波器设计中综合使用了本文中讨论的复位方法,其目的是在电磁干扰比较严重的工作条件下尽量保证装置运行的实时性和可靠性。但是,在一般的DSP系统设计时可以有选择地加以运用,而非需要全部使用到。实际上,在许多情况下,只要工作环境不是十分恶劣,并且印制板和软件设计合理,DSP系统不采用外部硬件监控也可以非常稳定地工作。
(2)虽然本文中的讨论是围绕TMS320F206展开的,但其思想也适用于TMS320F2XX和TMS320F24X两个系列的其它型号的DSP。需要指出的是,主要用于控制领域的TMS320F24X芯片中自带了硬件监控电路而不需要外加。
(3)选择看门狗定时器时间必须充分考虑到程序设计中的中断嵌、查询等待、外部低速器件(如液晶显示屏)等影响程序完成一个循环所需时间的各种因素并留有余量,否则会产生意外的看门狗复位,具体时间应由试验决定。在设计初始阶段最稳妥的办法是在监控芯片的时间选择端设置拨位开关,以便根据实际情况进行选择。