基于FPGA全新锁相倍频系统的设计
随着数字时代的到来,越来越多的领域采用集成电路来设计电路,FPGA/CPLD等EDA设计更为广大硬件工程师所接受。其模块化设计为设计人员带来了很多方便,节约了系统的开发时间,使设计人员只需要调用这些模块或者IP核,然后组合起来就可以实现一个简单的功能。全数字锁相环(DPLL)就是其中一个典型的例子。然而DPLL在应用时存在很多缺陷,例如锁相时间长、捕捉带窄等。为了避免这些缺点,本文设计了一种全新的相位跟踪倍频系统,有效地改善了DPLL的这些指标,并在项目中得到了良好的应用。
1 全数字锁相环的概念
所谓全数字锁相环路,就是环路部件全部数字化,采用数字鉴相器(DPD)、数字环路滤波器(DLF)、数控振荡器(DCO)构成锁相环路。典型全数字锁相环的结构如图1所示。它采用的鉴相器是导前-滞后型数字鉴相器。鉴相器在每一个周期内得到输入时钟的相位比本地估算时钟相位超前或滞后的信息,这样鉴相器的相位误差输出只有超前或滞后两种状态。将误差相位的超前或滞后信息送到序列滤波器后,产生对DCO的“加”或“减”脉冲控制指令去改变DCO的时钟周期,使本地估算时钟的相位与输入时钟相位靠拢。
环路滤波器采用了K计数器。其功能就是对相位误差序列计数即滤波,并输出相应的进位脉冲或借位脉冲来调整I/D数控振荡器输出信号的相位,从而实现相位控制和锁定。然而相位锁定时间与相位抖动之间是一对矛盾体,K值取得大,对抑止噪声有利,因为K值大,计数器对少量的噪声干扰不可能计满,所以不会有进位或借位脉冲输出。但这样捕捉带会变小,而且加大了环路进入锁定状态的时间。反之,K值取得小,可以加速环路的入锁,但K计数器会频繁地产生进位或借位脉冲,从而导致相位抖动,增大了同步误差,相应地对噪声的抑制能力也随之降低。因此对于一般的DPLL,选择适当的K值很重要。
对于倍频电路,目前大部分都是基于锁相环技术开发的,因此不可避免地也会将锁相环中设计存在的矛盾带入倍频设计中。即使系统倍频的范围很宽,但由于PLL的自身缺陷所带来的频谱纯度差、抖动明显、噪声大等缺点是不可避免的。
2 新方案的提出
近几年来,越来越多的科研机构致力于开发新型的锁相倍频系统,无论在数字还是模拟领域,都有了崭新的突破。在模拟方面,Fordahl开发了一种如图2所示的新倍频模拟方法。该方法在高频和低频段工作良好,同时有效地改善了在锁相环设计中所带来的缺陷。在数字方面,一种全新构架的无类比全数字锁相倍频电路已经由某科研机构研制开发成功,并已经投入使用,其结构如图3所示。该设计完全基于FPGA/CPLD设计开发而成,锁相时间短(只需要一个系统时钟周期tpd的延时),同时具有无类比电路、无抖动、无内部振荡器、功耗低等优点。
本文结合上述两种方法,根据FPGA流水线的操作思想,设计了一种全新的相位锁定倍频系统。在具备上述两个倍频电路优点的同时,增强了倍频的精度,扩大了倍频范围,在系统资源允许的范围内,合理地利用芯片面积与速度的关系,以较少的逻辑单元,设计出高速倍频系统。
3 原理及算法
这种全新相位锁定倍频系统由四大模块组成:同步预处理模块、计数器模块、算法模块、选择输出模块。其结构如图4所示。
3.1 原理
首先,对输入参考时钟(CLK_IN)进行同步处理,对输入信号进行复制,使得输入信号与全局时钟(SYSCLK)达到同步(即使复制后的信号与输入参考时钟存在误差,误差也小于一个SYSCLK周期),然后以SYSCLK为基准对CLK_IN进行计数。如果信号CLK_IN抖动很小或者周期恒定,则以n(n>1)个周期为单位进行计数;如果抖动很大(一般与外部环境及物理因素有关),则以一个周期为单位进行计数,并将计数值作为输入传送给算法模块。算法模块经过一系列算法流程后,得到一个使能信号(/EN)。最后利用建立时间(Tsu)和保持时间(Th)的特性,以使能信号/EN低有效对SYSCLK选择输出,得到所需要的倍频信号。
从PLL倍频的原理出发,输入参考时钟倍频后的频率不可能大于系统时钟频率,因此对输入时钟的倍频问题归根结底就是对系统时钟的分频问题。系统时钟分频后,一方面作为信号输出,一方面作为反馈信号。频率除以N(倍值)后,得到本地估算信号,经过DPLL环路,使之与参考时钟同相,这样就得到了与输入参考时钟的同相N倍频输出信号。从这里可以看出,基于DPLL的倍频电路是系统相位锁定与时钟倍频同时进行的。因此倍频过程中,必然受到DPLL自身因素的制约。而本文设计的倍频系统,系统同步过程和倍频过程是两个独立的过程,相互之间不存在依附关系,因此可以将两个过程分别做优化处理。
(1)锁相问题。可以把它转化为“同步”问题来考虑。同步过程中最重要的概念就是“参照系”,对于锁相环而言,本地估算信号是以输入参考时钟为参照进行运算得来的;而若以系统时钟作为参照,本地复制信号必然与系统时钟同步,且与输入参考时钟同相。这样做的优点是相位锁定快,提高了芯片系统速度(频率)。
(2)倍频问题。既然本地复制时钟是与系统时钟同步的,而一切与系统时钟同步的信号必然与复制信号同步,那么对本地复制信号的倍频问题,就可以简化为对系统时钟的分频问题。例如,假设输入参考信号的频率为64kHz,系统时钟的频率为64MHz,现要求设计一个电路,其输出信号与输入参考信号同相,且频率为9.6MHz时钟。通过运算可得到输出信号是输入参考信号的1 500倍,是系统时钟频率的20/3分频。因此只要设计出20/3分频电路,就可得到输出信号是输入参考时钟1 500倍的倍频信号。其算法思想如图5所示。
3.2 算法
以SYSCLK作为累加器的系统时钟,累加器的位宽根据分频的精度而确定,累加操作在系统时钟的上升沿有效,累加器的初始值为0。因为是20/3分频,所以累加器在时钟的上升沿时增加0.15,同时判断0.15和1的大小,由于0.151,所以/EN=1。在时钟的第二个上升沿到来时,在累加0.15等于0.3后,同时判断0.3和1的大小,由于0.31,所以/EN=1。依此类推,在时钟的第七个上升沿到来时累加器的值应该是1.05,由于1.05>1,所以/EN=0。再将1.05减去1的差0.05作为累加器的初始值进行下次运算,依次进行下去就可以得到/EN信号。
在FPGA的设计中,一般经常用到的是时钟的上升沿,根据FPGA的建立时间Tsu和保持时间Th,虽然在建立时间不能采到SYSCLK的上升沿,但在保持时间却可以采到第八个上升沿。这样就可以得到频率为9.6MHz的输出信号。
- DSP平台的数控逆变中频电源的设计与实现(09-23)
- 基于数字锁相技术的交流采样及其信号处理(11-24)
- 基于变参数PI-ADPLL超声焊接电源的频率跟踪控制(12-15)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)