yuedx的个人空间 https://blog.eetop.cn/317611 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

数字锁相环

已有 3250 次阅读| 2009-4-3 10:54 |个人分类:FPGA设计

简介:本文在说明全数字锁相环的基础上,提出了一种利用FPGA设计一阶全数字锁相环的方法,并给出了关键部件的RTL可综合代码,并结合本设计的一些仿真波形详细描述了数字锁相环的工作过程,最后对一些有关的问题进行了讨论。
 
引言
锁相环(PLL)技术在众多领域得到了广泛的应用。如信号处理,调制解调,时钟同步,倍频,频率综合等都应用到了锁相环技术。传统的锁相环由模拟电路实现,而全数字锁相环 (DPLL)与传统的模拟电路实现的PLL相比,具有精度高且不受温度和电压影响,环路带宽和中心频率编程可调,易于构建高阶锁相环等优点,并且应用在数字系统中时,不需A/D及D/A转换。随着通讯技术、集成电路技术的飞速发展和系统芯片(SoC)的深入研究,DPLL必然会在其中得到更为广泛的应用。
这里介绍一种采用VERILOG硬件描述语言设计DPLL的方案。
EDA中国门户网站0KEz)agEDA中国门户网站RUyX0o zP-uB#k

DPLL结构及工作原理EDA中国门户网站ua*s!|2iS2YN,^
一阶DPLL的基本结构如图1所示。主要由鉴相器、K变模可逆计数器、脉冲加减电路和除N计数器四部分构成。K变模计数器和脉冲加减电路的时钟分别为Mfc和2Nfc。这里fc是环路中心频率,一般情况下M和N都是2的整数幂。本设计中两个时钟使用相同的系统时钟信号。
鉴相器EDA中国门户网站}1eV1?*i#W
常用的鉴相器有两种类型:异或门(XOR)鉴相器和边沿控制鉴相器(ECPD),本设计中采用异或门(XOR)鉴相器。异或门鉴相器比较输入信号Fin相位和输出信号Fout相位之间的相位差Фe=Фin-Фout,并输出误差信号Se作为K变模可逆计数器的计数方向信号。环路锁定时,Se为一占空比50% 的方波,此时的绝对相为差为90°。因此异或门鉴相器相位差极限为±90°。异或门鉴相器工作波形如图2所示。
EDA中国门户网站O)_Q|K4@[5D-T


图1 数字锁相环基本结构图
EDA中国门户网站9i-s NmS%H}?Y


图2 异或门鉴相器在环路锁定及极限相位差下的波形
EDA中国门户网站cUsPf'm

