基于数字锁相环的晶振频率同步模块设计
扫描二维码
随时随地手机看文章
摘 要: 为满足现代通信技术、雷达技术、电子测量以及光电应用领域对高稳定度高准确度时钟的要求,设计了一种基于数字锁相环的晶振同步系统。系统以基于FPGA数字延迟线的高分辨率鉴频鉴相器以及在MicroBlaze核中实现的卡尔曼数字环路滤波器为核心,通过16 bit DAC微调本地晶振振荡频率,使其同步于GPS秒脉冲,从而获得了高准确度高、稳定度的本地时钟。
关键词: GPS;FPGA;频率校准;延迟线;卡尔曼滤波器
现有的射频频率源大多采用恒温晶振作为频标,以获得比较好的频率短期稳定度,但是恒温晶振的长期稳定度不能保证,存在累积误差,需要定期校准。本设计利用GPS秒脉冲没有累计误差的特点,通过测量本地晶振与GPS秒脉冲的频率以及相位误差,将误差进行卡尔曼滤波后送入PI调节器,并将得到的误差转为DAC的输入值来调整本地晶振的输出频率,从而获得一个长期与短期稳定度都很好的频标[1]。该模块的alce主要在FPGA内部实现,降低了规模,便于其集成于与其他通信、测量系统中。
1 系统设计
系统总体设计方案如图1所示,其中GPS接收模块可以输出由GPS信号中的秒脉冲信号。在FPGA模块中,实现了一个由计数器和数字延迟线构成的高精度鉴频鉴相器和一个由卡尔曼滤波以及PI控制器构成的数字环路滤波器。DAC模块将环路滤波器的输出转换为对晶振频率的控制量,从而构成一个数字锁相环。在环路锁定的情况下,本地振荡器的振荡频率即可与GPS星载原子钟保持严格同步。
2 电路设计
2.1 高精度鉴频鉴相器的设计
在传统的鉴相器设计中,通常只是利用一个计数器对输入信号进行计数,受到电路的工作频率限制,其精度大约在10 ns量级。由此产生的量化误差,将对系统的准确度造成很大影响。为了达到1e-10甚至更高的准确度,就需要提高时间测量的精度。在以往的设计中,通常采用专用TDC芯片测量,但其成本高,对PCB设计很敏感。为此,本系统在采用计数器进行粗测量的同时,利用Xilinx公司的FPGA内部的高速进位资源,构建了一个数字延迟线,实现了100 ps量级的细测量,即在FPGA内部实现了一个TDC单元,从而降低了频率量化对系统准确度的影响。另外,从相位噪声的角度分析,提高鉴相器的量化位数,也可以有效地降低量化噪声对系统相位噪声的影响。
由于秒脉冲的时间相对测量精度比较长,为了实现大范围的测量,设计中采用了鉴频鉴相器测量GPS秒脉冲与本地振荡器的偏差。如图2所示,其中由100 MHz时钟驱动的粗计数器实现了频率的测量,而由数字延迟线构成的鉴相器,可以测量远小于一个时钟周期的相位误差。
如图2,同步器的功能是将异步的秒脉冲信号与时钟同步,作为计数器的同步置零输入,由两级D触发器的级联构成,用于保证时序裕量可以让潜在的亚稳态可能性降到最低,即保证当触发信号在时钟信号的保持建立窗口中到达时,可以让触发器有足够时间恢复到稳定状态。计数器为一个同步置零计数器。为了在大约1 s的时间内对100 MHz时钟进行计数,计数器的位宽被设计为27 bit。
数字延迟线则是用于测量同步触发信号与异步秒脉冲之间的时间差,是本测量模块的关键。为了实现高精度时间测量,本系统采用了一种基于抽头延迟线的方法,其中延迟线由多个延迟单元组成,每个延迟单元都有相同的传输时延τ。通过采样初始脉冲在线路中传播时线路的状态,利用内插法,完成对两个触发脉冲时间间隔的测量,从而获得秒脉冲与本地振荡器的相位差。
在FPGA中,有乘法器、比较器、加法器,可以将专用进位连线连接成进位链。由于加法器实现简单,可以清晰地显示出进位信号的逻辑关系。因此加法器是最适合实现延迟线内插器的方案。
为实现对输入信号的时间内插,就需要使待测信号沿进位链传播。串行进位加法器的表达式如下:
Sum=A⊕B⊕Cin
Cout=AB+(A+B)Cin
如图3所示,设置输入A为全1,输入B最低位为待测量信号,其余为0。当外部信号输入为0时,加数的最低位为0,所有输出都为1,进位链上没有信号。当外部输入变成1时,B的最低位变成1,这时最低位输出0,进位信号变为1,进入进位链传播。输入信号沿进位链传播的同时,也被逐级延时,这时,加法器的输出中0的个数,代表了输入信号经过的延迟单元的个数。这样,就实现了对输入信号的内插。
可以看出,从加法器的输出中可以获得需要的延迟信息,这就需要在加法器的输出端每一位后加一个锁存器,用以测量结束时保存进位链的状态。在本设计中锁存器的时钟端需要严格同步,这样采集到的信息才有意义,才能代表时间延迟信息。同时,在锁存器的时钟信号即结束信号的保持建立窗口中,加法器的输出会发生改变,会带来亚稳态的问题。为了解决这个问题,本设计在第一个锁存器之后又加入两个由工作时钟驱动的锁存器构成的同步器。
本设计中最关键之处是利用进位链实现延迟线的布局与布线。以Spartan 3系列FPGA为例[2],CLB是FPGA内的基本逻辑单元,每个CLB都包含一个可配置开关矩阵,此矩阵由4个输入、一些选型电路(多路复用器等)和触发器组成。 开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。
一个CLB由4个相同的SLICE组成。SLICE中的进位逻辑包括一个进位专用多路复用器和一个进位专用异或门组成。 进位逻辑的延时在CLB中和相邻的CLB中都有专用连接,这些连接的延迟几乎为零。这就为利用进位链构成内插延迟线创造了条件。
在Spartan3系列FPGA中,CLB中的左侧两个SLICE的CIN/COUT直接与垂直相邻的CLB中左侧的两个SLICE的COUT/CIN相连,右侧亦然。以Spartan3系列的XC3S200 FPGA为例,该FPGA共有24行20列共480个CLB,1 920个SLICE,故FPGA上在最大情况下共可配置40个96 bit的进位链。