本帖最后由 芯航线跑堂 于 2017-1-5 00:40 编辑
PLL锁相环介绍与简单应用
实验目的: 1.学会配置Altera提供的PLL IP核并进行仿真了解其接口时序 2.利用参数化设计一个简易的系统进行验证已配置好的PLL 实验平台:芯航线FPGA学习套件主板 实验原理: 1.PLL概念 PLL的完整英文拼写为Phase-Locked Loop。即相位锁定的环路,也就是常说的锁相环。锁相环在模拟电路和数字电路系统中均有广泛的使用,很多的MCU芯片如STM32、MSP430等都集成了片上PLL,用来通过片外较低频率的晶振产生的时钟倍频得到较高频率的时钟信号以供MCU的内核和片上外设使用。在很多的协议芯片中,也用到了PLL来通过较低频率的晶振时钟得到符合协议要求的时钟信号,例如,典型的例如USB协议芯片CY7C68013,使用片外晶振提供的24M时钟信号,倍频20倍得到USB2.0传输数据所要求的480M时钟信号。再例如以太网协议芯片W5500,使用片外晶振提供的25M时钟信号,倍频得到150M时钟信号,以供以太网协议电路使用。即锁相环的一大作用就是对输入时钟进行分频和倍频,以得到更高或更低频率的时钟信号,以供逻辑电路使用。另外,除了对时钟信号的频率进行调节,还可以对同一PLL生成的多个时钟的相位进行控制,以保证两个时钟域的逻辑工作时有确定的时间差。具体锁相环是通过何种方式实现对时钟信号的分频和倍频的,这里我们不做讲解,有兴趣的朋友可以自己查阅相关书籍或资料。关于锁相环电路原理的介绍,在Altera官方提供的” ug_altpll .pdf“的第二页也有简单介绍。 2.PLL在FPGA系统中应用 在FPGA系统设计中,几乎所有地方都可以用到PLL,也有些地方是非用到PLL不可。 在某些对系统时钟频率没有固定要求的系统中,外部晶振输入的时钟可以直接作为逻辑驱动时钟,也可以通过PLL将该时钟进行降频,以得到较低的工作时钟,在不影响系统功能实现的前提下降低系统功耗。 另外一些应用,则必须在指定频率的时钟信号下才能正常工作,常见于通信协议类应用,如以太网、USB、PCIE等等,在这些应用中,必须使用指定频率的时钟信号,如果没有刚好满足条件的外部时钟源,则必须通过片内PLL生成相应的时钟信号来进行驱动。在某些实时性要求较高的应用中,如数字信号处理,图像处理等等,提高系统工作时钟能够提升系统的性能,这一类应用中,也往往使用PLL进行倍频和分频,以得到较高频率的时钟,用以提升系统整体性能。 再有一个常见的应用就是生成两路频率相同,相位不同的时钟供SDRAM控制器和SDRAM芯片使用。根据SDRAM芯片的工作原理,SDRAM控制器的工作时钟和SDRAM芯片的工作时钟需要保持180°的相位差才能保证正确的读写数据。所以这里就可以使用PLL的相位控制功能来产生两路相位不同的时钟,以分别供控制器和SDRAM芯片使用。 3.Altera系列FPGA的PLL特性 Altera 不同系列的FPGA,提供了不同的特性的PLL,包括增强型(Enhanced)、快速型(Fast)、左右型(Left_Right)、顶底型(Top_Bottom)以及Cyclone各代所具备的PLL类型。图16-1为目前所有Altera FPGA系列器件对应支持的锁相环类型: 图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输出25MHz\75MHz\100MHz。 图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灯在完全相同的驱动模块的驱动下,不同驱动时钟对其闪烁速度的影响,从而验证锁相环对时钟的倍频和分频处理的正确性。
小梅哥 芯航线电子工作室
|