K变模可逆计数器
K 变模可逆计数器消除了鉴相器输出的相位差信号Se中的高频成分,保证环路的性能稳定。K变模可逆计数器根据相差信号Se来进行加减运算。当Se为低电平时,计数器进行加运算,如果相加的结果达到预设的模值,则输出一个进位脉冲信号CARRY给脉冲加减电路;当Se为高电平时,计数器进行减运算,如果结果为零,则输出一个借位脉冲信号BORROW给脉冲加减电路。
脉冲加减电路
脉冲加减电路实现了对输入信号频率和相位的跟踪和调整,最终使输出信号锁定在输入信号的频率和信号上,工作波形如图3所示。
9q7V F yv8fpGuestZ1M/z%b3ebF fGuestEDA中国门户网站8z1Y-\n ` }w/o1G


Y-J#OA.^v)o#E oxGuest图3 脉冲加减电路工作波形

EDA中国门户网站.fH3] E6K8N
除N计数器
除N计数器对脉冲加减电路的输出IDOUT再进行N分频,得到整个环路的输出信号Fout。同时,因为fc=IDCLOCK/2N,因此通过改变分频值N可以得到不同的环路中心频率fc。
)J|(C3b}.d-p*q3xZGuest

DPLL部件的设计实现
gd;DYT-\RGuest
了解了DPLL的工作原理,我们就可以据此对DPLL的各部件进行设计。DPLL的四个主要部件中,异或门鉴相器和除N计数器的设计比较简单:异或门鉴相器就是一个异或门;除N计数器则是一个简单的N分频器。下面主要介绍K变模可逆计数器和脉冲加减电路的设计实现。

EDA中国门户网站#I#M M_+u$A+d#Q^
K变模可逆计数器的设计实现
3P@&J0y2\Guest
K 变模可逆计数器模块中使用了一个可逆计数器Count,当鉴相器的输出信号dnup为低时,进行加法运算,达到预设模值则输出进位脉冲CARRY;为高时,进行减法运算,为零时,输出借位脉冲BORROW。Count的模值Ktop由输入信号Kmode预设,一般为2的整数幂,这里模值的变化范围是23 -29。模值的大小决定了DPLL的跟踪步长,模值越大,跟踪步长越小,锁定时的相位误差越小,但捕获时间越长;模值越小,跟踪步长越大,锁定时的相位误差越大,但捕获时间越短。
K变模可逆计数器的VERILOG设计代码如下(其中作了部分注释,用斜体表示):
module KCounter(Kclock,reset,dnup,enable, Kmode,carry,borrow);
input Kclock; /*系统时钟信号*/
input reset; /*全局复位信号*/
input dnup; /*鉴相器输出的加减控制信号*/
input enable; /*可逆计数器计数允许信号*/
input [2:0]Kmode; /*计数器模值设置信号*/
output carry; /*进位脉冲输出信号*/
output borrow; /*借位脉冲输出信号*/
reg [8:0]Count; /*可逆计数器*/
reg [8:0]Ktop; /*预设模值寄存器*/
/*根据计数器模值设置信号Kmode来设置预设模值寄存器的值*/
always @(Kmode)
begin
case(Kmode)
3'b001:Ktop<=7;
3'b010:Ktop<=15;
3'b011:Ktop<=31;
3'b100:Ktop<=63;
3'b101:Ktop<=127;
3'b110:Ktop<=255;
3'b111:Ktop<=511;
default:Ktop<=15;
endcase
end
/*根据鉴相器输出的加减控制信号dnup进行可逆计数器的加减运算*/
always @(posedge Kclock or posedge reset)
begin
if(reset)
Count<=0;
else if(enable)
begin
if(!dnup)
begin
if(Count==Ktop)
Count<=0;
else
Count<=Count+1;
end
else
begin
if(Count==0)
Count<=Ktop;
else
Count<=Count-1;
end
end
end
/*输出进位脉冲carry和借位脉冲borrow*/
assign carry=enable&(!dnup) &(Count==Ktop);
assign borrow=enable&dnup& (Count==0);
endmodule
EDA中国门户网站Oif%`jg6rP*kw'cTY,w5H.G9dP XGuestEDA中国门户网站6g2}/_)so?l)g f2K h1f?9J1t HGuestEDA中国门户网站W~ T1pv h lg,vT*X2`1z~S+v cHGuestEDA中国门户网站?#k\U7C Ew~)PGEDA中国门户网站M,@1w7w~ ` ex)Lb1{~'Xe:D}%bGuestEDA中国门户网站 o XZ#l!yy.zL8o6dD(t$|f&^ K GcV:g] gGuestEDA中国门户网站M&Z&u7|*q!P$K [EDA中国门户网站bI0I$Jx*y/@#{AUsPPg0v q ^9XGuestEDA中国门户网站$yz4US-}EDA中国门户网站"@ |%hDpLVEDA中国门户网站 |'hN S;@l!hj oXdu5j%wGuestEDA中国门户网站-S9N%eH TS#w&U%ui4t&b.` {Guest]ho qA }1PGuest'@@*PK}SiGuestEDA中国门户网站o x4K q5ubO EHEDA中国门户网站?h1s%W\'d;az*`9^;o5N7Xu C*^GuestEDA中国门户网站} T o'hM_ ^?B6@EDA中国门户网站:ct h b`wmEDA中国门户网站^O%U oD k7|Exa4p K2V(sGuest'PL4C%?:kVNw K,rGuestEDA中国门户网站*jvL'mKF1gEDA中国门户网站0|P4wg;w;V'^EDA中国门户网站pk2`L&T/hT8G h*L[*P!Y"w pGuestf Z]R8zyGuestoB0i`8pGuest9RD3_"`gY`$KGuestnH y4Xue-[%K(hGuestEDA中国门户网站2T@v!X9@T {hE^'wGuestEDA中国门户网站kN`?rfEDA中国门户网站9e'F m)f;P#s eEDA中国门户网站N!R\0N6r xEDA中国门户网站"`&^2h'v)a~(s g9a,~#V M3t(S*EfGuest T7g D(s&iCKBGuestEDA中国门户网站 GQX:W!w-QNu;f n;X7[:]Guest%[opu7m c!Z-[Guest X3dq!^ Yg2KGuestEDA中国门户网站O'fzj&^ch4P z'?'?9G^1FNGuest

