采用MXT5611的高精度可配置定时电路
在工业控制、家电应用、民用爆破、武器引信等领域,利用到很多时间类控制事件,这些时间类控制控制事件需要用到不同功能的定时器电路,这些时间控制事件要求的定时长度各不相同,需要的定时器数目也不一样,针对不同的应用领域,定时的进制、定时方式也不尽相同。在某些应用中,可能会利用到多个时间事件,但是时间长度不是很长,而别的应用中却是单个时间事件,但是要求时间长度很长。也有可能某些应用中定时方式是要求总共定时多长时间,而别的应用中要求定时方式为从某一时刻到另一时刻。总之,应用领域的不同,对定时电路的要求也不尽相同。这就要求定时器电路具备一定的配置功能,已满足该定时器电路在不同领域的应用。
本文设计的定时电路具备以下配置能力:时间长度、定时方式、定时进制、定时器的启动、定时达到后输出、数据通信方式等主要可配置项。
图1 可配置定时电路原理框
电路内嵌128×16 B 容量EEPROM存储阵列,把需要处理的数据做为一个最小项,把EEPROM空间按地址顺序分为8个16×16 B存储窗口。其中固定一个窗口为功能配置信息存储窗口,其余窗口为定时数据存储窗口。功能配置信息中设置一个“有效定时数据存储窗口”控制字,可以把一些常见固定的定时出具写入EEPROM某些窗口中,如果需要进行某种固定的定时时,只需要把功能配置字中““有效定时数据存储窗口”控制字进行改写,即可立即进行需要的定时功能。EEPROM与寄存器组映射关系如图2。
电路在上电后,由上电引导模块把EEPROM中的配置信息载入到功能寄存器组中,再根据功能寄存器组配置状态(主要指“有效定时数据存储窗口控制字)把相应的定时数据载入到定时寄存器组中。完成上电引导过程后,可由DATAin进行电路配置更改和定时数据更新等功能,确认配置方式和定时数据无误后,可以通过电路定时启动端口发送启动电平脉冲或者由DATAin发送定时器启动祯来启动内部定时器,三个定时器可以同时或者分时启动,可根据控制需要进行启动。
定时器配置
表1 定时器配置字
表1为定时器配置字,电路内每个定时器对应都对应一个定时器配置字,这样,可以根据应用定时要求,对三个定时器进行任一定时器的配置。同时要说明的是,定时器的启动方式配置和输出脉冲控制所定义的信号类型基本一致,这样就可以实现启动一个定时器定时完毕后立即启动另一个定时器的定时功能。
电路内含三个16位定时器,三个16位定时器之间进行一定规律的级联,以构成更大定时范围的定时器。配制方式如下图:
级联公式: 这样,电路可通过配制C0、C1、C2来使定时器实现不同方式的组合。当然,当C0、C1、C2都为1时,定时器电路将无外部时钟输入,此时电路不具备定时功能。
其中定时器0和定时器1的组成基本一致,以五个触发器(其中4个触发器处理正常计数功能,一个触发器处理进位、置数使能)作为“定时单元”,四个“定时单元”构成16位定时器,通过对“定时单元”定时过程中置数使能的产生和置数值的设定来设置不同的定时状态(如十进制定时则“定时单元”在从9减到0这个过程的下一个时钟周期为置数周期,产生置数使能信号,同时置数值设定为1001;而如果是六进制定时则“定时单元”在从5减到0这个过程的下一个时钟周期为置数周期,产生置数使能信号,同时置数值设定为0110。其他进制的定时过程同理。)通过对4个定时单元的不同设置,可产生全十进制定时方式,二进制定时方式,六十进制定时方式(应用于北京时间的分、秒处理)、二十四进制定时方式(应用于北京时间的小时处理)、三十进制定时方式(应用于北京时间的日处理,因为没有“0天”这种说法,故该处理需要在定时单元的结构上增加一个判定)。
在此结构上,如果需要增加新的定时进制处理,只需要对置数rom逻辑进行增加即可。
定时器T2的设计是针对北京时间二进制表示的定时设计,同时具备基本的二进制定时。它主要处理北京时间小时级及小时以上的数据处理。做为基本二进制定时时,它可单独使用,也可以与定时器T0和定时器T1做级联使用。当它需要处理北京时间二进制表示高位信息处理时,和定时器T1组成32位定时器,定时器1处理“秒”、“分”信息,定时器T2处理“小时”、“天”“月”“年”数据。T2+T1的级联方式,主要用于处理从某一时刻到另一时刻的定时方式。
精度控制
电路提供两种可选择时钟源输入:内部集成硅振荡器和外部晶体振荡器输入。电路设计了两种精度控制方法,其一是时基脚准,时基校准就是解决因定时时钟误差引起的定时累计误差的办法。如果我们能得到一个精确的定时时钟,则没有这部分定时误差。但是不管怎么样的校准,始终是无法得到一个完全精确的定时时钟的,我们要做的是最大可能的得到一个精确定时时钟。
其二是定时校正,指在定时过程中,电路根据设定的某一固定值对定时过程进行校正或者接受外部校正信号对定时过程进行校正。这一方法旨在解决引非时钟误差问题引起的定时误差。同时,该校正方法也可以用于解决因时钟规律性偏差所引起的误差问题,比如时钟的温度漂移偏差问题。
硅振荡器的精度调整方法总的来说有两种:模拟方法和数字方法。模拟调整方法主要是在电路中测过程对电路中的电容阵列进行熔丝处理,调整电容值大小,得到一个较为精确的时钟,但是这种方法需要很大的成本,并且调整后的精度范围为1%左右,如果要得到更高精度的硅振荡器,则需要付出更大的成本,并且给电路设计带来很大的挑战。本电路提供一种更高精度的数字调整方法,该方法可以在电路正常工作前对电路进行在线校准,也可以在测试过程中对批电路进行一次性校准。
本电路的时基校准方法是通过外部端口输入标准512ms时间长度,以振荡器输出频率对512ms时间进行采样计数,得出一个计数值。然后把该计数值除以512,得到商值和余数。商值做为1ms时钟的基本长度,然后通过判断再次基本长度上增加或者不增加1个计数脉冲来得到最终的1ms时钟信号,这样每一个1ms输出时钟最大误差为1T(硅振荡器输出时钟周期),而512ms时间最大误差也为1T。上述判断过程以512位周期,即每一个512ms对商和余数做同样的处理。
那么,在不考虑温度等条件的情况下,以该方案得到的时钟进行Nms(N=512X+Y,X=0,1,2,3,……;0≤Y≤511)时间长度定时,最大误差为
(X+Y/4)·T。我们通过分析,可以得出以下几句数据:
438s时间长度定时误差为103T(T为内建振荡器输出时钟周期,当设计值为1us时,此时的定时精度约为2ppm)。
82m时间长度定时误差为104T(T为内建振荡器输出时钟周期,当设计值为1us时,此时的定时精度约为2ppm)。
142h时间长度定时误差为106T(T为内建振荡器输出时钟周期,当设计值为1us时,此时的定时精度约为2ppm)。
在不考虑硅振荡器的温度特性条件下,利用本方法产生时钟进行的定时精度为2ppm,可以等同于压控制式晶体振荡器频率精度的10^(-6)~10^(-5)量级。
本电路给出的定时校正方法主要是用以解决定时过程中因外部环境所引起的定时偏差,或者解决因控制需要而改变定时时间长度的问题。电路在定时过程中,接受外部信号,对定时过程进行实时校正。
图4为定时器的结构示意图,以减计数器为核心,同时接受定时数据和修正数据。定时数据做为减计数器的定时起点,而修正数据主要是用来对进入定时器的定时时钟进行调整。定时器的修正功能模块可以保证,在任何一时刻,处理一帧数据,缓存一帧数据,让进入修正模块处理的数据完成后,缓存器中的数据立刻进入修正模块,而修正总线上的数据进入缓存器。
修正方法是根据外部修正数据的符号位进行增减判断,如果是增长定时过程N个时钟周期,则,在对定时时钟进行N个时钟周期的上升沿磨平处理,如果是缩短N个时钟周期,则在N个时钟周期内,定时器进入双沿触发定时过程。
图5为定时修正波形图,从ADJUST端口输入具体修正时间,图中第一帧为定时增长7个时钟周期,第二帧为定时缩短7个时钟周期。CLKIN为定时时钟,CLKOUT为修正后时钟。T0counter[15:0]为定时器的数据。
根据电路的工作状态,可以把电路分为配置工作状态和定时状态。任意工作状态下,并非所有的模块都处于工作状态下。在设计模块间接口信号时,同时设计模块电源控制信号。在进行配置工作状态下,通信模块和储存单元处于工作状态,而整个定时处理工作模块处于等待状态。在这段时间,定时处理工作模块一直处于清零状态,而且对定时器时钟信号进行锁定不工作。当处于定时状态下,大部分的通信模块及存储单元不会发生数据变化,此时可以关断EEPROM的参考电流源来降低电路功耗。
结论
通过本文的配置方案和精度方案,可以保证电路定时精度在2ppm左右。采用菊花链式配置定时器结构,可以通过简单的配置得到多种定时应用,满足多种控制要求。
评论
查看更多