10.EP4CE10F17的PLL使用

前记:师夷长技以自强


1.基本概念

PLL:Phase Locked Loop锁相环,可以通过软件配置的方法输出不同频率和相位的时钟信号。在EP4CE10F17中有两个片内PLL模块,可以产生时钟树。

fpga的pll使用也是以ip核的形式提供的,对于quartus II13.0,在Tools->MegaWizar Plug-In Manager打开ip核的选择界面。

2.使用简介

搜索pll后,发现出现了挺多灰色的,其实这些都不同管,我们要用到的pll模块是I/O目录下的ALTPLL。

10.EP4CE10F17的PLL使用

在这一步中默认的输入时钟频率为100MHz,注意要改成50MHz。

10.EP4CE10F17的PLL使用

这里可以配置输入端和输出端,高级参数一般项目中可以不用管。

10.EP4CE10F17的PLL使用

这一步略过

10.EP4CE10F17的PLL使用

如果项目中有两个输入时钟选择,系统在工作期间可能会切换时钟,则这里可以设置另外一个时钟输入。

10.EP4CE10F17的PLL使用

这一步略过

10.EP4CE10F17的PLL使用

这是我们关注的一步,通过乘法因子和除法因子的组合可以控制输出不同的时钟频率,相位可以以度为单位,也可以以ns或者ps为单位,占空比保留50%即可。在这里,输出时钟频率配置的另外一种方式是选择“Enter output clock frequency”,可以直接输入期望的时钟,但由于实际的电路实现,可能因为找不到合适的乘法因子和除法因子而不能精确输出指定的频率。其他的输出c1,c2,c3,c4同理。

3.仿真

添加如下的仿真文件进行仿真

`timescale 1ns/1ns

module pll_tb;
    reg      areset;
    reg      inclk0;
    wire      c0;
    wire      c1;
    wire      c2;
    wire      c3;
    wire      c4;
    wire      locked;
    pll pll(
        areset,
        inclk0,
        c0,
        c1,
        c2,
        c3,
        c4,
        locked
    );
    
    initial inclk0 = 0;
    always #10 inclk0 = ~inclk0;
    
    initial begin
        areset = 1;
        #2000;
        areset = 0;
        #20000;
        areset = 1;
        #2000;
        areset = 0;
        #20000;
        $stop;
    end
    
endmodule
 

通过测量输出时钟的频率,可知pll的工作结果与预期相符。

10.EP4CE10F17的PLL使用

4.总结

1.一个PLL能够输出一路或多路频率相同或不同,有固定相位关系的时钟,输出时钟频率可以比输入频率高,也可以低。

2.arest信号高电平有效。

3.locked信号在输出全部稳定的时候才会变为高电平。