前言
This chapter describes the clock management unit (CMU) supported by S5PV210. The system controller (SYSCON) manages CMU and power management unit (PMU) in S5PV210.
本章介绍 S5PV210 支持的时钟管理单元(CMU)。系统控制器(SYSCON)管理 S5PV210 中的 CMU 和电源管理单元(PMU)。
一、时钟域:MSYS、DSYS、PSYS
S5PV210 consists of three clock domains,namely, main system(MSYS), display system(DSYS),
and peripheral system(PSYS),as shown in Figure 3-1.
S5PV210由三个时钟域组成,即主系统(MSYS)、显示系统(DSYS)和外围系统(PSYS),如图3-1所示。
MSYS domain comprises Cortex A8 processor,DRAM memory controllers(DMCO and
DMC1),3D,internal SRAM(IRAM,and IROM),INTC,and configuration interface (SPERI).
Cortex A8 supports only synchronous mode,and therefore it must operate
synchronously with 200MHz AXI buses.
MSYS域包括Cortex A8处理器、DRAM内存控制器(DMCO和DMC1)、3D、内部SRAM(IRAM和IROM)、
INTC和配置接口(SPERI)。Cortex A8仅支持同步模式,因此必须与200MHz AXI总线同步运行。
DSYS domain comprises display related modules, including FIMC,FIMD,JPEG,and
multimedia IPs(all other IPs mentioned in X,L,and T blocks), as shown in Figure 3-1.
DSYS域包括显示相关模块,包括FIMC、FIMD、JPEG和多媒体IP(X、L和T块中提到的所有其他IP),
如图3-1所示。
PSYS domain is used for security,I/O peripherals,and low power audio play.
PSYS域用于安全、I/O外围设备和低功耗音频播放。
Each bus system operates at 200 MHz(maximum),166 MHz,and 133 MHz,respectively.
There are asynchronous bus bridges(BRG)between two different domains.
每个总线系统的工作频率分别为200 MHz(最大值)、166 MHz和133 MHz。有
两个不同域之间的异步总线桥(BRG)。
- 因为 S5PV210 的时钟体系比较复杂,内部外设模块太多,因此把整个内部的时钟划分为 3 大块,叫做 3 个域。
- MSYS: CPU(Cortex-A8内核)、DRAM控制器(DMC0和DMC1)、IRAM&IROM······
- DSYS: 都是和视频显示、编解码等有关的模块
- PSYS: 和内部的各种外设时钟有关,譬如串口、SD接口、I2C、AC97、USB等。
- 为什么内部要分为 3 个域,怎么划分的?因为 210 内部的这些模块彼此工作时钟速率差异太大了,所以有必要把高速的放一起,相对低速的放一起。
二、时钟来源:晶振 + 时钟发生器 + PLL + 分频电路
CLOCK DECLARATION
Figure 3-2 shows the classification of clocks in S5PV210. The top-level clocks in
S5PV210 include:
• Clocks from clock pads, that is, XRTCXTI, XXTI, XUSBXTI, and XHDMIXTI.
• Clocks from CMU (for instance, ARMCLK, HCLK, PCLK, and so on.)
• Clocks from USB PHY
• Clocks from GPIO pads
时钟声明
图3-2显示了S5PV210中时钟的分类。S5PV210的顶级时钟包括:
•来自时钟垫的时钟,即 XRTCXTI、XXTI、XUSBXTI 和 XHDMIXTI。
•来自 CMU 的时钟(例如,ARMCLK、HCLK、PCLK 等)
•USB PHY 时钟
•GPIO 焊盘的时钟
1、CLOCKS FROM CLOCK PADS
The following clocks are provided by clock pads. However,you can disable crystal
clock pads.
时钟垫提供以下时钟。但是,您可以禁用水晶时钟垫。
XRTCXTI: Specifies a clock from 32.768 KHz crystal pad with XRTCXTI and XRTCXTO
pins. RTC uses this clock as the source of a real-time clock.
XRTCXTI:指定具有XRTCXT1和XRTCXTO引脚的32.768 KHz晶体焊盘的时钟。RTC使用此时钟作为
实时时钟的源。
XXTI:Specifies a clock from crystal pad with XXTI and XXTO pins. When USB PHY is
not used in commercial set,CMU and PLL use this clock to generate other clocks to
modules (APLL,MPLL,VPLL,and EPLL.).The input frequency ranges from 12~50 MHz.It is
recommended to use 24MHz crystal because iROM was designed based on the 24MHz input clock.
XXTI:指定来自带有XXTI和XXTO引脚的水晶焊盘的时钟。当USB PHY未用于商用设备时,CMU和PLL
使用该时钟向模块(APLL、MPLL、VPLL和EPLL)生成其他时钟。输入频率范围为12~50MHz。建议
使用24MHz晶体,因为iROM是基于24MHz输入时钟设计的。
XUSBXTI:Specifies a clock from a crystal pad with XUSBXTI and XUSBXTO pins.This
clock is supplied to APLL,MPLL,VPLL,ELL,and USB PHY.For more information on USB
PHY clock,refer to Chapter 8.4 "USB 2.0 HOST Controller and 8.5 "USB2.0 HS OTG "
It is recommended to use 24MHz crystal because iROM was designed based on the
24MHz input clock.
XUSBXTI:从带有XUSBXT1和XUSBXTO引脚的水晶垫指定时钟。该时钟提供给APLL、MPLL、VPLL、
ELL和USB PHY。有关USB PHY时钟的更多信息,请参阅第8.4章“USB 2.0主机控制器和8.5”USB2.0
HS OTG。建议使用24MHz晶体,因为iROM是基于24MHz输入时钟设计的。
XHDMIXTI:Specifies a clock from 27MHz crystal pad with XHDMIXTI and XHDMIXTO
pins.VPLL or HDMI PHY generates 54MHz clock for TV encoder.
XHDMIXTI:指定具有XHDMIXI和XHDMIXTO引脚的27MHz晶体焊盘的时钟。VPLL或HDMI PHY为
电视编码器生成54MHz时钟。
• XXTI and XXTO use wide-range OSC pads.
• XUSBXTI and XUSBXTO use wide range OSC pads.
• XHDMIXTI and XHDMIXTO use wide range OSC pads.
• XRTCXTI and XRTCXTO use OSC pads for RTC.
• ARMCLK specifies clock for Cortex A8 (up to 1GHz).
• HCLK_MSYS
specifies AXI clock for MSYS clock domain,
as shown in Figure 3-1.
The maximum operating frequency is up to 200MHz.
• PCLK_MSYS
specifies APB clock for MSYS clock domain,
as shown in Figure 3-1.
The maximum operating frequency is up to 100MHz.
• HCLK_DSYS
specifies AXI/AHB clock for DSYS clock domain
, as shown in Figure 3-1.
The maximum operating frequency is up to 166MHz.
• PCLK_DSYS
specifies APB clock for DSYS clock domain
, as shown in Figure 3-1.
The maximum operating frequency is up to 83 MHz.
• HCLK_PSYS
specifies AXI/AHB clock for PSYS clock domain
, as shown in Figure 3-1.
The maximum operating frequency is up to 133MHz.
• PCLK_PSYS
specifies APB clock for PSYS clock domain
, as shown in Figure 3-1.
The maximum operating frequency is up to 66 MHz.
• Special clocks specify all the clocks except bus clock and processor core clock.
2、CLOCKS FROM CMU
-
APLL uses FINPLL (refer to Figure 3-1) as input to generate 30MHz ~ 1GHz.
APLL 使用 FINPLL(见图3-1)作为输入,产生 30MHz~1GHz。 -
MPLL uses FINPLL as input to generate 50MHz ~ 2GHz.
MPLL 使用 FINPLL 作为输入,生成 50MHz~2GHz。 -
EPLL uses FINPLL as input to generate 10MHz ~ 600MHz.
EPLL 使用 FINPLL 作为输入,生成 10MHz~600MHz。 -
VPLL uses FINPLL or SCLK_HDMI27M as input to generate 10MHz ~ 600MHz. This PLL generates 54MHz video clock.
VPLL 使用 FINPLL 或 SCLK_HDMI27M 作为输入,生成 10MHz~600MHz。该 PLL 产生54MHz 视频时钟。 -
USB OTG PHY uses XUSBXTI to generate 30MHz and 48MHz
USB OTG PHY 使用 XUSBXTI 生成 30MHz 和 48MHz -
HDMI PHY uses XUSBXTI or XHDMIXTI to generate 54MHz
HDMI PHY 使用 XUSBXTI 或 XHDMIXTI 生成 54MHz
In typical S5PV210 applications,
在典型的 S5PV210 应用中,
- Cortex A8 and MSYS clock domain uses APLL (that is, ARMCLK, HCLK_MSYS, and PCLK_MSYS).
Cortex A8 和 MSYS 时钟域使用 APLL(即 ARMCLK、HCLK_MSYS和 PCLK_MSYS)。 - DSYS and PSYS clock domain (that is, HCLK_DSYS, HCLK_PSYS, PCLK_DSYS, and PCLK_PSYS) and other peripheral clocks (that is, audio IPs, SPI, and so on) use MPLL and EPLL.
DSYS 和 PSYS 时钟域(即 HCLK_DSYS、HCLK_PSYS、PCLK_DSYS 和 PCLK_PSYS)和其他外围时钟(即音频IP、SPI等)使用 MPLL 和 EPLL。 - Video clocks uses VPLL.
视频时钟使用 VPLL。
Clock controller allows bypassing of PLLs for slow clock. It also connects/ disconnects the clock from each block (clock gating) using software, resulting in power reduction.
时钟控制器允许为慢时钟绕过 PLL。它还使用软件连接/断开每个块的时钟(时钟门控),从而降低功率。
-
S5PV210 外部有 4 个晶振接口,设计板子硬件时可以根据需要来决定在哪里接晶振。接了晶振之后上电,相应的模块就能产生振荡,产生原始时钟。原始时钟再经过一系列的筛选开关进入相应的PLL电路生成倍频后的高频时钟。高频时钟再经过分频到达芯片内部各模块上。(有些模块,譬如串口内部还有进一步的分频器进行再次分频使用)。
-
PLL 倍频,包括 APLL、MPLL、EPLL、VPLL。
-
APLL:Cortex-A8 内核 、MSYS 域
-
MPLL & EPLL:DSYS、 PSYS
-
VPLL:Video 视频相关模块
三、S5PV210 时钟域详解
1、MSYS 域:
ARMCLK: 给cpu内核工作的时钟,也就是所谓的主频。
HCLK_MSYS: MSYS 域的高频时钟,给 DMC0 和 DMC1 使用
PCLK_MSYS: MSYS 域的低频时钟
HCLK_IMEM:给 iROM 和 iRAM(合称iMEM)使用
2、DSYS域:
HCLK_DSYS:DSYS 域的高频时钟
PCLK_DSYS:DSYS 域的低频时钟
3、PSYS域:
HCLK_PSYS:PSYS 域的高频时钟
PCLK_PSYS:PSYS 域的低频时钟
SCLK_ONENAND:
总结:210 内部的各个外设都是接在(内部 AMBA 总线)总线上面的,AMBA 总线有 1 条高频分支叫 AHB,有一条低频分支叫 APB。上面的各个域都有各自对应的 HCLK_XXX 和 PCLK_XXX,其中 HCLK_XXX 就是 XXX 这个域中 AHB总 线的工作频率;PCLK_XXX 就是 XXX这个域中 APB 总线的工作频率。
SoC 内部的各个外设其实是挂在总线上工作的,也就是说这个外设的时钟来自于他挂在的总线,譬如串口 UART 挂在 PSYS 域下的 APB 总线上,因此串口的时钟来源是 PCLK_PSYS。
我们可以通过记住和分析上面的这些时钟域和总线数值,来确定我们各个外设的具体时钟频率。
4、各时钟典型值(默认值,iROM 中设置的值)
- 当 210 刚上电时,默认是 外部晶振 + 内部时钟发生器产生的 24MHz 频率的时钟直接给ARMCLK 的,这时系统的主频就是 24MHz,运行非常慢。
- iROM 代码执行时第 6 步中初始化了时钟系统,这时给了系统一个默认推荐运行频率。这个时钟频率是三星推荐的 210 工作性能和稳定性最佳的频率。
- 各时钟的典型值:
- 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 can drive MSYS domain and DSYS domain. It can generate up to 1 GHz, 49:51 duty ratio.
APLL 可以驱动 MSYS 域和 DSYS域。它可以产生高达 1GHz、49:51的占空比。 -
MPLL can drive MSYS domain and DSYS domain. It supplies clock, up to 2 GHz and 40:60 duty ratio.
MPL 可以驱动 MSYS 域和 DSYS 域。它提供高达 2GHz 和 40:60 占空比的时钟。 -
EPLL is mainly used to generate audio clock.
EPLL 主要用于生成音频时钟。 -
VPLL is mainly used to generate video system operating clock, 54 MHz.
VPLL 主要用于生成视频系统工作时钟,54MHz。 -
Typically, APLL drives MSYS domain and MPLL drives DSYS domain.
通常,APLL 驱动 MSYS 域,MPL 驱动 DSYS 域。
NOTE: Although there is the equation for choosing PLL value, we strongly recommend only the values in the PLL value recommendation table. If you have to use other values, please contact us.
注:虽然有选择 PLL 值的公式,但我们强烈建议仅使用 PLL 值中的值推荐表。如果您必须使用其他值,请联系我们。
四、时钟体系框图
- 时钟体系框图的位置:数据手册 P361 & P362,Figure3-3
S5PV210_UM_REV1.1.pdf - 两张图之间是渐进的关系。第一张图从左到右依次完成了原始时钟生成->PLL倍频得到高频时钟->初次分频得到各总线时钟;第二张图是从各中间时钟(第一张图中某个步骤生成的时钟)到各外设自己使用的时钟(实际就是个别外设自己再额外分频的设置)。可见,第一张图是理解整个时钟体系的关键,第二种图是进一步分析各外设时钟来源的关键。
- 要看懂时钟体系框图,2 个符号很重要:一个是 MUX 开关,另一个是 DIV 分频器。
3.1. MUX 开关就是个或门,实际对应某个寄存器的某几个 bit 位的设置,设置值决定了哪条通道通的,分析这个可以知道右边的时钟是从左边哪条路过来的,从而知道右边时钟是多少。
3.2 DIV 分频器,是一个硬件设备,可以对左边的频率进行 n 分频,分频后的低频时钟输出到右边。分频器在编程时实际对应某个寄存器中的某几个 bit 位,我们可以通过设置这个寄存器的这些对应 bit 位来设置分频器的分频系数(譬如左边进来的时钟是 80MHz,分频系统设置为 8,则分频器右边输出的时钟频率为 10MHz)。
3.3 寄存器中的 clock source x 就是在设置 MUX 开关;clock divider control 寄存器就是在设置分频器分频系数。
源自朱有鹏老师.