图16-1不同系列FPGA对应的PLL数目以及类型
可以看到,各种不同系列的器件,对应的PLL类型不同。因此,当我们选定一款FPGA器件之后,其对应的PLL类型也就确定了。不同类型的PLL,具有不同的特点,例如支持高速收发器,支持LVDS差分时钟输出等,这里不做过多讲解,具体请参考各个器件系列的Handbook。
PLL从具体实现锁定的时钟回路结构分,包括多达5种结构:正常模式、源同步模式、零延时缓存模式、无补偿模式以及外部反馈模式,其具体解释如下所示。
• Normal mode—The PLL feedback pathsource is a global or regional clock network, minimizing clock delay toregisters for that clock type and specific PLL output. You can specify PLLoutput that is compensated in normal mode.
• Source-Synchronous mode—The data and clocksignals arrive at the same time at the data and clock input pins. In this mode,the signals are guaranteed to have the same phase relationship at the clock anddata ports of any Input Output Enable register. • Zero-Delay Buffer mode—The PLL feedback pathis confined to the dedicated PLL external clock output pin. The clock portdriven off-chip is phase aligned with the clock input for a minimal delaybetween the clock input and the external clock output.
• No Compensation mode—The PLL feedback pathis confined to the PLL loop. It has no clock network or other external source.A PLL in no-compensation mode has no clock network compensation, but clockjitter is minimized.
• External Feedback mode—The PLL compensates forthe fbin feedbackinput to the PLL. The delay between the input clock pin and the feedback clockpin is minimized.
关于这5种模式的具体介绍,可以查阅各个系列的Handbook获得,例如,初学FPGA最常用的Cyclone IV系列器件支持的各种运行模式的介绍在Cyclone IV DeviceHandbook的第85页。
虽然每个锁相环支持多种时钟反馈模式,每种模式也都具有各自的特点。作为入门学习,不需要十分深入的去对每一种结构进行了解。当大家具备独立的开发能力后,再根据具体项目需求,在仔细评估各种运行模式的优缺点后,合理选择运行模式即可。
对于同一个系列的FPGA器件,不同容量的FPGA芯片往往具有不同数量的PLL功能单元,例如对于Cyclone IV E系列的FPGA,小容量产品(如EP4CE10)具有两个PLL,而从EP4CE15开始,所有的FPGA器件则有4个PLL。
实验步骤:
新建一个以名为pll的工程保存在prj下,然后单击Tools—MegaWizard Plug-In Manager来启动Mega Wizard插件管理器,并新建一个IP核。选择I/O下的ALTPLL,并将输出目录确定为工程文件夹下的ip文件夹,并以pll保存,单击Next。
图16-2-1PLL配置界面
这里芯片速度等级修改为芯航线FPGA核心板的8,输入时钟频率修改为开发板的50MHz,时钟反馈模式为普通模式。 areset将所有计数器的值复位到初始值;pfdena为使能相位频率检测器。禁止PFD时,PLL不管输入时钟如何都连续工作;locked 标识PLL实现了相位锁定,在PLL锁定后保持为高电平,失锁时保持为低电平。
图16-2-2PLL配置界面
PLL的带宽也支持可编程。手册中队PLL带宽定义为PLL跟踪输入时和抖动的能力,带宽用PLL中闭环增益的-3dB频率测量,或近似为PLL开环响应的联合增益店。这里使用默认设置。如有特殊需求可对应修改。
图16-2-3PLL配置界面
时钟切换支持PLL在两个输入参考时钟之间进行切换。切换模式可以自动切换和手动切换。
图16-2-4PLL配置界面
PLL动态重配置和动态相位重配置。相关应用请参看数据手册,这里默认设置。
图16-2-5PLL配置界面
现在修改决定输出频率大小的参数。这里提供了两种方式选择输出频率,可以通过修改倍频因子以及分频因子来确定输出频率,可以直接修改输出频率。两种操作分别如图16-2-6以及16-2-7,这里需指出并不是任意频率PLL均能输出当指定的频率PLL实现不了,其会生成一个与该预期频率最接近的输出频率。这里分别配置PLL输出25MHz75MHz100MHz。
图16-2-6PLL配置界面
图16-2-6PLL配置界面
然后确定配置信息后即可点击Finish完成配置。
并将生成的IP核加入工程,即可在工程下看到加入的IP核文件并设置为顶层文件。
为了测试仿真编写测试激励文件,新建pll_tb.v文件并输入以下内容再次进行分析和综合直至没有错误以及警告,保存到testbench文件夹下。除了实现例化需要仿真的文件以及时钟创建,还需实现PLL使能。
设置好仿真脚本后进行功能仿真,可以看到如图16-3所示的波形文件。可以看出在areset为高电平时,各个输出时钟均无输出。在areset为低电平后一段时间,输出时钟并没有立即更新出来而是有一段时间的不确定期,且在此过程种locked信号保持低电平状态。只有当输出信号稳定时才有locked信号置高。
图16-3 PLL仿真波形
现在进行板极验证,利用生成的三路时钟以及输入时钟分别驱动四个LED。其简化系统框图如图16-4所示。
图16-4 简化系统框图
这里调用并修改第4讲编写好的计数器模块。使用参数化定义的方式修改计数值这样判断条件也直接改为 else if(cnt == CNT_MAX)。参数化定义方式详细使用参见文档:Verilog语法基础讲解之参数化设计。
现在设计顶层文件。
编译无误后,可以在RTLviewer中查到如图16-5所示的顶层结构图,可与实验之初设计的系统结构图进行对比。
为了测试仿真编写测试激励文件,同时为了减少仿真时间,这里将计数器的计数值从24_999_999修改为24。这样仿真出的时钟应该对应为1M/3M、4M 2M。此时的波形图如图16-6所示。
图16-6顶层文件仿真波形
分配引脚后进行全编译无误后,下载进开发板后可以观察到对应的现象。LED3闪烁频率时LED0的一倍。如想更详细的验证可外接示波器进行观察。
这样就实现了在QuartusII软件中调用PLL IP 核, 进行一个典型的工作方式配置,通过仿真了解其工作时序。然后在芯航线FPGA开发板上,使用PLL分别生成一个25M、一个75M、100M的时钟,使用生成的三个时钟以及输入时钟分别驱动一个LED闪烁模块,控制LED的亮灭。通过观察四个LED灯在完全相同的驱动模块的驱动下,不同驱动时钟对其闪烁速度的影响,从而验证锁相环对时钟的倍频和分频处理的正确性。
小梅哥
`