1.PLL介绍

PLL只接受在10Mhz到25Mhz范围内的输入时钟频率,输入频率乘以一个系数到范围10Mhz到75Mhz为使用电流控制振荡器(CCO)的CCLK时钟,乘数可能是1到32的整数(实际上,由于cpu的频率上限,乘数不能超过7)CCO的工作范围为156Mhz到320Mhz,当锁相环提供所需要的输出频率时,环路中有一个额外的分频器来保持CCO在其频率范围内,输出分配器可以设置为除2、4、8或16以产生输出时钟, 由于最小输出分频器值为2,因此确保锁相环输出具有50%占空比。PLL的框图如图所示。

LPC2294的锁相环路(PLL)介绍

PLL**是通过PLLCON寄存器控制的,PLL乘法器和分频器的值由PLLCFG寄存器控制,这两个寄存器被保护,以防止意外改变锁相环参数或锁相环失活。因为所有的芯片操作,包括看门狗定时器,提供芯片时钟都是依赖于PLL时,偶然的改变PLL设置可能导致微控制器的意外行为,保护是由类似看门狗定时器的feed序列来完成的。详细信息在PLLFEED寄存器的描述中提供。

PLL是芯片复位和当进入电源下降模式时关闭和旁路的。PLL仅由软件启用。该程序必须配置和**PLL,等待PLL锁,然后连接到PLL作为一个时钟源。

2.PLL相关寄存器

PLLCON:锁相环控制寄存器。保持寄存器更新PLL控制位。写入到这个寄存器的值只有在发生了一个有效的PLL FEED序列之后才会生效

PLLCFG: 锁相环配置寄存器。保持寄存器更新PLL配置值。写入到这个寄存器的值只有在发生了一个有效的PLL FEED 序列之后才会生效。

PLLSTAT: 锁相环状态寄存器。回读寄存器的PLL控制和配置信息。如果PLLCON或PLLCFG已经被写入,但是PLL FEED序列还没有发生,它们将不会反映当前的PLL状态。读取这个寄存器提供了控制PLL的实际值,以及PLL的状态。

PLLFEED: 锁相环FEED寄存器。这个寄存器允许将PLL控制和配置信息从PLLCON和PLLCFG寄存器加载到实际影响PLL操作的shadow寄存器中。

3.寄存器位介绍

3.1PLLCON
PLLCON寄存器包含启用和连接PLL的位。启用PLL允许它尝试锁定当前的倍数和分频器值的设置。连接PLL使处理器和所有芯片功能从PLL输出时钟运行。在给出正确的PLL FEED 序列之前,对PLLCON寄存器的更改不会生效

表1.PLLCON寄存器位

名称 功能
0 PLLE PLL使能。当为1时,并且在一个有效的PLL feed 之后,此位将**PLL并允许它锁定到请求的频率。
1 PLLC PLL连接。当PLLC和PLLE都被设为1,经过一个有效的PLL feed 后,连接PLL作为微控制器的时钟源。另外,振荡器时钟由微控制器直接使用。
7:2 保留

PLL在用作一个时钟源之前,必须被设置,启用和锁定。当从振荡器时钟切换到锁相环输出或反之,内部电路同步操作,以确保不会产生故障,在操作期间丢失了锁环,硬件不能确定在连接或者自动断开PLL之前PLL是锁定的,在锁环丢失的情况下,很可能是振荡器时钟变得不稳定,断开锁环也不能解决这个问题
3.2PLLCFG
PLLCFG寄存器包含PLL乘法器和分频器的值。对PLLCFG寄存器的更改只有在给出正确的PLL feed序列后才会生效,锁相环频率的计算,以及乘法器和分频器的值可以在锁相环频率计算部分找到。

表2.PLLCFG寄存器位

名称 功能
4:0 MSEL 锁相环乘数的值。提供锁相环频率计算中的值“M”。
6:5 PSEL 锁相环分频器的值。提供锁相环频率计算中的值“P”。
7 保留

3.3 PLLSTAT
PLLSTAT是只读寄存器,提供了实际的PLL参数和PLL的状态,PLLSTAT的值可能和PLLCON和PLLCFG中的值不一样,因为这些寄存器中的值只有在一个正确的PLL FEED出现时才会生效。(PLLSTAT是当前值,PLLCON和PLLCFG是即将改变的值)

表3.PLLSTAT寄存器位

名称 功能
4:0 MSEL 回读PLL乘法器的值。这是PLL当前使用的值。
6:5 PSEL 回读PLL分频器的值。这是PLL当前使用的值。
7 保留
8 PLLE 回读PLL使能位。当为1时,PLL是当前**。当为零时,PLL被关闭。当电源关闭模式被**时,这个位被自动清除。
9 PLLC 回读PLL连接位。当PLLC和PLLE都为1时,PLL作为位处理器的时钟源连接。当PLLC或PLLE为零时,PLL被旁路,振荡器时钟直接由微处理器使用。当电源关闭模式被**时,这个位被自动清除。
10 PLOCK 反映PLL锁的状态。当为零时,锁相环没有锁定。当为1时,锁相环锁定在要求的频率上。
15:11 保留

