ARM cortex a系列的时钟系统是一个非常复杂而且麻烦的东西,下面我们首先明确一些概念和东西。

本部分主要介绍一下时钟系统的初始化工作,以及里面的一些原理。

S5PV210的时钟系统是一个非常麻烦的东西,首先需要时钟信号的产生,时钟发生器只有和晶振一起工作才能产生时钟信号,这两个单独使用的话是没有任何作用的。

时钟系统分为三个大域:即主系统(MSYS),显示系统(DSYS),和外围系统(PSYS)。

(1)MSYS域包括cortexA8处理器,DRAM内存控制器(DMC0和DMC1),3D,内部SRAM((IRAM, and IROM),

INTC和配置接口(SPERI)。cortex—A8仅支持同步模式,因此它必须在200 mhz 的AXI总线上同步操作。

(2)DSYS域包含显示相关模块,包括FIMC FIMD,JPEG,多媒体IPs(所有在X,L,T模块中提到的“IPs”),

(3)PSYS域用于安全、I/O设备,和低功耗音频。

时钟的来源:

1、从时钟信号来,比如XRTCXTI, XXTI, XUSBXTI, 以及 XHDMIXTI

2、从CMU来,例如ARMCLK, HCLK, PCLK

3、从USB协议中来

4、从GPIO中输入

内部外设的时钟来源源于:晶振+时钟发生器+PLL锁相环+分频电路

特别提示:XUSBXTI中,推荐使用24 mhz晶振因为iROM设计的是基于24 mhz的时钟输入。

HDMI:高清晰度多媒体接口(High Definition Multimedia Interface)

AMBA(Advanced Microcontroller Bus Architecture)协议,是一种面向高性能、高带宽、低延迟的片内总线。

它的地址/控制和数据相位是分离的,支持不对齐的数据传输。AXI:一种总线协议。

内部时钟生成,使用以下组件:

APLL以FINPLL作为输入来产生30MHz ~ 1GHz的时钟

MPLL以FINPLL作为输入来产生50MHz ~ 2GHz的时钟

EPLL以FINPLL作为输入来产生10MHz ~ 600MHz的时钟

VPLL使用FINPLL或SCLK_HDMI27M作为输入来生成10MHz~600MHz的时钟,该锁相环生成54 mhz的电子时钟。 

USB OTG PHY使用XUSBXTI来产生30MHz和48MHz的时钟 

HDMI PHY使用XUSBXTI或者XHDMIXTI来产生54MHz

Cortex A8和MSYS域使用APLL(即ARMCLK, HCLK_MSYS, 和PCLK_MSYS)

DSYS和PSYS clock域(即HCLK_DSYS,HCLK_PSYS,PCLK_DSYS,PCLK_PSYS)和其他外围时钟(即audio IPs, SPI,等)使用MPLL和EPLL

Video时钟(电子/视频时钟使用VPLL

时钟控制器允许绕过PLL来获得低频时钟信号,而且也可以通过软件编程来控制时钟和功能模块的连接和断开。

各个时钟的典型值:

 freq(ARMCLK)       = 1000 MHz 

 freq(HCLK_MSYS)     = 200 MHz 

 freq(HCLK_IMEM)     = 100 MHz 

 freq(PCLK_MSYS)     = 100 MHz 

 freq(HCLK_DSYS)     = 166 MHz 

 freq(PCLK_DSYS)     = 83 MHz 

 freq(HCLK_PSYS)     = 133 MHz 

 freq(PCLK_PSYS)     = 66 MHz 

 freq(SCLK_ONENAND)   = 133 MHz, 166 MHz

PLL锁相环(频率加倍电路)

 APLL可以驱动MSYS域和DSYS域. 可以产生达到1 GHz, 49:51占空比的时钟. 

 MPLL可以驱动MSYS域和DSYS域.它提供 2 GHz和40:60占空比的时钟. 

 EPLL主要用来产生音频时钟. 

 VPLL主要用来产生视频系统操作时钟,54 MHz.  

 比如典型设置中, APLL驱动MSYS域,MPLL驱动DSYS域.