3.5 N分频器的设计
N分频器则是一个简单的除N计数器。N分频器对脉冲加减电路的输出脉冲再进行N分频,得到整个环路的输出信号fout。同时,因为fout=clk/2N=fc,因此通过改变分频值N可以得到不同的环路中心频率fc。除N计数器对脉冲加减电路的输出IDOUT再进行N分频,得到整个环路的输出信号Fout。同时,因为fc=IDCLOCK/2N,因此通过改变分频值N可以得到不同的环路中心频率fc。
N分频器模块端口设计什么如下:
module div_N (clkin,n,reset,clkout); //N分频模块 input clkin,reset; input [14:0] n; output clkout;
N分频器模块仿真如下:
图3.9 输入分频倍数为n=10时的输出波形图
图3.10 输入分频倍数为n=20时的输出波形图
- 16 -
图3.11 输入分频倍数为n=50时的输出波形图
3.6 数模DAC转换模块的设计
这里使用数模转换模块是为了在仿真过程更好的直观的观察锁相的情况。把输入信号和输出信号都经过一个数模转换模块,然后用经过软件的设置可以看到正弦波的图形,或者可以通过示波器来看图形。这样可以表征两个信号的频率和相位的差。
数模DAC转换模块端口设计说明如下: module dac (clk,dout,dd); //数模转换模块 input clk; //输入转换的信号 output[7:0] dout; //位宽为八位的输出 output[7:0] dd; reg [7:0] dout; reg [7:0] dd;
数模DAC转换模块仿真如下:
可以看到clk经过dac模块可以用正弦波来显示,如下图2.12
图3.12 输入分频倍数为n=50时的输出波形图
- 17 - 3.7 三阶锁相环的顶层模块
三阶锁相环的顶层模块主要是把前面设计的几个模块连接起来。三阶锁相环顶层模块端口设计如下:
module pll_top(fin,fout,se,clk,reset,enable,Kmode,fin_dac,fout_dac); input fin,clk; //输入clk时钟周期100ns(10Mhz) input reset,enable; //reset高电平复位,enable高电平有效 input [2:0]Kmode; //滤波计数器的计数模值设定 output fout; //fout是锁频锁相输出 output [7:0]fin_dac,fout_dac;
//fin_dac,fout_dac分别是两个输入输出信号经过数模dac的输出 output se; //用于观察锁相与否 顶层文件程序生成的连接如图2.13:
图3.13 三阶锁相环的顶层连接图
- 18 - 第四章 三阶锁相环仿真
4.1 三阶锁相环的功能仿真
利用业界强大的ModelSim6.0软件进行功能仿真:
图4.1 三阶锁相环功能仿真结果
图4.2 三阶锁相环功能仿真结果
上面图3.1和图3.2分别是从不同的变化的fin输入频率的仿真,根据波形可以看到fout频率能够跟随fin输入的变化。 4.2 三阶锁相环的时序仿真
在时序仿真前,先利用QuartusII7.2软件编译如下图是编译的报告,从给出的编译结
- 19 -