一种基于FPGA的全数字锁相环设计
扫描二维码
随时随地手机看文章
引言
数字锁相环中的数字环路滤波器是由模数为K的可逆计数器构成。锁相环中可逆计数器的模数K越小,系统响应越快,捕捉时间越短;反之,K越大,系统响应越慢,捕捉时间越长。数字环路滤波器的作用在于提高环路相位校正的准确性,减少噪声对环路的干扰。虽然,在捕捉过程中K值较小,有利于加快锁定速度,缩短捕捉时间。但在环路锁定后的同步过程中,若K值太小,则会因可逆计数器频繁地循环计数而产生持续的进位脉冲或借位脉冲,这就会导致输出信号出现相位抖动,从而增加同步误差。显然,减少同步误差与缩短捕捉时间是相互矛盾的,其矛盾的焦点在于对可逆计数器K值的选择。
为了解决上述矛盾,本文设计了一个自动变模控制器,它可以根据输入、输出信号的相位误差,实时控制模数K值的大小。因为在环路捕捉过程中,减少K值,可增加环路带宽,使锁定速度加快;而在同步过程中,增大K值,可缩小环路带宽,有利于抑制相位抖动,减少同步误差。
1 系统结构与工作原理
本锁相环设计的系统框图如图1所示,由图可见,本系统主要由数字鉴相器、数字环路滤波器、数控振荡器及自动变模控制器四个模块构成。
本文的自动变模锁相环工作原理如下:
当环路失锁时,由数字鉴相器会比较输入信号ui和输出信号uo之间的相位差异,并产生数字环路滤波器的计数方向控制信号ue。
数字环路滤波器是由模数为K的可逆计数器构成的。K变模可逆计数器可根据计数方向控制信号ue调整计数值,当ue为低电平时做加计数,ue为高电平时做减计数。当计数值达到K时,产生一个进位信号carry作为加指令,当计数值为0时,产生一个借位信号borrow作为扣指令。
相位控制器由控制脉冲变换电路和门控电路组成。它的功能是确保当收到“加”指令时,在本地高速时钟f0序列中插入一个脉冲,当收到“扣"指令时,则在f0序列中扣除一个脉冲。相位控制器输出的受控本地高速时钟序列经除M分频后,便可对输出信号u0的相位进行调整。
重复上面调整过程,可使M与S的相位差不断减少,最终达到同步。
2 数字锁相环的VerilogHDL实现
本系统采用VerilogHDL进行硬件电路的设计。首先是根据系统中各功能模块的要求分别设计环路各个部件的逻辑电路,并进行仿真验证。然后,再将各部件组合起来进行系统设计和仿真。程序设计共包括6个模块。分别为主模块、鉴相器(单D触发器)模块、K变模可逆计数器模块、自动变模控制器模块、相位控制器模块和除M计数器模块。
2.1 主模块
主模块即顶层模块,一般由五个模块组成,分别为鉴相器模块(pd),K变模可逆计数器模块(kcounter),自动变模控制器模块(m_change),相位控制器模块(idcounter)和除M计数器模块(f_divi-sion)o顶层模块是一个全局设计,是自顶向下设计方法中的顶层设计。
2.2 鉴相器模块
鉴相器模块采用单D触发器。鉴相器模块的输出14反映着输入信号Vi与输出信号u.之间的相位关系。
2.3 自动变模控制模块
该模块可以根据输入ui、输出uo信号的相位误差来实时控制模数K值的大小。
自动变模控制器模块能够在锁相过程中,根据量化相位误差的大小来准确、自动地调节模数K值的变化,实现对环路带宽的实时控制,大大提高锁相速度,消除缩短捕捉时间与减小同步误差之间的矛盾。
2.4 K变模可逆计数器
K变模可逆计数器模块中计数容量K的大小对于加快相位调整、减少捕捉时间影响很大。K取得小,“加”、"扣”脉冲控制信号产生的频率就高,对相位的调整速度加快,使得环路锁定时间缩短。反之,K取得大,“加”、"扣”脉冲控制信号产生的频率较低,就会使环路锁定时间延长。
K变模可逆计数器模块中使用了一个可逆计数器Count,当鉴相器的输出信号dnup为低时,即可进行加法运算,达到预设模值则输出进位脉冲carry;为高时,则进行减法运算,为零时,就会输出借位脉冲borrowoCount的模值可由输入信号预设。模值的大小决定了DPLL的跟踪步长,模值越大,跟踪步长越小,锁定时的相位误差也越小,但捕捉时间越长;模值越小,跟踪步长越大,锁定时的相位误差越大,但捕捉时间越短。
2.5 相位控制器模块
相位控制器模块用于实现对输入信号«,的频率和相位跟踪和调整,最终使输出信号U3锁定在输入信号的频率和相位上。
当没有进位/借位脉冲信号时,该模块可以把外部参考时钟进行二分频;当有进位脉冲信号carry时,则在输出的二分频信号中插入半个脉冲,以提高输出信号的频率。当有借位脉冲信号borrow时,则在输出的二分频信号中减去半个脉冲,以降低输出信号的频率。
2.6 除M计数器模块
除M计数器模块可对相位控制器模块的输出进行计数分频。除M计数器模块可对相位控制器模块的输出进行M分频,从而得到整个环路的输出信号uo。
3 全数字锁相环的顶层全局设计
本系统的顶层逻辑框图是一个全局的设计,是自顶向下设计方法中的顶层设计,图2所示是其设计框图。它主要由鉴相器模块(pd)、K变模可逆计数器模块(kcounter)、自动变模控制器模块(m_change)、相位控制器模块(idcounter)和除M计数器模块(f_division)组成。
在顶层逻辑框图中,模块之间的联系是用信号线来连接的。本设计的信号线用到了节点线(NodeLine)和总线(BusLine)两种线型。节点线是只有一位的信号线,主要用于时钟信号、复位信号、输入信号以及一些控制信号的传递。总线是含有多位的信号线,在本设计中用到了宽度为4位到8位不等的总线,这些总线在顶层逻辑框图中主要用于数据的传输。
4 全数字锁相环的仿真结果分析
根据系统各部分电路的功能要求,我们釆用VerilogHDL语言对环路进行了综合设计。即利用EDA软件对源程序进行了逻辑综合,并进行了功能仿真。图3所示是锁相环由快捕区进入慢捕区最后锁定的仿真波形。在图3中,ue为低电平,表示输出信号uo滞后于输入信号ui。ua反映了%与Uj的相位差,qo是量化计数器输出的数字相位误差序列。在每个鉴相周期内,当ua为高电平时,计数器对其进行数字量化。qo值的大小可决定锁相环处在快捕区、慢捕区或是锁定,其对应的模数控制字的大小不同,可实现自动变模控制。环路在“加”指令的作用下,经反复调整,可使uo与ui的相位误差逐渐减少。图3所示是取elk频率为25MHz(即周期为40ns),取ui周期为2.57μs(即频率大约389.1kHz),同时M取32时的自动变模数字锁相环仿真图。
K变模可逆计数器的模数K值对全数字锁相环的锁定时间起着关键的作用。选择不同的K值,将会得到不同的仿真结果。图3所示是K变模可逆计数器的模数K值在快捕区取值20,在慢捕区取值21,在同步区取值211时的仿真波形。
从图3的仿真图中可看出,锁相环的锁定时间较短,为29.32μs,但同步误差较大。当模数K取值越大时,锁定时间越长,同步误差越小。可以根据自己需要的情况,选择合适的K值。
图4所示为让周期为2.58μs,即频率大约为387.6kHz时的仿真结果。该结果需要的锁定时间更长,为267.4μs。由于只是功能仿真,故有一定误差,因此,这里并未指出此锁相环的同步带和捕捉带。
5 结语
本文设计的自动变模全数字锁相环的功能基本达到了要求,但是,锁定后稳定度并不高。原因可能是同步误差还不够小,从而导致稳定度不高。今后可以通过适当增大模数K来减小同步误差,或使用更强大的仿真软件来提高仿真精度。