Clock Controller/es
Clock Controller
La lógica de reloj del procesador Ingenic jzXXXX, puede generar las señales requeridas para el correcto funcionamiento de todo el SoC.
Con esta lógica se pueden generar relojes lentos sin la necesidad del PLL. La configuración de la generación de reloj se hace via software, lo que permite optimizar el sistema para reducir el consumo de potencia.
A continuación se muestra una tabla descriptiva de los relojes:
Señal | Descripción |
CCLK | Reloj utilizado para operaciones internas como la ejecución de instrucciones desde la memoria caché este reloj puede ser deshabilitado durante el modo DOZE y IDLE. |
HCLK | Señal de reloj para el manejo del bus del sistema y puede ser deshabilitado en el modo SLEEP |
PCLK | Reloj para dispositivos que usan el bus APB(Advanced Peripheral Bus) |
MCLK | Reloj para el controlador EMC(External Memory Controller) |
CK0 | Reloj SDRAM |
LDCLK | Reloj para el dispositivo LCD |
LPCLK | Reloj contador de pixel del LCD |
CIM_MCLK | Reloj de salida del modulo CIM |
CIM_PCLK | Reloj de entrada del modulo CIM |
I2SCLK | Reloj del modulo I2S (Integrated Interchip Sound) |
MSCCLK | Reloj para el modulo MSC (Midi Show Control) |
SSICLK | Reloj para el modulo SSI (Synchronous Serial Interface) |
EXCLK | Reloj de 12Mhz para los protocolos de comunicacion seriales |
A continuacion se muestra una tabla con los registros que se modifican para configurar los relojes:
Nombre | Descripción | Valor Reset | Direccion |
---|---|---|---|
CPCCR | Registro de control de reloj | 0x42040000 | 0x10000000 |
CPPCR | Registro de control del PLL | 0x28080011 | 0x10000010 |
I2SCDR | Divisor de reloj para el bloque I2S | 0x00000004 | 0x10000060 |
LPCDR | Divisor de reloj para el LCD pix | 0x00000004 | 0x10000064 |
MSCCDR | Divisor de reloj MSC | 0x00000004 | 0x10000068 |
UHCCDR | Divisor de reloj de 48M Usb Host Controller | 0x00000004 | 0x1000006C |
SSICDR | Divisor de reloj del bloque SSI | 0x00000004 | 0x10000074 |
Todos los registros son de un tamaño de 32 bits y se pueden configurar mediante software
[edit] Registro configuración del PLL(CPPCR)
En este registro accedemos a la configuración del PLL donde podemos modificar los divisores, habilitar o no el PLL y tiempo de estabilizacion del PLL. este registro se inicializa por medio de un reset a 0x280811.
Descripción de la configuración:
PLLM: Divisor de realimentación, BITS (31:23).
PLLN: Divisor de entrada al PLL, BITS (22:18).
PLLOD: BITS (17:16) divide según la siguiente tabla:
Bits | divisor |
---|---|
00 | 1 |
01 | 2 |
10 | 2 |
11 | 4 |
Reservado: estos bit no se pueden modificar quedan cargados con ceros. PLLS: bandera de estabilización del PLL; 0 no se a estabilizado el PLL con 1 ya esta estabilizado, BIT 10
PLLEN: habilitamos el PLL con 1 y con 0 lo deshabilitamos, BIT 8.
PLLBP:Conmuta si la señal de reloj sale del PLL o del reloj de 12MHz, BIT 9.
PLLST:tiempo de estabilizacion del PLL se basa en la señal RTCCLK, se inicializa por defecto con H'11' BITS (7:0).
La salida del PLL la podemos obtener de la siguiente ecuación:
M * XIN / (N * NO)
Donde:
XIN: señal de reloj de entrada, en este caso seria 12MHz.
M: PLLM +2
N: PLLN+2
NO: 2PLLOD(0) + PLLOD(1)
Analizando el Valor de reset del registro CPPCR 0x28080011:
CPPCR=101000000010000000000000010001
donde:
PLLM= 101000000= 320
PLLN= 01000 = 8
PLLOD=00
M=322
N=10
NO=1
Por lo tanto la salida del PLL seria 322 * 12MHz / (10) = 386MHz
pero ya que esta el PLL esta deshabilitado Bit 8=0.
y el PB=0: la salida del PLL seria 12MHz
En la siguiente animación se puede ver los bloques del pll y como esta relacionado con el registro CPPCR
[edit] Registro de control de reloj
Este registro especifica las razones de división para controlar las señales CCLK, HCLK, PCLK, MCLK y LDCLK.
A continuación se hara un desglose de la configuración de este registro.
I2CS
Este bit permite seleccionar la fuente de reloj entre la salida del PLL y el cristal de 12 MHz para el bloque I2S. Los posibles valores son 0 y 1 y determinan lo siguiente:
0: la fuente de reloj sera EXCLK, o sea la señal directamente del reloj. 1: la fuente de reloj sera la salida del PLL dividida entre el valor almacenado en el registro I2SDIV.