Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198215
  • 博文数量: 28
  • 博客积分: 197
  • 博客等级: 入伍新兵
  • 技术积分: 291
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-18 14:10
文章分类

全部博文(28)

文章存档

2013年(11)

2012年(17)

分类:

2012-09-13 18:22:52

Andrew Huang  转载请注明作者和联络方式
 
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);
     
阅读(1201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~