全数字锁相环的设计教程文件.docx
- 文档编号:464079
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:7
- 大小:64.26KB
全数字锁相环的设计教程文件.docx
《全数字锁相环的设计教程文件.docx》由会员分享,可在线阅读,更多相关《全数字锁相环的设计教程文件.docx(7页珍藏版)》请在冰豆网上搜索。
全数字锁相环的设计教程文件
全数字锁相环的设计
全数字锁相环的设计
锁相环(PLL)技术在众多领域得到了广泛的应用。
如信号处理,调制解调,时钟同步,倍频,频率综合等都应用到了锁相环技术。
传统的锁相环由模拟电路实现,而全数字锁相环(DPLL)与传统的模拟电路实现的PLL相比,具有精度高且不受温度和电压影响,环路带宽和中心频率编程可调,易于构建高阶锁相环等优点,并且应用在数字系统中时,不需A/D及D/A转换。
随着通讯技术、集成电路技术的飞速发展和系统芯片(SoC)的深入研究,DPLL必然会在其中得到更为广泛的应用。
这里介绍一种采用VERILOG硬件描述语言设计DPLL的方案。
DPLL结构及工作原理
一阶DPLL的基本结构如图1所示。
主要由鉴相器、K变模可逆计数器、脉冲加减电路和除N计数器四部分构成。
K变模计数器和脉冲加减电路的时钟分别为Mfc和2Nfc。
这里fc是环路中心频率,一般情况下M和N都是2的整数幂。
本设计中两个时钟使用相同的系统时钟信号。
图1数字锁相环基本结构图
鉴相器
常用的鉴相器有两种类型:
异或门(XOR)鉴相器和边沿控制鉴相器(ECPD),本设计中采用异或门(XOR)鉴相器。
异或门鉴相器比较输入信号Fin相位和输出信号Fout相位之间的相位差Фe=Фin-Фout,并输出误差信号Se作为K变模可逆计数器的计数方向信号。
环路锁定时,Se为一占空比50%的方波,此时的绝对相为差为90°。
因此异或门鉴相器相位差极限为±90°。
异或门鉴相器工作波形如图2所示。
图2异或门鉴相器在环路锁定及极限相位差下的波形
K变模可逆计数器
K变模可逆计数器消除了鉴相器输出的相位差信号Se中的高频成分,保证环路的性能稳定。
K变模可逆计数器根据相差信号Se来进行加减运算。
当Se为低电平时,计数器进行加运算,如果相加的结果达到预设的模值,则输出一个进位脉冲信号CARRY给脉冲加减电路;当Se为高电平时,计数器进行减运算,如果结果为零,则输出一个借位脉冲信号BORROW给脉冲加减电路。
脉冲加减电路
脉冲加减电路实现了对输入信号频率和相位的跟踪和调整,最终使输出信号锁定在输入信号的频率和信号上,工作波形如图3所示。
图3脉冲加减电路工作波形
除N计数器
除N计数器对脉冲加减电路的输出IDOUT再进行N分频,得到整个环路的输出信号Fout。
同时,因为fc=IDCLOCK/2N,因此通过改变分频值N可以得到不同的环路中心频率fc。
DPLL部件的设计实现
了解了DPLL的工作原理,我们就可以据此对DPLL的各部件进行设计。
DPLL的四个主要部件中,异或门鉴相器和除N计数器的设计比较简单:
异或门鉴相器就是一个异或门;除N计数器则是一个简单的N分频器。
下面主要介绍K变模可逆计数器和脉冲加减电路的设计实现。
K变模可逆计数器的设计实现
K变模可逆计数器模块中使用了一个可逆计数器Count,当鉴相器的输出信号dnup为低时,进行加法运算,达到预设模值则输出进位脉冲CARRY;为高时,进行减法运算,为零时,输出借位脉冲BORROW。
Count的模值Ktop由输入信号Kmode预设,一般为2的整数幂,这里模值的变化范围是23-29。
模值的大小决定了DPLL的跟踪步长,模值越大,跟踪步长越小,锁定时的相位误差越小,但捕获时间越长;模值越小,跟踪步长越大,锁定时的相位误差越大,但捕获时间越短。
K变模可逆计数器的VERILOG设计代码如下(其中作了部分注释,用斜体表示):
moduleKCounter(Kclock,reset,dnup,enable,Kmode,carry,borrow);
inputKclock;/*系统时钟信号*/
inputreset;/*全局复位信号*/
inputdnup;/*鉴相器输出的加减控制信号*/
inputenable;/*可逆计数器计数允许信号*/
input[2:
0]Kmode;/*计数器模值设置信号*/
outputcarry;/*进位脉冲输出信号*/
outputborrow;/*借位脉冲输出信号*/
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@(posedgeKclockorposedgereset)
begin
if(reset)
Count<=0;
elseif(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*/
assigncarry=enable&(!
dnup)&(Count==Ktop);
assignborrow=enable&dnup&(Count==0);
endmodule
脉冲加减电路的设计实现
脉冲加减电路完成环路的频率和相位调整,可以称之为数控振荡器。
当没有进位/借位脉冲信号时,它把外部参考时钟进行二分频;当有进位脉冲信号CARRY时,则在输出的二分频信号中插入半个脉冲,以提高输出信号的频率;当有借位脉冲信号BORROW时,则在输出的二分频信号中减去半个脉冲,以降低输出信号的频率。
VERILOG设计代码如下:
moduleIDCounter(IDclock,reset,inc,dec,IDout);
inputIDclock;/*系统时钟信号*/
inputreset;/*全局复位信号*/
inputinc;/*脉冲加入信号*/
inputdec;/*脉冲扣除信号*/
outputIDout;/*调整后的输出信号*/
wireQ1,Qn1,Q2,Qn2,Q3,Qn3;
wireQ4,Qn4,Q5,Qn5,Q6,Qn6;
wireQ7,Qn7,Q8,Qn8,Q9,Qn9;
wireD7,D8;
FFDFFD1(IDclock,reset,inc,Q1,Qn1);
FFDFFD2(IDclock,reset,dec,Q2,Qn2);
FFDFFD3(IDclock,reset,Q1,Q3,Qn3);
FFDFFD4(IDclock,reset,Q2,Q4,Qn4);
FFDFFD5(IDclock,reset,Q3,Q5,Qn5);
FFDFFD6(IDclock,reset,Q4,Q6,Qn6);
assignD7=((Q9&Qn1&Q3)|(Q9&Q5&Qn3));
assignD8=((Qn9&Qn2&Q4)|(Qn9&Q6&Qn4));
FFDFFD7(IDclock,reset,D7,Q7,Qn7);
FFDFFD8(IDclock,reset,D8,Q8,Qn8);
JKFFJK(IDclock,reset,Qn7,Qn8,Q9,Qn9);
assignIDout=(!
Idclock)|Q9;
endmodule
其中,FFD为D触发器,JK为JK触发器。
当环路的四个主要部件全部设计完毕,我们就可以将他们连接成为一个完整的DPLL,进行仿真、综合、验证功能的正确性。
DPLL的FPGA实现
本设计中的一阶DPLL使用XILINX公司的FOUNDATION4.1软件进行设计综合,采用XILINX的SPARTAN2系列的XC2S15FPGA器件实现,并使用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周期性的加入和扣除半个脉冲。
有关一阶DPLL的一些讨论
“波纹”(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所示。
图4FSK解调
假设有一个输入信号Fin,它的频率在F1和F2之间变化,DPLL的中心频率为Fc,并且F1 如果输入信号频率为F1,则ECPD会产
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 锁相环 设计 教程 文件