Tutorial sobre el PLL de ARM

Introducción

El bucle de bloqueo de piezas o PLL es un sistema que genera una señal de reloj relativa a una señal de entrada, normalmente procedente de un oscilador de cristal. En este tutorial, veremos cómo configurar el PLL en el LPC2148 y utilizarlo como generador de reloj.

Antes de entrar en el diálogo sobre el PLL, veremos algunos fundamentos de la era de la señal de reloj en el LPC2148 y el oscilador de cristal.

El LPC2148 tiene un oscilador en el chip que funciona en coordinación con un oscilador de cristal externo dentro del rango de 1 MHz a 25 MHz. Si FOSC es la frecuencia de salida del oscilador externo y CCLK es la frecuencia de reloj del procesador, entonces FOSC y CCLK son similares hasta que utilizamos el PLL.

Como utilizamos el PLL, la frecuencia de reloj exterior del oscilador de cristal está restringida al rango de 10 MHz a 25 MHz. Esta frecuencia de entrada del reloj se multiplica con un multiplicador y un oscilador controlador de corriente (CCO) hasta un rango de 10 MHz a 60 MHz. La frecuencia máxima de trabajo en la colección de MCUs LPC214X está limitada a 60 MHz. Por tanto, la salida máxima del PLL es de 60 MHz.

Hay dos módulos PLL en la colección de MCUs LPC214X: PLL0 y PLL1. El PLL0 se utiliza para generar el reloj del sistema y el PLL1 para generar la señal de reloj para el USB. Cada PLL0 y PLL1 se adaptan a la señal de entrada de reloj dentro del rango de 10 MHz a 24 MHz, sin embargo la salida de PLL0 se multiplica para 10 MHz a 60 MHz mientras que la salida de PLL1 se monta a 48 MHz para el reloj USB.

En este tutorial, nos centraremos únicamente en el PLL0, ya que es la señal de reloj principal que actúa como reloj de la CPU y, además, continúa con los periféricos del chip. Como ya hemos dicho, la frecuencia de reloj de entrada del cristal exterior se multiplica con la ayuda de un multiplicador y un CCO. El multiplicador puede ser cualquier número entero dentro del rango de 1 a 32. En la práctica, el multiplicador no puede ser mayor de 6 porque la frecuencia más alta de la CPU está limitada a 60 MHz.

El oscilador gestionado por corriente o CCO funciona dentro de la frecuencia que va de 156 MHz a 320 MHz. Con la intención de mantener el CCO dentro de este rango, se utiliza un divisor adicional dentro del PLL. El divisor también puede ajustarse para dividir por 1, 2, 4 u 8 para generar la frecuencia del reloj de salida.

Antes de entrar en la configuración posterior del PLL, veremos algunos símbolos, fórmulas y valores comunes utilizados incesantemente, tal y como se indica en la hoja informativa.

Símbolos

FOSC Frecuencia del oscilador de cristal
FCCO Frecuencia del oscilador gestionado actual (CCO)
CCLK Frecuencia del reloj de la CPU (frecuencia de salida del PLL)
M Valor del multiplicador PLL (fijado mediante los bits MSEL del registro PLLCFG)
P Valor del divisor PLL (fijado mediante los bits PSEL del registro PLLCFG)
PCLK Reloj periférico CCLK

Fórmulas

La frecuencia del reloj de la CPU o la salida del PLL es

CCLK = M x FOSC o CCLK = FCCO / (2 x P)

La frecuencia del CCO es

FCCO = CCLK x 2 x P o FCCO = FOSC x M x 2 x P

Valores normales (cuando se utiliza el PLL)

  • El rango del FOSC es de 10 MHz a 25 MHz
  • El rango del CCLK es de 10 MHz a FMAX (60 MHz para las MCUs LPC214x)
  • El rango del FCCO es de 156 MHz a 320 MHz

Ajustar el PLL

Notacon la intención de generar la frecuencia de reloj especificada mediante el PLL, tenemos que manipular los valores del multiplicador y del divisor. Esto debe realizarse con excesiva antelación porque la salida del PLL actúa como señal de reloj principal de la CPU y puede ser entregada a diferentes periféricos on - chip que funcionan con la señal de reloj.

Si el PLL falla - configurado (accidental o intencionadamente), el microcontrolador no puede funcionar y la persona es responsable.

En cuanto a la organización del PLL, para evitar fallos involuntarios en la configuración del PLL, tenemos que utilizar una secuencia de alimentación. Una secuencia de alimentación se inicializa en cualquier momento cuando intentamos configurar el PLL. La secuencia de alimentación actúa como una llave para desbloquear la configuración del PLL.