脉冲加减电路的设计实现
Z(s q.zLGuest
脉冲加减电路完成环路的频率和相位调整,可以称之为数控振荡器。当没有进位/借位脉冲信号时,它把外部参考时钟进行二分频;当有进位脉冲信号CARRY时,则在输出的二分频信号中插入半个脉冲,以提高输出信号的频率;当有借位脉冲信号BORROW时,则在输出的二分频信号中减去半个脉冲,以降低输出信号的频率。VERILOG设计代码如下:
module IDCounter(IDclock,reset,inc,dec,IDout);
input IDclock; /*系统时钟信号*/
input reset; /*全局复位信号*/
input inc; /*脉冲加入信号*/
input dec; /*脉冲扣除信号*/
output IDout; /*调整后的输出信号*/
wire Q1, Qn1, Q2, Qn2, Q3, Qn3;
wire Q4, Qn4, Q5, Qn5, Q6, Qn6;
wire Q7, Qn7, Q8, Qn8, Q9, Qn9;
wire D7, D8;
FFD FFD1(IDclock, reset, inc, Q1, Qn1);
FFD FFD2(IDclock, reset, dec, Q2, Qn2);
FFD FFD3(IDclock, reset, Q1, Q3, Qn3);
FFD FFD4(IDclock, reset, Q2, Q4, Qn4);
FFD FFD5(IDclock, reset, Q3, Q5,Qn5);
FFD FFD6(IDclock, reset, Q4, Q6,Qn6);
assign D7=((Q9 & Qn1 & Q3) | (Q9 & Q5 & Qn3));
assign D8=((Qn9 & Qn2 & Q4) | (Qn9 & Q6 & Qn4));
FFD FFD7(IDclock, reset, D7, Q7, Qn7 );
FFD FFD8(IDclock, reset, D8, Q8, Qn8);
JK FFJK(IDclock, reset, Qn7, Qn8, Q9, Qn9);
assign IDout = (!Idclock)|Q9;
endmodule
其中,FFD为D触发器,JK为JK触发器。
当环路的四个主要部件全部设计完毕,我们就可以将他们连接成为一个完整的DPLL,进行仿真、综合、验证功能的正确性。
:ae/k*cQn0sD%p~TGuestEDA中国门户网站:Afi3ds*\8o/j9J]Ap&k!mg4GtGuestEDA中国门户网站;N4c H+f%xKEDA中国门户网站CtDOZ%e7mEDA中国门户网站&n LR bm$Vs~ PEDA中国门户网站}8q M LQ?e p&yEDA中国门户网站;pr3]Otz+v3H d$w3n5v6u6z;[:_xPnGuestEDA中国门户网站AFl)X1[!jL*QiNP6WX8XL _GuestD_wJ+w(z}3NxGuestF U5cW2B1Q F zB*{Guestg2Y(eYc'w_&iGuestEDA中国门户网站lN~ Vj~iEDA中国门户网站-gr p]3GpC2Pe Bi!PO0fbdGuestEDA中国门户网站?As1J3C&F g9X pt9K"j3LR7f]@GuestEDA中国门户网站S!wN'w*z:|&]#m2o1B,Md q9qb^VGuestC+Lm;nmsGuestEDA中国门户网站rY"K?7oRW[$tqnf)J IGuestEDA中国门户网站Cg;E W^ p)J

DPLL的FPGA实现
本设计中的一阶DPLL使用XILINX公司的FOUNDATION4.1软件进行设计综合,采用XILINX的SPARTAN2系列的XC2S15 FPGA器件实现,并使用Modelsim5.5d软件进行了仿真。结果表明:本设计中DPLL时钟可达到120MHz,性能较高;而仅使用了87个 LUT和26个触发器,占用资源很少。下面给出详细描述DPLL的工作过程。
(1) 当环路失锁时,异或门鉴相器比较输入信号(DATAIN)和输出信号(CLOCKOUT)之间的相位差异,并产生K变模可逆计数器的计数方向控制信号(DNUP);
(2) K变模可逆计数器根据计数方向控制信号(DNUP)调整计数值,DNUP为高进行减计数,并当计数值到达0时,输出借位脉冲信号(BORROW);为低进行加计数,并当计数值达到预设的K模值时,输出进位脉冲信号(CARRY);
(3) 脉冲加减电路则根据进位脉冲信号(CARRY)和借位脉冲信号(BORROW)在电路输出信号(IDOUT)中进行脉冲的增加和扣除操作,来调整输出信号的频率;
(4) 重复上面的调整过程,当环路进入锁定状态时,异或门鉴相器的输出DNUP为一占空比50%的方波,而K变模可逆计数器则周期性地产生进位脉冲输出CARRY和借位脉冲输出BORROW,导致脉冲加减电路的输出IDOUT周期性的加入和扣除半个脉冲。
(K2L t)ba w)kY GGuest mI O-S'zGuestEDA中国门户网站q9v DgI2u/ki az"dZ#V"PGuestEDA中国门户网站a l[,[7L)i?Y!{4_8l!y

有关一阶DPLL的一些讨论EDA中国门户网站Uy:w m i|
“波纹”(Ripple)消除
在DPLL 工作过程中,环路锁定时,异或门鉴相器的输出DNUP是一个占空比50%的方波。因为在DPLL的基本结构中,K变模可逆计数器始终起作用。因此当环路锁定后,如果模数K取值较小,K变模可逆计数器会频繁地周期性输出进位脉冲信号CARRY和借位脉冲信号BORROW,从而在脉冲加减电路中产生周期性的脉冲加入和扣除动作,这样就在脉冲加减电路的输出信号IDOUT中产生了周期性的误差,称为“波纹”;如果模数K取值足够大——对于异或门鉴相器,K应大于 M/4;对于边沿控制鉴相器,K应大于M/2,则这种“波纹”误差通过除N计数器后,可以减少到N个周期出现一次,也就是说K变模可逆计数器的进位脉冲信号CARRY和借位脉冲信号BORROW的周期是N个参考时钟周期。
为了消除“波纹”误差,可以为K变模可逆计数器产生一个计数允许信号ENABLE,环路失锁时,此信号有效,允许计数;环路锁定时,此信号无效,禁止计数,则不会产生周期性的进位和借位脉冲信号。
“波纹”消除电路消除“波纹”误差的同时,也减小了DPLL的锁定范围,环路的相位极限误差(异或门鉴相器为±90°;ECPD为±180°)减小为原来的1/(1+1/2K),鉴相增益也减小到原来的1/2。
使用DPLL进行FSK解调
一个带有边沿控制鉴相器ECPD的DPLL再加上一个D触发器,就可以构成一个FSK解调器,如图4所示。
EDA中国门户网站7L+Mi3n@DT yEDA中国门户网站:h??8X%MzYi ~P{ntqP?zGuest4qm1c4s2S$H4DH#~)IGuestEDA中国门户网站6IT j gQ$l


图4 FSK解调
EDA中国门户网站3P@O2U%g x

EDA中国门户网站Z1r{%iE$[
假设有一个输入信号Fin,它的频率在F1和F2之间变化,DPLL的中心频率为Fc,并且F1< P>

结语
本文介绍了一种一阶DPLL的设计方法,利用VERILOG语言配合XILINX的FPGA,为设计提供了极大的便利和性能保证。DPLL中可逆计数器模值可随意修改,来控制DPLL的跟踪补偿和锁定时间;同时,除N计数器的分频值也可随意改变,使DPLL可跟踪不同中心频率的输入信号,而这些只需在设计中修改几行代码即可完成。另外,设计好的DPLL模块还可作为可重用的IP核,应用于其他设计。
EDA中国门户网站Nv&x&{z5np

参考文献
1 “Digital Phase_locked Loop Design Using SN54/74Ls297”Texas Instruments Incorprated,1997
2 “Phase Locked Loop(PLL) in High Speed Designs”Lattice Semiconductor Corpration, AN8017~01 1997
3 《数字锁相环路原理与应用》胡华春 著 上海科技出版社 1990年
Q~[5EAGuestX3@)? e&KqfaGuestEDA中国门户网站1R A&a;A#@"v MEDA中国门户网站!I1@8e)W:Qm3s


点赞

发表评论 评论 (2 个评论)

回复 vigph 2009-4-23 19:29
不错 学习中
回复 longjilb 2011-4-2 13:35
不错,只是图片没显示

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 13

    粉丝
  • 1

    好友
  • 35

    获赞
  • 156

    评论
  • 4698

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-24 00:53 , Processed in 0.023993 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部