DIY编程器网

标题: 一种数字信号处理器TMS320F206复位问题的实现 [打印本页]

作者: liyf    时间: 2012-1-16 17:03
标题: 一种数字信号处理器TMS320F206复位问题的实现

                      TMS320F206是TI公司推出的一种DSP芯片,它是基于TMS320C5x之上的高速定点数字处理芯片,具有改进的哈佛结构并行分离的程序和数据总线、高性能CPU及高效的指令集等特点。其主要特性如下:1.CPU具有32位CALU、32位累加器、16×16位并行乘法器、三个移位寄存器、八个16位辅助寄存器。2.存储器具有224K字可寻址存储空间、544字片内DRAM、4K字片内SRAM或32K字片内快闪存储器。3.指令速度为50ns、35ns及25ns单指令周期。4.外围电路有软件可编程定时器、软件可编程等待状态发生器、片内锁相环时钟发生器、同步和异步系列串口。
??? 在电力故障录波器的设计中使用了TMS320F206,主要目的是利用它较强的数据处理能力,对电力线路的电压、电流信号进行连续的16点FFT运算(采集点数为64点/周期),计算出基波及各次谐波含量以便更准确地进行故障启动判断。系统主要由数据采集及逻辑控制、F206(DSP)、硬件监控电路、数据通信接口等部分构成。为了满足数据存储及处理的需要,还在F206外扩展了64K字的数据存储RAM(四片IDT71256高速RAM芯片)。?
??? 电力故障录波器的设计关键在于保证对电力故障信号及时准确的记录,系统对实时性的要求相当高。此外,由于变电站、发电厂环境中的电磁条件十分复杂,加之系统运行的时钟频率较高,极有可能产生干扰和被干扰现象。有鉴于此,为了保证系统运行的实时性和稳定性,必须非常小心地进行复位及抗干扰设计。?
  下面就结合基于TMS320F206的故障录波器的设计体会,详细探讨DSP复位的特点、对系统运行的影响和需要注意的问题。
  1 几种复位方式的讨论
  对于TMS320F206而言,复位是不可屏蔽的外部中断(中断矢量地址0000H),随时可用它将F206置于一种已知状态。复位是优先级别最高的中断,一般在加电后芯片处于未知状态时对其复位。因为复位信号终止存储器操作并初始化各硬件状态位,所以每次复位后系统应重新运行初始化程序。
  在严格的意义上,F206的复位源只有一个,即复位引脚RS产生一个低电平脉冲信号,使芯片复位。为使系统在加电后能正确工作,RS端的低电平有效时间至少需要6个时钟周期;F206锁存复位脉冲并产生足够长的内部复位脉冲以确保芯片复位;在RS上升沿后16个周期,芯片完成对硬件的初始化并从0000H单元开始执行第一条指令,通常这里是一条分支到系统初始化程序的跳转指令。
  虽然F206严格意义上的复位源只有一个,但根据对复位源的不同操作,F206的复位又可以分为上电复位、硬件监控复位、软件复位等几种不同的方式。
  1.1 上电复位
  前面已介绍过,对于TMS320F206数字信号处理器而言,为使芯片初始化正确,一般应保证复位端(RS)低电平至少持续6个时钟周期,即当时钟为20MHz时为300ns.但在上电后,系统的晶振往往需要几百毫秒的稳定期,一般为100ms"300ms.根据这一特点,可以使用如图1中所示的上电复位电路。
?



?
  1.2 硬件监控复位(看门狗)
  看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段 进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
  F206芯片中并没有内置看门狗功能,所以只能使用外部硬件监控电路。在有些DSP的相关设计资料中经常推荐使用MAX706硬件监控芯片,这种芯片具有时间长达1.6s的看门狗定时器功能,还具备上电复位和电源监控功能。
  但是,根据我们的设计经验和对系统运行的仔细分析,使用MAX706等类似的许多硬件监控芯片存在两个需要注意的问题。第一,看门狗定时器的时间过长,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所示。
?



?
  在此将看门狗定时器时间调节在3ms.在对MAX6374监控芯片的触发操作时,为了保证程序的紧凑和监控的有效,不宜采用在一处发脉冲的方式,而应该在程序的一点发出高电平,然后在另一点将电平变低,如此循环往复地触发看门狗定时器。
  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的复位端(

)接一个或门的主要目的是为了将几种低电位的复位信号隔离起来,不至于互相影响。
  2 进一步的说明
  (1)在基于TMS320F206的电力故障录波器设计中综合使用了本文中讨论的复位方法,其目的是在电磁干扰比较严重的工作条件下尽量保证装置运行的实时性和可靠性。但是,在一般的DSP系统设计时可以有选择地加以运用,而非需要全部使用到。实际上,在许多情况下,只要工作环境不是十分恶劣,并且印制板和软件设计合理,DSP系统不采用外部硬件监控也可以非常稳定地工作。
  (2)虽然本文中的讨论是围绕TMS320F206展开的,但其思想也适用于TMS320F2XX和TMS320F24X两个系列的其它型号的DSP.需要指出的是,主要用于控制领域的TMS320F24X芯片中自带了硬件监控电路而不需要外加。
  (3)选择看门狗定时器时间必须充分考虑到程序设计中的中断嵌套、查询等待、外部低速器件(如液晶显示屏)等影响程序完成一个循环所需时间的各种因素并留有余量,否则会产生意外的看门狗复位,具体时间应由试验决定。在设计初始阶段最稳妥的办法是在监控芯片的时间选择端设置拨位开关,以便根据实际情况进行选择。
            




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2