Para configurar la secuencia de alimentación se utiliza un registro específico asociado al PLL conocido como "PLL0FEED". Para establecer la secuencia de alimentación, el registro PLL0FEED debe asignarse con dos valores montados, es decir, 0XAA y 0X55.

El código para iniciar la secuencia de avance es

PLL0FEED = 0XAA

PLL0FEED = 0X55

Una vez que hayamos puesto en marcha la secuencia de alimentación de forma eficaz, podremos proceder a la configuración del PLL. Para ello, necesitamos saber en relación a los diferentes registros del PLL que vamos a utilizar.

Registro de gestión del PLL (PLLCON)registro de gestión de la PLL o registro PLLCON : El registro de gestión de la PLL o registro PLLCON comprende los bits que se utilizan para "Permitir" y "Unir" la PLL. El bit principal dentro del registro PLLCON es el bit de Permitir PLL (PLLE) y el segundo bit es el de Unir PLL (PLLC).

Activar el PLL significa permitirte bloquear los valores del multiplicador y del divisor. Activar el PLL significa permitir que la CPU y los diferentes periféricos del chip utilicen la salida del PLL como señal de reloj.

La sintaxis de este registro es PLLxCON, el lugar "x" es el módulo PLL, es decir, PLL0CON para PLL0 y PLL1CON para PLL1.

Notael lugar "x" en cualquier registro asociado al PLL se utiliza para señalar el bloque PLL, es decir, "x" = 0 para PLL0 y "x" = 1 para PLL1.

Registro de configuración del PLL (PLLxCFG)registro de configuración del PLL : El registro de configuración del PLL se utiliza para revender los valores del multiplicador y del divisor del PLL. Los valores dentro del registro PLLCFG estarán disponibles para impactar sólo cuando se les dé la secuencia de alimentación adecuada.

Los 5 bits principales del registro PLLCFG, conocidos como MSEL, se utilizan para detallar el valor del multiplicador (M). Los dos bits siguientes, conocidos como PSEL, se utilizan para detallar el valor del divisor (P).

Registro permanente del PLL (PLLxSTAT)el registro PLL permanente es un registro de aprendizaje: un solo registro que da los parámetros del PLL que se ajustan mediante diferentes registros del PLL. Si da detalles sobre MSEL (Multiplicador), PSEL (Divisor), PLLE (Permitir PLL), PLLC (Unir PLL) y PLOCK.

La parte principal en la que debemos centrarnos en el registro PLLSTAT es la 11th bit, es decir, PLOCK. El bit PLOCK significa la posición de bloqueo del PLL. El bit PLOCK pasa a '1' sólo cuando el PLL está bloqueado a la frecuencia especificada.

Hay que adoptar el siguiente orden de ajustes para ajustar el PLL a la frecuencia deseada.

  • Configuración del PLL
  • Secuencia de alimentación para bloquear el PLL
  • Busca el PLL para fijar la frecuencia deseada
  • Únete a la PLL
  • Secuencia de encendido para configurar el PLL como reloj del sistema

Anteriormente hemos visto cómo se aplica la Secuencia de Poder. Ahora vamos a transferir más y ver cómo configurar el PLL.

Proceso para descubrir la configuración del PLL

Tenemos que realizar los siguientes pasos para PLL0.

  1. Selecciona la frecuencia del sistema especificada (CCLK). El reloj del sistema también puede basarse principalmente en el rendimiento del procesador, las cargas de baudios de la UART, etc.
  2. Elige la frecuencia de entrada del oscilador de cristal (FOSC). El reloj del sistema (CCLK) debe ser un número de frecuencia del oscilador (FOSC).
  3. Calcula el valor del Multiplicador (M) y establece los bits MSEL. Según las fórmulas mencionadas anteriormente, M = CCLK / FOSC (El rango de M es de 1 a 32). A partir de este valor "M", debemos escribir los bits MSEL en el registro PLL0CFG como "M-1".
  4. Calcula el valor del Divisor (P) y establece los bits PSEL. La división se elige para que la frecuencia del CCO (FCCO) esté dentro de los límites (de 156 MHz a 320 MHz). El valor de "P" puede ser 1, 2, 4 u 8.

Nos permite suponer que la frecuencia de la CPU tiene el mayor potencial, es decir, 60 MHz. Calculemos los valores de P y M pensando en esta frecuencia.

En primer lugar, veamos los valores potenciales de la PSEL basados principalmente en valores "P" completamente diferentes.

P Valor binario en PSEL (Bits 5 y 6 en PLL0CFG)
1 00
2 01
4 10
8 11

