您的位置:首页 > 其它

ARM软件访问硬件的核心理论(2.1)---S3C6410 时钟分析

2012-02-24 16:15 302 查看
S3C6410的ARM内核是 ARM1176JZF-S ,在1.1v下最高可以跑 533MHz,1.2v可以跑 667MHz。

S3C6410用的是可以使用外部晶振(XXTIpll)和外部时钟(XEXTCLK),两种方式输入时钟信号.它由跳线OM[0]决定,这一位为0,选择XXTIpll .否则选择 XEXTCLK.

APLL/MPLL/EPLL

S3C6410提供三种PLL,它们是APLL,MPLL和EPLL.他们提高不同倍数来给不同模块来使用.理论上可PLL可以倍频到1.6GHz.

APLL即ARM PLL,

MPLL即 Main PLL,

EPLL即extra PLL,



由上框图可以看出,APLL倍频后信号给ARM11内核,

MPLL倍频信号给ARM周边 AXI,AHB,APB三个总线,中间各个设备常用的HCLK和PCLK时钟频率也是从这里分频出去的。

其中AXI/AHB总线设备使用 HCLK频率,APB总线设备使用PCLK频率。

而EPLL主要是给需要特殊频率的设备UART/IIC/IIS等设备提供的

HCLK/PCLK/HCLKX2/



ARM11内核最高可以达到667MHz主频,而其内部自带一个分频器(divider)-- DIVRAM,最高可以做到16分频.

而ARM11内核与其它内部模块通过三个总线AXI/AHB/APB相连,AXI总线/AHB总线设备,运行速度最高可达到133MHz的.即HCLK频率 而APB总线的设备最高是66MHZ,即PCLK频率.



S3C6410还会有一额外的 HCLKX2 两个DDR控制器,DDR0和DDR1的来单独使用,它最高可以到266MHz,单独这样处理会降低功耗。



如果觉得HCLK频率过高,可以通过DIVHCLK 分频器通过一频降频,PCLK也能通过DIVPCLK来分频。









在上图还出现在DIVJPEG和DIVSEC,这里是因为硬件JPEG加速模块和安全模块这两个虽然是挂在AHB总线上,但不能运行在133MHZ频率之上,因此这两个模块需要两个特殊分频器(DIVCLKJPEG 和DIVCLKSECUR)来单独分频。



这样有如下换算关系。









注意后面的写法 0/668MHZ 这里不是分数表达,前面是预分频因子 !(即SFR)后面分频后的输出频率.



它有 Fout = Fin / (SFR +1) 关系



以最后一行为例,前面两列是倍频后时钟频率,这里当APLL倍频后达到667MHZ,MPLL倍频到266MHz后,

后面各列经过各个分频器后输出时钟频率,而且这里变化是APLL的频率,而MPLL倍频后的时钟频率始终为266MHZ.


DIVarm分频因子为0,即从APLL输入到CPU后仍然是 667MHZ


因此在S3C6410软件中,我们可以把如下频率看成是常量

DIVhclkx2 分频因子为0,这样从MPLL输入,得到HCLKX2的时钟频率为 266MHZ.
DIVhclk 分频因子为1,这样从MPLL输入,得到HCLK的时钟频率为 133MHZ.
DIVclkjpeg/DIVpclk/DIVclkjsecuse 分频因子均为3,这样从MPLL输入,得到
PCLK的时钟频率为 66MHZ,CLKJPEG/CLKSECUSE也是如此

特殊时钟频率

有不少模块采用特殊的时钟频率,这一些模块往往采用EPLL作为输入时钟频率,如LCD的时钟频率



如何判断IP模块所属总线?

S3C6410比较简单,它有三个寄存器,HCLK_GATE, PCLK_GATE,SCLK_GATE用来判断各个模块需要使用哪一个时钟频率。
只要看哪一个模块在哪一个GATE寄存器,即采用哪种频率





使用PCLK的设备





SCLK_GATE是指明一些模块采用特殊频率







S3C6410 APLL /MPLL 锁相环倍数设定



在S3C6410系统中,锁相环的倍和输入频率,还有输出频率都不是随便设定,而且有要求,并能满足一定公式。



APLL倍数



一般输入晶振要求 12mHZ.基本是衡定不变的,以Fin表示。这样要求CPU在不同频率下运行,它的频率用Fout表示,必须要调整参数,其中需要满足如下公式

下列公式中MDIV/PDIV/SDIV就是软件开发者要设置的值







为了简化开发,一般会有如下固定值给开发来设定





其中APLL的设置由APLL_CON来设置,MPLL的设置由EPLL_CON来设置它们有如下格式



如想设置主频为667MHz ,则寄存器要设为

rAPLL_CON = (1<<31) |(33 <<16) | ( 3 << 8) | (1<< 0);

本博客转载自 http://blog.csdn.net/yangzhu1982/article/details/6096123,对6410时钟总结的不错,收藏了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: