首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

S5PC100 时钟配置详解(1)

S5PC100 时钟配置详解(1)

驱动数字电路运转的是时钟信号,时序电路都需要一个外部时钟信号来驱动,完成计时,同步,计数,时序控制等各种功能。像CPU也是时序信号驱动来完成各种运算的,而且像ARM带的模块大部分都与时序有关,因此理解时钟信号对于底层编程非常重要。




一、时钟信号的源头--晶振





    数字电路的时钟信号的来源哪里呢?主流的设计方案是使用时钟这种外部器件来产生稳定的电流波形。这是性价比最高的一个方案,晶振是一块水晶加一些电路的小器材,但是它只需要输入很小的电流就可以持续输出稳定时钟波形。

晶振在数字电路的作用就是提供一个基准时间,数字电路都是按照时序进行工作的,在某个时刻专门完成特定的任务,因此几乎每个电路都有会接外部时钟信号的管脚。如果某个时钟信号发生混乱,整个电路就工作不正常了。在一个整体设备里,如开发板或PC主板,所有电路通常共享一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。





二、系统主频--内部时钟频率





    一般晶振称为外部时钟频率,它需要把信号引入数字电路给CPU和其他模块使用,局限于材料的物理特性,一般的晶振的频率并不是太高。如S5PC100上的晶振频率一般是12MHZ,而对应的CPU需要时钟信号高达667MHZ,或者更高。这个时候,需要把较低外部时钟信号增加到CPU可以接收的频率。这称为倍频。S5PC100的主频最高可达到800MHZ。




锁相环电路



    倍频的功能是由一种特殊电路--锁相环电路完成的。锁相环电路(Phase-Locked Loop,缩写PLL),PLL基本上是一个闭环的反馈控制系统,它使PLL的输出可以与一个参考信号保持固定的相位关系。PLL在电路的作用之一是起到倍频的作用。即可以输出系统时钟的固定倍数频率。

因为在ARM CPU启动后,最开始必须做的事情就是配置倍频的比率。这样当输入外部时钟频率一定的情况下,按照倍频的比例,就可以得到CPU的频率。在嵌入式CPU里面,一个系统可能出于不同的母的需要不同的频率运行。低频运算速度慢但是省电,高频运算速度快但耗能大。



每个CPU都有一个最高频,如果强行配置成高于设计频率的速度运行,就是人们称的超频。有可能加速CPU老化,运行时散热增加的问题。





一般为了保险,软件开发都会配成产商给的几种标准频率。





三、设备频率





    在SOC上,除了CPU内核以外,在一个物理芯片上,还有一些其他模块,以S5PC100为例,它带了I2C,UART,USB等多个模块,这一些模块通过AMBA总线与CPU内核相连,这一些模块同样需要时钟信号来驱动。



但是ARM的主频信号相对于这一些模块来说,频率显得过高。这个时候像S5PC100中内核会提供两种较低频率的时钟信号。HCLK和PCLK两种时钟信号给设备使用。





divider 分频器



    但是对一些低频模块,PCLK的频率仍然显得过高,这时需要模块自己使用分频器(divider)来把频率进一步降低。降到多少值一般取决于软件的需求,因此各个模块的分频参数一般都是可以调整的。因此初始化模块时候,软件做的一件重要事情就是设置分频参数。





    Prescaler 预分频因子



    有一些模块,如果需要编程来设定分频的比率,通常是用Prescaler即预分频因子这个参数来设定分频后的值,假设输入频率Fin,分频后输出的频率是Fout,而三者有如下关系



Fout = Fin/(Prescaler + 1)

在某一些模块里,分频后的频率仍然是太高,可能需要再次分频,这时分频的参数一般 称为divider value,这样公式变成

Fout = Fin / (Prescaler + 1) / divider



以PWM的定时器的参数为例,它的设置就有如下几个值




以供电系统为例来给这种系统时钟打一个比方

晶振就是发电站,它通过PLL倍频后变成高压电,给CPU传输使用,而模块又使用分频器把高压电降下来给自己使用。




四、S5PC100时钟分析





    S5PC100的ARM核心是cortex-A8,核心主频为667MHZ,最高可达800MHZ。

S5PC100的时钟信号可以由外部晶振(XXTI)和外部晶振(XusbXTI),两种方式输入时钟信号。它是由跳线OM[0]决定的,这一位为0 时,由XXTI提供,为1时由XusbXTI提供。





由于外部晶振提供的时钟频率只有12MHZ, 需要通过PLL来倍频。S5PC100提供了4个PLL,分别为:APLL,MPLL,HPLL,EPLL。

APLL给ARM CORE用的,可以产生50MHZ ~ 2GHZ

MPLL主要给系统总线使用,可以产生 12MHZ ~ 600MHZ

EPLL 主要给一些需要特殊频率设备使用(audio),12MHZ ~ 600MHZ

HPLL 主要给HDMI使用,可以产生27MHZ ~ 600MHZ



S5PC100 的时钟系统比较复杂,给一个模块提供的时钟,可以由多条路径提供,我们在实际操作的时候,只需要选择其中的一条路径即可。





这里以配置S5PC100的核ARMCLK为例,讲解S5PC100时钟配置的套路。





图中MUX为多路复用器,如MUXAPLL,将其值设为0,选择 FINAPLL输入(没有倍频),将其值设为1选择FOUTAPLL(APLL倍频)输入。DIV为分频器。



ARMCLK的时钟可以配置由XXTI输入->APLL倍频->DIVAPLL分频->DIVARM分频->ARMCLK。

以此类推,如果想得到HCLK1的时钟,可以由哪几种选择呢?读者可以自己思考。
返回列表