基于fpga的高动态三阶锁相环设计 下载本文

图3.3 b超前a 90度时的异或门鉴相器输出的波形

图3.4 b滞后a 90度

时的异或门鉴相器输出的波形

3.2数字环路滤波器的设计

基本原理如下,数字环路滤波器(DLF)作用是消除鉴相器输出的相位差信号se中的高频成分,保证环路的性能稳定,实际上可用一变模可逆计数器(设模数为K)来实现。K变模可逆计数器根据相差信号SE来进行加减运算。当SE为高电平时,计数器进行加运算,如果相加的结果达到预设的模值,则输出一个进位脉冲信号CARRY给脉冲加减电路;

- 12 - 当SE为低电平时,计数器进行减运算,如果结果为零,则输出一个借位脉冲信号BORROW给脉冲加减电路。当Fout同步于Fin或只有随机干扰脉冲时,计数器加减的数目基本相等,计数结果在初始值处上下徘徊,不会产生进位和借位脉冲,滤除因随机噪声引起的相位抖动。计数器根据输出结果生成控制增减脉冲动作的控制指令。

数字滤波器的工作过程如下,将异或鉴相器产生的se信号加到环路滤波器的输入端, 在环路滤波器模块内设置一个可逆计数器,计数器初始值设为kmode;超前脉冲到来时, 可逆计数器加1,滞后脉冲到来时,可逆计数器减1.经过一段时间的计数后,当可逆计数器为ktop 时,表示本地信号超前,环路滤波器输出扣脉冲信号,可逆计数器复位为kmode; 当可逆计数器为0 时,表示本地信号滞后,环路滤波器输出增脉冲信号,可逆计数器复位为kmode。从而起到了环路滤波的作用。在DPLL 的基本结构中,K变模可逆计数器始终起作用。当环路锁定后,如果模数kmode较小,则K 变模可逆计数器会周期性输出超前脉冲和滞后脉冲,在脉冲加减电路中产生周期性的脉冲加入和扣除,其结果是在脉冲加减电路的输出信号中产生了周期性的误差,称为“波纹”;如果模数kmode足够大,这种“波纹” 误差通过除N 计数器后, 可以减少到N 个周期出现一次,即K 模可逆计数器的超前脉冲和滞后脉冲的周期是N个参考时钟周期。kmode 的大小决定了DPLL的跟踪步,kmode 越大,跟踪步长越小,锁定时的相位误差越小, 但捕获时间越长kmode越小,跟踪步长越大,锁定时的相位误差越大, 但捕获时间越短。

K变模可逆计数器模值K对DPLL的性能指标有着很大的影响。计数器模值K的取值可根据输入信号的相位抖动而定,加大模值K,有利于提高DPLL 的抗噪能力,但是会导致较大的捕捉时间和较窄的捕捉带宽。减小模值K 可以缩短捕捉时间,扩展捕捉带宽,但是降低了DPLL 的抗噪能力。本设计中选择Kmode=4。在初始时刻,计数器被置初值为K/2=2,这样可以DPLL捕捉速度很快。

K变模可逆计数器模块端口设计说明如下:

module KCounter(Kclock,reset,dnup,enable,Kmode,carryo,borrow); input Kclock; //系统时钟信号

input reset; //全局复位信号,高电平复位 input dnup; //鉴相器输出的加减控制信号

input enable; //可逆计数器计数允许信号,高电平有效 input [2:0]Kmode; //计数器模值设置信号 output carryo; //进位脉冲输出信号 output borrow; //借位脉冲输出信号 wire carryo,borrow; reg [8:0]Count; //可逆计数器 reg [8:0]Ktop; //预设模值寄存器

K变模可逆计数器模块仿真如下图:

- 13 -

图3.5 K变模可逆计数器的仿真

3.3数控振荡器的设计

在三阶锁相环中,数控振荡器有别于以往的压空振荡器,数控振荡器由脉冲加减电路实现,根据数字滤波器的给出的进位脉冲信号(carryo)和借位脉冲信号(borrow)进行输出脉冲的调整。当没有进位脉冲信号和借位脉冲信号是,脉冲加减信号就是对时钟进行二分频输出,当有进位脉冲信号时,脉冲加减模块会增加一个脉冲,相当于减少了脉冲周期,而增加了输出频率;同理,当有借位脉冲信号时,脉冲加减模块会减少了一个脉冲,相当于增加了脉冲周期,而减少输出了频率;这样通过脉冲增减模块的对输入信号频率和相位的跟踪和调整,最终使输出信号锁定在输入信号的频率和信号上,工作波形如图所示。

图3.6 脉冲加减电路工作原理波形

脉冲增减模块模块端口设计说明如下:

module IDCounter (IDclock,reset,inc,dec,IDout);//脉冲增减模块 input IDclock,reset,inc,dec;

- 14 - output IDout;

reg IDout;

脉冲增减模块模块仿真如下图:

图3.7脉冲增减模块模块仿真图

3.4 N分频参数控制的设计

为了使锁定频率范围更宽,这里采用了动态N分频。原理就是对输入信号周期用高频时钟进行测量,得到高频时钟的长度之后再量化然后给出N值,N的值与高频时钟长度比例关系,高频时钟长度越长,N值越大。

N分频参数控制模块端口设计说明如下:

module counter_N(clk, fin, reset, count_N);//利用clk对fin脉冲的测量并给出N值 input clk, fin, reset;

output [14:0] count_N; //输出counter_N是输入信号fin周期长度的一半

N分频参数控制模块仿真如下图:

图3.8 N分频参数控制模块的仿真图

- 15 -