happysaisai

ADI的SHARC系列处理器的内核PLL管理(4.2)

0
阅读(2420)

SHARC处理器使用PLL来获得比时钟源(CLKIN)更高频率的时钟。PLL产生处理器的外设、处理器内核和内部存储器所需的时钟。在硬件上电期间,处理器的CLK_CFG1-0引脚选择处理器内核时钟(CCLK)与CLKIN之比,通过开关来选择比值,比值包括6:1,16:1,32:1。电源管理控制寄存器(PMCTL)可实现由软件对PLL的动态编程。PMCTL用于选择硬件引脚不支持的CCLK与CLKIN的比值。 PLL的框图如图所示:

它包括单输入分频器、乘法器和一个产生CCLK的分频器。

对于ADSP-2136x和ADSP-2137x处理器来说PCLK是CCLK的一半。

下面介绍一下PLL编程步骤:

在设置了乘法器的值之后,仅使用乘法器对PLL编程时,应用程序应将PLL设置为旁路模式并等待PLL锁定在新频率。在旁路模式,处理器内核运行频率为CLKIN。PLL在4096个CCLK周期(在本例是CLKIN周期)之后才能锁定于编程频率。一旦PLL锁定,应将旁路模式取消。

仅使用分频器对PLL编程时,分频器的值通过PLLDx位设置,在同一指令中用DIVEN位将分频器使能。

同时使用分频器和乘法器对PLL进行编程有两种方法:

(1)方法一

设置PLL乘法器和分频器的值,并将DIVEN位设置为1使能分频器;

一个CCLK时钟周期之后,通过设置旁路位(PLLBP)为1将PLL设置为旁路模式。在对PMCTL寄存器进行写操作之前将DIVEN位清除;

在旁路状态等待最少4096个周期直到PLL锁定;

通过清除旁路位(PLLBP=0)撤销PLL旁路模式。在对PMCTL寄存器进行写操作之前确保已经清除了DIVEN位。

(2)方法二

设置PLL乘法器和分频器的值并将旁路位(PLLBP)设置为1使PLL处于旁路状态;

在旁路状态等待最少4096个周期直到PLL锁定;

通过清除旁路位(PLLBP=0)撤销PLL旁路模式;

等待一个CCLK周期;

通过设置DIVEN位使能分频器。

对PMCTL寄存器编程时需要考虑下面几个问题:

使用乘法器和分频器对PLL编程时,在同一个CCLK周期不要同时对DIVEN和PLLBP位编程。对它们编程时至少间隔一个CCLK周期。

在用户应用程序中,根据下述条件选择PLL乘法器的值:

如果输入分频器未使能(INDIV=0),CLKIN和PLLM的乘积不要超过400MHz;

如果输入分频器使能了(INDIV=1),CLKIN和PLLM的乘积不要超过800MHz.

最大的VCO频率不能超过800MHz.VCO频率按照下面的式子计算:

VCO频率计算:fVCO = 2 * PLLM * fINPUT

CCLK频率计算:fCCLK = (2 * PLLM * fINPUT) / (2 * PLLN)

式中:fVCO=VCO频率,fCCLK =CCLK频率;PLLM=乘法器编程值;PLLN=分频器编程值;fINPUT =PLL输入频率;fINPUT=CLKIN(当禁用输入分频器时),或CLKIN/2(当使能输入分频器时)。

(3)将PLL设置为旁路模式(通过将PLLBP位设置为1)或者取消PLL的旁路模式(清除PLLBP位)过程中在写PMCTL寄存器时要清除DIVEN位。

(4)在PMCTL寄存器中设置CCLK与SDCLK之比时要对DIVEN位置位。

 PLL用于产生内核时钟和外设时钟。如果对PLL编程错误,PLL不会锁定在需要的频率上。这会使处理器内核和外设的运行出现异常。