分类:
2011-12-29 09:13:49
原文地址:S3C2440A的系统时钟 作者:Cheney-Xu
1.上电重启S3C2440A时钟链路:由外晶振OSC(或外部时钟)提供时钟输入,然后分成两路,一路由MPLL锁相环倍频出时钟FCK(核时钟),然后经分频出两路时钟HCLK(AHB总线外设时钟)和PCLK(APB总线外设时钟),另一路由UPLL锁相环倍频出时钟UCLK,为USB外设提供时钟,本文主要分析S3C2440A系统时钟的来龙去脉。
1、上电几毫秒后,晶振OSC开始振荡,在晶振时钟输出稳定后,FCLK=晶振频率,随后nReset被释放,CPU开始执行指令
2、用户通过软件配制PLLCON寄存器,一段时间(Lock Time)后,MPLL的重新开始稳定输出。在这段时间(Lock Time)内,FCLK停振,CPU停止工作。Lock Time的长短由寄存器LOCKTIME设定。
3、Lock Time之后,MPLL输出正常,CPU工作在新的FCLK下。
4、虽然MPLL 在reset 以后就开始工作,但是MPLL 输出(Mpll )没有作为系统时钟来使用,直到软件对MPLLCON 寄存器写入有效设置。有效设置前,来自外部晶振或外部时钟源的时钟将直接被当作系统时钟来使用。就算是用户不想改变 MPLLCON 寄存器的默认值,用户应该再重新写入MPLLCON 寄存器一次相同的值。
如下图所示:
5、S3C2410A通过OM[3:2]组合之间的关系选择时钟源,在nRESET 上升沿,OM[3:2]的状态被锁存。为了减少外界环境对开发板电磁干扰,降低制作成本,通常开发板的外部晶振时钟频率都很低,MINI2440开发板由12MHz的晶振来提供时钟源,要想让CPU运行在更高的频率就要通过时钟控制逻辑单元PLL(锁相环)来提高主频,S3C2440里有两个PLL:MPLL和UPLL,MPLL用来产生FCLK,HCLK,PCLK的高频工作时钟,UPLL用来为USB提供工作频率。
2.S3C2410A 上三个时钟FLCK 、HCLK 和PCLK6、Locktime寄存器(变频时间锁定寄存器)
5、MPLLCON及UPLLCON寄存器(分别对应MPLL和UPLL两个锁相环的配制寄存器)
6、输出时钟频率MPLL相对于参考输入时钟频率Fin 的计算公式如下图所示:
(图:PMS(即MPLLCON或UPLLCON)设置时产生的时序)
7、官方推荐的PLL 设置值表
FCLK 用于为S3C2440A的核ARM920T提供时钟,即主频
HCLK 用于为AHB (Advanced High performance Bus,AHB总线用于连接高速外设)总线上的外设提供时钟
PCLK 用于为APB (Advanced Peripheral Bus,APB总线用于连接低速外设)总线上的外设提供时钟
FCLK,HCLK,PCLK三者之间的比例通过CLKDIVN寄存器进行设置,如下图所示:
S3C2440时钟设置时,还要额外设置CAMDIVN寄存器,如下表(下表列出了各种时钟比例):
3.附录HCLK4_HALF,HCLK3_HALF分别与CAMDIVN[9:8]对应,如下表所示
1.ARM920T核内部结构
2.AHB总线上的外设
3.APB总线上的外设