基于CTMU的精确时间测量方法的分析
非常精确的时间测量应用于大量的工程实践中,传统方法是通过提高控制器的运行速度来提高测量的精确度,该方法提高了产品的成本和电流消耗,同时测量精度也受限于控制器的指令速度。利用CTMU模块,并配合使用A/D转换器,可以实现用低成本的控制器得到高精度的测量时间,测量的精度可以达到1纳秒。
一、引言
“Charge Time Measurement Unit”简称CTMU,是充电时间测量单元模块,该模块是一种灵活的模拟及数字模块,具有一个可配置的恒流源和一个围绕它而构造的数字电路。CTMU 可用于脉冲之间的时间差测量,以及异步脉冲生成。通过与其他片上模拟模块配合使用,CTMU 可用于高分辨率时间的测量。该模块具有以下主要特性:
(1)片上精确电流源;
(2)16个边沿输入触发源;
(3)边沿或电平敏感输入选择;
(4)每个边沿源的极性控制;
(5)边沿顺序控制;
(6)边沿响应控制;
(7)高精度时间测量;
(8)与系统时钟异步的外部或内部信号的延时;
(9)集成的温度检测二极管;
(10)自动采样期间的电流源控制;
(11)4个电流源范围;
(12)时间测量分辨率为1ns或更低;
(13)休眠模式下的CTMU 操作。
CTMU的内部功能框图如图1所示。
图1 CTMU框图
二、CTMU工作原理
CTMU的工作方式是使用恒流源来对电容进行充电,充电电压和充电时间之间满足线性关系。这种情况下,由A/D读取的电压可以代表从电流源开始对电路进行充电到停止充电经过的时间。简单来说,在电路中测量的电荷(以库仑为单位)定义为:电流(I,以安培为单位)乘以电流流动时间(t,以秒为单位)。电荷也可以定义为:电容(C,以法拉为单位)乘以电路的电压(V),如公式(1)所示。
CTMU 模块提供了一个已知的恒定电流源。A/D转换器用于测量公式中的电压(V),剩下两个未知量电容(C)和时间(t)。公式(2)可用于计算电容或时间,方法是通过使用公式(3)中所示的关系和电路的已知固定电容,或通过使用公式(3)中所示的关系和电流源施加于电路的固定时间。
三、恒流源
CTMU的核心是精确电流源,作为提供用于测量的恒定基准。使用时可以从3 个数量级的电流档中选择电流值,并可以按±2% 的增量(标称值)对输出进行微调。电流范围通过IRNG<1:0> 位(CTMUICON<9:8>)进行选择,值01代表最小电流,03代表最大电流。电流微调通过ITRIM<5:0> 位(CTMUICON<15:10>)进行。通过这6个位可以按大约每步2%的步阶微调电流源,其中一半的范围用于正向调整电流源,另一半用于负向调整电流源。值000000 是中性位置(无变化)。值100000代表最大负调整(大约-62%),011111 代表最大正调整(大约+62%)。
四、边沿/电平选择和控制
通过在模块的两路输入通道中发生的边沿或电平事件控制CTMU开始和停止充电。每路通道(称为边沿1和边沿2)可以配置为接收来自16个边沿输入引脚之一的输入脉冲。使用EDG1SEL和EDG2SEL位对(CTMUCON2<5:2> 和<13:10>)选择输入。此外,边沿1和边沿2的输入源的模式可以为电平敏感或边沿敏感,它使用EDG1MOD位(CTMUCON2<15>)来选择。除了电流源之外,还可以使用EDGE1POL和EDGE2POL位(CTMUCON2<14>和CTMUCON2<6>)配置每路通道的事件极性。还可以对输入通道进行过滤以选择边沿事件顺序(边沿1在边沿2之前发生),方法是置位EDGSEQEN位(CTMUCON1<10>)。
五、边沿状态
CTMUCON2 寄存器还包含两个状态位:EDG1STAT和EDG2STAT(CTMUCON2<9:8>)。它们的主要功能是显示在相应的通道中是否发生了边沿响应。当在通道中检测到边沿响应时,CTMU会自动将相应位置1。输入通道的电平敏感或边沿敏感特性也意味着,如果通道的配置发生改变,那么状态位会立即置1,并且与通道的当前状态保持一致。(www.xing528.com)
模块使用边沿状态位来控制到外部模拟模块(如A/D转换器)的电流源输出。只有在EDG1STAT不等于EDG2STAT时才会向外部模块提供电流,在EDG1STAT等于EDG2STAT时将会关闭电流。这使CTMU可以测量两个边沿事件之间的时间。在两个状态位都置1后,必须先将它们清零,然后才能进行另一次测量。如果可能,两个位应同时清零,以避免重新使能CTMU电流源。
除了可以由CTMU硬件置1之外,边沿状态位也可以用软件置1。也就是说,用户可以在应用程序中手动使能或禁止电流源。将其中任意位一置1(但不是同时置1)即可使能电流源。将两位同时置1或清零即可立即禁止电流源。
六、精确时间测量
使用CTMU的边沿触发引脚(CTEDn),测量的时间的精度可以精确到小于1纳秒。通过在两个触发引脚的上升沿之间对A/D的采样保持电容进行充电,A/D的转换结果与测量的时间成正比。图2是时间测量时序的示例。基于CTMU的时间测量是和控制器的时钟同步的。外部引脚CTED1上的第一个上升沿启动CTMU的充电,外部引脚CTED2上的第二个上升沿停止CTMU的充电。A/D采保电容上的电压与充电时间成正比。当CTMU充电结束时,它可以自动触发A/D转换并得到A/D转换的结果。
图2 时间测量示意图
要精确测量电容和时间,以及产生的精确延时,需要对CTMU进行校准。如果应用只需要测量电容或时间的相对变化,则通常不需要校准。在时间测量前必须先做一次CTMU校准,校准可以确定斜率的线性度,同时也可以消除电流源的A/D采保电容的偏差。
第1步:给定T1(充电1个TCY),测量得到V1。
第2步:给定T2(充电2个TCY),测量得到V2。
可以确定充电的斜率I/C=(T2-T1)/(V2-V1)=1Tcy/(V2-V1),测量时的充电时间t=ADCBUF*Tcy/(V2-V1).
CTMU时间测量的精度依赖于A/D的转换精度。当使用精度为10位的A/D时,假设I= 55 uA , C=CAD+CPIN=15pF并且A/DVREF=VDD。如果VDD=3.0V,那么1个A/D计数为 3.0/1024 = 2.93mV。CTMU时间测量的精度是T=(15pF/55uA)*2.93mV=0.799nS。由此可以看出,时间测量的精度小于1纳秒是可实现的。
同时,有很多方法可以用来提高时间测量的精度。
(1)降低A/D转换器的参考电压VREF,如使用外部的2.5v作为参考电压。降低VREF电压意味着减小每个A/D计数所表示的电压。时间测量的精度将会提高到T=(15pF/55uA)*(2.5/1024)=0.666nS。
(2)使用内部的A/D转换器(没有外部的引脚连接)。有很多型号的控制器的CTMU模块可以使用内部集成的A/D,而不使用外部A/D,这就不需要连接外部引脚。这样可以消除寄生电容的影响来提高测量精度。电容越小,精度越高。假定电容为4pF,时间测量精度为T=(4pF/55uA) *(3.0/1024)=0.213nS。
(3)使用外边高精度的A/D。提高A/D转换器的精度可以直接提高测量的精度。使用外部16位A/D,即使电容达到30pF。时间测量的精度T=(30pF/55uA)*(3.0/ 65536)=24.9pS。
七、动态测量范围
对于时间测量而言,除了测量精度外,动态测量范围也是一个非常重要的指标。动态测量范围受限制于总的电容值、充电电流和A/D的最大输入电压。
假定使用10位的A/D(1024个计数值),充电电流I=55uA,电容C=CAD+CPIN+CSTRAY=15pF,那么时间测量的精度为T=(15pF/55uA)*2.93mV=0.799nS。那么,可以得到动态范围是0.799nS*1024A/Dcounts=818nS或者(15pF/55uA)*3.0v=818nS。
对于一个给定的系统,时间测量的动态范围和测量精度是负相关的,提高测量的精度将会降低测量的动态范围。
当测量的时间长于1纳秒时,需要扩展动态测量范围。利用控制器的定时器等外设,可以在不损失测量精度的情况下扩展测量的动态范围。把CTMU和输入捕捉,输出比较或定时器结合起来可以测量较长的时间。定时器利用控制器的指令周期TCY时间可以提供粗分时间(如在16MIPS下,1个TCY为62.5纳秒),而CTMU可以测量细分时间。测量的总的时间等于粗分时间加细分时间。
图3示例了如何使用CTMU和ICAP模块测量一个较长的时间。测量的时间T=TCY*(8002–2) +(T1–T2)=500微妙+(T1-T2)。使用输入捕捉模块,时间测量的动态范围扩展到了数百毫秒。
图3 使用CTMU测量较长的时间
八、总结
CTMU模块具有很高的性能,并易于配置和使用, 和A/D配合使用,可以用来做高精度的时间测量,并达到小于1纳秒的时间精度,应用十分广泛。
【参考资料】
[1]Padmaraja Yedamale and Jim Bartling.See What You Can Do with the CTMU,2011.
[2]Bruce Bohn.DS79324 Charge Time Measurement Unit Reference Manual,2011.
[3]Lehman Lance.Applications Using CTMU,Microchip MASTERs Conference,Chandler,Phoenix,AZ,2010.
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。