Como CCLK = 60 MHz, podemos calcular el valor de P de la siguiente manera. La ecuación para calcular P viene dada por

P = FCCO / (2 X CCLK)

Todos sabemos que el rango del FCCO es de 156 MHz a 320 MHz.

Sustituyendo FCCO = 156 MHz, obtenemos P = 156 MHz / (2 X 60 MHz) = 1,3.

Sustituyendo FCCO = 320 MHz, obtenemos P = 320 MHz / (2 X 60 MHz) = 2,67.

Como el valor de "P" debe ser un número entero, el número entero entre 1,3 y un par de,6 es "2".

Como hemos obtenido el valor de "P" como "2", el valor dentro de los bits PSEL debe ser "01".

Calculemos ahora el valor de "M". A partir de las fórmulas anteriores, podemos calcular el valor de "M" mediante el siguiente método.

M = CCLK / FOSC

El siguiente escritorio significa un inventario de los posibles valores del oscilador de cristal junto con los valores de 'M', 'MSEL', 'P', 'PSEL' y el valor dentro del registro PLL0CFG.

FOSC M Valle en MSEL (M -1) P Valor del PSEL Valor en PLL0CFG
5 MHz 12 11 = 0XB 2 01 0X2B
10 MHz 6 5 = 0X5 2 01 0X25
12 MHz 5 4 = 0X4 2 01 0X24
15 MHz 4 3 = 0X3 2 01 0X23
20 MHz 3 2 = 0X2 2 01 0X22

Reloj periférico (PCLK)

La señal de reloj del PLL se da a la CPU como reloj. La señal PLL debería incluso estar equipada con diferentes periféricos en - chip. Por defecto, el reloj de los periféricos (PCLK) funciona a 1/4 de velocidad del CCLK. La relación entre el reloj de la CPU y el de los periféricos puede configurarse mediante el uso de un registro particular conocido como "VPBDIV" (según el compilador Keil).

La siguiente imagen muestra el diagrama de bloques del PLL, CCLK y PCLK.

Diagrama de bloques del PLL

El valor del registro VPBDIV determina el valor del PCLK. El siguiente escritorio revela los valores potenciales del VPBDIV y los valores correspondientes del PCLK.

VPBDIV = 0x00 PCLK es ¼ de CCLK
VPBDIV = 0x01 PCLK es lo mismo que CCLK
VPBDIV = 0x02 PCLK es ½ de CCLK
VPBDIV = 0x03 Reservado. No hay impacto.

Ahora hemos visto todos los registros, ajustes y cálculos que son obligatorios para poder configurar el PLL0. Para más detalles sobre esto, podemos ver tanto la hoja informativa como el manual personal de la colección de MCUs LPC214x.

Ahora veamos un programa de ejemplo para configurar PLL0 de forma que el reloj de la CPU (CCLK) y el reloj de los periféricos (PCLK) funcionen a 60 MHz con un oscilador de cristal externo que funcione a 12 MHz.

Nota12 MHz es el valor más típico del oscilador de cristal en muchas placas de crecimiento de microcontroladores. Si el evento que vas a utilizar tiene un oscilador de cristal distinto (por alguna causa inusual), entonces tenemos que contemplar los valores de 'M' y 'P'.

#outline PLOCK 0x00000400

int primario(void)

{

/* PPLE = 1 y PPLC = 0, por lo que es probable que PLL0 esté activado, aunque no esté relacionado. */

PLL0CON = 0x01;

/* El PLL0CFG está listo según la secretaria de la que hablamos antes. */

PLL0CFG = 0x24;

/* Secuencia de encendido para bloquear el PLL0 a la frecuencia deseada */

PLL0FEED = 0xAAA;

PLL0FEED = 0x55;

/* Comprueba si PLL0 está o no bloqueado a la frecuencia especificada estudiando el bit de bloqueo

dentro del registro PPL0STAT */

while( !( PLL0STAT & PLOCK )));

/* Ahora activa (una vez más) y une PLL0 */

PLL0CON = 0x03;

/* Secuencia de encendido para activar el PLL0 como reloj del sistema */

PLL0FEED = 0xAAA;

PLL0FEED = 0x55;

/* ¡Ahora el reloj del sistema funciona a 60 MHz! El siguiente paso es ajustar el Reloj Periférico a la misma frecuencia que el Reloj del Sistema */

VPBDIV = 0x01;

mientras(1);

}

Si quieres conocer otros artículos parecidos a Tutorial sobre el PLL de ARM puedes visitar la categoría Electricidad Básica.

¡Más Contenido!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir