文献标识码:A
文章编号: 0258-7998(2010)07-0101-04
三维大地电磁勘探技术是以面元为单位,多分量采集站为中心,多远参考、互参考和密集布点为特征来获得高质量的采集数据[1]。野外施工时,为了保持站点间同步地进行数据采集,一般采用GPS秒脉冲信号或恒温晶振的定时信号来同步各个采集站点。前者在恶劣的施工环境下常会因为各种干扰而发生跳变,同步效果并不理想。后者长时间存在频率漂移,同样无法维持长时间的同步采集。
为解决以上问题,本文将GPS授时信号用于校准各站点的压控晶振,之后再使用晶振分频得到定时信号来同步各采集站点。这样不仅克服了GPS授时信号易受外界干扰的缺点,也解决了晶振频率随时间漂移的问题,能获得较为理想的同步信号。为了使本地晶振长时间地同步于GPS系统,就需要不断测量GPS授时信号与本地晶振的分频信号的时间间隔[2],再根据测量数据来校准和同步本地晶振。因此,时间间隔测量的准确性是保证频率校准系统工作性能的关键。本文基于FPGA集成度高、高速和高可靠性的特点,介绍了晶振频率校准系统在FPGA中的设计方法。系统的特点是使用FPGA内部进位逻辑构造延迟线来实现时间间隔测量,大大提高了测量分辨率,同时使用FPGA嵌入式软核处理器PicoBlaze对系统状态进行监控,并对测量数据进行滤波处理,充分发挥了FPGA的集成优势。
1 系统设计
1.1 系统实现方案
系统的原理如图1所示,主要由GPS接收模块、FPGA测控模块、D/A转换模块和压控恒温晶振4部分组成。GPS接收模块用于输出标准的1-pps脉冲信号,FPGA测控模块用于测量本地晶振分频信号与1-pps信号的时间间隔,并将所测值在PicoBlaze中进行处理得到晶振输出频率相对于GPS系统的频率偏差,最后将结果作为D/A转换模块的输入得到修正本地晶振频率的控制电压。
1.2 测量原理
时间间隔在FPGA中的测量的原理如图2所示,使用1-pps秒脉冲信号与本地晶振分频得到的100 kHz信号进行比对,得到的时差即是待测的时间间隔。由于只采样两者的上升沿间的时间间隔,所以用100 kHz分频信号代替1 Hz秒信号与1-pps比对,可以减小每次的测量值,方便数据处理。需要注意的是晶振相对于1-pps的时差范围必须在100 kHz信号的一个周期内,即该信号的频率决定了测量量程的大小,可以根据实际测量需要来决定该信号的频率。
图2中T是待测的时间间隔,τ1是计数时钟周期,M是计数器在1-pps信号到来时的计数值,N是计数器在100 Hz信号到来时的计数值,nτ2是由于1-pps脉冲上升沿和计数时钟上升沿不一致所引起的测量误差,这部分误差由内插延迟线来测量。由于100 kHz信号由晶振分频得到,它和计数时钟同步,所以不会产生测量误差。因此,待测的时间间隔可以表示为:
1.3 延迟线模块的设计
为了在短时间内校准本地晶体振荡器,使之与GPS系统同步,必须提高时间间隔的测量分辨率,在设计中使用了时间内插技术。其基本原理是利用多个延时单元构造延迟线,待测信号在延迟线中的传播信息便可以用来进行时间间隔测量[3]。延迟线的实现主要依赖于内插延迟单元延时的均匀性,内插延迟单元的单位延时决定了时间间隔测量系统的分辨率。在FPGA中实现时间内插,关键是在其结构的基础上利用内部已有资源构造出延迟线[4-6]。
在XILINX公司FPGA的单元结构中,为了实现快速的数学运算设置了许多专用的进位逻辑资源。这些进位逻辑的延时很小,而且它们之间可以相互连接组成进位线,可以使用这种专用的进位线作为延迟线来实现时间内插[7]。如图3所示,设计中使用了Spartan-3系列的FPGA中专用的进位逻辑逐个连接组成延迟线,一个进位逻辑由查找表(LUT)、专用选通器(MUXCY)和专用异或门(XORCY)三部分构成。其总体结构上类似一个多位二进制加法器,两个输入的各位分别被置为1和0,进位信号没来时加法器各位均为1。当进位信号到来时就会沿着进位线一级一级地传输,加法器每一位输出值的变化就代表着信号的延迟信息,时钟前沿到达时就可以将这些信息锁存入触发器中。图4是在一个时钟周期的仿真中延迟线单元输出经过的延迟单元的个数,进行直线拟合后的结果为:
所以延迟线单元的测量分辨率约为1/8.257 4=0.121 ns.
1.4 计数器模块的设计
图5简单描述了计数器模块的基本构造。在计数器模块的设计中,使用了Spartan-3系列的数字时钟管理器,主要目的是将晶振时钟信号倍频后作为计数器的工作时钟,保证时钟周期小于延迟线的总延时。根据时序仿真所确定的延迟线单元的测量分辨率及长度参数,将晶振频率倍频为200 MHz。
时钟前沿附近计数器输出为亚稳态,如果1-pps信号恰好在这个时刻到达,便会将错误的计数值锁存。为了解决这个问题,模块中使用数字时钟管理器输出相位差为180°的两路时钟,分别驱动两个计数器同时工作,这样无论任何时刻都能保证其中之一的输出为正确值,之后再对两者进行判断选择。选择信号由延迟线单元提供,通过统计1-pps信号经过延迟单元的个数来确定1-pps信号与时钟前沿的时差,然后输出select信号。
两个计数器进行循环计数,每个计数器都连接着两组寄存器,其中一组将GPS秒脉冲信号作为工作时钟;另一组的时钟信号与对应计数器的时钟相连接,且其使能端与100 kHz分频信号相连。当GPS秒脉冲和100 kHz信号到来时,便会将计数值送入相应的寄存器组。这样可以充分利用FPGA的全局时钟资源,使相应的寄存器组都使用同一时钟,保证寄存器触发的同步性。此外,使用循环计数的方式也解决了传统起停型计数器由于启动和停止信号不满足建立保持时间而造成计数器输出错误的问题。当1-pps信号与100 kHz信号的前沿都到达后,中断单元将输出中断信号,用于通知PicoBlaze软核读取测量结果。
1.5 PicoBlaze软核设计
PicoBlaze是XILINX公司设计的8位微控制器软核,可以嵌入到Cool Runner II、Virtex-E、Virtex-II(Pro) 和 Spartan3(E)的CPLD以及FPGA中,设计灵活方便[8]。PicoBlaze的端口总线提供8位地址(PORT_ID)和读写选通信号,最多可以实现256个输入和输出端口。接口设计如图6所示,PicoBlaze用来接收延迟线模块和计数器模块输出的结果,同时读取异步串行控制器(UART)的数据和状态信息。其中异步串行控制器直接调用XILINX的IP核,与外部GPS模块进行串行通信。
此外,为了实现对测量数据的存储以方便数据处理,PicoBlaze连接了一个FIFO数据缓冲,用于暂存未处理的测量数据。如图7所示,PicoBlaze每个读写操作需要两个时钟周期,此期间地址总线一直处于有效状态,而读写使能信号仅在第二个时钟周期开始有效,所以地址总线上可以连接适当的逻辑电路进行地址解码。
设计中使用四路选通器分别连接计数器模块、延迟线模块和FIFO缓冲的输出,其中因计数器模块中采用16位的计数器循环计数,为了与PicoBlaze输入匹配,须将计数值分两部分接到选通器。异步串行控制器的输出和状态信息分别接到三路选通器,剩余一路连接四路选通器的输出。由于UART和PicoBlaze使用的时钟频率和测量部分不同,为了提高数据传输的可靠性,在选通器之间增加了流水线寄存器。
系统运行时PicoBlaze将对UART状态进行查询,当检测到有GPS串码数据时便开始读取其串码信息。GPS串码信息用于分析当前GPS的状态,如果检测GPS模块已经锁定卫星,则系统开始进行测量和校准工作。
2 测量数据处理
根据测量到的时间间隔数据,按照公式:
可以计算出晶振信号相对于GPS的频率偏差,其中T1和T2分别是测量部分相隔采样时间τ前后输出的时间间隔测量值。根据频率偏差的大小,再结合晶振的压控灵敏度,便可以实现对晶振的输出频率进行控制和修正。但GPS信号在传输过程中容易受到外界影响,GPS模块输出的1-pps信号是一个波动信号,其短期稳定性较差。图8的黑色曲线是使用本系统测量得到的本地晶振相对于GPS系统的时间间隔曲线,使用这些数据计算得到的频率偏差也会受到影响而发生波动,所以不能直接使用。
从式(4)可以看出,计算频率偏差仅仅需要窗口的端点处的测量值而不受窗口内的测量值影响。在实际应用时,计算量很小而且简单,方便使用PicoBlaze软核处理器来实现。PicoBlaze连接的FIFO数据缓冲用来存储滑动窗口中的测量数据。当存储达到预设的窗口长度时,将从FIFO中顺序读取出先前的测量值,配合当前测量值,根据式(3)计算出频率偏差。图8的白色曲线是添加滤波处理后系统输出的时间间隔,对比可以看出滤波对抖动和较大的跳变点都有很好的抑制作用。
本文介绍的晶振频率校准系统利用GPS模块输出的标准秒脉冲信号对本地晶振频率进行校准。本设计基于FPGA内部进位逻辑资源实现了高分辨率的时间间隔测量单元,并配合滑动平均滤波法利用PicoBlaze处理器对测量的时间间隔数据进行实时处理。不仅能够准确地测量本地晶振分频信号与GPS秒脉冲信号之间的时间间隔,而且降低了GPS秒脉冲波动对测量结果的干扰,为校准晶振频率提供可靠的修正数据。此外,系统测控部分完全在FPGA中实现,利于提高测量分辨率,减小系统体积,提高系统运行的稳定性。本系统不仅可以用于大地电磁三维采集站,还可以在其他对频率准确度有要求的仪器中使用。
参考文献
[1] 何展翔. 非地震勘探技术的进步与发展趋势[J].石油地球物理勘探, 2000,35(3):354-361.
[2] 孟庆杰,徐建芬,姜雪松. GPS基频率标准的计量校准[J]. 宇航计测技术,2007,27(5):16-21.
[3] 潘继飞, 姜秋喜, 毕大平. 基于内插采样技术的高精度时间间隔测量方法[J]. 系统工程与电子技术, 2006,28
(11):1633-1636.
[4] SZPLET R, KALISZ J, SZYMANOWSKI R. Interpolating time counter with 100 ps resolution on a single FPGA device[J]. IEEE Trans.Instrum.Meas,2000,49(4):879-883.
[5] 孙杰, 潘继飞. 高精度时间间隔测量方法综述[J]. 计算机测量与控制, 2007,15(2):145-148.
[6] WU J, SHI Z, WANG I Y. Firmware-only implementation of time-to-digital converter in field programmable gate array[J]. Proc. IEEE Conf. Rec. NSS., 2003(1):177-181.
[7] SONG J, AN Q, LIN S B. A high-resolution time-to-digital converter implemented in field programmable gate arrays[J]. IEEE Trans. Nuclear Science, 2006, 53(1):236-241.
[8] TORRES D A, PEREZ D V. A PicoBlaze-based embedded system for monitoring applications[J]. Conielecomp Conf, 2009:173-177.