4.PLL中断

PLLSTAT寄存器中的PLOCK位连接到中断控制器。这允许软件打开PLL并继续其他功能,而不必等待PLL实现锁。当中断发生时(PLOCK = 1), PLL可能被连接,中断被禁用。

5.PLL 模式

PLLE和PLLC的锁相环控制位组合如下所示。

表4.PLLE和PLLC组合

PLLC PLLE PLL功能
0 0 PLL被关闭和断开。CCLK等于(从系统得到)未修改的时钟输入。
0 1 PLL是活动的,但还没有连接。置位PLOCK后,即可连接PLL。
1 0 和00组合一样。这防止了PLL在未启用的情况下被连接的可能性。
1 1 PLL是活跃的,并已连接作为系统时钟源。CCLK/系统时钟等于PLL输出。

6. PLL Feed 寄存器

为了使对PLLCON和PLLCFG寄存器的更改生效,必须将正确的提要序列写入PLLFEED(0xE01F C08C)寄存器。FEED顺序为:

  1. 将值0xAA写入PLLFEED。
  2. 将值0x55写入PLLFEED。

这两个写入必须在正确的顺序,并且必须是连续的APB总线周期。后一项要求意味着在PLLfeed操作期间必须禁用中断。如果任何一个feed值不正确,或者没有满足前面提到的条件之一,那么对PLLCON或PLLCFG寄存器的任何更改都不会生效。

表5.PLLFEED寄存器位

名称 功能
7:0 PLLFEED 为了使PLL配置和控制寄存器的更改生效,PLL FEED序列必须写入到这个寄存器。

7.锁相环和电源关闭模式

电源关闭模式自动关闭和断开**PLL。从电源关闭模式的唤醒不会自动恢复PLL设置,这必须在软件中完成。通常,一个**PLL,等待锁,然后连接PLL的例程可以在任何中断服务例程的开始被调用,因为唤醒可能被调用。重要的是,不要试图在从电源关闭模式唤醒后,在执行恢复时简单地给PLL提供信息来重新启动PLL。这将在建立PLL锁之前同时启用和连接PLL

8. PLL 频率计算

表6.确定PLL频率的元素

名称 功能
FOSC 来自晶体振荡器/外部振荡器的频率
FCCO 锁相环电流控制振荡器的频率
CCLK PLL输出频率(也是处理器时钟频率)
M PLL乘法器的值从MSEL位在PLLCFG寄存器
P PLLCFG寄存器中的PSEL位的PLL分频器值

锁相环是有源且连接的,锁相环输出频率为:
CCLK = M×FOSC 或 CCLK = FCCO /(2×P)
CCO频率可计算为:
FCCO = CCLK×2×P 或者 FCCO = FOSC×M×2×P

PLL的输入和设置必须满足以下要求:
1.FOSC在10mhz到25mhz的范围内。
2.CCLK在10mhz到Fmax的范围内(微控制器允许的最大频率-由嵌入的系统微控制器决定)。
3.FCCO在156mhz到320mhz之间。

9.确定PLL设置的程序

如果一个特定的应用程序使用PLL,它的配置可以确定如下:
1.选择所需的处理器操作频率(CCLK)。这可能是基于处理器吞吐量需求,需要支持一组特定的UART波特率,等等。(外围设备可能以比处理器更低的时钟运行)
2.选择振荡器频率(FOSC)。CCLK必须是FOSC的整数倍(非分数)
3.计算M的值来配置MSEL位。M = CCLK / F。M必须在1到32的范围内。在PLLCFG中写入MSEL位的值是M - 1。
4.为P找到一个值来配置PSEL位,使FCCO在其定义的频率范围内。FCCO由上式计算。P必须为1,2,4或8。当P = 1时,在PLLCFG中写入PSEL位的值为00;P = 2为01;10表示P =4;11表示P = 8。

表7. PLL 分频器的值

PSEL 位 (PLLCFG[6:5]) P的值
00 1
01 2
10 4
11 8

表 8. PLL 乘法器的值

MSEL 位 (PLLCFG[4:0]) M的值
00000 1
00001 2
00010 3
00011 4
11110 31
11111 32

10.锁相环配置示例

例如:系统设计要求FOSC = 10 MHz, CCLK = 60 MHz。

根据这些规范,M = CCLK / Fosc = 60mhz / 10mhz = 6。因此,M - 1 = 5将写到PLLCFG[4:0]。
P的值可以由P = F CCO / (CCLK x 2)推导,条件是FCCO必须在156mhz到320mhz之间。假设FCCO允许的最低频率为156mhz,则P = 156mhz / (2 ×60mhz)= 1.3。最高的F CCO频率准则产生P = 2.67。表7中列出的满足这两个要求的P的唯一解是P = 2。因此,将使用PLLCFG[6:5]= 01。

相关文章: